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