Class: Orchestra::Publisher

Inherits:
Object
  • Object
show all
Defined in:
lib/orchestra/publisher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePublisher

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

#mutexObject (readonly)

Returns the value of attribute mutex.



3
4
5
# File 'lib/orchestra/publisher.rb', line 3

def mutex
  @mutex
end

#signalerObject (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

Returns:

  • (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