Resolv::DNS::Message::MessageEncoder (Class)

In: resolv.rb
Parent: Object

Methods

Public Class methods

[Source]

# File resolv.rb, line 1115
        def initialize
          @data = ''
          @names = {}
          yield self
        end

Public Instance methods

[Source]

# File resolv.rb, line 1125
        def put_bytes(d)
          @data << d
        end

[Source]

# File resolv.rb, line 1165
        def put_label(d)
          self.put_string(d.string)
        end

[Source]

# File resolv.rb, line 1151
        def put_labels(d)
          d.each_index {|i|
            domain = d[i..-1]
            if idx = @names[domain]
              self.put_pack("n", 0xc000 | idx)
              return
            else
              @names[domain] = @data.length
              self.put_label(d[i])
            end
          }
          @data << "\0"
        end

[Source]

# File resolv.rb, line 1133
        def put_length16
          length_index = @data.length
          @data << "\0\0"
          data_start = @data.length
          yield
          data_end = @data.length
          @data[length_index, 2] = [data_end - data_start].pack("n")
        end

[Source]

# File resolv.rb, line 1147
        def put_name(d)
          put_labels(d.to_a)
        end

[Source]

# File resolv.rb, line 1129
        def put_pack(template, *d)
          @data << d.pack(template)
        end

[Source]

# File resolv.rb, line 1142
        def put_string(d)
          self.put_pack("C", d.length)
          @data << d
        end

[Source]

# File resolv.rb, line 1121
        def to_s
          return @data
        end

[Validate]