Class: Celluloid::DNS::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/celluloid/dns/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(addr, port, socket, data) ⇒ Request

Returns a new instance of Request.



8
9
10
11
12
# File 'lib/celluloid/dns/request.rb', line 8

def initialize(addr, port, socket, data)
  @addr, @port, @socket = addr, port, socket
  @message = Resolv::DNS::Message.decode(data)
  @questions = @message.question.map { |question, resource| Question.new(question, resource) }
end

Instance Attribute Details

#questionsObject (readonly)

Returns the value of attribute questions.



6
7
8
# File 'lib/celluloid/dns/request.rb', line 6

def questions
  @questions
end

Instance Method Details

#answer(responses) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/celluloid/dns/request.rb', line 14

def answer(responses)
  response_message = Resolv::DNS::Message.new @message.id
  response_message.qr = 1
  response_message.opcode = @message.opcode
  response_message.aa = 1
  response_message.rd = @message.rd
  response_message.ra = 0
  response_message.rcode = 0
  
  responses.each do |question, response|
    response_object = question.resource.new(response)
    response_message.add_answer question.name, DEFAULT_TTL, response_object
  end
  
  @socket.send response_message.encode, 0, @addr, @port
end