Class: N::EventManager
- Inherits:
-
Object
- Object
- N::EventManager
- Defined in:
- lib/n/events.rb
Overview
EventManager
Example:
$ev.event(“id/user/login”, user) $ev.add_handler(“id/user/login”, “login-score”, proc { |user| user += 1 })
Instance Attribute Summary collapse
-
#events ⇒ Object
readonly
Returns the value of attribute events.
-
#logger ⇒ Object
Returns the value of attribute logger.
Instance Method Summary collapse
-
#add_handler(event, name, proc) ⇒ Object
Register an event handler.
-
#event(event, params) ⇒ Object
(also: #fire)
Fire an event.
-
#initialize(logger = nil) ⇒ EventManager
constructor
A new instance of EventManager.
-
#remove_all_handlers(event) ⇒ Object
Remove all handlers for the event.
-
#remove_handler(event, name) ⇒ Object
Remove the named handler from the event.
Constructor Details
#initialize(logger = nil) ⇒ EventManager
Returns a new instance of EventManager.
38 39 40 41 |
# File 'lib/n/events.rb', line 38 def initialize(logger = nil) @events = Hash.new @logger = logger end |
Instance Attribute Details
#events ⇒ Object (readonly)
Returns the value of attribute events.
35 36 37 |
# File 'lib/n/events.rb', line 35 def events @events end |
#logger ⇒ Object
Returns the value of attribute logger.
36 37 38 |
# File 'lib/n/events.rb', line 36 def logger @logger end |
Instance Method Details
#add_handler(event, name, proc) ⇒ Object
Register an event handler.
Input:
event = the event name = the name of the handler proc = the proc of the hadler
50 51 52 53 54 55 |
# File 'lib/n/events.rb', line 50 def add_handler(event, name, proc) unless event_handlers = @events[event] @events[event] = event_handlers = Hash.new end event_handlers[name] = proc end |
#event(event, params) ⇒ Object Also known as: fire
Fire an event
Input:
event = the event to fire param = parameters for the handler, use an array for multiple parameters.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/n/events.rb', line 84 def event(event, params) if event_handlers = @events[event] # call all event handler procs for handler in event_handlers.values # call the handler with the params. handler.call(params) end end if @logger if params.is_a?(Array) pstr = params.collect{|i| i.to_s()}.join(", ") else pstr = params.to_s() end @logger.info("#{event}: #{pstr}") end end |
#remove_all_handlers(event) ⇒ Object
Remove all handlers for the event.
Input:
event = the event name = the name of the handler
73 74 75 |
# File 'lib/n/events.rb', line 73 def remove_all_handlers(event) @events[event] = Hash.new end |
#remove_handler(event, name) ⇒ Object
Remove the named handler from the event.
59 60 61 62 63 64 65 |
# File 'lib/n/events.rb', line 59 def remove_handler(event, name) if event_handlers = @events[event] event_handlers.delete(name) else $log.debug "ev: cannot remove, handler #{name} not found for event #{event}" if $DBG end end |