Class: Gem::Resolv::DNS::Resource::IN::ServiceBinding

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

Overview

Common implementation for SVCB-compatible resource records.

Direct Known Subclasses

HTTPS, SVCB

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(priority, target, params = []) ⇒ ServiceBinding

Create a service binding resource record.



2754
2755
2756
2757
2758
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2754

def initialize(priority, target, params = [])
  @priority = priority.to_int
  @target = Name.create(target)
  @params = SvcParams.new(params)
end

Instance Attribute Details

#paramsObject (readonly)

The service paramters for the target host.



2776
2777
2778
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2776

def params
  @params
end

#priorityObject (readonly)

The priority of this target host.

The range is 0-65535. If set to 0, this RR is in AliasMode. Otherwise, it is in ServiceMode.



2766
2767
2768
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2766

def priority
  @priority
end

#targetObject (readonly)

The domain name of the target host.



2771
2772
2773
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2771

def target
  @target
end

Class Method Details

.decode_rdata(msg) ⇒ Object

:nodoc:



2798
2799
2800
2801
2802
2803
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2798

def self.decode_rdata(msg) # :nodoc:
  priority, = msg.get_unpack("n")
  target    = msg.get_name
  params    = SvcParams.decode(msg)
  return self.new(priority, target, params)
end

Instance Method Details

#alias_mode?Boolean

Whether this RR is in AliasMode.

Returns:

  • (Boolean)


2781
2782
2783
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2781

def alias_mode?
  self.priority == 0
end

#encode_rdata(msg) ⇒ Object

:nodoc:



2792
2793
2794
2795
2796
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2792

def encode_rdata(msg) # :nodoc:
  msg.put_pack("n", @priority)
  msg.put_name(@target, compress: false)
  @params.encode(msg)
end

#service_mode?Boolean

Whether this RR is in ServiceMode.

Returns:

  • (Boolean)


2788
2789
2790
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 2788

def service_mode?
  !alias_mode?
end