Module: RubyDNS::Resolver::Request::UDPRequestHandler

Defined in:
lib/rubydns/resolver.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.open(host, port, request) ⇒ Object



169
170
171
172
# File 'lib/rubydns/resolver.rb', line 169

def self.open(host, port, request)
	# Open a datagram socket... EventMachine doesn't support connected datagram sockets, so we have to cheat a bit:
	EventMachine::open_datagram_socket('', 0, self, request, host, port)
end

Instance Method Details

#initialize(request, host, port) ⇒ Object



174
175
176
177
178
# File 'lib/rubydns/resolver.rb', line 174

def initialize(request, host, port)
	@request = request
	@host = host
	@port = port
end

#post_initObject



180
181
182
183
# File 'lib/rubydns/resolver.rb', line 180

def post_init
	# Sending question to remote DNS server...
	send_datagram(@request.packet, @host, @port)
end

#receive_data(data) ⇒ Object



185
186
187
188
189
190
191
192
193
# File 'lib/rubydns/resolver.rb', line 185

def receive_data(data)
	# Receiving response from remote DNS server...
	message = RubyDNS::decode_message(data)
		
	# The message id must match, and it can't be truncated:
	@request.process_response!(message)
rescue Resolv::DNS::DecodeError => error
	@request.process_response!(error)
end