class Pio::OpenFlow::Port

Port numbering.

Public Class Methods

max_port_number(port_number) click to toggle source
# File lib/pio/open_flow/port.rb, line 13
def self.max_port_number(port_number)
  const_set :MAX, port_number
end
port_size_in_bytes(nbytes) click to toggle source
# File lib/pio/open_flow/port.rb, line 9
def self.port_size_in_bytes(nbytes)
  class_eval "uint#{nbytes} :port"
end
reserved_port_name?(port_name) click to toggle source
# File lib/pio/open_flow/port.rb, line 25
def self.reserved_port_name?(port_name)
  @reserved.key? port_name
end
reserved_port_number(port_name) click to toggle source
# File lib/pio/open_flow/port.rb, line 21
def self.reserved_port_number(port_name)
  @reserved.fetch port_name
end
reserved_ports(port_name_and_number) click to toggle source
# File lib/pio/open_flow/port.rb, line 17
def self.reserved_ports(port_name_and_number)
  @reserved = port_name_and_number
end

Public Instance Methods

get() click to toggle source
# File lib/pio/open_flow/port.rb, line 49
def get
  if reserved_port_number?(port)
    reserved_port_name(port)
  else
    port
  end
end
max() click to toggle source
# File lib/pio/open_flow/port.rb, line 29
def max
  self.class.const_get :MAX
end
reserved_port_name(port_number) click to toggle source
# File lib/pio/open_flow/port.rb, line 45
def reserved_port_name(port_number)
  self.class.instance_variable_get(:@reserved).invert.fetch(port_number)
end
reserved_port_name?(port_name) click to toggle source
# File lib/pio/open_flow/port.rb, line 37
def reserved_port_name?(port_name)
  self.class.reserved_port_name? port_name
end
reserved_port_number(port_name) click to toggle source
# File lib/pio/open_flow/port.rb, line 33
def reserved_port_number(port_name)
  self.class.reserved_port_number port_name
end
reserved_port_number?(port_number) click to toggle source
# File lib/pio/open_flow/port.rb, line 41
def reserved_port_number?(port_number)
  self.class.instance_variable_get(:@reserved).invert.key?(port_number)
end
set(port) click to toggle source
# File lib/pio/open_flow/port.rb, line 57
def set(port)
  if reserved_port_name?(port)
    self.port = reserved_port_number(port)
  else
    port_num = port.to_i
    raise ArgumentError, 'The port should be > 0' if port_num < 1
    if port_num >= max
      raise ArgumentError, "The port should be < #{max.to_hex}"
    end
    self.port = port_num
  end
end