Class: Gem::Resolv::DNS::Message::MessageEncoder
Do not use. This class is for internal use only.
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/rubygems/vendor/resolv/lib/resolv.rb |
Class Method Summary
- .new {|_self| ... } ⇒ MessageEncoder constructor
Instance Method Summary
Constructor Details
.new {|_self| ... } ⇒ MessageEncoder
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1479
def initialize @data = ''.dup @names = {} yield self end
Instance Method Details
#put_bytes(d)
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1489
def put_bytes(d) @data << d end
#put_label(d)
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1537
def put_label(d) self.put_string(d.to_s) end
#put_labels(d, compress: true)
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1521
def put_labels(d, compress: true) d.each_index {|i| domain = d[i..-1] if compress && idx = @names[domain] self.put_pack("n", 0xc000 | idx) return else if @data.length < 0x4000 @names[domain] = @data.length end self.put_label(d[i]) end } @data << "\0" end
#put_length16
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1497
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
#put_name(d, compress: true)
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1517
def put_name(d, compress: true) put_labels(d.to_a, compress: compress) end
#put_pack(template, *d)
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1493
def put_pack(template, *d) @data << d.pack(template) end
#put_string(d)
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1506
def put_string(d) self.put_pack("C", d.length) @data << d end
#put_string_list(ds)
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1511
def put_string_list(ds) ds.each {|d| self.put_string(d) } end
#to_s
[ GitHub ]# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1485
def to_s return @data end