casacore
|
Class to hold table lock data. More...
#include <ExternalLockSync.h>
Public Member Functions | |
ExternalLockSync (const TableLock &lockOptions) | |
Construct from the given TableLock object. More... | |
~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. More... | |
Bool | acquire (FileLocker::LockType=FileLocker::Write, uInt nattempts=0) |
Acquire a read or write lock (when needed). More... | |
rownr_t | nrow () const |
Get the current number of rows in this object. More... | |
void | release (rownr_t nrrow) |
Release the lock and synchronize the table access. More... | |
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. More... | |
Private Member Functions | |
ExternalLockSync (const ExternalLockSync &that) | |
Copy constructor is forbidden. More... | |
ExternalLockSync & | operator= (const ExternalLockSync &that) |
Assignment is forbidden. More... | |
MemoryIO * | doReleaseCallBack (Bool always) |
The member function executing the callback functionality. More... | |
Static Private Member Functions | |
static MemoryIO * | releaseCallBack (void *lockSyncObject, Bool always) |
The callback function when releasing a lock. More... | |
Private Attributes | |
TableLockData | itsLock |
TableSyncData | itsSync |
rownr_t | 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 | ( | ) |
|
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().
|
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.
|
inline |
Get the current number of rows in this object.
Definition at line 139 of file ExternalLockSync.h.
References itsNrrow.
|
private |
Assignment is forbidden.
|
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().
|
staticprivate |
The callback function when releasing a lock.
|
private |
Definition at line 119 of file ExternalLockSync.h.
|
private |
Definition at line 121 of file ExternalLockSync.h.
Referenced by doReleaseCallBack(), nrow(), and release().
|
private |
Definition at line 120 of file ExternalLockSync.h.
Referenced by doReleaseCallBack().