Sha256: da06a38b86c0ce3b73bceb2ac4b4a01bb878ebb96a1b8277849f123a8f5dbe20
Contents?: true
Size: 975 Bytes
Versions: 1
Compression:
Stored size: 975 Bytes
Contents
require_relative "base" require_relative "../logger" module RightSpeed module Worker class Reader < Base def run @ractor = Ractor.new(@id, @handler) do |id, handler| logger = RightSpeed.logger while conn = Ractor.receive begin 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 process(conn) @ractor.send(conn, move: true) end def wait @ractor.take end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
right_speed-0.1.0 | lib/right_speed/worker/reader.rb |