Class: Takagi::CoAP::Registries::Option

Inherits:
Base
  • Object
show all
Defined in:
lib/takagi/coap/registries/option.rb

Overview

CoAP Option Number Registry (RFC 7252 ยง5.10)

Extensible registry for CoAP option numbers. Plugins can register custom options without modifying core code.

Examples:

Using predefined options

Takagi::CoAP::Registries::Option::URI_PATH         # => 11
Takagi::CoAP::Registries::Option::CONTENT_FORMAT   # => 12

Registering a custom option

Takagi::CoAP::Registries::Option.register(65000, 'Custom-Option', :custom_option)
Takagi::CoAP::Registries::Option::CUSTOM_OPTION  # => 65000

Looking up option names

Takagi::CoAP::Registries::Option.name_for(11)  # => "Uri-Path"

Class Method Summary collapse

Methods inherited from Base

all, clear!, each_value, inherited, metadata_for, name_for, register, registered?, rfc_for, value_for, values

Class Method Details

.critical?(number) ⇒ Boolean

Check if an option is critical Critical options must be understood by the recipient

Parameters:

  • number (Integer)

    Option number

Returns:

  • (Boolean)

    true if critical



44
45
46
# File 'lib/takagi/coap/registries/option.rb', line 44

def self.critical?(number)
  number.allbits?(1)
end

.no_cache_key?(number) ⇒ Boolean

Check if an option has NoCacheKey property

Parameters:

  • number (Integer)

    Option number

Returns:

  • (Boolean)

    true if NoCacheKey



58
59
60
# File 'lib/takagi/coap/registries/option.rb', line 58

def self.no_cache_key?(number)
  (number & 0x1E) == 0x1C
end

.unsafe?(number) ⇒ Boolean

Check if an option is unsafe to forward

Parameters:

  • number (Integer)

    Option number

Returns:

  • (Boolean)

    true if unsafe



51
52
53
# File 'lib/takagi/coap/registries/option.rb', line 51

def self.unsafe?(number)
  number.allbits?(2)
end

.valid?(number) ⇒ Boolean

Check if option number is valid

Parameters:

  • number (Integer)

    Option number

Returns:

  • (Boolean)

    true if valid



65
66
67
# File 'lib/takagi/coap/registries/option.rb', line 65

def self.valid?(number)
  number.between?(0, 65_535)
end