Loading...
Searching...
No Matches
casacore::ExternalLockSync Class Reference
tables package (libcasa_tables) » Tables_module » Tables_module_internal_classes

More...

`#include <ExternalLockSync.h>`

## Public Member Functions

| ExternalLockSync (const TableLock &lockOptions)
| Construct from the given TableLock object.
| ~ExternalLockSync ()
| ExternalLockSync (const ExternalLockSync &that)=delete
| Copy constructor is forbidden.
ExternalLockSync & | operator= (const ExternalLockSync &that)=delete
| Assignment is forbidden.
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).
rownr_t | nrow () const
| Get the current number of rows in this object.
void | release (rownr_t 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

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
rownr_t | itsNrrow

## Detailed Description

Class to hold table lock data.

### Intended use:

Internal

### Review Status

Reviewed By:
  UNKNOWN
Date Reviewed:
  before2004/08/25
Test programs:
  tTable

### Prerequisite

- class TableLock

### Synopsis

This class keeps the LockFile object used to do the actual locking/unlocking. It also keeps the synchronization information.

### Motivation

Encapsulate Table locking data.

Definition at line 62 of file ExternalLockSync.h.

## Constructor & Destructor Documentation

## ExternalLockSync() [1/2]

casacore::ExternalLockSync::ExternalLockSync | ( | const TableLock & | lockOptions | ) |

Construct from the given TableLock object.

Referenced by ExternalLockSync(), and operator=().

## ~ExternalLockSync()

casacore::ExternalLockSync::~ExternalLockSync | ( |  | ) |

## ExternalLockSync() [2/2]

casacore::ExternalLockSync::ExternalLockSync | ( | const ExternalLockSync & | that | ) |

delete

Copy constructor is forbidden.

References ExternalLockSync().

## Member Function Documentation

## acquire()

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.

References casacore::FileLocker::Write.

## doReleaseCallBack()

MemoryIO * casacore::ExternalLockSync::doReleaseCallBack | ( | Bool | always | ) |

inline private

The member function executing the callback functionality.

Definition at line 132 of file ExternalLockSync.h.

References itsNrrow, and itsSync.

## hasLock()

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 123 of file ExternalLockSync.h.

References itsLock.

## makeLock()

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.

## nrow()

rownr_t casacore::ExternalLockSync::nrow | ( |  | ) | const

inline

Get the current number of rows in this object.

Definition at line 137 of file ExternalLockSync.h.

References itsNrrow.

## operator=()

ExternalLockSync & casacore::ExternalLockSync::operator= | ( | const ExternalLockSync & | that | ) |

delete

Assignment is forbidden.

References ExternalLockSync().

## release()

void casacore::ExternalLockSync::release | ( | rownr_t | 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 127 of file ExternalLockSync.h.

References itsLock, and itsNrrow.

## releaseCallBack()

MemoryIO * casacore::ExternalLockSync::releaseCallBack | ( | void * | lockSyncObject,
|  | Bool | always )

static private

The callback function when releasing a lock.

## Member Data Documentation

## itsLock

TableLockData casacore::ExternalLockSync::itsLock

private

Definition at line 117 of file ExternalLockSync.h.

Referenced by hasLock(), and release().

## itsNrrow

rownr_t casacore::ExternalLockSync::itsNrrow

private

Definition at line 119 of file ExternalLockSync.h.

Referenced by doReleaseCallBack(), nrow(), and release().

## itsSync

TableSyncData casacore::ExternalLockSync::itsSync

private

Definition at line 118 of file ExternalLockSync.h.

Referenced by doReleaseCallBack().

The documentation for this class was generated from the following file:

- tables/Tables/ExternalLockSync.h