Quadcap Embeddable Database

com.quadcap.sql.file.BlockStore Class Reference

Inheritance diagram for com.quadcap.sql.file.BlockStore:

com.quadcap.sql.file.EncryptedBlockStore com.quadcap.sql.file.MemoryBlockStore com.quadcap.sql.file.NullStore List of all members.

Detailed Description

Below the cache, this class handles the actual I/O to the underlying file.

Block write operations are logged by this class.

Author:
Stan Bailes

Definition at line 59 of file BlockStore.java.

Public Member Functions

 BlockStore ()
 Create a new BlockStore object using the specified file and blocksize.

String getName ()
void init (File file, String mode, int blockSize, Object lock) throws IOException
void setLog (Log log)
 Specify the log used for recovery operations.

Log getLog ()
 Return the logger.

int blockSize ()
 Return the block size of this store.

File getFile ()
 Return the underlying file.

void read (long blockNum, byte[] buf) throws IOException
 Read a block into a buffer.

void read (long blockNum, byte[] buf, int off) throws IOException
void write (long blockNum, byte[] buf) throws IOException
 Write a block from a buffer into the file.

void restore (long blockNum, byte[] buf, int off) throws IOException
 Restore a block image.

void clearModified () throws IOException
void setLength (long length) throws IOException
boolean isEncrypted ()
void close () throws IOException
void flush () throws IOException
void setKey (com.quadcap.crypto.SymmetricKey key) throws IOException
String toString ()

Static Public Member Functions

String rw ()

Static Public Attributes

int writeCount = 0
int readCount = 0

Protected Member Functions

final byte[] newHeader (int blockSize, long lastBlock)

Package Attributes

File file
FileRandomAccess fra
boolean readOnly
Log log
int blockSize
BitSet modified = new BitSet()
Object lock
boolean encrypted = false
boolean isTempFile = false

Private Member Functions

void readHeader () throws IOException
void createHeader (int blockSize) throws IOException


Constructor & Destructor Documentation

com.quadcap.sql.file.BlockStore.BlockStore  ) 
 

Create a new BlockStore object using the specified file and blocksize.

Parameters:
file the underlying file.
mode "r" for readonly access, otherwise "rw"
blocksize the block size to use when creating the file.
the synchronization object

Definition at line 79 of file BlockStore.java.


Member Function Documentation

int com.quadcap.sql.file.BlockStore.blockSize  ) 
 

Return the block size of this store.

Definition at line 116 of file BlockStore.java.

void com.quadcap.sql.file.BlockStore.clearModified  )  throws IOException
 

Definition at line 196 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.log, com.quadcap.sql.file.BlockStore.modified, and com.quadcap.sql.file.Log.resetBlocks().

Referenced by com.quadcap.sql.file.BlockFile.clearModified().

void com.quadcap.sql.file.BlockStore.close  )  throws IOException
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore, and com.quadcap.sql.file.NullStore.

Definition at line 259 of file BlockStore.java.

References com.quadcap.sql.file.FileRandomAccess.close(), and com.quadcap.sql.file.BlockStore.fra.

Referenced by com.quadcap.sql.file.BlockFile.close().

void com.quadcap.sql.file.BlockStore.createHeader int  blockSize  )  throws IOException [private]
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore.

Definition at line 242 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.createHeader(), com.quadcap.sql.file.BlockStore.fra, com.quadcap.sql.file.BlockStore.newHeader(), and com.quadcap.sql.file.FileRandomAccess.write().

Referenced by com.quadcap.sql.file.BlockStore.createHeader(), and com.quadcap.sql.file.BlockStore.init().

void com.quadcap.sql.file.BlockStore.flush  )  throws IOException
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore, and com.quadcap.sql.file.NullStore.

Definition at line 267 of file BlockStore.java.

References com.quadcap.sql.file.FileRandomAccess.flush(), com.quadcap.sql.file.BlockStore.fra, com.quadcap.sql.file.BlockStore.readCount, and com.quadcap.sql.file.BlockStore.writeCount.

Referenced by com.quadcap.sql.file.BlockFile.flush().

File com.quadcap.sql.file.BlockStore.getFile  ) 
 

Return the underlying file.

Definition at line 121 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.file.

Log com.quadcap.sql.file.BlockStore.getLog  ) 
 

Return the logger.

Definition at line 111 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.log.

Referenced by com.quadcap.sql.file.BlockFile.getLog().

String com.quadcap.sql.file.BlockStore.getName  ) 
 

Definition at line 82 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.file.

Referenced by com.quadcap.sql.file.BlockFile.getName().

void com.quadcap.sql.file.BlockStore.init File  file,
String  mode,
int  blockSize,
Object  lock
throws IOException
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore, and com.quadcap.sql.file.NullStore.

Definition at line 86 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.blockSize, com.quadcap.sql.file.BlockStore.createHeader(), com.quadcap.sql.file.BlockStore.file, com.quadcap.sql.file.BlockStore.init(), com.quadcap.sql.file.BlockStore.isTempFile, com.quadcap.sql.file.BlockStore.lock, and com.quadcap.sql.file.BlockStore.readHeader().

Referenced by com.quadcap.sql.file.BlockStore.init(), and com.quadcap.sql.file.BlockFile.makeStore().

boolean com.quadcap.sql.file.BlockStore.isEncrypted  ) 
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore, and com.quadcap.sql.file.NullStore.

Definition at line 210 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.encrypted.

Referenced by com.quadcap.sql.file.EncryptedBlockStore.setKey().

final byte [] com.quadcap.sql.file.BlockStore.newHeader int  blockSize,
long  lastBlock
[protected]
 

Definition at line 248 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.newHeader().

Referenced by com.quadcap.sql.file.BlockStore.createHeader(), and com.quadcap.sql.file.BlockStore.newHeader().

void com.quadcap.sql.file.BlockStore.read long  blockNum,
byte[]  buf,
int  off
throws IOException
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore, and com.quadcap.sql.file.NullStore.

Definition at line 134 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.fra, com.quadcap.sql.file.BlockStore.lock, com.quadcap.sql.file.FileRandomAccess.read(), and com.quadcap.sql.file.BlockStore.readCount.

void com.quadcap.sql.file.BlockStore.read long  blockNum,
byte[]  buf
throws IOException
 

Read a block into a buffer.

If the specified block is beyond the current end of file, then grow the file

Parameters:
blockNum the number of the block to read.
buf the buffer into which the data is read.

Reimplemented in com.quadcap.sql.file.EncryptedBlockStore.

Definition at line 130 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.read().

Referenced by com.quadcap.sql.file.Block.init(), com.quadcap.sql.file.BlockStore.read(), and com.quadcap.sql.file.Log1.saveBlock().

void com.quadcap.sql.file.BlockStore.readHeader  )  throws IOException [private]
 

Definition at line 214 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.encrypted, com.quadcap.sql.file.BlockStore.fra, and com.quadcap.sql.file.FileRandomAccess.read().

Referenced by com.quadcap.sql.file.BlockStore.init().

void com.quadcap.sql.file.BlockStore.restore long  blockNum,
byte[]  buf,
int  off
throws IOException
 

Restore a block image.

Reimplemented in com.quadcap.sql.file.MemoryBlockStore, and com.quadcap.sql.file.NullStore.

Definition at line 181 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.fra, com.quadcap.sql.file.BlockStore.lock, com.quadcap.sql.file.BlockStore.restore(), com.quadcap.sql.file.BlockStore.toString(), and com.quadcap.sql.file.FileRandomAccess.write().

Referenced by com.quadcap.sql.file.BlockStore.restore(), and com.quadcap.sql.file.BlockFile.restoreBlock().

String com.quadcap.sql.file.BlockStore.rw  )  [static]
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore.

Definition at line 287 of file BlockStore.java.

void com.quadcap.sql.file.BlockStore.setKey com.quadcap.crypto.SymmetricKey  key  )  throws IOException
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore.

Definition at line 275 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.setKey().

Referenced by com.quadcap.sql.file.BlockFile.makeStore(), and com.quadcap.sql.file.BlockStore.setKey().

void com.quadcap.sql.file.BlockStore.setLength long  length  )  throws IOException
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore, and com.quadcap.sql.file.NullStore.

Definition at line 202 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.file, com.quadcap.sql.file.BlockStore.fra, com.quadcap.sql.file.BlockStore.readOnly, com.quadcap.sql.file.FileRandomAccess.resize(), and com.quadcap.sql.file.BlockStore.setLength().

Referenced by com.quadcap.sql.file.BlockFile.revert(), and com.quadcap.sql.file.BlockStore.setLength().

void com.quadcap.sql.file.BlockStore.setLog Log  log  ) 
 

Specify the log used for recovery operations.

Definition at line 106 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.setLog().

Referenced by com.quadcap.sql.file.BlockStore.setLog(), and com.quadcap.sql.file.BlockFile.setLog().

String com.quadcap.sql.file.BlockStore.toString  ) 
 

Reimplemented in com.quadcap.sql.file.MemoryBlockStore.

Definition at line 283 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.file.

Referenced by com.quadcap.sql.file.BlockFile.getPage(), com.quadcap.sql.file.BlockStore.restore(), and com.quadcap.sql.file.BlockStore.write().

void com.quadcap.sql.file.BlockStore.write long  blockNum,
byte[]  buf
throws IOException
 

Write a block from a buffer into the file.

Parameters:
blockNum the number of the block to write.
buf the buffer from which the data is written.
Exceptions:
IOException if an I/O error occurs.

Reimplemented in com.quadcap.sql.file.EncryptedBlockStore, com.quadcap.sql.file.MemoryBlockStore, and com.quadcap.sql.file.NullStore.

Definition at line 152 of file BlockStore.java.

References com.quadcap.sql.file.BlockStore.file, com.quadcap.sql.file.BlockStore.fra, com.quadcap.sql.file.BlockStore.lock, com.quadcap.sql.file.BlockStore.log, com.quadcap.sql.file.BlockStore.modified, com.quadcap.sql.file.BlockStore.readOnly, com.quadcap.sql.file.Log.saveBlock(), com.quadcap.sql.file.FileRandomAccess.size(), com.quadcap.sql.file.BlockStore.toString(), com.quadcap.sql.file.FileRandomAccess.write(), com.quadcap.sql.file.BlockStore.write(), and com.quadcap.sql.file.BlockStore.writeCount.

Referenced by com.quadcap.sql.file.Block.flush(), and com.quadcap.sql.file.BlockStore.write().


Member Data Documentation

int com.quadcap.sql.file.BlockStore.blockSize [package]
 

Definition at line 64 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockFile.BlockFile(), com.quadcap.sql.file.BlockStore.init(), and com.quadcap.sql.file.Block.init().

boolean com.quadcap.sql.file.BlockStore.encrypted = false [package]
 

Definition at line 67 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.isEncrypted(), and com.quadcap.sql.file.BlockStore.readHeader().

File com.quadcap.sql.file.BlockStore.file [package]
 

Definition at line 60 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.getFile(), com.quadcap.sql.file.BlockStore.getName(), com.quadcap.sql.file.BlockStore.init(), com.quadcap.sql.file.BlockStore.setLength(), com.quadcap.sql.file.BlockStore.toString(), and com.quadcap.sql.file.BlockStore.write().

FileRandomAccess com.quadcap.sql.file.BlockStore.fra [package]
 

Definition at line 61 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.close(), com.quadcap.sql.file.BlockStore.createHeader(), com.quadcap.sql.file.BlockStore.flush(), com.quadcap.sql.file.BlockStore.read(), com.quadcap.sql.file.BlockStore.readHeader(), com.quadcap.sql.file.BlockStore.restore(), com.quadcap.sql.file.BlockStore.setLength(), and com.quadcap.sql.file.BlockStore.write().

boolean com.quadcap.sql.file.BlockStore.isTempFile = false [package]
 

Definition at line 68 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.init().

Object com.quadcap.sql.file.BlockStore.lock [package]
 

Definition at line 66 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.init(), com.quadcap.sql.file.BlockStore.read(), com.quadcap.sql.file.BlockStore.restore(), and com.quadcap.sql.file.BlockStore.write().

Log com.quadcap.sql.file.BlockStore.log [package]
 

Definition at line 63 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.clearModified(), com.quadcap.sql.file.BlockStore.getLog(), and com.quadcap.sql.file.BlockStore.write().

BitSet com.quadcap.sql.file.BlockStore.modified = new BitSet() [package]
 

Definition at line 65 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.clearModified(), and com.quadcap.sql.file.BlockStore.write().

int com.quadcap.sql.file.BlockStore.readCount = 0 [static]
 

Definition at line 144 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.flush(), and com.quadcap.sql.file.BlockStore.read().

boolean com.quadcap.sql.file.BlockStore.readOnly [package]
 

Definition at line 62 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.setLength(), and com.quadcap.sql.file.BlockStore.write().

int com.quadcap.sql.file.BlockStore.writeCount = 0 [static]
 

Definition at line 143 of file BlockStore.java.

Referenced by com.quadcap.sql.file.BlockStore.flush(), and com.quadcap.sql.file.BlockStore.write().