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'))