Class: Yeller::Broadcaster

Inherits:
Object
  • Object
show all
Defined in:
lib/yeller/broadcaster.rb

Instance Method Summary collapse

Constructor Details

#initializeBroadcaster

Returns a new instance of Broadcaster.



4
5
6
# File 'lib/yeller/broadcaster.rb', line 4

def initialize( )
  @subscribers = SubscriberCollection.new
end

Instance Method Details

#broadcast(message, *keys) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/yeller/broadcaster.rb', line 8

def broadcast( message, *keys )
  keys.each do |key|
    normalized_key = Key.normalize(key)
    @subscribers.find( normalized_key ).each do |subscriber|
      subscriber.notify( message )
    end
  end
end

#subscribe(subscriber_class, options) ⇒ Object

Raises:

  • (KeyError)


17
18
19
20
21
22
23
24
25
26
# File 'lib/yeller/broadcaster.rb', line 17

def subscribe( subscriber_class, options )
  keys = Array(options[:to])
  method = options[:with]
  raise KeyError, "expected :with and :to to be present in subscriber definition" unless method && keys
  keys.each do |key|
    normalized_key = Key.normalize(key)
    subscriber = Subscriber.new( subscriber_class, method, normalized_key )
    @subscribers.add( subscriber )
  end
end