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



159
160
161
162
# File 'lib/rubydns/resolver.rb', line 159

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



164
165
166
167
168
# File 'lib/rubydns/resolver.rb', line 164

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

#post_initObject



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

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

#receive_data(data) ⇒ Object



175
176
177
178
179
180
181
182
183
184
185
# File 'lib/rubydns/resolver.rb', line 175

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:
	if message.id == @request.message.id
		@request.process_response!(message)
	else
		@request.logger.warn "[#{@request.message.id}] Received response with incorrect message id: #{message.id}" if @request.logger
	end
end