Create and map a disk file into memory.
More...
#include <file.h>
Inheritance diagram for MappedFile:
Collaboration diagram for MappedFile:
Public Types
enum
Error {
errSuccess = 0,
errNotOpened,
errMapFailed,
errInitFailed,
errOpenDenied,
errOpenFailed,
errOpenInUse,
errReadInterrupted,
errReadIncomplete,
errReadFailure,
errWriteInterrupted,
errWriteIncomplete,
errWriteFailure,
errLockFailure,
errExtended
}
Public Member Functions
Create if not exists, and map a file of specified size into memory.
More...
Map a portion or all of a specified file in the specified shared memory access mode.
More...
Release a mapped section of memory associated with a file.
More...
Synchronize the contents of the mapped portion of memory with the disk file and wait for completion.
More...
void
sync (char *address, size_t len)
Synchronize a segment of memory mapped from a segment fetch.
More...
void
update (size_t offset=0, size_t len=0)
Map a portion of the memory mapped from the file back to the file and do not wait for completion.
More...
void
update (char *address, size_t len)
Update a mapped region back to disk as specified by address and length.
More...
void
release (char *address, size_t len)
Release (unmap) a memory segment.
More...
char *
fetch (size_t offset=0)
Fetch a pointer to an offset within the memory mapped portion of the disk file.
More...
char *
fetch (off_t pos, size_t len)
Fetch and map a portion of a disk file to a logical memory block.
More...
Lock the currently mapped portion of a file.
More...
Unlock a locked mapped portion of a file.
More...
Compute map size to aligned page boundry.
More...
This method should be called right after a
RandomFile derived object has been created.
More...
This method is commonly used to close and re-open an existing database.
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 Attributes
Related Functions
(Note that these are not member functions.)
Detailed Description
Create and map a disk file into memory.
This portable class works under both Posix via mmap and under the win32 API. A mapped file can be referenced directly by it's memory segment. One can map and unmap portions of a file on demand, and update changed memory pages mapped from files immediately through sync().
- Author
- David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m Map a named disk file into memory.
Definition at line 747 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
MappedFile::MappedFile
(
const char *
fname,
)
Open a file for mapping.
More than one segment of a file may be mapped into seperate regions of memory.
- Parameters
-
fname file name to access for mapping.
mode access mode to map file.
MappedFile::MappedFile
(
const char *
fname,
size_t
size
)
Create if not exists, and map a file of specified size into memory.
- Parameters
-
fname file name to access for mapping.
mode access mode to map file.
size of file to map.
MappedFile::MappedFile
(
const char *
fname,
size_t
size,
)
Map a portion or all of a specified file in the specified shared memory access mode.
Valid mapping modes include mappedRead, mappedWrite, and mappedReadWrite.
- Parameters
-
fname pathname of file to map into memory.
offset from start of file to begin mapping in bytes.
size of mapped area in bytes.
mode to map file.
virtual MappedFile::~MappedFile
(
)
virtual |
Release a mapped section of memory associated with a file.
The mapped area is updated back to disk.
Member Function Documentation
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.
char* MappedFile::fetch
(
size_t
offset = 0
)
inline |
Fetch a pointer to an offset within the memory mapped portion of the disk file.
This really is used for convience of matching operations between Update and Fetch, as one could simply have accessed the base pointer where the file was mapped directly.
- Parameters
-
offset from start of mapped memory.
Definition at line 846 of file file.h.
char* MappedFile::fetch
(
off_t
pos,
size_t
len
)
Fetch and map a portion of a disk file to a logical memory block.
- Returns
- pointer to memory segment.
- Parameters
-
pos offset of file segment to map.
len size of memory segment to map.
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 |
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
bool MappedFile::lock
(
void
)
Lock the currently mapped portion of a file.
- Returns
- true if pages are locked.
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.
bool RandomFile::operator!
(
void
)
inherited |
size_t MappedFile::pageAligned
(
size_t
size )
Compute map size to aligned page boundry.
- Parameters
-
size request.
- Returns
- page aligned size.
void MappedFile::release
(
char *
address,
size_t
len
)
Release (unmap) a memory segment.
- Parameters
-
address address of memory segment to release.
len length of memory segment to release.
virtual
Error RandomFile::restart
(
void
)
virtualinherited |
This method is commonly used to close and re-open an existing database.
This may be used when the database has been unlinked and an external process provides a new one to use.
Reimplemented in SharedFile, and ThreadFile.
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.
void MappedFile::sync
(
void
)
Synchronize the contents of the mapped portion of memory with the disk file and wait for completion.
This assures the memory mapped from the file is written back.
void MappedFile::sync
(
char *
address,
size_t
len
)
Synchronize a segment of memory mapped from a segment fetch.
- Parameters
-
address memory address to update.
len size of segment.
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
void MappedFile::unlock
(
void
)
Unlock a locked mapped portion of a file.
void MappedFile::update
(
size_t
offset = 0
,
size_t
len = 0
)
Map a portion of the memory mapped from the file back to the file and do not wait for completion.
This is useful when mapping a database file and updating a single record.
- Parameters
-
offset offset into the mapped region of memory.
len length of partial region (example, record length).
void MappedFile::update
(
char *
address,
size_t
len
)
Update a mapped region back to disk as specified by address and length.
- Parameters
-
address address of segment.
len length of segment.
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 |
int MappedFile::prot
private |
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