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



194
195
196
197
# File 'lib/rubydns/resolver.rb', line 194

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



199
200
201
202
203
# File 'lib/rubydns/resolver.rb', line 199

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

#post_initObject



205
206
207
208
# File 'lib/rubydns/resolver.rb', line 205

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

#receive_data(data) ⇒ Object



210
211
212
213
214
215
216
217
218
# File 'lib/rubydns/resolver.rb', line 210

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