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