lib/saber/autofetcher/client.rb in saber-1.0.2 vs lib/saber/autofetcher/client.rb in saber-1.1.0

- old
+ new

@@ -1,60 +1,54 @@ -require "tagen/xmpp4r" -require "xmpp4r/client" +require "blather/client/dsl" require "drb" module Saber module AutoFetcher class Client class << self def start - client = Client.new + c = Client.new + c.start - client.start - p Thread.list - - Thread.list.each{|v| v.join} + EM.run { c.run } end end - attr_reader :client, :fetcher + include Blather::DSL + attr_reader :fetcher + def initialize - @client = Jabber::Client.new(Jabber::JID.new(Rc.client.xmpp.jid)) @fetcher = Fetcher.new end + def run + client.run + end + def start - client.connect Rc.client.xmpp.host, Rc.client.xmpp.port - client.auth Rc.client.xmpp.password + rc = Rc.client.xmpp + setup rc.jid, rc.password, rc.host, rc.port + when_ready { Saber.ui.say ">> Connected to xmpp at #{jid}" } + disconnected { client.connect } - at_exit do - pd Thread.current - begin - client.send Jabber::Presence.new.set_type(:unavaliable) - rescue IOError # closed stream - Saber.ui.error "closed stream (IOError)" - end + message :chat?, :body, :from => /#{Rc.server.xmpp.jid}/ do |m| + process_msg m.body end - - client.add_message_callback { |msg| - if msg.from.bare == Rc.server.xmpp.jid - files = msg.body.split("\n") - Saber.ui.debug "RECV #{files}" - fetcher.add *files - end - pd "add done" - } - - client.send Jabber::Iq.new_rosterget - client.send Jabber::Presence.new.set_type(:avaliable) - Saber.ui.say ">> Connected to xmpp with #{Rc.client.xmpp.jid}" end def stop @client.close! end + + protected + + def process_msg(body) + files = body.split("\n") + Saber.ui.debug files.map{|v| "RECV #{v}"}.join("\n") + fetcher.add *files + end end class DRbClient attr_reader :server @@ -63,11 +57,13 @@ @server = DRbObject.new_with_uri(Rc.drb_uri) Saber.ui.say ">> DRbClient connected to #{Rc.drb_uri}" end def add(*names) - Saber.ui.say "ADD #{names}" + Saber.ui.debug "DRbClient-ADD #{names.inspect}" server.add(*names) end end end end + +# vim: fdn=4