Sha256: 4dae4c162228321fc83a424fcc03d4698d827a74121852357ff15bcf5cea68c2

Contents?: true

Size: 1.07 KB

Versions: 6

Compression:

Stored size: 1.07 KB

Contents

require "adhearsion"
require "active_support/dependencies/autoload"
require "adhearsion/xmpp/version"
require "adhearsion/xmpp/plugin" # Because the autoloader is lazy this never gets loaded!

module Adhearsion
  ##
  # Adhearsion Plugin that defines the XMPP configuration options
  # and includes a hook to start the XMPP service in Adhearsion initialization process
  class XMPP
    extend ActiveSupport::Autoload
    #autoload :Plugin
    autoload :Connection

    cattr_accessor :plugin, :handlers

    class << self
      def register_handlers(&block)
        raise ArgumentError, "You must supply a block" unless block_given?
        self.handlers ||= ThreadSafeArray.new
        handlers << block
        handlers.each do |handler|
          unless plugin.nil?
            # Plugin has already initialized.  Add these handlers directly.
            plugin.connection.instance_eval &handler
          end
        end
      end

      delegate :connection, :to => :plugin

      def method_missing(m, *args, &block)
        plugin.connection.send m, *args, &block
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
adhearsion-xmpp-1.1.0 lib/adhearsion/xmpp.rb
adhearsion-xmpp-1.0.2 lib/adhearsion/xmpp.rb
adhearsion-xmpp-1.0.1 lib/adhearsion/xmpp.rb
adhearsion-xmpp-1.0.0 lib/adhearsion/xmpp.rb
adhearsion-xmpp-0.2.1 lib/adhearsion/xmpp.rb
adhearsion-xmpp-0.2.0 lib/adhearsion/xmpp.rb