class Net::Socket::TCP::Server

Public Instance Methods

each_request(async = false, &block) click to toggle source
# File lib/net/socket/tcp/server.rb, line 6
def each_request(async = false, &block)
  if async
    each_request_async(&block)
  else
    each_request_sync(&block)
  end
end
wait() click to toggle source
# File lib/net/socket/tcp/server.rb, line 14
def wait
  IO.select([socket]) until socket.closed?
rescue
  # We don't care about IO.select-related exceptions,
  # so we just ignore them and return.
end

Private Instance Methods

each_request_async(&block) click to toggle source
# File lib/net/socket/tcp/server.rb, line 26
def each_request_async(&block)
  Thread.new do
    loop do
      Thread.new(accept(), block) do |request, block|
        handle_request(request, &block)
      end
    end
  end

  # Return nil to avoid collecting references to Threads.
  nil
end
each_request_sync(&block) click to toggle source
# File lib/net/socket/tcp/server.rb, line 22
def each_request_sync(&block)
  loop { handle_request(accept(), &block) }
end
handle_request(request) { |request| ... } click to toggle source
# File lib/net/socket/tcp/server.rb, line 39
def handle_request(request, &block)
  yield request

  request.close
end