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

Methods

Public Class methods

[Source]

      # File lib/resolv.rb, line 1156
1156:         def initialize
1157:           @data = ''
1158:           @names = {}
1159:           yield self
1160:         end

Public Instance methods

[Source]

      # File lib/resolv.rb, line 1166
1166:         def put_bytes(d)
1167:           @data << d
1168:         end

[Source]

      # File lib/resolv.rb, line 1212
1212:         def put_label(d)
1213:           self.put_string(d.string)
1214:         end

[Source]

      # 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

[Source]

      # 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

[Source]

      # File lib/resolv.rb, line 1194
1194:         def put_name(d)
1195:           put_labels(d.to_a)
1196:         end

[Source]

      # File lib/resolv.rb, line 1170
1170:         def put_pack(template, *d)
1171:           @data << d.pack(template)
1172:         end

[Source]

      # File lib/resolv.rb, line 1183
1183:         def put_string(d)
1184:           self.put_pack("C", d.length)
1185:           @data << d
1186:         end

[Source]

      # File lib/resolv.rb, line 1188
1188:         def put_string_list(ds)
1189:           ds.each {|d|
1190:             self.put_string(d)
1191:           }
1192:         end

[Source]

      # File lib/resolv.rb, line 1162
1162:         def to_s
1163:           return @data
1164:         end

[Validate]