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