Sha256: 96038d3da8e25e6c1a5fe56038277fe63a44461bdd6481a8085bd4d0efac00b0
Contents?: true
Size: 930 Bytes
Versions: 3
Compression:
Stored size: 930 Bytes
Contents
require 'net/socket/version' require 'socket' module Net::Socket::TCP class Server < TCPServer def each_request(async = false, &block) if async each_request_async(&block) else each_request_sync(&block) end end 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 def each_request_sync(&block) loop { handle_request(accept(), &block) } end 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 def handle_request(request, &block) yield request request.close end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
net-socket-1.0.1 | lib/net/socket/tcp/server.rb |
net-socket-1.0.0 | lib/net/socket/tcp/server.rb |
net-socket-0.0.1 | lib/net/socket/tcp/server.rb |