Class: Gem::Resolv::DNS::SvcParams

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/rubygems/vendor/resolv/lib/resolv.rb

Overview

SvcParams for service binding RRs. [RFC9460]

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = []) ⇒ SvcParams

Create a list of SvcParams with the given initial content.

params has to be an enumerable of SvcParams. If its content has SvcParams with the duplicate key, the one appears last takes precedence.



1752
1753
1754
1755
1756
1757
1758
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1752

def initialize(params = [])
  @params = {}

  params.each do |param|
    add param
  end
end

Class Method Details

.decode(msg) ⇒ Object

:nodoc:



1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1812

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

Instance Method Details

#[](key) ⇒ Object

Get SvcParam for the given key in this list.



1763
1764
1765
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1763

def [](key)
  @params[canonical_key(key)]
end

#add(param) ⇒ Object

Add the SvcParam param to this list, overwriting the existing one with the same key.



1784
1785
1786
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1784

def add(param)
  @params[param.class.key_number] = param
end

#countObject

Get the number of SvcParams in this list.



1770
1771
1772
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1770

def count
  @params.count
end

#delete(key) ⇒ Object

Remove the SvcParam with the given key and return it.



1791
1792
1793
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1791

def delete(key)
  @params.delete(canonical_key(key))
end

#each(&block) ⇒ Object

Enumerate the SvcParams in this list.



1798
1799
1800
1801
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1798

def each(&block)
  return enum_for(:each) unless block
  @params.each_value(&block)
end

#empty?Boolean

Get whether this list is empty.

Returns:

  • (Boolean)


1777
1778
1779
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1777

def empty?
  @params.empty?
end

#encode(msg) ⇒ Object

:nodoc:



1803
1804
1805
1806
1807
1808
1809
1810
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 1803

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