This class defines a database I/O file service that can be shared by multiple processes.
More...
#include <file.h>
Inheritance diagram for SharedFile:
Collaboration diagram for SharedFile:
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...
Create a shared file as a duplicate of an existing shared file.
More...
Close and finish a database file.
More...
Restart an existing database; close and re-open.
More...
Lock and Fetch a portion of the file into physical memory.
More...
Update a portion of a file from physical memory.
More...
Clear a lock held from a previous fetch operation without updating.
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 processes.
Each thread should access a dup of the database object, and mutex locks can be used to preserve transaction integrety if multiple threads are used.
SharedFile is used when a database may be shared between multiple processes. SharedFile automatically applies low level byte-range "file
locks", and provides an interface to fetch and release byte-range locked portions of a file.
- 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 processes.
Definition at line 648 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
SharedFile::SharedFile
(
const char *
path )
Open or create a new database file.
You should also use Initial.
- Parameters
-
path pathname of database to open.
SharedFile::SharedFile
(
const
SharedFile &
file )
Create a shared file as a duplicate of an existing shared file.
- Parameters
-
file original file.
virtual SharedFile::~SharedFile
(
)
virtual |
Close and finish a database file.
Member Function Documentation
Error SharedFile::append
(
char *
address =
NULL
,
)
Add new data to the end of the file.
Locks file during append.
- 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.
Clear a lock held from a previous fetch operation without updating.
- Returns
- errSuccess on success.
- Parameters
-
length length to use, or 0 if same as last I/O.
pos file position to use or -1 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 SharedFile::fetch
(
char *
address =
NULL
,
off_t
position = -1
)
Lock and 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 |
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 SharedFile::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 SharedFile::open
(
const char *
path )
private |
bool RandomFile::operator!
(
void
)
inherited |
bool SharedFile::operator++
(
void
)
bool SharedFile::operator--
(
void
)
Error SharedFile::restart
(
void
)
inlinevirtual |
Restart an existing database; close and re-open.
- Returns
- errSuccess if successful.
Reimplemented from RandomFile.
Definition at line 681 of file file.h.
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 SharedFile::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. The current lock is also cleared.
- 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