Class to hold table lock data. More...
#include <ExternalLockSync.h>
Public Member Functions | |
| ExternalLockSync (const TableLock &lockOptions) | |
| Construct from the given TableLock object. | |
| ~ExternalLockSync () | |
| void | makeLock (const String &tableName, Bool create, FileLocker::LockType) |
Create the LockFile object and acquire a read or write lock when permanent locking is in effect. | |
| Bool | acquire (FileLocker::LockType=FileLocker::Write, uInt nattempts=0) |
| Acquire a read or write lock (when needed). | |
| uInt | nrow () const |
| Get the current number of rows in this object. | |
| void | release (uInt nrrow) |
| Release the lock and synchronize the table access. | |
| Bool | hasLock (FileLocker::LockType) const |
| Check if the table has a read or write lock, thus if the table can be read or written safely. | |
Private Member Functions | |
| ExternalLockSync (const ExternalLockSync &that) | |
| Copy constructor is forbidden. | |
| ExternalLockSync & | operator= (const ExternalLockSync &that) |
| Assignment is forbidden. | |
| MemoryIO * | doReleaseCallBack (Bool always) |
| The member function executing the callback functionality. | |
Static Private Member Functions | |
| static MemoryIO * | releaseCallBack (void *lockSyncObject, Bool always) |
| The callback function when releasing a lock. | |
Private Attributes | |
| TableLockData | itsLock |
| TableSyncData | itsSync |
| uInt | itsNrrow |
Class to hold table lock data.
Internal
This class keeps the LockFile object used to do the actual locking/unlocking. It also keeps the synchronization information.
Encapsulate Table locking data.
Definition at line 64 of file ExternalLockSync.h.
| casacore::ExternalLockSync::ExternalLockSync | ( | const TableLock & | lockOptions | ) |
Construct from the given TableLock object.
| casacore::ExternalLockSync::~ExternalLockSync | ( | ) |
| casacore::ExternalLockSync::ExternalLockSync | ( | const ExternalLockSync & | that | ) | [private] |
Copy constructor is forbidden.
| Bool casacore::ExternalLockSync::acquire | ( | FileLocker::LockType | = FileLocker::Write, |
|
| uInt | nattempts = 0 | |||
| ) |
Acquire a read or write lock (when needed).
Nattempts==0 indicates that it has to wait until the lock is acquired. Nattempts>0 indicates that it gives up acquiring the lock when nattempts have been done (with 1 second intervals). It throws an exception when acquire failed while it had to wait. It returns a false status when acquiring the lock failed while it does not have to wait.
When a lock is successfully acquired, the number of rows (see function nrrow() below) is reset as a result of synchronizing the access to the table.
The member function executing the callback functionality.
Definition at line 134 of file ExternalLockSync.h.
References itsNrrow, itsSync, casacore::TableSyncData::memoryIO(), and casacore::TableSyncData::write().
| Bool casacore::ExternalLockSync::hasLock | ( | FileLocker::LockType | type | ) | const [inline] |
Check if the table has a read or write lock, thus if the table can be read or written safely.
Definition at line 125 of file ExternalLockSync.h.
References casacore::TableLockData::hasLock(), and itsLock.
| void casacore::ExternalLockSync::makeLock | ( | const String & | tableName, | |
| Bool | create, | |||
| FileLocker::LockType | ||||
| ) |
Create the LockFile object and acquire a read or write lock when permanent locking is in effect.
It throws an exception when acquiring the lock failed.
| uInt casacore::ExternalLockSync::nrow | ( | ) | const [inline] |
Get the current number of rows in this object.
Definition at line 139 of file ExternalLockSync.h.
References itsNrrow.
| ExternalLockSync& casacore::ExternalLockSync::operator= | ( | const ExternalLockSync & | that | ) | [private] |
Assignment is forbidden.
| void casacore::ExternalLockSync::release | ( | uInt | nrrow | ) | [inline] |
Release the lock and synchronize the table access.
When autolocking is in effect, the lock is only released when the inspection-interval (see class TableLockData ) has expired. It does nothing when permanent locking is used. It throws an exception when the release failed.
Definition at line 129 of file ExternalLockSync.h.
References itsLock, itsNrrow, and casacore::TableLockData::release().
| static MemoryIO* casacore::ExternalLockSync::releaseCallBack | ( | void * | lockSyncObject, | |
| Bool | always | |||
| ) | [static, private] |
The callback function when releasing a lock.
Definition at line 119 of file ExternalLockSync.h.
uInt casacore::ExternalLockSync::itsNrrow [private] |
Definition at line 121 of file ExternalLockSync.h.
Referenced by doReleaseCallBack(), nrow(), and release().
Definition at line 120 of file ExternalLockSync.h.
Referenced by doReleaseCallBack().
1.6.1