class StickyElephant::Connection
Attributes
logger[R]
payload[R]
socket[R]
Public Class Methods
new(socket, logger: )
click to toggle source
# File lib/sticky_elephant/connection.rb, line 5 def initialize(socket, logger: ) @socket = socket @logger = logger end
Public Instance Methods
process()
click to toggle source
# File lib/sticky_elephant/connection.rb, line 10 def process begin loop do @payload = Payload.new(socket.readpartial(1024**2).bytes) log(msg: "Received #{payload}", level: :debug) obj = Handler.for(payload, socket: socket, logger: logger) log(msg: "Handling with #{obj.class}", level: :debug) obj.process end rescue => e log(msg: e, level: :error) unless e.is_a? EOFError ensure socket.close Thread.exit end end