Class: Droonga::HandlerMessenger

Inherits:
Object
  • Object
show all
Defined in:
lib/droonga/handler_messenger.rb

Instance Method Summary collapse

Constructor Details

#initialize(forwarder, message, options = {}) ⇒ HandlerMessenger

Returns a new instance of HandlerMessenger.



21
22
23
24
25
26
27
# File 'lib/droonga/handler_messenger.rb', line 21

def initialize(forwarder, message, options={})
  @forwarder = forwarder
  @message = message
  @options = options
  @replier = Replier.new(@forwarder)
  @dispatcher = @options[:dispatcher]
end

Instance Method Details

#emit(value) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/droonga/handler_messenger.rb', line 29

def emit(value)
  descendants = @message.descendants
  raw_message = @message.raw
  if descendants.empty?
    return if raw_message["replyTo"].nil?
    @replier.reply(raw_message.merge("body" => value))
  else
    descendants.each do |name, dests|
      body = {
        "id"    => @message.id,
        "input" => name,
        "value" => value[name],
      }
      dests.each do |dest|
        if @dispatcher
          @dispatcher.dispatch(body, dest)
        else
          message = raw_message.merge("body" => body)
          forward(message, "to" => dest, "type" => "dispatcher")
        end
      end
    end
  end
end

#error(status_code, body) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/droonga/handler_messenger.rb', line 54

def error(status_code, body)
  descendants = @message.descendants
  raw_message = @message.raw
  if descendants.empty?
    return if raw_message["replyTo"].nil?
    response = raw_message.merge("statusCode" => status_code,
                                 "body" => body)
    @replier.reply(response)
  else
    #XXX IMPLEMENT ME!!
    raise error
  end
end

#forward(droonga_message, destination) ⇒ void

This method returns an undefined value.

Forwards a Droonga message to other Droonga Engine.

Parameters:

  • droonga_message (Hash)

    The Droonga message to be forwarded.

  • destination (Hash)

    The destination of the Droonga message. See Forwarder#forward to know about how to specify destination.

See Also:



79
80
81
# File 'lib/droonga/handler_messenger.rb', line 79

def forward(droonga_message, destination)
  @forwarder.forward(droonga_message, destination)
end

#inspectObject



83
84
85
# File 'lib/droonga/handler_messenger.rb', line 83

def inspect
  "\#<#{self.class} id=#{object_id}>"
end