Class: Rev::TCPSocket::TCPConnectResolver

Inherits:
DNSResolver show all
Defined in:
lib/rev/socket.rb

Constant Summary

Constants inherited from DNSResolver

DNSResolver::DATAGRAM_SIZE, DNSResolver::DNS_PORT, DNSResolver::HOSTS, DNSResolver::RESOLV_CONF, DNSResolver::RETRIES, DNSResolver::TIMEOUT

Instance Method Summary collapse

Methods inherited from DNSResolver

#attach, #detach, hosts, #send_request

Methods inherited from IOWatcher

#attach, #detach, #disable, #enable, #on_readable, #on_writable

Methods inherited from Watcher

#attach, #attached?, #detach, #disable, #enable, event_callback, #evloop, watcher_delegate

Constructor Details

#initialize(socket, host, port, *args) ⇒ TCPConnectResolver

Returns a new instance of TCPConnectResolver.



140
141
142
143
# File 'lib/rev/socket.rb', line 140

def initialize(socket, host, port, *args)
  @sock, @host, @port, @args = socket, host, port, args
  super(host)
end

Instance Method Details

#on_failureObject Also known as: on_timeout



158
159
160
161
162
163
164
165
# File 'lib/rev/socket.rb', line 158

def on_failure
  @sock.on_connect_failed
  @sock.instance_eval { 
    @resolver = nil 
    @failed = true
  }
  return
end

#on_success(addr) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/rev/socket.rb', line 145

def on_success(addr)
  host, port, args = @host, @port, @args

  @sock.instance_eval {
    # DNSResolver only supports IPv4 so we can safely assume an IPv4 address
    socket = TCPConnectSocket.new(::Socket::AF_INET, addr, port, host)
    initialize(socket, *args)
    @connector = Connector.new(self, socket)
    @resolver = nil
  }
  @sock.attach(evloop)
end