class Net::DNS::RR::Classes
Net::DNS::Classes¶ ↑
This is an auxiliary class to handle Net::DNS::RR
class field in a DNS
packet.
Constants
- CLASSES
Hash with the values of each
RR
class stored with the respective id number.
Public Class Methods
# File lib/net/dns/rr/classes.rb, line 63 def self.default @@default end
Be able to control the default class to assign when cls argument is nil
. Default to IN
# File lib/net/dns/rr/classes.rb, line 69 def self.default=(str) if CLASSES[str] @@default = CLASSES[str] else raise ArgumentError, "Unknown class `#{str}'" end end
Creates a new object representing an RR
class. Performs some checks on the argument validity too. Il cls
is nil
, the default value is ANY
or the one set with Classes.default=
# File lib/net/dns/rr/classes.rb, line 27 def initialize(cls) case cls when String initialize_from_str(cls) when Integer initialize_from_num(cls) when nil initialize_from_num(@@default) end if @str.nil? || @num.nil? raise ArgumentError, "Unable to create a `Classes' from `#{cls}'" end end
Gives in output the keys from the Classes
hash in a format suited for regexps
# File lib/net/dns/rr/classes.rb, line 108 def self.regexp CLASSES.keys.sort.join("|") end
Returns whether cls
is a valid RR
class.
Net::DNS::RR::Classes.valid?("IN") # => true Net::DNS::RR::Classes.valid?(1) # => true Net::DNS::RR::Classes.valid?("Q") # => false Net::DNS::RR::Classes.valid?(256) # => false Net::DNS::RR::Classes.valid?(Hash.new) # => ArgumentError
FIXME: valid? should never raise.
Raises¶ ↑
- ArgumentError
-
if
cls
isn't either a String or a Fixnum
# File lib/net/dns/rr/classes.rb, line 95 def self.valid?(cls) case cls when String CLASSES.key?(cls) when Integer CLASSES.invert.key?(cls) else raise ArgumentError, "Wrong cls class: #{cls.class}" end end
Public Instance Methods
Returns the class in number format (default for normal use)
FIXME: inspect must return a String.
# File lib/net/dns/rr/classes.rb, line 47 def inspect @num end
Returns the class in numeric format, usable by the pack methods for data transfers.
# File lib/net/dns/rr/classes.rb, line 59 def to_i @num.to_i end
Returns the class in string format, ex. “IN” or “CH” or such a string.
# File lib/net/dns/rr/classes.rb, line 53 def to_s @str.to_s end
Private Instance Methods
Initialize a new instance from the Class value.
# File lib/net/dns/rr/classes.rb, line 122 def initialize_from_num(num) key = num.to_i @num = key @str = CLASSES.invert[key] end
Initialize a new instance from a Class name.
# File lib/net/dns/rr/classes.rb, line 115 def initialize_from_str(str) key = str.to_s.upcase @num = CLASSES[key] @str = key end