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