Class: Orchestra::Publisher
- Inherits:
-
Object
- Object
- Orchestra::Publisher
- Defined in:
- lib/orchestra/publisher.rb
Instance Attribute Summary collapse
-
#mutex ⇒ Object
readonly
Returns the value of attribute mutex.
-
#signaler ⇒ Object
readonly
Returns the value of attribute signaler.
Instance Method Summary collapse
-
#initialize ⇒ Publisher
constructor
A new instance of Publisher.
- #publishing? ⇒ Boolean
- #push(event) ⇒ Object
- #register_subscriber(subscriber) ⇒ Object
- #unregister_subscriber(subscriber) ⇒ Object
Constructor Details
#initialize ⇒ Publisher
Returns a new instance of Publisher.
5 6 7 8 |
# File 'lib/orchestra/publisher.rb', line 5 def initialize @mutex, @signaler = Mutex.new, ConditionVariable.new @subscribers = [] end |
Instance Attribute Details
#mutex ⇒ Object (readonly)
Returns the value of attribute mutex.
3 4 5 |
# File 'lib/orchestra/publisher.rb', line 3 def mutex @mutex end |
#signaler ⇒ Object (readonly)
Returns the value of attribute signaler.
3 4 5 |
# File 'lib/orchestra/publisher.rb', line 3 def signaler @signaler end |
Instance Method Details
#publishing? ⇒ Boolean
25 26 27 |
# File 'lib/orchestra/publisher.rb', line 25 def publishing? !@subscribers.empty? end |
#push(event) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/orchestra/publisher.rb', line 10 def push(event) @mutex.synchronize do @subscribers.each { |s| s.push(event) } @signaler.broadcast end end |
#register_subscriber(subscriber) ⇒ Object
17 18 19 |
# File 'lib/orchestra/publisher.rb', line 17 def register_subscriber(subscriber) @subscribers << subscriber end |
#unregister_subscriber(subscriber) ⇒ Object
21 22 23 |
# File 'lib/orchestra/publisher.rb', line 21 def unregister_subscriber(subscriber) @subscribers.delete(subscriber) end |