org.apache.derby.impl.services.locks
Class LockSpace

java.lang.Object
  extended byjava.util.Dictionary
      extended byjava.util.Hashtable
          extended byorg.apache.derby.impl.services.locks.LockSpace
All Implemented Interfaces:
java.lang.Cloneable, java.util.Map, java.io.Serializable

class LockSpace
extends java.util.Hashtable

A LockSpace represents the complete set of locks held within a single compatability space, broken into groups of locks. A LockSpace is a hashtable keyed by the group reference, the data for each key is a Hashtable of Lock's.


Nested Class Summary
 
Nested classes inherited from class java.util.Hashtable
 
Field Summary
private  Limit callback
           
private  java.lang.Object callbackGroup
           
private  java.lang.Object compatSpace
           
private  java.util.Dictionary holder
           
private  boolean inLimit
           
private  int limit
           
private  int nextLimitCall
           
private  java.util.HashMap[] spareGroups
           
 
Fields inherited from class java.util.Hashtable
 
Constructor Summary
(package private) LockSpace(java.util.Dictionary holder, java.lang.Object compatSpace)
           
 
Method Summary
protected  void addLock(java.lang.Object group, Lock lock)
          Add a lock to a group.
(package private)  boolean areLocksHeld(java.lang.Object group)
          Return true if locks are held in a group
(package private)  void clearLimit(java.lang.Object group)
          Clear a limit set by setLimit.
(package private)  int deadlockCount(int bail)
          Return a count of the number of locks held by this space.
private  java.util.HashMap getGroupMap(java.lang.Object group)
           
(package private)  boolean isLockHeld(java.lang.Object group, Lockable ref, java.lang.Object qualifier)
           
private  void mergeGroups(java.util.HashMap from, java.util.HashMap into)
           
private  void saveGroup(java.util.HashMap dl)
           
(package private)  void setLimit(java.lang.Object group, int limit, Limit callback)
           
(package private)  void transfer(java.lang.Object oldGroup, java.lang.Object newGroup)
           
(package private)  void unlockGroup(LockSet lset, java.lang.Object group)
          Unlock all the locks in a group and then remove the group.
(package private)  void unlockGroup(LockSet lset, java.lang.Object group, Matchable key)
          Unlock all locks in the group that match the key
(package private)  int unlockReference(LockSet lset, Lockable ref, java.lang.Object qualifier, java.lang.Object group)
           
 
Methods inherited from class java.util.Hashtable
clear, clone, contains, containsKey, containsValue, elements, entrySet, equals, get, hashCode, isEmpty, keys, keySet, put, putAll, rehash, remove, size, toString, values
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

compatSpace

private final java.lang.Object compatSpace

holder

private final java.util.Dictionary holder

spareGroups

private java.util.HashMap[] spareGroups

callbackGroup

private java.lang.Object callbackGroup

limit

private int limit

nextLimitCall

private int nextLimitCall

callback

private Limit callback

inLimit

private boolean inLimit
Constructor Detail

LockSpace

LockSpace(java.util.Dictionary holder,
          java.lang.Object compatSpace)
Method Detail

addLock

protected void addLock(java.lang.Object group,
                       Lock lock)
                throws StandardException
Add a lock to a group.

Throws:
StandardException

unlockGroup

void unlockGroup(LockSet lset,
                 java.lang.Object group)
Unlock all the locks in a group and then remove the group.


getGroupMap

private java.util.HashMap getGroupMap(java.lang.Object group)

saveGroup

private void saveGroup(java.util.HashMap dl)

unlockGroup

void unlockGroup(LockSet lset,
                 java.lang.Object group,
                 Matchable key)
Unlock all locks in the group that match the key


transfer

void transfer(java.lang.Object oldGroup,
              java.lang.Object newGroup)

mergeGroups

private void mergeGroups(java.util.HashMap from,
                         java.util.HashMap into)

unlockReference

int unlockReference(LockSet lset,
                    Lockable ref,
                    java.lang.Object qualifier,
                    java.lang.Object group)

areLocksHeld

boolean areLocksHeld(java.lang.Object group)
Return true if locks are held in a group


isLockHeld

boolean isLockHeld(java.lang.Object group,
                   Lockable ref,
                   java.lang.Object qualifier)

setLimit

void setLimit(java.lang.Object group,
              int limit,
              Limit callback)

clearLimit

void clearLimit(java.lang.Object group)
Clear a limit set by setLimit.


deadlockCount

int deadlockCount(int bail)
Return a count of the number of locks held by this space. The argument bail indicates at which point the counting should bail out and return the current count. This routine will bail if the count is greater than bail. Thus this routine is intended to for deadlock code to find the space with the fewest number of locks.


Built on Mon 2007-06-04 09:58:47+0400, from revision ???

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.