class Gem::Resolv::DNS::Message
:nodoc:
def ==(other)
def ==(other) return @id == other.id && @qr == other.qr && @opcode == other.opcode && @aa == other.aa && @tc == other.tc && @rd == other.rd && @ra == other.ra && @rcode == other.rcode && @question == other.question && @answer == other.answer && @authority == other.authority && @additional == other.additional end
def add_additional(name, ttl, data)
def add_additional(name, ttl, data) @additional << [Name.create(name), ttl, data] end
def add_answer(name, ttl, data)
def add_answer(name, ttl, data) @answer << [Name.create(name), ttl, data] end
def add_authority(name, ttl, data)
def add_authority(name, ttl, data) @authority << [Name.create(name), ttl, data] end
def add_question(name, typeclass)
def add_question(name, typeclass) @question << [Name.create(name), typeclass] end
def each_additional
def each_additional @additional.each {|name, ttl, data| yield name, ttl, data } end
def each_answer
def each_answer @answer.each {|name, ttl, data| yield name, ttl, data } end
def each_authority
def each_authority @authority.each {|name, ttl, data| yield name, ttl, data } end
def each_question
def each_question @question.each {|name, typeclass| yield name, typeclass } end
def each_resource
def each_resource each_answer {|name, ttl, data| yield name, ttl, data} each_authority {|name, ttl, data| yield name, ttl, data} each_additional {|name, ttl, data| yield name, ttl, data} end
def encode
def encode return MessageEncoder.new {|msg| msg.put_pack('nnnnnn', @id, (@qr & 1) << 15 | (@opcode & 15) << 11 | (@aa & 1) << 10 | (@tc & 1) << 9 | (@rd & 1) << 8 | (@ra & 1) << 7 | (@rcode & 15), @question.length, @answer.length, @authority.length, @additional.length) @question.each {|q| name, typeclass = q msg.put_name(name) msg.put_pack('nn', typeclass::TypeValue, typeclass::ClassValue) } [@answer, @authority, @additional].each {|rr| rr.each {|r| name, ttl, data = r msg.put_name(name) msg.put_pack('nnN', data.class::TypeValue, data.class::ClassValue, ttl) msg.put_length16 {data.encode_rdata(msg)} } } }.to_s end
def initialize(id = (@@identifier += 1) & 0xffff)
def initialize(id = (@@identifier += 1) & 0xffff) @id = id @qr = 0 @opcode = 0 @aa = 0 @tc = 0 @rd = 0 # recursion desired @ra = 0 # recursion available @rcode = 0 @question = [] @answer = [] @authority = [] @additional = [] end