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