casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
casa::ExternalLockSync Class Reference

Class to hold table lock data. More...

#include <ExternalLockSync.h>

List of all members.

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.
ExternalLockSyncoperator= (const ExternalLockSync &that)
 Assignment is forbidden.
MemoryIOdoReleaseCallBack (Bool always)
 The member function executing the callback functionality.

Static Private Member Functions

static MemoryIOreleaseCallBack (void *lockSyncObject, Bool always)
 The callback function when releasing a lock.

Private Attributes

TableLockData itsLock
TableSyncData itsSync
uInt 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

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


Constructor & Destructor Documentation

Construct from the given TableLock object.

Copy constructor is forbidden.


Member Function Documentation

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.

MemoryIO * casa::ExternalLockSync::doReleaseCallBack ( Bool  always) [inline, private]

The member function executing the callback functionality.

Definition at line 134 of file ExternalLockSync.h.

References itsNrrow, itsSync, casa::TableSyncData::memoryIO(), and casa::TableSyncData::write().

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 casa::TableLockData::hasLock(), and itsLock.

void casa::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 casa::ExternalLockSync::nrow ( ) const [inline]

Get the current number of rows in this object.

Definition at line 139 of file ExternalLockSync.h.

References itsNrrow.

ExternalLockSync& casa::ExternalLockSync::operator= ( const ExternalLockSync that) [private]

Assignment is forbidden.

void casa::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 casa::TableLockData::release().

static MemoryIO* casa::ExternalLockSync::releaseCallBack ( void *  lockSyncObject,
Bool  always 
) [static, private]

The callback function when releasing a lock.


Member Data Documentation

Definition at line 119 of file ExternalLockSync.h.

Referenced by hasLock(), and release().

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().


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