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