Class: Celluloid::DNS::Resolver::Request

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

Overview

Manages a single DNS question message across one or more servers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message, servers) ⇒ Request



258
259
260
261
262
263
264
265
266
267
268
# File 'lib/celluloid/dns/resolver.rb', line 258

def initialize(message, servers)
  @message = message
  @packet = message.encode
  
  @servers = servers.dup
  
  # We select the protocol based on the size of the data:
  if @packet.bytesize > UDP_TRUNCATION_SIZE
    @servers.delete_if{|server| server[0] == :udp}
  end
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



272
273
274
# File 'lib/celluloid/dns/resolver.rb', line 272

def logger
  @logger
end

#messageObject (readonly)

Returns the value of attribute message.



270
271
272
# File 'lib/celluloid/dns/resolver.rb', line 270

def message
  @message
end

#packetObject (readonly)

Returns the value of attribute packet.



271
272
273
# File 'lib/celluloid/dns/resolver.rb', line 271

def packet
  @packet
end

Instance Method Details

#each(&block) ⇒ Object



274
275
276
277
278
279
280
# File 'lib/celluloid/dns/resolver.rb', line 274

def each(&block)
  @servers.each do |server|
    next if @packet.bytesize > UDP_TRUNCATION_SIZE
    
    yield server
  end
end

#update_id!(id) ⇒ Object



282
283
284
285
# File 'lib/celluloid/dns/resolver.rb', line 282

def update_id!(id)
  @message.id = id
  @packet = @message.encode
end