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