Sha256: c14d0b162c85d14ecca7fb90ebccb5117859a14c2411137bbbf7bb880bc6388f

Contents?: true

Size: 704 Bytes

Versions: 8

Compression:

Stored size: 704 Bytes

Contents

require 'pio/open_flow10/error/error_type10'

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

      def self.read(binary)
        body = OpenFlowHeaderParser.read(binary).body
        klass = case BodyParser.read(body).snapshot.error_type
                when :hello_failed
                  HelloFailed
                when :bad_request
                  BadRequest
                else
                  fail 'Unknown error message.'
                end
        klass.read binary
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pio-0.30.0 lib/pio/open_flow10/error.rb
pio-0.29.0 lib/pio/open_flow10/error.rb
pio-0.28.1 lib/pio/open_flow10/error.rb
pio-0.28.0 lib/pio/open_flow10/error.rb
pio-0.27.2 lib/pio/open_flow10/error.rb
pio-0.27.1 lib/pio/open_flow10/error.rb
pio-0.27.0 lib/pio/open_flow10/error.rb
pio-0.26.0 lib/pio/open_flow10/error.rb