Another little reorg; we are quite tightly bound to implementation of CStruct

This commit is contained in:
Brian Candler
2011-05-02 18:17:24 +01:00
parent 14f8a27d2b
commit a6eda43b2e
3 changed files with 35 additions and 7 deletions

View File

@@ -1,10 +1,12 @@
module Netlink
# This class allows defining of C-style structures, and converting
# object instances to and from a packed binary representation.
#
# A new structure is created by subclassing Cstruct, and then using the
# A new structure is created by subclassing CStruct, and then using the
# 'field' metaprogramming macro to define each field:
#
# class Foo < Cstruct
# class Foo < CStruct
# field :bar, :char
# field :baz, :long
#
@@ -25,7 +27,7 @@
# str = msg.to_s # convert to binary
# msg2 = Foo.parse(str) # convert from binary
# msg2 = Foo.new(msg) # copy an existing object
class Cstruct
class CStruct
EMPTY_STRING = "".freeze #:nodoc:
EMPTY_ARRAY = [].freeze #:nodoc:
@@ -183,3 +185,4 @@ class Cstruct
(val + (m-1)) & ~(m-1)
end
end
end # module Netlink

View File

@@ -1,4 +1,4 @@
require 'cstruct'
require 'netlink/c_struct'
require 'netlink/constants'
require 'ipaddr'
@@ -6,8 +6,8 @@ module Netlink
NLMSGHDR_PACK = "LSSLL".freeze # :nodoc:
NLMSGHDR_SIZE = [0,0,0,0,0].pack(NLMSGHDR_PACK).bytesize # :nodoc:
EMPTY_STRING = Cstruct::EMPTY_STRING #:nodoc:
EMPTY_ARRAY = Cstruct::EMPTY_ARRAY #:nodoc:
EMPTY_STRING = "".freeze #:nodoc:
EMPTY_ARRAY = [].freeze #:nodoc:
# This is the base class from which all Netlink messages are derived.
# To define a new Netlink message, make a subclass and then call the
@@ -16,7 +16,7 @@ module Netlink
# types are to be built using this structure.
#
# Use RtattrMessage instead for messages which are followed by variable rtattrs.
class Message < Cstruct
class Message < CStruct
# Map of numeric message type code => message class
CODE_TO_MESSAGE = {}