Class: Chickadee::MessageBus

Inherits:
Object
  • Object
show all
Defined in:
lib/chickadee/message_bus.rb

Defined Under Namespace

Classes: Subscriber, Topic

Instance Method Summary collapse

Constructor Details

#initializeMessageBus

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

Returns:

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