Class: Chickadee::MessageBus
- Inherits:
-
Object
- Object
- Chickadee::MessageBus
show all
- Defined in:
- lib/chickadee/message_bus.rb
Defined Under Namespace
Classes: Subscriber, Topic
Instance Method Summary
collapse
Constructor Details
Returns a new instance of MessageBus.
32
33
34
35
|
# File 'lib/chickadee/message_bus.rb', line 32
def initialize
@topics = {}
@subscriber_id = -1
end
|
Instance Method Details
#publish(topic_key, *args) ⇒ Object
47
48
49
|
# File 'lib/chickadee/message_bus.rb', line 47
def publish(topic_key, *args)
get_topic(topic_key).subscribers.each {|s| s.call(*args)}
end
|
#subscribe(topic_key, &block) ⇒ Object
37
38
39
40
41
|
# File 'lib/chickadee/message_bus.rb', line 37
def subscribe(topic_key, &block)
subscriber = Subscriber.new(next_subscriber_id, &block)
get_topic(topic_key).subscribe(subscriber)
subscriber.id
end
|
#topic_exists?(key) ⇒ Boolean
51
52
53
|
# File 'lib/chickadee/message_bus.rb', line 51
def topic_exists?(key)
@topics.keys.include?(key)
end
|
#unsubscribe(subscriber_id) ⇒ Object
43
44
45
|
# File 'lib/chickadee/message_bus.rb', line 43
def unsubscribe(subscriber_id)
@topics.each {|topic_key, topic| topic.unsubscribe(subscriber_id)}
end
|