org.objectweb.perseus.concurrency.pessimistic
Class PessimisticConcurrencyManager

java.lang.Object
  extended byorg.objectweb.perseus.concurrency.pessimistic.PessimisticConcurrencyManager
All Implemented Interfaces:
ConcurrencyManager, PessimisticConcurrencyManagerAC
Direct Known Subclasses:
DistributedConcurrencyManager

public abstract class PessimisticConcurrencyManager
extends java.lang.Object
implements ConcurrencyManager, PessimisticConcurrencyManagerAC

Author:
E. Bruneton

Nested Class Summary
protected static class PessimisticConcurrencyManager.ContextInfo
          Information associated to a context
 
Field Summary
protected  java.util.Map contextInfos
          A map associating a ContextInfo to each context.
static java.lang.String DEPENDENCY_GRAPH_BINDING
           
protected  DependencyGraph dg
           
protected  java.util.Map locks
          A map associating locks to all oids in all active contexts.
protected  Logger logger
           
static short POLICY_MUTEX
           
static short POLICY_RW_FIFO
           
static short POLICY_RW_PRIORITY2READERS
           
static short POLICY_UNDEFINED
           
static java.lang.String[] policyStringVal
           
protected  boolean thinLockAllowed
           
 
Constructor Summary
PessimisticConcurrencyManager()
           
PessimisticConcurrencyManager(short policy)
           
 
Method Summary
 void abort(java.lang.Object ctx)
          This method allows to release the resources allocated in a given context.
 void begin(java.lang.Object ctx)
          This method records the start of an execution context.
 void bindFc(java.lang.String s, java.lang.Object o)
           
 void closeLock(Lock lock, java.lang.Object ctx)
           
 void finalize(java.lang.Object ctx)
          This method marks the end of accesses made by the execution context.
protected  PessimisticConcurrencyManager.ContextInfo getContextInfo(java.lang.Object ctxt)
           
 java.lang.String getFcState()
           
protected  Lock getLock(java.lang.Object oid, java.lang.Object hints)
          Returns the lock associated to the given oid.
 java.lang.String getPolicy()
           
protected  java.lang.Object getResourceId(java.lang.Object object)
           
protected abstract  java.lang.Object getState(java.lang.Object ctx, java.lang.Object resourceId, Lock lock)
           
 boolean getThinkLockAllowed()
           
 java.lang.String[] listFc()
           
 java.lang.Object lookupFc(java.lang.String s)
           
 java.lang.Object readIntention(java.lang.Object ctx, java.lang.Object resource, java.lang.Object thinLock)
          This method records an access intention to a data object in read mode.
 void setPolicy(java.lang.String policy)
           
 void setThinkLockAllowed(boolean val)
           
 void startFc()
           
 void stopFc()
           
 void unbindFc(java.lang.String s)
           
 boolean validate(java.lang.Object ctx)
          This method requests the validation os accesses made by the context.
 java.lang.Object writeIntention(java.lang.Object ctx, java.lang.Object resource, java.lang.Object thinLock)
          This method records an access intention to a data object in write mode.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

POLICY_UNDEFINED

public static final short POLICY_UNDEFINED
See Also:
Constant Field Values

POLICY_MUTEX

public static final short POLICY_MUTEX
See Also:
Constant Field Values

POLICY_RW_PRIORITY2READERS

public static final short POLICY_RW_PRIORITY2READERS
See Also:
Constant Field Values

POLICY_RW_FIFO

public static final short POLICY_RW_FIFO
See Also:
Constant Field Values

policyStringVal

public static final java.lang.String[] policyStringVal

DEPENDENCY_GRAPH_BINDING

public static final java.lang.String DEPENDENCY_GRAPH_BINDING
See Also:
Constant Field Values

locks

protected java.util.Map locks
A map associating locks to all oids in all active contexts.


dg

protected DependencyGraph dg

contextInfos

protected java.util.Map contextInfos
A map associating a ContextInfo to each context.


logger

protected Logger logger

thinLockAllowed

protected boolean thinLockAllowed
Constructor Detail

PessimisticConcurrencyManager

public PessimisticConcurrencyManager()
                              throws ConcurrencyException

PessimisticConcurrencyManager

public PessimisticConcurrencyManager(short policy)
                              throws ConcurrencyException
Method Detail

getState

protected abstract java.lang.Object getState(java.lang.Object ctx,
                                             java.lang.Object resourceId,
                                             Lock lock)
                                      throws ConcurrencyException
Parameters:
ctx - is the context using the resource
resourceId - is the resource identifier
lock - is the lock instance matching the resource
Returns:
the resource state to use
Throws:
ConcurrencyException

listFc

public java.lang.String[] listFc()

lookupFc

public java.lang.Object lookupFc(java.lang.String s)
                          throws NoSuchInterfaceException
Throws:
NoSuchInterfaceException

bindFc

public void bindFc(java.lang.String s,
                   java.lang.Object o)
            throws IllegalBindingException,
                   NoSuchInterfaceException
Throws:
IllegalBindingException
NoSuchInterfaceException

unbindFc

public void unbindFc(java.lang.String s)
              throws NoSuchInterfaceException
Throws:
NoSuchInterfaceException

getFcState

public java.lang.String getFcState()

startFc

public void startFc()
             throws IllegalLifeCycleException
Throws:
IllegalLifeCycleException

stopFc

public void stopFc()
            throws IllegalLifeCycleException
Throws:
IllegalLifeCycleException

begin

public void begin(java.lang.Object ctx)
Description copied from interface: ConcurrencyManager
This method records the start of an execution context. It can be a transaction starting.

Specified by:
begin in interface ConcurrencyManager
Parameters:
ctx - is the context

validate

public boolean validate(java.lang.Object ctx)
Description copied from interface: ConcurrencyManager
This method requests the validation os accesses made by the context. It retrieves a boolean value to indicate if the accesses are validate or not.

Specified by:
validate in interface ConcurrencyManager

finalize

public void finalize(java.lang.Object ctx)
Description copied from interface: ConcurrencyManager
This method marks the end of accesses made by the execution context. This method should be called when the validate method has returned true.

Specified by:
finalize in interface ConcurrencyManager

closeLock

public void closeLock(Lock lock,
                      java.lang.Object ctx)

abort

public void abort(java.lang.Object ctx)
Description copied from interface: ConcurrencyManager
This method allows to release the resources allocated in a given context. This method should be called when the validate method has returned false.

Specified by:
abort in interface ConcurrencyManager

getResourceId

protected java.lang.Object getResourceId(java.lang.Object object)

readIntention

public java.lang.Object readIntention(java.lang.Object ctx,
                                      java.lang.Object resource,
                                      java.lang.Object thinLock)
                               throws ConcurrencyException
Description copied from interface: ConcurrencyManager
This method records an access intention to a data object in read mode.

Specified by:
readIntention in interface ConcurrencyManager
Parameters:
resource - is the resource or it identifier (Object used for synchronization)
ctx - is an identifier of the execution context. It can be a transaction handle.
thinLock - permit to take smaller lock than on the resource globaly
Returns:
null or an object depending on the ConcurrencyManager type
Throws:
ConcurrencyException - if the no resource are available for this resource identifer or if there is a concurrency problem. In this last case that means the context should be cancelled.

writeIntention

public java.lang.Object writeIntention(java.lang.Object ctx,
                                       java.lang.Object resource,
                                       java.lang.Object thinLock)
                                throws ConcurrencyException
Description copied from interface: ConcurrencyManager
This method records an access intention to a data object in write mode. A call to the readIntention is necessary before a call to this method.

Specified by:
writeIntention in interface ConcurrencyManager
Parameters:
resource - is the resource or its identifier
ctx - is an identifier of the execution context. It can be a transaction handle.
thinLock - permit to take smaller lock than on the resource globaly
Returns:
null or an object depending on the ConcurrencyManager type
Throws:
ConcurrencyException - if the no resource are available for this resource identifer or if there is a concurrency problem. In this last case that means the context should be cancelled.

getLock

protected Lock getLock(java.lang.Object oid,
                       java.lang.Object hints)
Returns the lock associated to the given oid.

Parameters:
oid - an object identifier.
Returns:
the lock associated to the given oid.

getContextInfo

protected PessimisticConcurrencyManager.ContextInfo getContextInfo(java.lang.Object ctxt)

getPolicy

public java.lang.String getPolicy()
Specified by:
getPolicy in interface PessimisticConcurrencyManagerAC

setPolicy

public void setPolicy(java.lang.String policy)
               throws IllegalLifeCycleException
Specified by:
setPolicy in interface PessimisticConcurrencyManagerAC
Throws:
IllegalLifeCycleException

getThinkLockAllowed

public boolean getThinkLockAllowed()
Specified by:
getThinkLockAllowed in interface PessimisticConcurrencyManagerAC

setThinkLockAllowed

public void setThinkLockAllowed(boolean val)
Specified by:
setThinkLockAllowed in interface PessimisticConcurrencyManagerAC


Copyright © 2000-2002 France Telecom S.A., INRIA, IMAG-LSR All Rights Reserved.