lib/adhearsion/xmpp/connection.rb in adhearsion-xmpp-1.0.0 vs lib/adhearsion/xmpp/connection.rb in adhearsion-xmpp-1.0.1
- old
+ new
@@ -1,64 +1,34 @@
-require 'blather/client'
+require 'blather/client/client'
+require 'blather/client/dsl'
module Adhearsion
class XMPP
- module Connection
+ class Connection
- class << self
+ include Blather::DSL
- attr_accessor :client
+ def initialize
+ Blather.logger = logger
+ Blather.default_log_level = :trace if Blather.respond_to? :default_log_level
+ register_default_client_handlers
+ Adhearsion::Events.after_initialized { connect }
+ Adhearsion::Events.shutdown { shutdown }
+ end
- ##
- # Open the XMPP connection
- #
- # @param [String] jid the client/component JID to connect to
- # @param [String] password
- # @param [String] server
- # @param [Integer] port
- def start(jid, password, server, port)
- Blather.logger = logger
- setup_client_object jid, password, server, port
- register_event_namespaces
- register_default_client_handlers
- Adhearsion::Events.register_callback(:after_initialized) do
- connect
- end
- end
+ private
- # Close the XMPP connection
- def stop
- shutdown
+ def connect
+ logger.info "Connecting to XMPP"
+ Adhearsion::Process.important_threads << Thread.new do
+ EventMachine.run { client.connect }
end
+ end
- private
-
- def setup_client_object(jid, password, server, port)
- self.client = Blather::Client.setup(jid, password, server, port)
+ def register_default_client_handlers
+ client.register_handler(:ready) do
+ logger.info "Connected to XMPP server! Send messages to #{client.jid.stripped}."
end
-
- def connect
- EventMachine.run {client.connect}
- end
-
- def register_event_namespaces
- Adhearsion::Events.register_namespace_name "/xmpp"
- end
-
- def register_default_client_handlers
- client.register_handler(:ready) do
- logger.info "Connected to XMPP server! Send messages to #{client.jid.stripped}."
- end
-
- client.register_handler(:disconnected) do
- if Adhearsion.status == :running
- logger.warn "XMPP Disconnected. Reconnecting."
- connect
- end
- # TODO: fix this to reconnect XMPP cleanly
- end
- end
-
end
end
end
end