Sha256: 937f7586c65486ab0e8d23c755ba49bea2c747170db2b1255431f0a829ce7bd5
Contents?: true
Size: 1.65 KB
Versions: 6
Compression:
Stored size: 1.65 KB
Contents
require 'theatre' module Adhearsion module Events DEFAULT_FRAMEWORK_EVENT_NAMESPACES = %w[ /after_initialized /shutdown /exception /asterisk/manager_interface /asterisk/before_call /asterisk/after_call /asterisk/hungup_call /asterisk/failed_call ] class << self def framework_theatre defined?(@@framework_theatre) ? @@framework_theatre : reinitialize_theatre! end def trigger(*args) framework_theatre.trigger(*args) end def trigger_immediately(*args) framework_theatre.trigger_immediately(*args) end def reinitialize_theatre! @@framework_theatre.gracefully_stop! if defined? @@framework_theatre rescue # Recover and reinitalize ensure # TODO: Extract number of threads to use from AHN_CONFIG @@framework_theatre = Theatre::Theatre.new DEFAULT_FRAMEWORK_EVENT_NAMESPACES.each do |namespace| register_namespace_name namespace end return @@framework_theatre end def register_namespace_name(name) framework_theatre.register_namespace_name name end def stop! Events.trigger :shutdown framework_theatre.graceful_stop! framework_theatre.join end def register_callback(namespace, block_arg=nil, &method_block) raise ArgumentError, "Cannot supply two blocks!" if block_arg && block_given? block = method_block || block_arg raise ArgumentError, "Must supply a callback!" unless block framework_theatre.register_callback_at_namespace(namespace, block) end end end end
Version data entries
6 entries across 6 versions & 1 rubygems