/** * Returns the first page on the indicated list. */ long getFirst( short type ) throws IOException { return header.getFirstOf( type ); }
/** * Returns the last page on the indicated list. */ long getLast( short type ) throws IOException { return header.getLastOf( type ); }
/** * Returns the offset of the "last" block of the indicated list */ private short offsetOfLast( int list ) { return ( short ) ( offsetOfFirst( list ) + Magic.SZ_LONG ); }
long retval = header.getFirstOf(Magic.FREE_PAGE); boolean isNew = false; if (retval != 0) { header.setFirstOf(Magic.FREE_PAGE, getNext(retval)); retval = header.getLastOf(Magic.FREE_PAGE); if (retval == 0) header.setLastOf(Magic.FREE_PAGE, retval + 1); isNew = true; PageHeader pageHdr = isNew ? new PageHeader(buf, type) : PageHeader.getView(buf); long oldLast = header.getLastOf(type); header.setFirstOf(type, retval); header.setLastOf(type, retval); file.release(retval, true);
pageHdr.setNext(header.getFirstOf(Magic.FREE_PAGE)); pageHdr.setPrev(0); header.setFirstOf(Magic.FREE_PAGE, recid); file.release(recid, true); header.setFirstOf(type, next); header.setLastOf(type, prev);
/** * Creates a new page manager using the indicated record file. */ PageManager(RecordFile file) throws IOException { this.file = file; // check the file header. If the magic is 0, we assume a new // file. Note that we hold on to the file header node. headerBuf = file.get(0); if (headerBuf.readShort(0) == 0) header = new FileHeader(headerBuf, true); else header = new FileHeader(headerBuf, false); }
/** * Returns the last block of the indicated list */ long getLastOf(int list) { return block.readLong(offsetOfLast(list)); }
/** * Sets the indicated root rowid. * * @see #getRoot * @see #NROOTS */ void setRoot(int root, long rowid) { block.writeLong(offsetOfRoot(root), rowid); } }
/** * Returns the indicated root rowid. * * @see #getRootCount */ public synchronized long getRoot( int id ) throws IOException { checkIfClosed(); return pageMgr.getFileHeader().getRoot( id ); }
public synchronized void setRoot( int id, long rowid ) throws IOException { checkIfClosed(); _physPageman.getFileHeader().setRoot( id, rowid ); }
long retval = header.getFirstOf( Magic.FREE_PAGE ); if ( retval != 0 ) header.setFirstOf( Magic.FREE_PAGE, getNext( retval ) ); retval = header.getLastOf( Magic.FREE_PAGE ); header.setLastOf( Magic.FREE_PAGE, retval + 1 ); isNew = true; long oldLast = header.getLastOf( type ); header.setFirstOf( type, retval ); header.setLastOf( type, retval ); recordFile.release( retval, true );
pageHdr.setNext( header.getFirstOf( Magic.FREE_PAGE ) ); pageHdr.setPrev( 0 ); header.setFirstOf( Magic.FREE_PAGE, recid ); file.release( recid, true ); header.setFirstOf( type, next ); header.setLastOf( type, prev );
/** * Creates a new page manager using the indicated record file. */ PageManager( RecordFile file ) throws IOException { this.file = file; // Note that we hold on to the file header node. headerBuf = file.get( 0 ); // Assume file is new if the file header's magic number is 0. if ( headerBuf.readShort( 0 ) == 0 ) { header = new FileHeader( headerBuf, true ); } else // header is for existing file { header = new FileHeader( headerBuf, false ); } }
/** * Returns the last block of the indicated list */ long getLastOf( int list ) { return block.readLong( offsetOfLast( list ) ); }
/** * Sets the indicated root rowid. * * @see #getRoot * @see #NROOTS */ void setRoot( int root, long rowid ) { block.writeLong( offsetOfRoot( root ), rowid ); }
public synchronized long getRoot( int id ) throws IOException { checkIfClosed(); return _physPageman.getFileHeader().getRoot( id ); }
/** * Sets the indicated root rowid. * * @see #getRootCount */ public synchronized void setRoot( int id, long rowid ) throws IOException { checkIfClosed(); pageMgr.getFileHeader().setRoot( id, rowid ); }
long retval = header.getFirstOf( Magic.FREE_PAGE ); if ( retval != 0 ) header.setFirstOf( Magic.FREE_PAGE, getNext( retval ) ); retval = header.getLastOf( Magic.FREE_PAGE ); header.setLastOf( Magic.FREE_PAGE, retval + 1 ); isNew = true; long oldLast = header.getLastOf( type ); header.setFirstOf( type, retval ); header.setLastOf( type, retval ); file.release( retval, true );
pageHdr.setNext( header.getFirstOf( Magic.FREE_PAGE ) ); pageHdr.setPrev( 0 ); header.setFirstOf( Magic.FREE_PAGE, recid ); recordFile.release( recid, true ); header.setFirstOf( type, next ); header.setLastOf( type, prev );
/** Returns the offset of the "last" block of the indicated list */ private short offsetOfLast(int list) { return (short) (offsetOfFirst(list) + Magic.SZ_LONG); }