[Groonga-commit] droonga/fluent-plugin-droonga at b116437 [master] Remove job queue dependency from worker

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Mar 23 15:31:42 JST 2014


Kouhei Sutou	2014-03-23 15:31:42 +0900 (Sun, 23 Mar 2014)

  New Revision: b1164373e6f6e4d4e3a6f41c6a67e1473d1da4a3
  https://github.com/droonga/fluent-plugin-droonga/commit/b1164373e6f6e4d4e3a6f41c6a67e1473d1da4a3

  Message:
    Remove job queue dependency from worker

  Modified files:
    lib/droonga/job_pusher.rb

  Modified: lib/droonga/job_pusher.rb (+25 -16)
===================================================================
--- lib/droonga/job_pusher.rb    2014-03-22 00:48:31 +0900 (ec3dbf7)
+++ lib/droonga/job_pusher.rb    2014-03-23 15:31:42 +0900 (a48806b)
@@ -31,9 +31,8 @@ module Droonga
 
     def start
       FileUtils.rm_f(@socket_path)
-      @workers = []
       @server = Coolio::UNIXServer.new(@socket_path) do |connection|
-        @workers << WorkerConnection.new(@loop, @job_queue, connection)
+        @job_queue.add_worker(WorkerConnection.new(@loop, connection))
       end
       FileUtils.chmod(0600, @socket_path)
       @loop.attach(@server)
@@ -46,9 +45,7 @@ module Droonga
     def shutdown
       logger.trace("shutdown: start")
       @server.close
-      @workers.each do |worker|
-        worker.close
-      end
+      @job_queue.close
       FileUtils.rm_f(@socket_path)
       logger.trace("shutdown: done")
     end
@@ -69,6 +66,24 @@ module Droonga
         @loop = loop
         @buffers = []
         @ready_workers = []
+        @workers = []
+      end
+
+      def close
+        @workers.each do |worker|
+          worker.close
+        end
+      end
+
+      def add_worker(worker)
+        @workers << worker
+        worker.on_ready = lambda do |w|
+          if****@buffe*****?
+            @ready_workers << w
+          else
+            w.write(@buffers.shift)
+          end
+        end
       end
 
       def push(message)
@@ -77,14 +92,6 @@ module Droonga
         consume_buffers
       end
 
-      def ready(worker)
-        if****@buffe*****?
-          @ready_workers << worker
-        else
-          worker.write(@buffers.shift)
-        end
-      end
-
       private
       def consume_buffers
         return if @ready_workers.empty?
@@ -98,11 +105,13 @@ module Droonga
     end
 
     class WorkerConnection
-      def initialize(loop, job_queue, connection)
+      attr_writer :on_ready
+
+      def initialize(loop, connection)
         @loop = loop
-        @job_queue = job_queue
         @connection = connection
         @ready = false
+        @on_ready = nil
         setup_connection
       end
 
@@ -124,7 +133,7 @@ module Droonga
       def setup_connection
         on_read = lambda do |data|
           @ready = (data == JobProtocol::READY_SIGNAL)
-          @job_queue.ready(self)
+          @on_ready.call(self) if @on_ready
         end
         @connection.on_read do |data|
           on_read.call(data)
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index