class LightIO::Library::TCPSocket

Public Class Methods

new(*args) click to toggle source
# File lib/lightio/library/socket.rb, line 142
def initialize(*args)
  raise ArgumentError, "wrong number of arguments (given #{args.size}, expected 2..4)" if args.size < 2 || args.size > 4
  host, port = args[0..1]
  local_host, local_port = args[2..3]
  addrinfo = Addrinfo.getaddrinfo(host, port, nil, :STREAM)[0]
  socket = ::Socket.send(:origin_new, addrinfo.afamily, Socket::SOCK_STREAM, 0)
  if local_host || local_port
    local_address = Socket.sockaddr_in(local_port, local_host)
    socket.bind(local_address)
  end
  remote_address = Socket.sockaddr_in(addrinfo.ip_port, addrinfo.ip_address)
  @obj = socket
  wait_nonblock(:connect_nonblock, remote_address)
  @obj
  lightio_initialize
end

Private Instance Methods

connect_nonblock(*args) click to toggle source
# File lib/lightio/library/socket.rb, line 160
def connect_nonblock(*args)
  @obj.connect_nonblock(*args)
end