in mavibot/src/main/java/org/apache/directory/mavibot/btree/RecordManager.java [3469:3575]
private long dumpBtreeHeader( long btreeOffset ) throws EndOfFileExceededException, IOException
{
// First read the B-tree header
PageIO[] pageIos = readPageIOs( btreeOffset, Long.MAX_VALUE );
long dataPos = 0L;
// The B-tree current revision
long revision = readLong( pageIos, dataPos );
dataPos += LONG_SIZE;
// The nb elems in the tree
long nbElems = readLong( pageIos, dataPos );
dataPos += LONG_SIZE;
// The B-tree rootPage offset
long rootPageOffset = readLong( pageIos, dataPos );
dataPos += LONG_SIZE;
// The B-tree page size
int btreePageSize = readInt( pageIos, dataPos );
dataPos += INT_SIZE;
// The tree name
ByteBuffer btreeNameBytes = readBytes( pageIos, dataPos );
dataPos += INT_SIZE + btreeNameBytes.limit();
String btreeName = Strings.utf8ToString( btreeNameBytes );
// The keySerializer FQCN
ByteBuffer keySerializerBytes = readBytes( pageIos, dataPos );
dataPos += INT_SIZE + keySerializerBytes.limit();
String keySerializerFqcn = "";
if ( keySerializerBytes != null )
{
keySerializerFqcn = Strings.utf8ToString( keySerializerBytes );
}
// The valueSerialier FQCN
ByteBuffer valueSerializerBytes = readBytes( pageIos, dataPos );
String valueSerializerFqcn = "";
dataPos += INT_SIZE + valueSerializerBytes.limit();
if ( valueSerializerBytes != null )
{
valueSerializerFqcn = Strings.utf8ToString( valueSerializerBytes );
}
// The B-tree allowDuplicates flag
int allowDuplicates = readInt( pageIos, dataPos );
boolean dupsAllowed = allowDuplicates != 0;
dataPos += INT_SIZE;
// System.out.println( "\n B-Tree " + btreeName );
// System.out.println( " ------------------------- " );
// System.out.println( " nbPageIOs[" + pageIos.length + "] = " + pageIoList );
if ( LOG.isDebugEnabled() )
{
StringBuilder sb = new StringBuilder();
boolean isFirst = true;
for ( PageIO pageIo : pageIos )
{
if ( isFirst )
{
isFirst = false;
}
else
{
sb.append( ", " );
}
sb.append( "0x" ).append( Long.toHexString( pageIo.getOffset() ) );
}
String pageIoList = sb.toString();
LOG.debug( " PageIOs[{}] = {}", pageIos.length, pageIoList );
// System.out.println( " dataSize = "+ pageIos[0].getSize() );
LOG.debug( " dataSize = {}", pageIos[0].getSize() );
LOG.debug( " B-tree '{}'", btreeName );
LOG.debug( " revision : {}", revision );
LOG.debug( " nbElems : {}", nbElems );
LOG.debug( " rootPageOffset : 0x{}", Long.toHexString( rootPageOffset ) );
LOG.debug( " B-tree page size : {}", btreePageSize );
LOG.debug( " keySerializer : '{}'", keySerializerFqcn );
LOG.debug( " valueSerializer : '{}'", valueSerializerFqcn );
LOG.debug( " dups allowed : {}", dupsAllowed );
//
// System.out.println( " B-tree '" + btreeName + "'" );
// System.out.println( " revision : " + revision );
// System.out.println( " nbElems : " + nbElems );
// System.out.println( " rootPageOffset : 0x" + Long.toHexString( rootPageOffset ) );
// System.out.println( " B-tree page size : " + btreePageSize );
// System.out.println( " keySerializer : " + keySerializerFqcn );
// System.out.println( " valueSerializer : " + valueSerializerFqcn );
// System.out.println( " dups allowed : " + dupsAllowed );
}
return rootPageOffset;
}