module Pio::OpenFlow::ErrorMessage

Error message parser

Public Instance Methods

error_classes() click to toggle source

rubocop:enable AbcSize

# File lib/pio/open_flow/error_message.rb, line 27
def error_classes
  OpenFlow::Message.descendants.select do |each|
    each.parents.include? parent.const_get(:Error)
  end
end
read(binary) click to toggle source

rubocop:disable AbcSize

# File lib/pio/open_flow/error_message.rb, line 13
def read(binary)
  body = OpenFlow::Header.read(binary).body
  error = const_get(:BodyParser).read(body)
  klass = error_classes.find do |each|
    each.name.split('::').last.underscore == error.error_type.to_s
  end
  unless klass
    raise 'Unknown error message '\
         "(type=#{error.error_type}, code=#{error.error_code})"
  end
  klass.read binary
end