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

Class to hold table lock options. More...

#include <TableLock.h>

Inheritance diagram for casa::TableLock:
casa::TableLockData

List of all members.

Public Types

enum  LockOption {
  PermanentLocking,
  PermanentLockingWait,
  AutoLocking,
  UserLocking,
  AutoNoReadLocking,
  UserNoReadLocking,
  DefaultLocking
}
 Define the possible table locking options. More...

Public Member Functions

 TableLock (LockOption option=DefaultLocking)
 Construct with given option and interval.
 TableLock (LockOption option, double inspectionInterval, uInt maxWait=0)
 TableLock (const TableLock &that)
 Copy constructor.
TableLockoperator= (const TableLock &that)
 Assignment.
void merge (const TableLock &that)
 Merge that TableLock with this TableLock object by taking the maximum option and minimum inspection interval.
LockOption option () const
 Get the locking option.
Bool readLocking () const
 Is read locking needed?
Bool isPermanent () const
 Is permanent locking used?
double interval () const
 Get the inspection interval.
uInt maxWait () const
 Get the maximum wait period in AutoLocking mode.

Private Member Functions

void init ()
 Set itsOption and itsReadLocking when needed.

Private Attributes

LockOption itsOption
Bool itsReadLocking
uInt itsMaxWait
double itsInterval
Bool itsIsDefaultLocking
Bool itsIsDefaultInterval

Detailed Description

Class to hold table lock options.

Intended use:

Internal

Review Status

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

Prerequisite

Synopsis

This class keeps the Table lock options. Currently these are the LockingOption and the inspection interval.

It also keeps the LockFile object used to do the actual locking/unlocking.

Motivation

Encapsulate Table locking info.

Definition at line 65 of file TableLock.h.


Member Enumeration Documentation

Define the possible table locking options.

They offer the user the possibility to lock and synchronize access to the table. A lot of locking degrades table performance; not only because acquiring/releasing locks takes time, but especially because table data has to be synchronized (thus written to disk) when a lock is released. Otherwise the other processes see data which is not up-to-date.

Enumerator:
PermanentLocking 

The table is permanently locked.

A lock is set at the beginning and only released when the table is closed. A read lock is used when the table is opened for readonly; otherwise a write lock is used. This means that multiple readers are possible. The Table constructor exits with an exception when the lock cannot be acquired.

PermanentLockingWait 

The same as above, but the table constructor waits until the lock gets available.

AutoLocking 

The system takes care of acquiring/releasing locks.

In principle it keeps the table locked, but from time to time (defined by the inspection interval) it is checked whether another process wants to access the table. If so, the lock is released and probably re-acquired later. This mode is the default mode.

UserLocking 

The user is taking care of locking the table by means of the Table functions lock and unlock.

In this way transaction processing can be implemented.

AutoNoReadLocking 

The system takes care of acquiring/releasing locks.

It is similar to AutoLocking, but no locks are needed for reading.

UserNoReadLocking 

The user is taking care of locking the table by means of the Table functions lock and unlock.

It is similar to UserLocking, but no locks are needed for reading.

DefaultLocking 

This is the default locking option.

It means that AutoLocking will be used if the table is not opened yet. Otherwise the locking options of the PlainTable objec already in use will be used.

Definition at line 75 of file TableLock.h.


Constructor & Destructor Documentation

Construct with given option and interval.

The default LockOption is AutoLocking. In case of AutloLocking the inspection interval defines how often the table system checks if another process needs a lock on the table. It defaults to 5 seconds. The maxWait defines the maximum number of seconds the table system waits when acquiring a lock in AutoLocking mode. The default is 0 seconds meaning indefinitely.

casa::TableLock::TableLock ( LockOption  option,
double  inspectionInterval,
uInt  maxWait = 0 
)

Copy constructor.


Member Function Documentation

void casa::TableLock::init ( ) [private]

Set itsOption and itsReadLocking when needed.

double casa::TableLock::interval ( ) const [inline]

Get the inspection interval.

Definition at line 188 of file TableLock.h.

References itsInterval.

Bool casa::TableLock::isPermanent ( ) const [inline]

Is permanent locking used?

Definition at line 182 of file TableLock.h.

References itsOption, PermanentLocking, and PermanentLockingWait.

uInt casa::TableLock::maxWait ( ) const [inline]

Get the maximum wait period in AutoLocking mode.

Definition at line 193 of file TableLock.h.

References itsMaxWait.

void casa::TableLock::merge ( const TableLock that)

Merge that TableLock with this TableLock object by taking the maximum option and minimum inspection interval.

The option order (ascending) is UserLocking, AutoLocking, PermanentLocking. When an interval was defaulted, it is not taken into account. An option DefaultLocking is not taken into account.

TableLock& casa::TableLock::operator= ( const TableLock that)

Assignment.

Get the locking option.

Definition at line 172 of file TableLock.h.

References itsOption.

Referenced by casa::TableLockData::autoRelease().

Bool casa::TableLock::readLocking ( ) const [inline]

Is read locking needed?

Definition at line 177 of file TableLock.h.

References itsReadLocking.

Referenced by casa::ColumnSet::checkReadLock().


Member Data Documentation

double casa::TableLock::itsInterval [private]

Definition at line 161 of file TableLock.h.

Referenced by interval().

Definition at line 163 of file TableLock.h.

Definition at line 162 of file TableLock.h.

Definition at line 160 of file TableLock.h.

Referenced by maxWait().

Definition at line 158 of file TableLock.h.

Referenced by isPermanent(), and option().

Definition at line 159 of file TableLock.h.

Referenced by readLocking().


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