This class defines a database I/O file service that can be shared by multiple threads.
More...
#include <file.h>
Inheritance diagram for ThreadFile:
Collaboration diagram for ThreadFile:
Public Types
enum
Error {
errSuccess = 0,
errNotOpened,
errMapFailed,
errInitFailed,
errOpenDenied,
errOpenFailed,
errOpenInUse,
errReadInterrupted,
errReadIncomplete,
errReadFailure,
errWriteInterrupted,
errWriteIncomplete,
errWriteFailure,
errLockFailure,
errExtended
}
Public Member Functions
Open or create a new database file.
More...
Close and finish a database file.
More...
Restart an existing database; close and re-open.
More...
Fetch a portion of the file into physical memory.
More...
Update a portion of a file from physical memory.
More...
Add new data to the end of the file.
More...
Fetch the current file position marker for this thread.
More...
This method should be called right after a
RandomFile derived object has been created.
More...
Return current error string.
More...
Static Public Member Functions
static char *
getFilename (const char *path, char *buffer, size_t size=64)
static char *
getDirname (const char *path, char *buffer, size_t size=256)
static char *
getRealpath (const char *path, char *buffer, size_t size=256)
Protected Types
Protected Member Functions
Post an extended string error message.
More...
Used to enable or disable throwing of exceptions on errors.
More...
Used to set file completion modes.
More...
Used to set the temporary attribute for the file.
More...
This method is used to initialize a newly created file as indicated by the "initial" flag.
More...
Enable setting of mutex name for deadlock debug.
More...
Entering a
Mutex locks the mutex for the current thread.
More...
Future abi will use enter/leave/test members.
More...
Future abi will use enter/leave/test members.
More...
Future abi will use enter/leave/test members.
More...
Tries to lock the mutex for the current thread.
More...
Leaving a mutex frees that mutex for use by another thread.
More...
Static Protected Member Functions
Enable or disable deadlock debugging.
More...
Protected Attributes
struct {
Private Member Functions
Private Attributes
Related Functions
(Note that these are not member functions.)
Detailed Description
This class defines a database I/O file service that can be shared by multiple threads.
All threads access a global copy of the database object, and mutex locks can be used to preserve transaction integrety. pread/pwrite calls can be used for optimized I/O when supported.
ThreadFile is meant for use by a threaded database server where multiple threads may each perform semi-independent operations on a given database table stored on disk. A special "fcb" structure is used to hold file "state", and pread/pwrite is used whenever possible for optimized I/O. On systems that do not offer pwread/pwrite, a Mutex lock is used to protect concurrent lseek and read/write operations. ThreadFile managed databases are assumed to be used only by the local server and through a single file descriptor.
- Author
- David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m This class defines a database I/O file service that can be shared by multiple threads.
Definition at line 565 of file file.h.
Member Typedef Documentation
Member Enumeration Documentation
Enumerator |
---|
accessReadOnly |
accessWriteOnly |
accessReadWrite |
Definition at line 139 of file file.h.
Enumerator |
---|
attrInvalid |
attrPrivate |
attrGroup |
attrPublic |
Definition at line 199 of file file.h.
Enumerator |
---|
completionImmediate |
completionDelayed |
completionDeferred |
Definition at line 233 of file file.h.
Enumerator |
---|
errSuccess |
errNotOpened |
errMapFailed |
errInitFailed |
errOpenDenied |
errOpenFailed |
errOpenInUse |
errReadInterrupted |
errReadIncomplete |
errReadFailure |
errWriteInterrupted |
errWriteIncomplete |
errWriteFailure |
errLockFailure |
errExtended |
Definition at line 120 of file file.h.
Enumerator |
---|
mappedRead |
mappedWrite |
mappedReadWrite |
Definition at line 228 of file file.h.
Enumerator |
---|
openReadOnly |
openWriteOnly |
openReadWrite |
openAppend |
openSync |
openTruncate |
Definition at line 171 of file file.h.
Constructor & Destructor Documentation
ThreadFile::ThreadFile
(
const char *
path )
Open or create a new database file.
You should also use Initial.
- Parameters
-
path pathname of database to open.
virtual ThreadFile::~ThreadFile
(
)
virtual |
Close and finish a database file.
Member Function Documentation
Error ThreadFile::append
(
char *
address =
NULL
,
)
Add new data to the end of the file.
- Parameters
-
address address to use, or NULL if same as last I/O.
length length to use, or 0 if same as last I/O.
void Mutex::enter
(
void
)
inlineinherited |
Future abi will use enter/leave/test members.
Definition at line 263 of file thread.h.
void Mutex::enterMutex
(
void
)
inherited |
Entering a Mutex locks the mutex for the current thread.
This also can be done using the ENTER_CRITICAL macro or by using the ++ operator on a mutex.
- See Also
- leaveMutex
char *
errstr = NULL
)
protectedinherited |
Post an error event.
- Returns
- error code.
- Parameters
-
errid error code.
errstr error message string.
Error RandomFile::error
(
char *
err )
inlineprotectedinherited |
Post an extended string error message.
- Returns
- errExtended.
- Parameters
-
err error string.
Definition at line 447 of file file.h.
Error ThreadFile::fetch
(
char *
address =
NULL
,
off_t
position = -1
)
Fetch a portion of the file into physical memory.
This can use state information to fetch the current record multiple times.
- Returns
- errSuccess on success.
- Parameters
-
address address to use, or NULL if same as last I/O.
length length to use, or 0 if same as last I/O.
position file position to use -1 if same as last I/O.
void RandomFile::final
(
void
)
protectedinherited |
off_t RandomFile::getCapacity
(
void
)
inherited |
Get current file capacity.
- Returns
- total file size.
static char* File::getDirname
(
const char *
path,
char *
buffer,
size_t
size = 256
)
staticinherited |
Error RandomFile::getErrorNumber
(
void
)
inlineinherited |
Return current error id.
- Returns
- last error identifier set.
Definition at line 532 of file file.h.
char* RandomFile::getErrorString
(
void
)
inlineinherited |
Return current error string.
- Returns
- last error string set.
Definition at line 540 of file file.h.
static const char* File::getExtension
(
const char *
path )
staticinherited |
fcb_t* ThreadFile::getFCB
(
void
)
private |
static const char* File::getFilename
(
const char *
path )
staticinherited |
static char* File::getFilename
(
const char *
path,
char *
buffer,
size_t
size = 64
)
staticinherited |
off_t ThreadFile::getPosition
(
void
)
Fetch the current file position marker for this thread.
- Returns
- file position offset.
static char* File::getRealpath
(
const char *
path,
char *
buffer,
size_t
size = 256
)
staticinherited |
bool RandomFile::initial
(
void
)
inherited |
This method should be called right after a RandomFile derived object has been created.
This method will invoke initialize if the object is newly created, and set file access permissions appropriately.
- Returns
- true if file had to be initialized.
virtual
Attr RandomFile::initialize
(
void
)
protectedvirtualinherited |
This method is used to initialize a newly created file as indicated by the "initial" flag.
This method also returns the file access permissions that should be associated with the file. This method should never be called directly, but is instead used to impliment the "Initial" method. Typically one would use this to build an empty database shell when a previously empty database file is created.
- Returns
- access, or attrInvalid if should be removed.
void Mutex::leave
(
void
)
inlineinherited |
Future abi will use enter/leave/test members.
Definition at line 269 of file thread.h.
void Mutex::leaveMutex
(
void
)
inherited |
Leaving a mutex frees that mutex for use by another thread.
If the mutex has been entered (invoked) multiple times (recursivily) by the same thread, then it will need to be exited the same number of instances before it is free for re-use. This operation can also be done using the LEAVE_CRITICAL macro or by the – operator on a mutex.
- See Also
- enterMutex
void Mutex::nameMutex
(
const char *
name )
inlineinherited |
Enable setting of mutex name for deadlock debug.
- Parameters
-
name for mutex.
Definition at line 248 of file thread.h.
Error ThreadFile::open
(
const char *
path )
private |
bool RandomFile::operator!
(
void
)
inherited |
bool ThreadFile::operator++
(
void
)
bool ThreadFile::operator--
(
void
)
Error ThreadFile::restart
(
void
)
virtual |
Restart an existing database; close and re-open.
- Returns
- errSuccess if successful.
Reimplemented from RandomFile.
Used to set file completion modes.
- Returns
- errSuccess if okay.
- Parameters
-
mode completion mode.
- Todo:
- implement in win32
static void Mutex::setDebug
(
bool
mode )
inlinestaticinherited |
Enable or disable deadlock debugging.
- Parameters
-
mode debug mode.
Definition at line 240 of file thread.h.
void RandomFile::setError
(
bool
enable )
inlineprotectedinherited |
Used to enable or disable throwing of exceptions on errors.
- Parameters
-
enable true if errors will be thrown.
Definition at line 456 of file file.h.
void RandomFile::setTemporary
(
bool
enable )
inlineprotectedinherited |
Used to set the temporary attribute for the file.
Temporary files are automatically deleted when closed.
- Parameters
-
enable true for marking as temporary.
Definition at line 476 of file file.h.
bool Mutex::test
(
void
)
inlineinherited |
Future abi will use enter/leave/test members.
- Returns
- true if entered.
Definition at line 277 of file thread.h.
bool Mutex::tryEnterMutex
(
void
)
inherited |
Tries to lock the mutex for the current thread.
Behaves like enterMutex , except that it doesn't block the calling thread if the mutex is already locked by another thread.
- Returns
- true if locking the mutex was succesful otherwise false
- See Also
- enterMutex
-
leaveMutex
Error ThreadFile::update
(
char *
address =
NULL
,
off_t
position = -1
)
Update a portion of a file from physical memory.
This can use state information to commit the last read record.
- Returns
- errSuccess on success.
- Parameters
-
address address to use, or NULL if same as last I/O.
length length to use, or 0 if same as last I/O.
position file position to use or -1 if same as last I/O.
Friends And Related Function Documentation
bool
__EXPORT canAccess
(
const char *
path )
related |
bool
__EXPORT canModify
(
const char *
path )
related |
bool
__EXPORT isDevice
(
const char *
path )
related |
bool
__EXPORT isDir
(
const char *
path )
related |
bool
__EXPORT isFile
(
const char *
path )
related |
time_t
__EXPORT lastAccessed
(
const char *
path )
related |
time_t
__EXPORT lastModified
(
const char *
path )
related |
Field Documentation
unsigned RandomFile::count
inherited |
int RandomFile::fd
protectedinherited |
struct { ... } RandomFile::flags
bool RandomFile::immediate
inherited |
bool RandomFile::initial
inherited |
char* RandomFile::pathname
protectedinherited |
bool RandomFile::temp
inherited |
bool RandomFile::thrown
inherited |
The documentation for this class was generated from the following file:
Generated on Dec 21, 2017 for
commoncpp2-1.8.1,
ccrtp-1.7.2,
libzrtpcpp-2.3.4,
ccscript3-1.1.7,
ccaudio2-1.0.0 and
bayonne2-2.3.2
(after installation in /usr/local/)
by
doxygen 1.8.6