Class: Arkency::CommandBus

Inherits:
Object
  • Object
show all
Defined in:
lib/arkency/command_bus.rb,
lib/arkency/command_bus/version.rb

Constant Summary collapse

UnregisteredHandler =
Class.new(StandardError)
MultipleHandlers =
Class.new(StandardError)
VERSION =
'0.4.0'

Instance Method Summary collapse

Constructor Details

#initializeCommandBus

Returns a new instance of CommandBus.



9
10
11
12
# File 'lib/arkency/command_bus.rb', line 9

def initialize
  @handlers =
    ThreadSafe::Cache.new
end

Instance Method Details

#call(command) ⇒ Object



19
20
21
22
23
# File 'lib/arkency/command_bus.rb', line 19

def call(command)
  handlers
    .fetch(command.class) { raise UnregisteredHandler.new("Missing handler for #{command.class}")  }
    .(command)
end

#register(klass, handler) ⇒ Object

Raises:



14
15
16
17
# File 'lib/arkency/command_bus.rb', line 14

def register(klass, handler)
  raise MultipleHandlers.new("Multiple handlers not allowed for #{klass}") if handlers[klass]
  handlers[klass] = handler
end