Class: EventdObject
- Inherits:
-
Object
- Object
- EventdObject
- Defined in:
- lib/eventd/eventd_object.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#events ⇒ Object
Returns the value of attribute events.
Instance Method Summary collapse
-
#emit(channel, data = nil) ⇒ Object
Send an emission on a channel.
-
#initialize ⇒ EventdObject
constructor
Initialize the EventdObject and set up the events hash.
-
#off(channel) ⇒ Object
Remove all event listeners from a specified channel.
-
#on(channel, &callback) ⇒ Object
Add an event listener to a specified channel.
Constructor Details
#initialize ⇒ EventdObject
Initialize the EventdObject and set up the events hash.
- Note
-
It is important that you always call super() so that the
events
hash can be initialized
18 19 20 |
# File 'lib/eventd/eventd_object.rb', line 18 def initialize @events = {} end |
Instance Attribute Details
#events ⇒ Object
Returns the value of attribute events.
13 14 15 |
# File 'lib/eventd/eventd_object.rb', line 13 def events @events end |
Instance Method Details
#emit(channel, data = nil) ⇒ Object
Send an emission on a channel
Attributes
-
channel
- Channel to emit on -
data
- Optional. Data to send along with the emission.
48 49 50 51 52 53 54 55 56 |
# File 'lib/eventd/eventd_object.rb', line 48 def emit(channel, data = nil) emit 'emission', { :channel => channel, :data => data } unless channel == 'emission' @events[channel] = (@events[channel] or []) @events[channel].each do |callback| if data == nil then callback.call else callback.call data end end end |
#off(channel) ⇒ Object
Remove all event listeners from a specified channel
Attributes
-
channel
- Channel to unsubscribe from
38 39 40 |
# File 'lib/eventd/eventd_object.rb', line 38 def off(channel) @events[channel] = [] end |
#on(channel, &callback) ⇒ Object
Add an event listener to a specified channel
Attributes
-
channel
- Channel to subscribe to -
callback
- Callback block, which is triggered when an emission occurs on the channel
28 29 30 31 |
# File 'lib/eventd/eventd_object.rb', line 28 def on(channel, &callback) @events[channel] = (@events[channel] or []) @events[channel].push callback end |