[Groonga-commit] droonga/droonga-engine at f6587af [master] Use FluentMessageSender directly for other engine nodes

アーカイブの一覧に戻る

YUKI Hiroshi null+****@clear*****
Tue Jan 6 19:25:15 JST 2015


YUKI Hiroshi	2015-01-06 19:25:15 +0900 (Tue, 06 Jan 2015)

  New Revision: f6587af896189891da68b3fb6bb5294346831caf
  https://github.com/droonga/droonga-engine/commit/f6587af896189891da68b3fb6bb5294346831caf

  Message:
    Use FluentMessageSender directly for other engine nodes

  Modified files:
    lib/droonga/engine_node.rb

  Modified: lib/droonga/engine_node.rb (+27 -5)
===================================================================
--- lib/droonga/engine_node.rb    2015-01-06 19:23:09 +0900 (9e73b27)
+++ lib/droonga/engine_node.rb    2015-01-06 19:25:15 +0900 (250b5e0)
@@ -14,6 +14,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 
 require "droonga/forwarder"
+require "droonga/fluent_message_sender"
 require "droonga/node_metadata"
 
 module Droonga
@@ -25,23 +26,44 @@ module Droonga
       @state = state
       @sender_role = sender_role
 
-      @forwarder = Forwarder.new(loop, :buffering => true)
+      unless @name =~ /\A(.*):(\d+)\/([^.]+)\z/
+        raise "name format: hostname:port/tag"
+      end
+      host = $1
+      port = $2
+      tag  = $3
+      @sender = FluentMessageSender.new(loop, host, port,
+                                        :buffering => true)
+      @sender.start
     end
 
     def start
       logger.trace("start: start")
-      @forwarder.start
+      @sender.resume
       logger.trace("start: done")
     end
 
     def shutdown
       logger.trace("shutdown: start")
-      @forwarder.shutdown
+      @sender.shutdown
       logger.trace("shutdown: done")
     end
 
     def forward(message, destination)
-      @forwarder.forward(message, destination)
+      command = destination["type"]
+      receiver = destination["to"]
+      arguments = destination["arguments"]
+
+      override_message = {
+        "type" => command,
+      }
+      override_message["arguments"] = arguments if arguments
+      message = message.merge(override_message)
+      output_tag = "#{tag}.message"
+      log_info = "<#{receiver}>:<#{output_tag}>"
+      logger.trace("forward: start: #{log_info}")
+      @sender.send(output_tag, message)
+      logger.trace("forward: end")
     end
 
     def live?
@@ -101,7 +123,7 @@ module Droonga
     end
 
     def on_change
-      @forwarder.resume
+      @sender.resume
     end
   end
 end
-------------- next part --------------
HTML����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る