class Aggro::MessageRouter

Public: Routes inter-node messages to attached message handlers.

Public Class Methods

new() click to toggle source
# File lib/aggro/message_router.rb, line 4
def initialize
  @handlers = {}
end

Public Instance Methods

attach_handler(message_class, callable = nil, &block) click to toggle source
# File lib/aggro/message_router.rb, line 8
def attach_handler(message_class, callable = nil, &block)
  if callable
    @handlers[message_class] = callable
  elsif block_given?
    @handlers[message_class] = block
  else
    fail ArgumentError
  end
end
handles?(message_class) click to toggle source
# File lib/aggro/message_router.rb, line 18
def handles?(message_class)
  @handlers[message_class]
end
route(message) click to toggle source
# File lib/aggro/message_router.rb, line 22
def route(message)
  @handlers[message.class].call message if handles?(message.class)
end