class Gem::Resolv::DNS::SvcParams
def self.decode(msg) # :nodoc:
def self.decode(msg) # :nodoc: params = msg.get_list do key, = msg.get_unpack('n') msg.get_length16 do SvcParam::ClassHash[key].decode(msg) end end return self.new(params) end
def [](key)
def [](key) @params[canonical_key(key)] end
def add(param)
def add(param) @params[param.class.key_number] = param end
def canonical_key(key) # :nodoc:
def canonical_key(key) # :nodoc: case key when Integer key when /\Akey(\d+)\z/ Integer($1) when Symbol SvcParam::ClassHash[key].key_number else raise TypeError, 'key must be either String or Symbol' end end
def count
def count @params.count end
def delete(key)
def delete(key) @params.delete(canonical_key(key)) end
def each(&block)
def each(&block) return enum_for(:each) unless block @params.each_value(&block) end
def empty?
def empty? @params.empty? end
def encode(msg) # :nodoc:
def encode(msg) # :nodoc: @params.keys.sort.each do |key| msg.put_pack('n', key) msg.put_length16 do @params.fetch(key).encode(msg) end end end
def initialize(params = [])
def initialize(params = []) @params = {} params.each do |param| add param end end