Sha256: bffaaa1326fec48cdd4bead2704088e5c8d929145fddbc56328d46802f111685

Contents?: true

Size: 1.79 KB

Versions: 67

Compression:

Stored size: 1.79 KB

Contents

require 'binary_struct'

module Ext4
  # ////////////////////////////////////////////////////////////////////////////
  # // Data definitions.

  HASH_TREE_ENTRY_FIRST = BinaryStruct.new([
    'S',  'max_descriptors',  # Maximum number of node descriptors.
    'S',  'cur_descriptors',  # Current number of node descriptors.
    'L',  'first_node',       # Block address of first node.
  ])
  SIZEOF_HASH_TREE_ENTRY_FIRST = HASH_TREE_ENTRY_FIRST.size

  HASH_TREE_ENTRY_NEXT = BinaryStruct.new([
    'L',  'min_hash',   # Minimum hash value in node.
    'L',  'next_node',  # Block address of next node.
  ])
  SIZEOF_HASH_TREE_ENTRY_NEXT = HASH_TREE_ENTRY_NEXT.size

  SIZEOF_HASH_TREE_ENTRY = SIZEOF_HASH_TREE_ENTRY_NEXT

  class HashTreeEntry
    attr_reader :first, :max_descriptors, :cur_descriptors, :node, :min_hash

    def initialize(buf, first = false)
      raise "Ext4::HashTreeEntry.initialize: Nil buffer" if buf.nil?

      @first = first

      if first
        @hte             = HASH_TREE_ENTRY_FIRST.decode(buf)
        @max_descriptors = @hte['max_descriptors']
        @cur_descriptors = @hte['cur_descriptors']
        @node            = @hte['first_node']
      else
        @hte             = HASH_TREE_ENTRY_NEXT.decode(buf)
        @min_hash        = @hte['min_hash']
        @node            = @hte['next_node']
      end
    end

    def dump
      out = "\#<#{self.class}:0x#{'%08x' % object_id}>\n"
      if @first
        out += "First Node?     : true\n"
        out += "Max Descriptors : #{@max_descriptors}\n"
        out += "Cur Descriptors : #{@cur_descriptors}\n"
        out += "First Node      : #{@node}\n"
      else
        out += "First Node?     : false\n"
        out += "Min Hash        : #{@min_hash}\n"
        out += "Next Node       : #{@node}\n"
      end

      out
    end
  end
end

Version data entries

67 entries across 67 versions & 1 rubygems

Version Path
manageiq-smartstate-0.11.0 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.10.1 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.10.0 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.9.0 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.8.1 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.8.0 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.7.0 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.6.2 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.5.10 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.3.10 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.6.1 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.3.9 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.6.0 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.5.9 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.5.8 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.3.8 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.5.7 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.3.7 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.5.6 lib/fs/ext4/hash_tree_entry.rb
manageiq-smartstate-0.3.6 lib/fs/ext4/hash_tree_entry.rb