| Class | Resolv::DNS::Message::MessageEncoder |
| In: |
lib/resolv.rb
|
| Parent: | Object |
# File lib/resolv.rb, line 1202
1202: def initialize
1203: @data = ''
1204: @names = {}
1205: yield self
1206: end
# File lib/resolv.rb, line 1244
1244: def put_labels(d)
1245: d.each_index {|i|
1246: domain = d[i..-1]
1247: if idx = @names[domain]
1248: self.put_pack("n", 0xc000 | idx)
1249: return
1250: else
1251: @names[domain] = @data.length
1252: self.put_label(d[i])
1253: end
1254: }
1255: @data << "\0"
1256: end
# File lib/resolv.rb, line 1220
1220: def put_length16
1221: length_index = @data.length
1222: @data << "\0\0"
1223: data_start = @data.length
1224: yield
1225: data_end = @data.length
1226: @data[length_index, 2] = [data_end - data_start].pack("n")
1227: end
# File lib/resolv.rb, line 1216
1216: def put_pack(template, *d)
1217: @data << d.pack(template)
1218: end
# File lib/resolv.rb, line 1229
1229: def put_string(d)
1230: self.put_pack("C", d.length)
1231: @data << d
1232: end