Sha256: ba5eb135df5ef191021ff4bcc770faaf7ff9aee195f38b49e9f39b11492fc2a2
Contents?: true
Size: 1.58 KB
Versions: 7
Compression:
Stored size: 1.58 KB
Contents
require 'forwardable' require 'pio/open_flow' # Base module. module Pio # OpenFlow 1.3 Features Request and Reply message. class Features remove_const :Request # OpenFlow 1.3 Features Request message. class Request # OpenFlow 1.3 Features Request message format. class Format < BinData::Record extend Forwardable endian :big open_flow_header(:open_flow_header, ofp_version_value: 4, message_type_value: 5) string :body, value: '' def_delegators :open_flow_header, :ofp_version def_delegators :open_flow_header, :message_type def_delegators :open_flow_header, :message_length def_delegators :open_flow_header, :transaction_id def_delegator :open_flow_header, :transaction_id, :xid def to_binary to_binary_s end end def self.read(raw_data) allocate.tap do |message| message.instance_variable_set(:@format, Format.read(raw_data)) end rescue BinData::ValidityError raise Pio::ParseError, 'Invalid Features Request 1.3 message.' end def initialize(user_attrs = {}) unknown_attrs = user_attrs.keys - [:transaction_id, :xid] unless unknown_attrs.empty? fail "Unknown keyword: #{unknown_attrs.first}" end header_options = OpenFlowHeader::Options.parse(user_attrs) @format = Format.new(open_flow_header: header_options) end def method_missing(method, *args, &block) @format.__send__ method, *args, &block end end end end
Version data entries
7 entries across 7 versions & 1 rubygems