# File lib/xmpp4r/reliable.rb, line 7 def initialize(full_jid, config) super(full_jid) @servers = config[:servers] @port = config[:port] || 5222 @max_retry = config[:max_retry] || 30 @retry_sleep = config[:retry_sleep] || 2 if(@servers.nil? or @servers.empty?) @servers = [@jid.domain] end end
# File lib/xmpp4r/reliable.rb, line 18 def connect retry_count = 0 server_to_use = nil server_pool = @servers.dup.sort{ rand <=> rand } begin server_to_use = server_pool.shift server_pool.push(server_to_use) Jabber::debuglog "timeout will be: #{@retry_sleep.to_f}" Timeout.timeout(@retry_sleep.to_f){ Jabber::debuglog "trying to connect to #{server_to_use}" super(server_to_use, @port) } Jabber::debuglog self.jid.to_s + " connected to " + server_to_use.to_s Jabber::debuglog "out of possible servers " + @servers.inspect rescue Exception, Timeout::Error => e Jabber::warnlog "#{server_to_use} error: #{e.inspect}. Will attempt to reconnect in #{@retry_sleep}" sleep(@retry_sleep.to_f) if(retry_count >= @max_retry.to_i) Jabber::warnlog "reached max retry count on exception, failing" raise e end retry_count += 1 retry end end
Generated with the Darkfish Rdoc Generator 2.