class Strum::Internal::Listener
Public Class Methods
new()
click to toggle source
Creates a new API Hook
Calls superclass method
Strum::Internal::Component::new
# File lib/strum/internal/listener.rb, line 15 def initialize super(:Container) self[:Events] = {} load_events end
Public Instance Methods
register_event(event)
click to toggle source
Registers an Event to this Listener
.
# File lib/strum/internal/listener.rb, line 51 def register_event(event) raise Strum::Errors::NilEventRegistration unless event self[:Events][event.class.name.split('::').last.to_sym] << event end
register_generic_event(event)
click to toggle source
Registers an Event to this Listener
.
# File lib/strum/internal/listener.rb, line 59 def register_generic_event(event) raise Strum::Errors::NilEventRegistration unless event self[:GenericEvents][event.class.name.split('::').last.to_sym] << event end
trigger_events(klass)
click to toggle source
Fires events of a specific type
# File lib/strum/internal/listener.rb, line 23 def trigger_events(klass) report "#{klass.name.split('::').last.to_sym} event raised!" unless ENV['EVENT_DEBUG'].to_i.zero? unless klass.nil? self[:Events][klass.name.split('::').last.to_sym].each do |event| unless event.nil? event.call self[:Events][klass.name.split('::').last.to_sym].delete(event) if event[:SingleExec] end end end end
trigger_generic_events(generic, klass)
click to toggle source
Fires events of a specific type
# File lib/strum/internal/listener.rb, line 37 def trigger_generic_events(generic, klass) report "#{klass.name.split('::').last.to_sym} Generic Event raised!" unless ENV['EVENT_DEBUG'].to_i.zero? unless klass.nil? self[:GenericEvents][klass.name.split('::').last.to_sym].each do |event| unless event.nil? event.call(generic) self[:GenericEvents][klass.name.split('::').last.to_sym].delete(event) if event[:SingleExec] end end end end
Private Instance Methods
load_events()
click to toggle source
Loads our predefined events.
# File lib/strum/internal/listener.rb, line 68 def load_events Dir["events/*.rb"].sort.each { |event| require event } self[:Events] = { EndpointAcceptEvent: [], EndpointInitializationEvent: [], EndpointListenEvent: [], EndpointSocketRegistrationEvent: [], EndpointSpawnEvent: [], EndpointEvent: [], ManagerEvent: [], } self[:GenericEvents] = { SessionEvent: [], SessionClosedEvent: [], SessionReadEvent: [], SessionRegistrationEvent: [], SessionBuildEvent: [], SocketEvent: [], SocketThrottleEvent: [], SocketListOverflow: [], SocketClosedEvent: [], SocketReceiveEvent: [], SocketTimeoutEvent: [] } end