class RubyEventStore::Broker
Attributes
Public Class Methods
Source
# File lib/ruby_event_store/broker.rb, line 5 def initialize(subscriptions: Subscriptions.new, dispatcher: Dispatcher.new) @subscriptions = subscriptions @dispatcher = dispatcher end
Public Instance Methods
Source
# File lib/ruby_event_store/broker.rb, line 20 def add_global_subscription(subscriber) verify_subscription(subscriber) subscriptions.add_global_subscription(subscriber) end
Source
# File lib/ruby_event_store/broker.rb, line 15 def add_subscription(subscriber, topics) verify_subscription(subscriber) subscriptions.add_subscription(subscriber, topics) end
Source
# File lib/ruby_event_store/broker.rb, line 30 def add_thread_global_subscription(subscriber) verify_subscription(subscriber) subscriptions.add_thread_global_subscription(subscriber) end
Source
# File lib/ruby_event_store/broker.rb, line 25 def add_thread_subscription(subscriber, topics) verify_subscription(subscriber) subscriptions.add_thread_subscription(subscriber, topics) end
Source
# File lib/ruby_event_store/broker.rb, line 35 def all_subscriptions_for(topic) subscriptions.all_for(topic) end
Source
# File lib/ruby_event_store/broker.rb, line 10 def call(topic, event, record) subscribers = subscriptions.all_for(topic) subscribers.each { |subscriber| dispatcher.call(subscriber, event, record) } end
Private Instance Methods
Source
# File lib/ruby_event_store/broker.rb, line 43 def verify_subscription(subscriber) raise SubscriberNotExist, "subscriber must be first argument or block" unless subscriber unless dispatcher.verify(subscriber) raise InvalidHandler.new("Handler #{subscriber} is invalid for dispatcher #{dispatcher}") end end