| Class | Resolv::DNS::Message::MessageEncoder |
| In: |
lib/resolv.rb
|
| Parent: | Object |
# File lib/resolv.rb, line 1156
1156: def initialize
1157: @data = ''
1158: @names = {}
1159: yield self
1160: end
# File lib/resolv.rb, line 1198
1198: def put_labels(d)
1199: d.each_index {|i|
1200: domain = d[i..-1]
1201: if idx = @names[domain]
1202: self.put_pack("n", 0xc000 | idx)
1203: return
1204: else
1205: @names[domain] = @data.length
1206: self.put_label(d[i])
1207: end
1208: }
1209: @data << "\0"
1210: end
# File lib/resolv.rb, line 1174
1174: def put_length16
1175: length_index = @data.length
1176: @data << "\0\0"
1177: data_start = @data.length
1178: yield
1179: data_end = @data.length
1180: @data[length_index, 2] = [data_end - data_start].pack("n")
1181: end
# File lib/resolv.rb, line 1170
1170: def put_pack(template, *d)
1171: @data << d.pack(template)
1172: end
# File lib/resolv.rb, line 1183
1183: def put_string(d)
1184: self.put_pack("C", d.length)
1185: @data << d
1186: end