/** * Read a root page from the B-tree header offset */ private <K, V> Page<K, V> readRootPage( BTree<K, V> btree, long btreeHeaderOffset ) throws EndOfFileExceededException, IOException { // Read the B-tree header pages on disk PageIO[] btreeHeaderPageIos = readPageIOs( btreeHeaderOffset, Long.MAX_VALUE ); long dataPos = LONG_SIZE + LONG_SIZE; // The B-tree rootPage offset long rootPageOffset = readLong( btreeHeaderPageIos, dataPos ); // Read the rootPage pages on disk PageIO[] rootPageIos = readPageIOs( rootPageOffset, Long.MAX_VALUE ); // Now, convert it to a Page Page<K, V> btreeRoot = readPage( btree, rootPageIos ); return btreeRoot; }
/** * Deserialize a Page from a B-tree at a give position * * @param btree The B-tree we want to read a Page from * @param offset The position in the file for this page * @return The read page * @throws EndOfFileExceededException If we have reached the end of the file while reading the page */ public <K, V> Page<K, V> deserialize( BTree<K, V> btree, long offset ) throws EndOfFileExceededException, IOException { checkOffset( offset ); PageIO[] rootPageIos = readPageIOs( offset, Long.MAX_VALUE ); Page<K, V> page = readPage( btree, rootPageIos ); return page; }
for ( int i = 0; i < offsets.length; i++ ) PageIO[] ios = readPageIOs( offsets[i], Long.MAX_VALUE ); for ( PageIO io : ios )
PageIO[] freePageIO = readPageIOs( freePage, 8 );
PageIO[] pageIos = readPageIOs( pageOffset, Long.MAX_VALUE ); PageIO[] pageIos = readPageIOs( pageOffset, Long.MAX_VALUE );
/** * Loads a B-tree holding the values of a duplicate key * This tree is also called as dups tree or sub tree * * @param offset the offset of the B-tree header * @return the deserialized B-tree */ /* No qualifier */<K, V> BTree<V, V> loadDupsBtree( long btreeHeaderOffset, BTree<K, V> parentBtree ) { PageIO[] pageIos = null; try { pageIos = readPageIOs( btreeHeaderOffset, Long.MAX_VALUE ); BTree<V, V> subBtree = BTreeFactory.<V, V> createPersistedBTree( BTreeTypeEnum.PERSISTED_SUB ); loadBtree( pageIos, subBtree, parentBtree ); return subBtree; } catch ( Exception e ) { // should not happen throw new BTreeCreationException( e ); } }
PageIO[] pageIos = readPageIOs( btreeOffset, Long.MAX_VALUE );
PageIO[] bobHeaderPageIos = readPageIOs( currentBtreeOfBtreesOffset, Long.MAX_VALUE ); PageIO[] copiedPagesPageIos = readPageIOs( currentCopiedPagesBtreeOffset, Long.MAX_VALUE ); PageIO[] btreePageIos = readPageIOs( btreeOffset, Long.MAX_VALUE );
PageIO[] btreeInfoPagesIos = recordManager.readPageIOs( btreeInfoOffset, Long.MAX_VALUE );
Map<String, int[]> checkedPages, long pageOffset ) throws Exception PageIO[] pageIos = recordManager.readPageIOs( pageOffset, Long.MAX_VALUE );
/** * Check a user's B-tree */ private static <K, V> void checkBtree( RecordManager recordManager, long btreeOffset, Map<String, int[]> checkedPages ) throws Exception { // Read the B-tree header PageIO[] btreeHeaderPageIos = recordManager.readPageIOs( btreeOffset, Long.MAX_VALUE ); long dataPos = 0L; // The B-tree current revision long btreeRevision = recordManager.readLong( btreeHeaderPageIos, dataPos ); dataPos += RecordManager.LONG_SIZE; // The nb elems in the tree recordManager.readLong( btreeHeaderPageIos, dataPos ); dataPos += RecordManager.LONG_SIZE; // The B-tree rootPage offset long rootPageOffset = recordManager.readLong( btreeHeaderPageIos, dataPos ); checkOffset( recordManager, rootPageOffset ); dataPos += RecordManager.LONG_SIZE; // The B-tree info offset long btreeInfoOffset = recordManager.readLong( btreeHeaderPageIos, dataPos ); checkOffset( recordManager, btreeInfoOffset ); BtreeInfo<K, V> btreeInfo = checkBtreeInfo( recordManager, checkedPages, btreeInfoOffset, btreeRevision ); // Update the checked pages updateCheckedPages( checkedPages.get( btreeInfo.btreeName ), recordManager.pageSize, btreeHeaderPageIos ); updateCheckedPages( checkedPages.get( GLOBAL_PAGES_NAME ), recordManager.pageSize, btreeHeaderPageIos ); // And now, process the rootPage checkBtreePage( recordManager, btreeInfo, checkedPages, rootPageOffset ); }
long pageOffset ) throws Exception PageIO[] pageIos = recordManager.readPageIOs( pageOffset, Long.MAX_VALUE );
.readPageIOs( recordManager.currentBtreeOfBtreesOffset, Long.MAX_VALUE );
PageIO[] pageIos = rm.readPageIOs( offset, -1L );
pageIos = readPageIOs( offset, headerSize ); pageIos = readPageIOs( offset, Long.MAX_VALUE );
PageIO[] infoPageIos = readPageIOs( btreeInfoOffset, Long.MAX_VALUE ); ( ( PersistedBTree<K, V> ) btree ).setBtreeInfoOffset( infoPageIos[0].getOffset() ); dataPos = 0L; PageIO[] rootPageIos = readPageIOs( rootPageOffset, Long.MAX_VALUE );
PageIO[] pageIos = recordManager.readPageIOs( btreeHeader.getBTreeHeaderOffset(), -1L );
PageIO[] pageIos = recordManager.readPageIOs( btreeHeader.getBTreeHeaderOffset(), -1L );