Class: Gem::Resolv::DNS::Message::MessageEncoder
- Inherits:
-
Object
- Object
- Gem::Resolv::DNS::Message::MessageEncoder
- Defined in:
- lib/rubygems/vendor/resolv/lib/resolv.rb
Overview
:nodoc:
Instance Method Summary collapse
-
#initialize {|_self| ... } ⇒ MessageEncoder
constructor
A new instance of MessageEncoder.
- #put_bytes(d) ⇒ Object
- #put_label(d) ⇒ Object
- #put_labels(d, compress: true) ⇒ Object
- #put_length16 ⇒ Object
- #put_name(d, compress: true) ⇒ Object
- #put_pack(template, *d) ⇒ Object
- #put_string(d) ⇒ Object
- #put_string_list(ds) ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize {|_self| ... } ⇒ MessageEncoder
Returns a new instance of MessageEncoder.
1473 1474 1475 1476 1477 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1473 def initialize @data = ''.dup @names = {} yield self end |
Instance Method Details
#put_bytes(d) ⇒ Object
1483 1484 1485 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1483 def put_bytes(d) @data << d end |
#put_label(d) ⇒ Object
1531 1532 1533 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1531 def put_label(d) self.put_string(d.to_s) end |
#put_labels(d, compress: true) ⇒ Object
1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1515 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 ⇒ Object
1491 1492 1493 1494 1495 1496 1497 1498 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1491 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) ⇒ Object
1511 1512 1513 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1511 def put_name(d, compress: true) put_labels(d.to_a, compress: compress) end |
#put_pack(template, *d) ⇒ Object
1487 1488 1489 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1487 def put_pack(template, *d) @data << d.pack(template) end |
#put_string(d) ⇒ Object
1500 1501 1502 1503 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1500 def put_string(d) self.put_pack("C", d.length) @data << d end |
#put_string_list(ds) ⇒ Object
1505 1506 1507 1508 1509 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1505 def put_string_list(ds) ds.each {|d| self.put_string(d) } end |
#to_s ⇒ Object
1479 1480 1481 |
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1479 def to_s return @data end |