Class: RightSpeed::Worker::Accepter

Inherits:
Base
  • Object
show all
Defined in:
lib/right_speed/worker/accepter.rb

Instance Attribute Summary

Attributes inherited from Base

#ractor

Instance Method Summary collapse

Methods inherited from Base

#initialize, #stop

Constructor Details

This class inherits a constructor from RightSpeed::Worker::Base

Instance Method Details

#run(sock) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/right_speed/worker/accepter.rb', line 6

def run(sock)
  @ractor = Ractor.new(@id, sock, @handler) do |id, sock, handler|
    logger = RightSpeed.logger
    while conn = sock.accept
      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

#waitObject



24
25
26
27
# File 'lib/right_speed/worker/accepter.rb', line 24

def wait
  # nothing to wait - @ractor.take consumes closed connections unexpectedly
  # @ractor.wait ?
end