TableLock.h

Classes

TableLock -- Class to hold table lock options. (full description)

class TableLock

Types

enum LockOption

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.

Interface

Public Members
TableLock (LockOption option = DefaultLocking)
TableLock (LockOption option, double inspectionInterval, uInt maxWait = 0)
TableLock (const TableLock& that)
TableLock& operator= (const TableLock& that)
void merge (const TableLock& that)
LockOption option() const
Bool readLocking() const
Bool isPermanent() const
double interval() const
uInt maxWait() const
Private Members
void init()

Description

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Programs:
Tests:

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.

Member Description

enum LockOption

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.

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

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.

TableLock (const TableLock& that)

Copy constructor.

TableLock& operator= (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. 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.

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.

void init()

Set itsOption and itsReadLocking when needed.