Class: Resolv::DNS::SvcParams

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
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.



1729
1730
1731
1732
1733
1734
1735
# File 'lib/resolv.rb', line 1729

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

  params.each do |param|
    add param
  end
end

Class Method Details

.decode(msg) ⇒ Object

:nodoc:



1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
# File 'lib/resolv.rb', line 1789

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.



1740
1741
1742
# File 'lib/resolv.rb', line 1740

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.



1761
1762
1763
# File 'lib/resolv.rb', line 1761

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

#countObject

Get the number of SvcParams in this list.



1747
1748
1749
# File 'lib/resolv.rb', line 1747

def count
  @params.count
end

#delete(key) ⇒ Object

Remove the SvcParam with the given key and return it.



1768
1769
1770
# File 'lib/resolv.rb', line 1768

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

#each(&block) ⇒ Object

Enumerate the SvcParams in this list.



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

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

#empty?Boolean

Get whether this list is empty.

Returns:

  • (Boolean)


1754
1755
1756
# File 'lib/resolv.rb', line 1754

def empty?
  @params.empty?
end

#encode(msg) ⇒ Object

:nodoc:



1780
1781
1782
1783
1784
1785
1786
1787
# File 'lib/resolv.rb', line 1780

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