Sha256: eabf8a801f70c18a4704f714563adf22426860033f10b2b57e2df5c12740c0b9

Contents?: true

Size: 819 Bytes

Versions: 28

Compression:

Stored size: 819 Bytes

Contents

module Pio
  # Port numbering.
  class PortNumber < BinData::Primitive
    NUMBERS = {
      in_port: 0xfff8,
      table: 0xfff9,
      normal: 0xfffa,
      flood: 0xfffb,
      all: 0xfffc,
      controller: 0xfffd,
      local: 0xfffe,
      none: 0xffff
    }
    MAX = 0xff00

    endian :big

    uint16 :port_number

    def get
      NUMBERS.invert.fetch(port_number)
    rescue KeyError
      port_number
    end

    def set(value)
      if NUMBERS.key?(value)
        self.port_number = NUMBERS.fetch(value)
      else
        port_number = value.to_i
        fail ArgumentError, 'The port_number should be > 0' if port_number < 1
        if port_number >= MAX
          fail ArgumentError, 'The port_number should be < 0xff00'
        end
        self.port_number = port_number
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
pio-0.25.0 lib/pio/open_flow/port_number.rb
pio-0.24.2 lib/pio/open_flow/port_number.rb
pio-0.24.1 lib/pio/open_flow/port_number.rb
pio-0.24.0 lib/pio/open_flow/port_number.rb
pio-0.23.1 lib/pio/open_flow/port_number.rb
pio-0.23.0 lib/pio/open_flow/port_number.rb
pio-0.22.0 lib/pio/open_flow/port_number.rb
pio-0.21.1 lib/pio/open_flow/port_number.rb
pio-0.21.0 lib/pio/open_flow/port_number.rb
pio-0.20.1 lib/pio/open_flow/port_number.rb
pio-0.20.0 lib/pio/open_flow/port_number.rb
pio-0.19.0 lib/pio/open_flow/port_number.rb
pio-0.18.2 lib/pio/open_flow/port_number.rb
pio-0.18.1 lib/pio/open_flow/port_number.rb
pio-0.18.0 lib/pio/open_flow/port_number.rb
pio-0.17.0 lib/pio/open_flow/port_number.rb
pio-0.16.0 lib/pio/open_flow/port_number.rb
pio-0.15.2 lib/pio/open_flow/port_number.rb
pio-0.15.1 lib/pio/open_flow/port_number.rb
pio-0.15.0 lib/pio/open_flow/port_number.rb