ostore.archive
Class VHashTreeNativeIF

java.lang.Object
  |
  +--ostore.archive.VHashTreeNativeIF

public class VHashTreeNativeIF
extends Object

VHashTreeNativeIF is an interface to a native C implementation of the VerificationTree. VerificationTree is computed as a tree (right now, binary) of hashes, where a parent node is the hash over the concatenation of its children.

Version:
$Id: VHashTreeNativeIF.java,v 1.2 2003/11/17 23:52:43 emilong Exp $
Author:
Hakim Weatherspoon

Field Summary
static boolean available
          available indicates if the C implementation of VHashTree is available.
 
Constructor Summary
VHashTreeNativeIF()
           
 
Method Summary
static long calculateHashes(byte[] block, int blockOffset, int blockLength, byte[] fragHeaderArray, int fragHeaderOffset, int fragHeaderLength, int[] intFrags, int intFragOffset, int intFragLength, int numFragments, byte[] hashes, int hashesOffset, int hashesLength)
          calculateHashes calculates the verification tree for the input block and fragments.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

available

public static boolean available
available indicates if the C implementation of VHashTree is available.

Constructor Detail

VHashTreeNativeIF

public VHashTreeNativeIF()
Method Detail

calculateHashes

public static long calculateHashes(byte[] block,
                                   int blockOffset,
                                   int blockLength,
                                   byte[] fragHeaderArray,
                                   int fragHeaderOffset,
                                   int fragHeaderLength,
                                   int[] intFrags,
                                   int intFragOffset,
                                   int intFragLength,
                                   int numFragments,
                                   byte[] hashes,
                                   int hashesOffset,
                                   int hashesLength)
calculateHashes calculates the verification tree for the input block and fragments.

Parameters:
block - block that was encoded {in serialized byte form}.
blockOffset - Offset into block array where the block array "actually" starts.
blockLength - Length of block array.
fragHeaderArray - Byte array the header that will be appended to all fragments. The size is Fragment.OVERHEAD - Erasure.sizeOfLong. We subtract the Erasure.sizeOfLong because the fragment index is included in the fragment data array.
fragHeaderOffset - Offset into fragHeaderArray where the array "actually" starts.
fragHeaderLength - Length of fragHeaderArray.
intFrags - All fragments in a single int array form. The beginning of each fragment includes the fragment index.
intFragOffset - Offset into intFrags array where the fragments array "actually" starts.
intFragLength - Length of intFrags array.
numFragments - Number of fragments.
hashes - VerificationTree in array form. n is the number of fragment. The first hashes at hash index 0 .. n-1 are hashes of the fragment themselves. Hashes at index n .. 2n-2 are parent hashes. Hash at index 2n-1 is the fragment hash (top verification hash over just the fragments). Finally, hash 2n is the GUID.
hashesOffset - Offset int hashes array where the hash array "actually" starts.
hashesLength - Length of hashes array.
Returns:
return == time in milleseconds to calculate VerificationTree.