lib/jcukeforker/status_server.rb in jcukeforker-0.2.9 vs lib/jcukeforker/status_server.rb in jcukeforker-0.2.10

- old
+ new

@@ -1,26 +1,33 @@ require 'socket' module JCukeForker class StatusServer include Observable - include Celluloid::IO - finalizer :shutdown attr_reader :port def initialize(port = '6333') - server = ::TCPServer.new 'localhost', port - @port = server.connect_address.ip_port - @server = TCPServer.from_ruby_server server + @server = ::TCPServer.new 'localhost', port + @port = @server.connect_address.ip_port + @thread_pool = [] end def run - loop { async.handle_connection @server.accept } + @master_thread = Thread.new do + loop do + socket = @server.accept + @thread_pool << Thread.new { handle_connection(socket) } + end + end end def shutdown - @server.close if @server + if @server + @server.close + @master_thread.terminate + @thread_pool.each(&:terminate) + end end def handle_connection(socket) until socket.eof? do raw_message = socket.gets