| java.lang.Object com.quadcap.sql.file.RandomAccess com.quadcap.sql.file.BlockAccess
BlockAccess | public class BlockAccess extends RandomAccess (Code) | | This class implements a randomly accessible, growable region within
a BlockFile object. The region is defined by a root block,
which either contains the entire data for the region (if it will fit),
or contains a set of references to secondary blocks which contain the
actual data. If the region is large enough, those secondary blocks
themselves may be references, and so on.
author: Stan Bailes |
Method Summary | |
final int | bufLen() Return the size of the data portion of the block. | public void | close() Finalization: We're done with this region. | public void | flush() | final long | getBlockRef(Page b, int pos, boolean isRoot) Return the specified block reference. | public void | init(PageManager file, long rootBlock) | final long | makeBlockRef(Page b, int pos, boolean isRoot) Return the specified block reference. | final int[] | radicesForDepth(int depth) Build the radices array for a region of the specified depth. | public void | read(long pos, byte[] buf, int offset, int len) Read from the data region. | final int | refsForLevel(int level) Return the number of blockrefs that will fit in a block. | public void | resize(long newSize) Resize the region. | final void | setBlockRef(Page b, int pos, long val, boolean isRoot) Set the specified block reference. | public long | size() | final String | toString(long page) | public String | toString() | public void | write(long pos, byte[] buf, int offset, int len) Write into the data region. |
HEADER_SIZE | final static int HEADER_SIZE(Code) | | |
REF_SIZE | final static int REF_SIZE(Code) | | |
depth | int depth(Code) | | Depth of this data area. A depth of zero indicates
that the actual data area is entirely contained within the
root block. A depth of one indicates that the data is contained
in sub-blocks, and the root block contains the block numbers of
the sub-blocks. Larger depths indicate that the sub-blocks
contain pointers to other sub-blocks, etc.
|
radices | int[] radices(Code) | | A vector of depth elements, indicating the size of
the recursive sub-block at each level.
|
rootBlock | long rootBlock(Code) | | The 'root' block of this data area.
The format of this block is as follows:
Bytes 0-3: The size of this data area, in bytes.
|
BlockAccess | public BlockAccess()(Code) | | Default public constructor
|
BlockAccess | public BlockAccess(PageManager file, long rootBlock) throws IOException(Code) | | Construct a new BlockAccess attached to the specified
block.
|
bufLen | final int bufLen()(Code) | | Return the size of the data portion of the block.
|
close | public void close()(Code) | | Finalization: We're done with this region.
|
flush | public void flush()(Code) | | |
getBlockRef | final long getBlockRef(Page b, int pos, boolean isRoot) throws IOException(Code) | | Return the specified block reference. This method treats the data
portion of the block as an array of integer blockrefs.
Parameters: b - the block containing the array of blockrefs Parameters: pos - the location in the blockref array of the block numberto fetch. |
makeBlockRef | final long makeBlockRef(Page b, int pos, boolean isRoot) throws IOException(Code) | | Return the specified block reference. This method treats the data
portion of the block as an array of long blockrefs. If the
selected blockref is zero, this routine will allocate a new
block and return the blockref of the newly created block, as well
as update b's blockref array with the new blockref.
Parameters: b - the block containing the array of blockrefs Parameters: pos - the location in the blockref array of the block numberto fetch. |
radicesForDepth | final int[] radicesForDepth(int depth)(Code) | | Build the radices array for a region of the specified depth.
|
read | public void read(long pos, byte[] buf, int offset, int len) throws IOException(Code) | | Read from the data region.
|
refsForLevel | final int refsForLevel(int level)(Code) | | Return the number of blockrefs that will fit in a block.
|
setBlockRef | final void setBlockRef(Page b, int pos, long val, boolean isRoot)(Code) | | Set the specified block reference.
Parameters: b - the block containing the array of blockrefs Parameters: pos - the (zero-offset) index of the blockref within the array Parameters: val - the value to store in the array |
size | public long size()(Code) | | Return the size of this region
|
write | public void write(long pos, byte[] buf, int offset, int len) throws IOException(Code) | | Write into the data region.
Parameters: pos - the starting position to write Parameters: buf - the buffer containing the data to write Parameters: offset - the position of the first byte in the buffer Parameters: len - the number of bytes to write |
Fields inherited from com.quadcap.sql.file.RandomAccess | byte[] fmtBuf(Code)(Java Doc)
|
|
|