Class: Hx::Interop::RPC::Dispatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/interop/rpc/dispatcher.rb

Overview

Message dispatcher used by Client and Server.

Defined Under Namespace

Classes: Route

Instance Method Summary collapse

Constructor Details

#initializeDispatcher

Returns a new instance of Dispatcher.



18
19
20
# File 'lib/interop/rpc/dispatcher.rb', line 18

def initialize
  @routes = []
end

Instance Method Details

#dispatch(message) ⇒ Object Also known as: <<



29
30
31
32
33
34
# File 'lib/interop/rpc/dispatcher.rb', line 29

def dispatch(message)
  @routes.each do |route|
    route.call message if route.match? message
  end
  self
end

#match(message) ⇒ Object



36
37
38
# File 'lib/interop/rpc/dispatcher.rb', line 36

def match(message)
  @routes.find { |r| r.match? message }
end

#on(criteria, *handler, &block) ⇒ Object



22
23
24
25
26
27
# File 'lib/interop/rpc/dispatcher.rb', line 22

def on(criteria, *handler, &block)
  @routes << Route.new(
    make_matcher(criteria),
    make_handler(*handler, &block)
  )
end