class Adhearsion::Events

Constants

Message

Public Class Methods

instance() click to toggle source
# File lib/adhearsion/events.rb, line 22
def instance
  @@instance || refresh!
end
method_missing(method_name, *args, &block) click to toggle source
# File lib/adhearsion/events.rb, line 14
def method_missing(method_name, *args, &block)
  instance.send method_name, *args, &block
end
refresh!() click to toggle source
# File lib/adhearsion/events.rb, line 26
def refresh!
  @@instance = new
end
respond_to_missing?(method_name, include_private = false) click to toggle source
# File lib/adhearsion/events.rb, line 18
def respond_to_missing?(method_name, include_private = false)
  instance.respond_to? method_name, include_private
end

Public Instance Methods

draw(&block) click to toggle source
# File lib/adhearsion/events.rb, line 68
def draw(&block)
  instance_exec(&block)
end
handle_message(message) click to toggle source
# File lib/adhearsion/events.rb, line 64
def handle_message(message)
  trigger_handler message.type, message.object
end
method_missing(method_name, *args, &block) click to toggle source
# File lib/adhearsion/events.rb, line 72
def method_missing(method_name, *args, &block)
  register_handler method_name, *args, &block
end
queue() click to toggle source
# File lib/adhearsion/events.rb, line 33
def queue
  queue? ? @queue : reinitialize_queue!
end
queue?() click to toggle source
# File lib/adhearsion/events.rb, line 45
def queue?
  instance_variable_defined? :@queue
end
reinitialize_queue!() click to toggle source
# File lib/adhearsion/events.rb, line 49
def reinitialize_queue!
  GirlFriday.shutdown! if queue?
  # TODO: Extract number of threads to use from Adhearsion.config
  @queue = GirlFriday::WorkQueue.new 'main_queue', :error_handler => ErrorHandler do |message|
    work message
  end
end
respond_to_missing?(method_name, include_private = false) click to toggle source
# File lib/adhearsion/events.rb, line 76
def respond_to_missing?(method_name, include_private = false)
  instance_variable_defined?(:@handlers) && @handlers.has_key?(method_name)
end
trigger(type, object = nil) click to toggle source
# File lib/adhearsion/events.rb, line 37
def trigger(type, object = nil)
  queue.push_async Message.new(type, object)
end
trigger_immediately(type, object = nil) click to toggle source
# File lib/adhearsion/events.rb, line 41
def trigger_immediately(type, object = nil)
  queue.push_immediately Message.new(type, object)
end
work(message) click to toggle source
# File lib/adhearsion/events.rb, line 57
def work(message)
  handle_message message
rescue => e
  raise if message.type == :exception
  trigger :exception, e
end

Private Instance Methods

call_handler(handler, guards, event) click to toggle source
Calls superclass method
# File lib/adhearsion/events.rb, line 84
def call_handler(handler, guards, event)
  super
  throw :pass
end