Class: Pio::OpenFlow::Port
- Inherits:
-
BinData::Primitive
- Object
- BinData::Primitive
- Pio::OpenFlow::Port
show all
- Defined in:
- lib/pio/open_flow/port.rb
Overview
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.max_port_number(port_number) ⇒ Object
13
14
15
|
# 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) ⇒ Object
9
10
11
|
# 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) ⇒ Boolean
25
26
27
|
# 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) ⇒ Object
21
22
23
|
# 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) ⇒ Object
17
18
19
|
# File 'lib/pio/open_flow/port.rb', line 17
def self.reserved_ports(port_name_and_number)
@reserved = port_name_and_number
end
|
Instance Method Details
#get ⇒ Object
49
50
51
52
53
54
55
|
# 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 ⇒ Object
29
30
31
|
# File 'lib/pio/open_flow/port.rb', line 29
def max
self.class.const_get :MAX
end
|
#reserved_port_name(port_number) ⇒ Object
45
46
47
|
# 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) ⇒ Boolean
37
38
39
|
# 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) ⇒ Object
33
34
35
|
# 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) ⇒ Boolean
41
42
43
|
# 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) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
|
# 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
|