Sha256: b65ad14a8d3a1f4e3613f501c9af5459663be770fbfa8bfd5e9359b9fcdbd211

Contents?: true

Size: 735 Bytes

Versions: 2

Compression:

Stored size: 735 Bytes

Contents

require 'pio/features/reply'
require 'pio/features/request'
require 'pio/open_flow'
require 'pio/parse_error'

module Pio
  # OpenFlow 1.0 Features messages
  class Features
    include Pio::OpenFlow::Type

    # @reek This method smells of :reek:TooManyStatements
    def self.read(raw_data)
      header = Pio::Type::OpenFlow::OpenFlowHeader.read(raw_data)
      klass = { FEATURES_REQUEST => Request,
                FEATURES_REPLY => Reply }.fetch(header.message_type)
      format = klass.const_get(:Format).read(raw_data)
      message = klass.allocate
      message.instance_variable_set :@format, format
      message
    rescue KeyError
      raise Pio::ParseError, 'Invalid features request/reply message.'
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pio-0.9.0 lib/pio/features.rb
pio-0.8.2 lib/pio/features.rb