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.



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

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

  params.each do |param|
    add param
  end
end

Class Method Details

.decode(msg) ⇒ Object

:nodoc:



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

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.



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

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.



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

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

#countObject

Get the number of SvcParams in this list.



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

def count
  @params.count
end

#delete(key) ⇒ Object

Remove the SvcParam with the given key and return it.



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

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

#each(&block) ⇒ Object

Enumerate the SvcParams in this list.



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

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

#empty?Boolean

Get whether this list is empty.

Returns:

  • (Boolean)


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

def empty?
  @params.empty?
end

#encode(msg) ⇒ Object

:nodoc:



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

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