module Aggregates::MessageProcessor

MessageProcessor is a set of helper methods for routing messages to handlers defined at the class level for DomainMessages.

Public Class Methods

included(host_class) click to toggle source
# File lib/aggregates/message_processor.rb, line 26
def self.included(host_class)
  host_class.extend(ClassMethods)
end

Public Instance Methods

handle_message(message) click to toggle source
# File lib/aggregates/message_processor.rb, line 47
def handle_message(message)
  invoke_handlers(message)
end
invoke_handlers(message, *additional_args) click to toggle source
# File lib/aggregates/message_processor.rb, line 39
def invoke_handlers(message, *additional_args)
  results = []
  with_message_handlers(message) do |handler|
    results << instance_exec(message, *additional_args, &handler)
  end
  results
end
with_message_handlers(message, &block) click to toggle source
# File lib/aggregates/message_processor.rb, line 30
def with_message_handlers(message, &block)
  search_class = message.class
  while search_class != DomainMessage
    handlers = self.class.message_mapping[search_class]
    handlers&.each(&block)
    search_class = search_class.superclass
  end
end