Class: PacketGen::PcapNG::Block Abstract
- Inherits:
-
Types::Fields
- Object
- Types::Fields
- PacketGen::PcapNG::Block
- Defined in:
- lib/packetgen/pcapng/block.rb
Overview
Base class for all block types
Direct Known Subclasses
EPB, IDB, SHB, SPB, UnknownBlock
Instance Attribute Summary collapse
-
#block_len ⇒ Integer
32-bit block length.
- #endian ⇒ :little, :big
-
#type ⇒ Integer
32-bit block type.
Instance Method Summary collapse
-
#has_options? ⇒ Boolean
deprecated
Deprecated.
Use #options? instead.
-
#initialize(options = {}) ⇒ Block
constructor
A new instance of Block.
-
#options? ⇒ Boolean
Has this block option?.
-
#pad_field(*fields) ⇒ void
Pad given field to 32 bit boundary, if needed.
-
#recalc_block_len ⇒ void
Calculate block length and update :block_len and block_len2 fields.
Methods inherited from Types::Fields
#[], #[]=, #bits_on, #body=, define_bit_fields_on, define_field, define_field_after, define_field_before, delete_field, fields, #fields, #force_binary, inherited, #inspect, #is_optional?, #is_present?, #offset_of, #optional?, #optional_fields, #present?, #read, remove_bit_fields_on, remove_field, #sz, #to_h, #to_s, update_field
Constructor Details
#initialize(options = {}) ⇒ Block
29 30 31 |
# File 'lib/packetgen/pcapng/block.rb', line 29 def initialize(={}) super end |
Instance Attribute Details
#block_len ⇒ Integer
32-bit block length
23 |
# File 'lib/packetgen/pcapng/block.rb', line 23 define_field :block_len, Types::Int32 |
#endian ⇒ :little, :big
14 15 16 |
# File 'lib/packetgen/pcapng/block.rb', line 14 def endian @endian end |
Instance Method Details
#has_options? ⇒ Boolean
Use #options? instead.
42 43 44 45 |
# File 'lib/packetgen/pcapng/block.rb', line 42 def Deprecation.deprecated(self.class, __method__, 'options?') end |
#options? ⇒ Boolean
Has this block option?
36 37 38 |
# File 'lib/packetgen/pcapng/block.rb', line 36 def @fields.key?(:options) && @fields[:options].sz > 0 end |
#pad_field(*fields) ⇒ void
This method returns an undefined value.
Pad given field to 32 bit boundary, if needed
57 58 59 60 61 62 63 |
# File 'lib/packetgen/pcapng/block.rb', line 57 def pad_field(*fields) fields.each do |field| unless (@fields[field].size % 4).zero? @fields[field] << "\x00" * (4 - (@fields[field].size % 4)) end end end |
#recalc_block_len ⇒ void
This method returns an undefined value.
Calculate block length and update :block_len and block_len2 fields
49 50 51 52 |
# File 'lib/packetgen/pcapng/block.rb', line 49 def recalc_block_len len = fields.map { |f| @fields[f].to_s }.join.size self.block_len = self.block_len2 = len end |