class TCPClient::TCPSocket
Public Class Methods
new(address, configuration, deadline, exception)
click to toggle source
Calls superclass method
# File lib/tcp-client/tcp_socket.rb, line 11 def initialize(address, configuration, deadline, exception) super(address.addrinfo.ipv6? ? :INET6 : :INET, :STREAM) configure(configuration) connect_to(as_addr_in(address), deadline, exception) end
Private Instance Methods
as_addr_in(address)
click to toggle source
# File lib/tcp-client/tcp_socket.rb, line 19 def as_addr_in(address) addrinfo = address.addrinfo ::Socket.pack_sockaddr_in(addrinfo.ip_port, addrinfo.ip_address) end
configure(configuration)
click to toggle source
# File lib/tcp-client/tcp_socket.rb, line 31 def configure(configuration) unless configuration.buffered self.sync = true setsockopt(:TCP, :NODELAY, 1) end setsockopt(:SOCKET, :KEEPALIVE, configuration.keep_alive ? 1 : 0) self.do_not_reverse_lookup = configuration.reverse_lookup end
connect_to(addr, deadline, exception)
click to toggle source
# File lib/tcp-client/tcp_socket.rb, line 24 def connect_to(addr, deadline, exception) return connect(addr) unless deadline.valid? with_deadline(deadline, exception) do connect_nonblock(addr, exception: false) end end