casacore
|
File object for BucketCache. More...
#include <BucketFile.h>
Public Member Functions | |
BucketFile (const String &fileName, uInt bufSizeFile=0, Bool mappedFile=False, MultiFileBase *mfile=0) | |
Create a BucketFile object for a new file. More... | |
BucketFile (const String &fileName, Bool writable, uInt bufSizeFile=0, Bool mappedFile=False, MultiFileBase *mfile=0) | |
Create a BucketFile object for an existing file. More... | |
virtual | ~BucketFile () |
The destructor closes the file (if open). More... | |
virtual CountedPtr< ByteIO > | makeFilebufIO (uInt bufferSize) |
Make a (temporary) buffered IO object for this file. More... | |
MMapfdIO * | mappedFile () |
Get the mapped file object. More... | |
FilebufIO * | bufferedFile () |
Get the buffered file object. More... | |
virtual void | open () |
Open the file if not open yet. More... | |
virtual void | close () |
Close the file (if open). More... | |
virtual void | remove () |
Remove the file (and close it if needed). More... | |
virtual void | fsync () |
Fsync the file (i.e. More... | |
virtual void | setRW () |
Set the file to read/write access. More... | |
virtual const String & | name () const |
Get the file name. More... | |
Bool | isWritable () const |
Has the file logically been indicated as writable? More... | |
virtual uInt | read (void *buffer, uInt length) |
Read bytes from the file. More... | |
virtual uInt | write (const void *buffer, uInt length) |
Write bytes into the file. More... | |
virtual void | seek (Int64 offset) |
Seek in the file. More... | |
void | seek (Int offset) |
virtual Int64 | fileSize () const |
Get the (physical) size of the file. More... | |
Bool | isCached () const |
Is the file cached, mapped, or buffered? More... | |
Bool | isMapped () const |
Bool | isBuffered () const |
Private Member Functions | |
BucketFile (const BucketFile &) | |
Forbid copy constructor. More... | |
BucketFile & | operator= (const BucketFile &) |
Forbid assignment. More... | |
void | createMapBuf () |
Create the mapped or buffered file object. More... | |
void | deleteMapBuf () |
Delete the possible mapped or buffered file object. More... | |
Private Attributes | |
String | name_p |
The file name. More... | |
Bool | isWritable_p |
The (logical) writability of the file. More... | |
Bool | isMapped_p |
uInt | bufSize_p |
int | fd_p |
CountedPtr< ByteIO > | file_p |
The unbuffered file. More... | |
MMapfdIO * | mappedFile_p |
The optional mapped file. More... | |
FilebufIO * | bufferedFile_p |
The optional buffered file. More... | |
MultiFileBase * | mfile_p |
The possibly used MultiFileBase. More... | |
File object for BucketCache.
Internal
BucketFile represents a data file for the BucketCache class.
A BucketFile object represents a data file. Currently it is used by the Table system, but it can easily be turned into a more general storage manager file class.
Creation of a BucketFile object does not open the file yet. An explicit open call has to be given before the file can be used.
The file can be opened as an ordinary file (with a file descriptor) or as a file in a MultiFileBase object. An ordinary file can be accessed in 3 ways:
A MultiFileBase file can only be accessed in the unbuffered way.
Encapsulate the file creation and access into a single class to hide the file IO details.
Definition at line 107 of file BucketFile.h.
|
explicit |
Create a BucketFile object for a new file.
The file with the given name will be created as a normal file or as part of a MultiFileBase (if mfile != 0). It can be indicated if a MMapfdIO and/or FilebufIO object must be created for the file. If a MultiFileBase is used, memory-mapped IO cannot be used and mappedFile is ignored.
casacore::BucketFile::BucketFile | ( | const String & | fileName, |
Bool | writable, | ||
uInt | bufSizeFile = 0 , |
||
Bool | mappedFile = False , |
||
MultiFileBase * | mfile = 0 |
||
) |
Create a BucketFile object for an existing file.
The file should be opened by the open
. Tell if the file must be opened writable. It can be indicated if a MMapfdIO and/or FilebufIO object must be created for the file. If a MultiFileBase is used, memory-mapped IO cannot be used and mappedFile is ignored.
|
virtual |
The destructor closes the file (if open).
|
private |
Forbid copy constructor.
|
inline |
Get the buffered file object.
Definition at line 142 of file BucketFile.h.
References bufferedFile_p, close(), fileSize(), fsync(), isBuffered(), isCached(), isMapped(), isWritable(), casacore::length(), name(), open(), read(), seek(), setRW(), and write().
|
virtual |
Close the file (if open).
Referenced by bufferedFile().
|
private |
Create the mapped or buffered file object.
|
private |
Delete the possible mapped or buffered file object.
|
virtual |
Get the (physical) size of the file.
This is doing a seek and sets the file pointer to end-of-file.
Referenced by bufferedFile().
|
virtual |
|
inline |
|
inline |
Is the file cached, mapped, or buffered?
Definition at line 231 of file BucketFile.h.
References bufSize_p, and isMapped_p.
Referenced by bufferedFile().
|
inline |
|
inline |
Has the file logically been indicated as writable?
Definition at line 225 of file BucketFile.h.
References isWritable_p.
Referenced by bufferedFile().
|
virtual |
Make a (temporary) buffered IO object for this file.
That object should not close the file.
|
inline |
|
inlinevirtual |
Get the file name.
Definition at line 222 of file BucketFile.h.
References name_p.
Referenced by bufferedFile().
|
virtual |
Open the file if not open yet.
Referenced by bufferedFile(), and casacore::TSMFile::open().
|
private |
Forbid assignment.
Read bytes from the file.
Referenced by bufferedFile().
|
virtual |
Remove the file (and close it if needed).
|
virtual |
Seek in the file.
Referenced by bufferedFile(), and seek().
|
inline |
Definition at line 228 of file BucketFile.h.
References seek().
|
virtual |
Set the file to read/write access.
It is reopened if not writable. It does nothing if the file is already writable.
Referenced by bufferedFile().
Write bytes into the file.
Referenced by bufferedFile().
|
private |
The optional buffered file.
Definition at line 203 of file BucketFile.h.
Referenced by bufferedFile().
|
private |
Definition at line 196 of file BucketFile.h.
Referenced by isBuffered(), and isCached().
|
private |
Definition at line 197 of file BucketFile.h.
|
private |
The unbuffered file.
Definition at line 199 of file BucketFile.h.
|
private |
Definition at line 195 of file BucketFile.h.
Referenced by isCached(), and isMapped().
|
private |
The (logical) writability of the file.
Definition at line 194 of file BucketFile.h.
Referenced by isWritable().
|
private |
|
private |
The possibly used MultiFileBase.
Definition at line 205 of file BucketFile.h.
|
private |