class EraXML::Builder

Attributes

block_size[RW]
current_era[RW]
nr_blocks[RW]
nr_writesets[RW]
uuid[RW]

Public Class Methods

new() click to toggle source
# File lib/thinp_xml/era/builder.rb, line 9
def initialize
  @uuid = ''
  @block_size = 128
  @nr_blocks = 0
  @current_era = 0
  @nr_writesets = 0
end

Public Instance Methods

generate() click to toggle source
# File lib/thinp_xml/era/builder.rb, line 17
def generate
  s = Superblock.new(@uuid, @block_size, @nr_blocks, @current_era)

  if @nr_writesets > @current_era
    raise "can't have more writesets than eras"
  end

  era_array_limit = @current_era - @nr_writesets

  writesets = (0..@nr_writesets - 1).map do |i|
    bits = (0..@nr_blocks - 1).map do |block|
      WritesetBit.new(block, rand(2) == 0 ? false : true)
    end

    Writeset.new(era_array_limit + i, @nr_blocks, bits)
  end

  era_array = (0..@nr_blocks - 1).map do |block|
    if @current_era > 0
      rand(era_array_limit)
    else
      0
    end
  end

  Metadata.new(s, writesets, era_array)
end