lib/right_speed/worker/accepter.rb in right_speed-0.1.0 vs lib/right_speed/worker/accepter.rb in right_speed-0.2.0

- old
+ new

@@ -1,30 +1,30 @@ require_relative 'base' module RightSpeed module Worker class Accepter < Base - def configure(sock) - @sock = sock - end - - def run - @ractor = Ractor.new(@id, @sock) do |id, sock| + def run(sock) + @ractor = Ractor.new(@id, sock, @handler) do |id, sock, handler| + logger = RightSpeed.logger while conn = sock.accept begin - data = conn.read - # TODO: process it - logger.info "[read|#{id}] Data: #{data}" - conn.write "200 OK" - ensure - conn.close rescue nil + handler.session(conn).process + # TODO: keep-alive? + Ractor.yield(conn, move: true) # to yield closing connections to ConnectionCloser + rescue => e + logger.error { "Unexpected error: #{e.message}\n" + e.backtrace.map{"\t#{_1}\n"}.join } + # TODO: print backtrace in better way end end + logger.info { "Worker#{id}: Finishing the Ractor" } + Ractor.yield(:closing) # to tell the outgoing path will be closed when stopping end end def wait - @ractor.take + # nothing to wait - @ractor.take consumes closed connections unexpectedly + # @ractor.wait ? end end end end