| java.lang.Object org.griphyn.vdl.util.FileHelper
All known Subclasses: org.griphyn.vdl.util.FcntlFileLock, org.griphyn.vdl.util.LockFileLock,
FileHelper | abstract public class FileHelper (Code) | | This class allows access to a set of files. With the constructor, the
basename of the fileset is specified. From this file, a set of 10
files can be accessed and constructed, with suffices ".0" to ".9". A
cursor file, suffix ".nr", points to the currently active file in the
ring.
In read mode, the cursor file gets locked temporarily while the stream
is opened. If no cursor file exists, it is assumed that the basename
is also the filename of the database. A lock file for the opened database
will be created.
In write mode, the cursor file gets locked until the writer is being
closed again. Thus, parallel access by other writers or readers are
prohibited. The cursor is advanced at stream close. The database stream
points to the next file beyong the cursor. If no cursor file existed, it
will point to suffix ".0".
All access to the files must go through the respective open and close
methods provided by this class in order to guarantee proper locking!
author: Jens-S. Vöckler author: Yong Zhao version: $Revision: 50 $ See Also: java.io.File See Also: LockHelper |
Field Summary | |
protected String | m_database base name of the fileset to access. | protected File | m_number description of the cursor file for the given basename set. |
Constructor Summary | |
public | FileHelper(String basename) Primary ctor: obtain access to a database cycle via basename. |
Method Summary | |
abstract public boolean | closeReader(File r) Closes a previously obtained reader, and releases internal
locking resources. | abstract public boolean | closeWriter(File w) Closes a previously obtained writer, and releases internal
locking resources. | abstract public File | openReader() Opens a reader for the basename, adjusting the database cycles. | abstract public File | openWriter() Opens a writer for the basename, adjusting the database cycles
The access is exclusive, and cannot be shared with readers nor
writers. | protected int | readCount() Reads the cursor file and obtains the current cycle position. | protected boolean | writeCount(int number) Updates the cursor file with a new cycle position. |
m_database | protected String m_database(Code) | | base name of the fileset to access.
|
m_number | protected File m_number(Code) | | description of the cursor file for the given basename set.
|
FileHelper | public FileHelper(String basename)(Code) | | Primary ctor: obtain access to a database cycle via basename.
Parameters: basename - is the name of the database without digit suffix. |
closeReader | abstract public boolean closeReader(File r)(Code) | | Closes a previously obtained reader, and releases internal
locking resources. Only if the reader was found in the internal
state, any closing of the stream will be attempted.
Parameters: r - is the reader that was created by FileHelper.openReader(). true, if unlocking went smoothly, or false in the presenceof an error. The only error that can happen it to use a Fileinstance which was not returned by this instance. |
closeWriter | abstract public boolean closeWriter(File w)(Code) | | Closes a previously obtained writer, and releases internal
locking resources. Error conditions can be either a missing
instance that passed, or the inability to update the cursor file.
Parameters: w - is the instance that was returned by FileHelper.openWriter(). true, if the closing went smoothly, false in the presenceof an error. |
openReader | abstract public File openReader()(Code) | | Opens a reader for the basename, adjusting the database cycles.
The access can be shared with other simultaneous readers.
a reader opened to the basename, or null for failure. |
openWriter | abstract public File openWriter()(Code) | | Opens a writer for the basename, adjusting the database cycles
The access is exclusive, and cannot be shared with readers nor
writers.
a writer opened for the basename, or null for failure. |
readCount | protected int readCount()(Code) | | Reads the cursor file and obtains the current cycle position.
The contract requires you to hold the lock for the cursor file.
the current cycle position, or -1 to indicate failure. |
writeCount | protected boolean writeCount(int number)(Code) | | Updates the cursor file with a new cycle position. The contract
requires you to hold the lock for the cursor file.
Parameters: number - is the new cursor position. true, if the file was updated all right, false,if an error occured during update. |
|
|