Class: Async::TCPSocket
- Defined in:
- lib/async/tcp_socket.rb
Overview
Asynchronous TCP socket/client.
Direct Known Subclasses
Constant Summary
Constants inherited from IO
Instance Attribute Summary
Attributes inherited from Wrapper
Class Method Summary collapse
Methods inherited from IO
[], #wrap_blocking_method, wraps
Methods inherited from Wrapper
#close, #initialize, #monitor, #wait_any, #wait_readable, #wait_writable
Constructor Details
This class inherits a constructor from Async::Wrapper
Class Method Details
.connect(remote_address, remote_port, local_address = nil, local_port = nil, task: Task.current, &block) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/async/tcp_socket.rb', line 28 def self.connect(remote_address, remote_port, local_address = nil, local_port = nil, task: Task.current, &block) # This may block if remote_address is a hostname remote = Addrinfo.tcp(remote_address, remote_port) socket = ::Socket.new(remote.afamily, ::Socket::SOCK_STREAM, 0) socket.bind Addrinfo.tcp(local_address, local_port) if local_address if block_given? task.with(socket) do |wrapper| wrapper.connect(remote.to_sockaddr) yield wrapper end else task.bind(socket).connect(remote.to_sockaddr) return socket end end |