# File lib/Dnsruby/message.rb, line 255
    def encode
      return MessageEncoder.new {|msg|
        header = @header
        if (@tsigkey)
          header.arcount += 1
        end
        header.encode(msg)
        @question.each {|q|
          msg.put_name(q.qname)
          msg.put_pack('nn', q.qtype.code, q.qclass.code)
        }
        [@answer, @authority, @additional].each {|rr|
          rr.each {|r|
            # name, ttl, data = r
            name = r.name
            ttl = r.ttl
            msg.put_name(name)
            msg.put_pack('nnN', r.type.code, r.klass.code, ttl)
            msg.put_length16 {r.encode_rdata(msg)}
          }
        }
        if (@tsigkey)
          tsigrec = @tsigkey.generate(this, msg, tsigerror, querytsig)
          tsigrec.encode(msg, Section.ADDITIONAL, c)
        end
      }.to_s
    end