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