lib/flapjack/jabber.rb in flapjack-0.6.24 vs lib/flapjack/jabber.rb in flapjack-0.6.25

- old
+ new

@@ -30,13 +30,17 @@ log = Logger.new(STDOUT) # log.level = Logger::DEBUG log.level = Logger::INFO Blather.logger = log + def initialize + @buffer = [] + @hostname = Socket.gethostname + end + def setup @redis = build_redis_connection_pool - @hostname = Socket.gethostname @flapjack_jid = Blather::JID.new((@config['jabberid'] || 'flapjack') + '/' + @hostname) super(@flapjack_jid, @config['password'], @config['server'], @config['port'].to_i) logger.debug("Building jabber connection with jabberid: " + @@ -94,14 +98,17 @@ presence << "<x xmlns='http://jabber.org/protocol/muc'/>" write presence say(room, "flapjack jabber gateway started at #{Time.now}, hello!", :groupchat) end end + return if @buffer.empty? + while stanza = @buffer.shift + @logger.debug("Sending a buffered jabber message to: #{stanza.to}, using: #{stanza.type}, message: #{stanza.body}") + end end def interpreter(command) - msg = nil action = nil entity_check = nil case when command =~ /^ACKID\s+(\d+)(?:\s*(.*?)(?:\s*duration.*?(\d+.*\w+.*))?)$/i; @@ -217,11 +224,17 @@ end true end def say(to, msg, using = :chat) - @logger.debug("Sending a jabber message to: #{to.to_s}, using: #{using.to_s}, message: #{msg}") - write Blather::Stanza::Message.new(to, msg, using) + stanza = Blather::Stanza::Message.new(to, msg, using) + if connected? + @logger.debug("Sending a jabber message to: #{to.to_s}, using: #{using.to_s}, message: #{msg}") + write(stanza) + else + @logger.debug("Buffering a jabber message to: #{to.to_s}, using: #{using.to_s}, message: #{msg}") + @buffer << stanza + end end def add_shutdown_event(opts = {}) return unless redis = opts[:redis] redis.rpush(@config['queue'], JSON.generate('notification_type' => 'shutdown'))