class RubyEventStore::Broker

Attributes

dispatcher[R]
subscriptions[R]

Public Class Methods

new(subscriptions:, dispatcher:) click to toggle source
# File lib/ruby_event_store/broker.rb, line 5
def initialize(subscriptions:, dispatcher:)
  @subscriptions = subscriptions
  @dispatcher = dispatcher
end

Public Instance Methods

add_global_subscription(subscriber) click to toggle source
# File lib/ruby_event_store/broker.rb, line 20
def add_global_subscription(subscriber)
  verify_subscription(subscriber)
  subscriptions.add_global_subscription(subscriber)
end
add_subscription(subscriber, event_types) click to toggle source
# File lib/ruby_event_store/broker.rb, line 15
def add_subscription(subscriber, event_types)
  verify_subscription(subscriber)
  subscriptions.add_subscription(subscriber, event_types)
end
add_thread_global_subscription(subscriber) click to toggle 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
add_thread_subscription(subscriber, event_types) click to toggle source
# File lib/ruby_event_store/broker.rb, line 25
def add_thread_subscription(subscriber, event_types)
  verify_subscription(subscriber)
  subscriptions.add_thread_subscription(subscriber, event_types)
end
call(event, record) click to toggle source
# File lib/ruby_event_store/broker.rb, line 10
def call(event, record)
  subscribers = subscriptions.all_for(event.event_type)
  subscribers.each { |subscriber| dispatcher.call(subscriber, event, record) }
end

Private Instance Methods

verify_subscription(subscriber) click to toggle source
# File lib/ruby_event_store/broker.rb, line 39
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