Class Resolv::DNS::Message::MessageEncoder
In: lib/resolv.rb
Parent: Object

Methods

Public Class methods

[Source]

      # File lib/resolv.rb, line 1202
1202:         def initialize
1203:           @data = ''
1204:           @names = {}
1205:           yield self
1206:         end

Public Instance methods

[Source]

      # File lib/resolv.rb, line 1212
1212:         def put_bytes(d)
1213:           @data << d
1214:         end

[Source]

      # File lib/resolv.rb, line 1258
1258:         def put_label(d)
1259:           self.put_string(d.string)
1260:         end

[Source]

      # 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

[Source]

      # 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

[Source]

      # File lib/resolv.rb, line 1240
1240:         def put_name(d)
1241:           put_labels(d.to_a)
1242:         end

[Source]

      # File lib/resolv.rb, line 1216
1216:         def put_pack(template, *d)
1217:           @data << d.pack(template)
1218:         end

[Source]

      # File lib/resolv.rb, line 1229
1229:         def put_string(d)
1230:           self.put_pack("C", d.length)
1231:           @data << d
1232:         end

[Source]

      # File lib/resolv.rb, line 1234
1234:         def put_string_list(ds)
1235:           ds.each {|d|
1236:             self.put_string(d)
1237:           }
1238:         end

[Source]

      # File lib/resolv.rb, line 1208
1208:         def to_s
1209:           return @data
1210:         end

[Validate]