Sha256: 00474e15f77e42f0e65d69fbc2aa2817aa9a64b0be257a8a559cee2166ccf4cc

Contents?: true

Size: 918 Bytes

Versions: 2

Compression:

Stored size: 918 Bytes

Contents

require 'pio/open_flow13/error/error_type13'

module Pio
  module OpenFlow13
    # Error message parser
    module Error
      # Error message body parser.
      class BodyParser < BinData::Record
        endian :big
        error_type13 :error_type
        uint16 :error_code
      end

      # rubocop:disable MethodLength
      def self.read(binary)
        body = OpenFlowHeaderParser.read(binary).body
        error = BodyParser.read(body).snapshot
        klass = case error.error_type
                when :hello_failed
                  HelloFailed
                when :bad_request
                  BadRequest
                else
                  # Not implemented yet
                  fail 'Unknown error message '\
                       "(type=#{error.error_type}, code=#{error.error_code})"
                end
        klass.read binary
      end
      # rubocop:enable MethodLength
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pio-0.30.0 lib/pio/open_flow13/error.rb
pio-0.29.0 lib/pio/open_flow13/error.rb