class OpenFlow::Protocol::ArrayOfSubclasses

Public Instance Methods

get() click to toggle source
# File lib/openflow-protocol/helpers/array_of_subclasses.rb, line 10
def get
  items = []
  tmp = binary
  until tmp.empty?
    type_index = BinData::Uint16be.read(tmp)
    type_str = types.fetch(type_index)
    class_name = name + type_str.to_s.split('_').map(&:capitalize).join
    klass = OpenFlow::Protocol.const_get class_name
    item = klass.read(tmp)
    items << item
    tmp = tmp[item.len..-1]
  end
  items
end
set(value) click to toggle source
# File lib/openflow-protocol/helpers/array_of_subclasses.rb, line 25
def set(value)
  self.binary = value.map(&:to_binary_s).join
end

Private Instance Methods

name() click to toggle source
# File lib/openflow-protocol/helpers/array_of_subclasses.rb, line 31
def name
  plural = self.class.to_s
  return plural[0..-4] + 'y' if plural[-3..-1] == 'ies'
  plural[0..-2]
end
types() click to toggle source
# File lib/openflow-protocol/helpers/array_of_subclasses.rb, line 37
def types
  OpenFlow::Protocol.const_get(name + '::TYPES')
end