Class: Async::IO::TCPServer

Inherits:
TCPSocket show all
Includes:
Server
Defined in:
lib/async/io/tcp_socket.rb

Overview

Asynchronous TCP server wrappper.

Constant Summary

Constants inherited from Generic

Generic::WRAPPERS

Instance Attribute Summary

Attributes inherited from TCPSocket

#stream

Attributes inherited from Generic

#timeout

Instance Method Summary collapse

Methods included from Server

#accept_each

Methods inherited from TCPSocket

#close, #sysread

Methods included from Peer

#connected?, #eof, #eof?, #protocol, #sync, #sync=, #type

Methods inherited from Generic

#<<, #connected?, #dup, #nonblock, #nonblock=, #nonblock?, #read, #sysread, #syswrite, #wait, wrap, wrap_blocking_method, wraps, #write

Constructor Details

#initialize(*args) ⇒ TCPServer

Returns a new instance of TCPServer.


86
87
88
89
90
91
92
93
# File 'lib/async/io/tcp_socket.rb', line 86

def initialize(*args)
	if args.first.is_a? ::TCPServer
		super(args.first)
	else
		# We assume this operation doesn't block (for long):
		super(::TCPServer.new(*args))
	end
end

Instance Method Details

#accept(timeout: nil, task: Task.current) ⇒ Object Also known as: accept_nonblock, sysaccept


95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/async/io/tcp_socket.rb', line 95

def accept(timeout: nil, task: Task.current)
	peer, address = async_send(:accept_nonblock, timeout: timeout)
	
	wrapper = TCPSocket.new(peer)
	
	wrapper.timeout = self.timeout
	
	return wrapper, address unless block_given?
	
	begin
		yield wrapper, address
	ensure
		wrapper.close
	end
end