@Override public void reset(Block block) { rBuffPage.reset(block) ; rBuff = rBuffPage.getRecordBuffer() ; }
Block2BPTreeRecords(BPlusTree bpTree, RecordFactory recordFactory) { this.bpTree = bpTree ; this.recordBufferConverter = new RecordBufferPageMgr.Block2RecordBufferPage(recordFactory) ; }
/** The construction methods */ public static RecordBufferPage createBlank(Block block,RecordFactory factory) { int count = 0 ; int linkId = NO_ID ; return new RecordBufferPage(block, factory, count, linkId) ; }
@Override public void close() { if (currentPage != null ) pageMgr.release(currentPage) ; currentPage = null ; currentIdx = -99 ; slot = null ; pageMgr.getBlockMgr().endIterator(this) ; }
BPTreeRecords(BPlusTree bpTree, RecordBufferPage rbp) { super(bpTree) ; rBuffPage = rbp ; rBuff = rBuffPage.getRecordBuffer() ; }
@Override public int getId() { return rBuffPage.getId() ; }
/** Iterate over a range of fromRec (inclusive) to toRec (exclusive) */ public static Iterator<Record> iterator(int pageId, Record fromRec, Record toRec, RecordBufferPageMgr pageMgr) { if ( ! pageMgr.valid(pageId) ) { String msg = "RecordRangeIterator.iterator -- No such block (pageId="+pageId+", fromRec="+fromRec+", toRec="+toRec+ ")" ; Log.error(RecordRangeIterator.class, msg); throw new BlockException(msg) ; } return new RecordRangeIterator(pageId, fromRec, toRec, pageMgr) ; }
public static int calcBlockSize(RecordFactory factory, int maxRec) { return RecordBufferPageBase.calcBlockSize(factory, maxRec, HashBucket.FIELD_LENGTH) ; } }
public static int calcRecordSize(RecordFactory factory, int blkSize) { return RecordBufferPageBase.calcRecordSize(factory, blkSize, HashBucket.FIELD_LENGTH) ; }
@Override public RecordBufferPage fromBlock(Block block) { synchronized (block) // Needed? Right place? { RecordBufferPage rb = RecordBufferPage.format(block, factory) ; return rb ; } }
protected RecordBufferPageBase(Block block, int offset, RecordFactory factory, int count) { // This code knows the alignment of the records in the ByteBuffer. super(block) ; this.headerLength = FIELD_LENGTH+offset ; // NB +4 for the count field this.factory = factory ; reset(block, count) ; }
@Override public final Block getBackingBlock() { return rBuffPage.getBackingBlock() ; }
@Override public void startUpdate() { rBuffPageMgr.startUpdate() ; } @Override
@Override public void startRead() { rBuffPageMgr.startRead() ; } @Override
int getLink() { return rBuffPage.getLink() ; }
@Override public void finishUpdate() { rBuffPageMgr.finishUpdate() ; } }
@Override public void finishRead() { rBuffPageMgr.finishRead() ; }
public static int calcBlockSize(RecordFactory factory, int maxRec) { return RecordBufferPageBase.calcBlockSize(factory, maxRec, FIELD_LENGTH) ; }
public static int calcRecordSize(RecordFactory factory, int blkSize) { return RecordBufferPageBase.calcRecordSize(factory, blkSize, FIELD_LENGTH) ; }