class Plum::Rack::TCPListener

Public Class Methods

new(lc) click to toggle source
# File lib/plum/rack/listener.rb, line 22
def initialize(lc)
  @server = ::TCPServer.new(lc[:hostname], lc[:port])
end

Public Instance Methods

accept(svc) click to toggle source
# File lib/plum/rack/listener.rb, line 30
def accept(svc)
  sock = @server.accept
  Thread.start {
    begin
      plum = ::Plum::HTTPServerConnection.new(sock.method(:write))
      sess = Session.new(svc, sock, plum)
      sess.run
    rescue ::Plum::LegacyHTTPError => e
      svc.logger.info "legacy HTTP client: #{e}"
      sess = LegacySession.new(svc, e, sock)
      sess.run
    rescue Errno::ECONNRESET, EOFError # closed
    rescue => e
      svc.log_exception(e)
    ensure
      sock.close
    end
  }
end
to_io() click to toggle source
# File lib/plum/rack/listener.rb, line 26
def to_io
  @server.to_io
end