|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Any object that implements this interface can be used as a locking policy for accessing a container.
The locking policy must use the defined lock qualifiers (ContainerLock.CIS, RowLock.RS, etc.) and the standard lock manager. (A locking policy that just performs no locking wouldn't need to use these :-)
A locking policy must use the object that is an instance of Transaction
(originally obtained via startTransaction() in RawStoreFactory) as the
compatibilitySpace for the LockFactory calls.
A locking policy must use the passed in transaction as the
compatability space and the lock group.
This chain (group) of locks has the following defined behaviour
ContainerHandle
,
RecordHandle
,
LockFactory
,
Lockable
Field Summary | |
static int |
MODE_CONTAINER
ContainerHandle level locking. |
static int |
MODE_NONE
No locking what so ever, isolation parameter will be ignored by getLockingPolicy(). |
static int |
MODE_RECORD
Record level locking. |
Method Summary | |
int |
getMode()
Get the mode of this policy |
boolean |
lockContainer(Transaction t,
ContainerHandle container,
boolean waitForLock,
boolean forUpdate)
Called when a container is opened. |
void |
lockRecordForRead(Latch latch,
RecordHandle record,
boolean forUpdate)
Lock a record while holding a page latch. |
boolean |
lockRecordForRead(Transaction t,
ContainerHandle container,
RecordHandle record,
boolean waitForLock,
boolean forUpdate)
Called before a record is fetched. |
void |
lockRecordForWrite(Latch latch,
RecordHandle record)
Lock a record for write while holding a page latch. |
boolean |
lockRecordForWrite(Transaction t,
RecordHandle record,
boolean lockForInsert,
boolean waitForLock)
Called before a record is inserted, updated or deleted. |
void |
unlockContainer(Transaction t,
ContainerHandle container)
Called when a container is closed. |
void |
unlockRecordAfterRead(Transaction t,
ContainerHandle container,
RecordHandle record,
boolean forUpdate,
boolean row_qualified)
Called after a record has been fetched. |
boolean |
zeroDurationLockRecordForWrite(Transaction t,
RecordHandle record,
boolean lockForPreviousKey,
boolean waitForLock)
Request a write lock which will be released immediately upon grant. |
Field Detail |
public static final int MODE_NONE
RawStoreFactory
,
Constant Field Valuespublic static final int MODE_RECORD
public static final int MODE_CONTAINER
Method Detail |
public boolean lockContainer(Transaction t, ContainerHandle container, boolean waitForLock, boolean forUpdate) throws StandardException
t
- Transaction to associate lock with.container
- Container to lock.waitForLock
- Should lock request wait until granted?forUpdate
- Should container be locked for update, or read?
StandardException
- Standard Cloudscape error policyContainerHandle
public void unlockContainer(Transaction t, ContainerHandle container)
ContainerHandle
,
ContainerHandle.close()
public boolean lockRecordForRead(Transaction t, ContainerHandle container, RecordHandle record, boolean waitForLock, boolean forUpdate) throws StandardException
t
- Transaction to associate lock with.container
- Open Container used to get record. Will be used
to row locks by the container they belong to.record
- Record to lock.waitForLock
- Should lock request wait until granted?forUpdate
- Should container be locked for update, or read?
StandardException
- Standard Cloudscape error policyPage
public void lockRecordForRead(Latch latch, RecordHandle record, boolean forUpdate) throws StandardException
latch
- Latch held.record
- Record to lock.forUpdate
- Should container be locked for update, or read?
StandardException
- Standard Cloudscape error policyPage
public boolean zeroDurationLockRecordForWrite(Transaction t, RecordHandle record, boolean lockForPreviousKey, boolean waitForLock) throws StandardException
t
- Transaction to associate lock with.record
- Record to lock.lockForPreviousKey
- Lock is for a previous key of a insert.waitForLock
- Should lock request wait until granted?
StandardException
- Standard Cloudscape error policyPage
public boolean lockRecordForWrite(Transaction t, RecordHandle record, boolean lockForInsert, boolean waitForLock) throws StandardException
t
- Transaction to associate lock with.record
- Record to lock.lockForInsert
- Lock is for an insert.waitForLock
- Should lock request wait until granted?
StandardException
- Standard Cloudscape error policyPage
public void lockRecordForWrite(Latch latch, RecordHandle record) throws StandardException
latch
- Page latch held.record
- Record to lock.
StandardException
- Standard Cloudscape error policyPage
public void unlockRecordAfterRead(Transaction t, ContainerHandle container, RecordHandle record, boolean forUpdate, boolean row_qualified) throws StandardException
StandardException
- Standard Cloudscape error policyPage
public int getMode()
|
Built on Tue 2006-10-10 19:23:47+0200, from revision exported | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |