Package org.jgroups.protocols
Class Locking
- java.lang.Object
-
- org.jgroups.stack.Protocol
-
- org.jgroups.protocols.Locking
-
- Direct Known Subclasses:
CENTRAL_LOCK,CENTRAL_LOCK2
public abstract class Locking extends Protocol
Base locking protocol, handling most of the protocol communication with other instances. To use distributed locking,LockServiceis placed on a channel. LockService talks to a subclass of Locking via events.- Since:
- 2.12
- Author:
- Bela Ban
- See Also:
CENTRAL_LOCK,CENTRAL_LOCK2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classLocking.ClientConditionprotected classLocking.ClientLockImplementation ofLock.protected classLocking.ClientLockTableManages access to client locksprotected static classLocking.LockInfoResponsestatic classLocking.LockingHeaderstatic classLocking.Requestprotected static classLocking.ResponseA response to a request, to be sent back to the requester as a messageprotected classLocking.ServerConditionprotected classLocking.ServerLockServer side queue for handling of lock requests (lock, release).static classLocking.Type
-
Field Summary
Fields Modifier and Type Field Description protected booleanbypass_bundlingprotected Locking.ClientLockTableclient_lock_tableprotected static java.util.concurrent.atomic.AtomicIntegercurrent_lock_idprotected Addresslocal_addrprotected java.util.Set<LockNotification>lock_listenersprotected java.util.concurrent.locks.Lock[]lock_stripesprotected intlock_striping_sizeprotected java.util.concurrent.ConcurrentMap<java.lang.String,Locking.ServerLock>server_locksprotected Viewview-
Fields inherited from class org.jgroups.stack.Protocol
after_creation_hook, down_prot, ergonomics, id, log, stack, stats, up_prot
-
-
Constructor Summary
Constructors Constructor Description Locking()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected java.util.concurrent.locks.Lock_getLock(java.lang.String lock_name)Gets a lock from locks based on the hash of the lock namevoidaddLockListener(LockNotification listener)protected Locking.ClientLockcreateLock(java.lang.String lock_name, Owner owner)java.lang.Objectdown(Event evt)An event is to be sent down the stack.java.lang.StringgetAddress()booleangetBypassBundling()protected Locking.ClientLockgetLock(java.lang.String name)protected Locking.ClientLockgetLock(java.lang.String name, boolean create_if_absent)intgetNumClientLocks()intgetNumServerLocks()protected OwnergetOwner()java.lang.StringgetView()protected voidhandleAwaitRequest(java.lang.String lock_name, Owner owner)protected voidhandleCreateAwaitingRequest(java.lang.String lock_name, Owner owner)protected voidhandleCreateLockRequest(java.lang.String lock_name, Owner owner)protected voidhandleDeleteAwaitingRequest(java.lang.String lock_name, Owner owner)protected voidhandleDeleteAwaitRequest(java.lang.String lock_name, Owner owner)protected voidhandleDeleteLockRequest(java.lang.String lock_name)protected voidhandleLockDeniedResponse(java.lang.String lock_name, int lock_id, Owner owner)protected voidhandleLockGrantedResponse(java.lang.String lock_name, int lock_id, Owner owner)protected voidhandleLockInfoRequest(Address requester)protected voidhandleLockInfoResponse(Address sender, Locking.Request rsp)protected voidhandleLockReleasedResponse(java.lang.String lock_name, int lock_id, Owner owner)protected voidhandleLockRequest(Locking.Request req)protected voidhandleLockRevoked(Locking.Request rsp)protected voidhandleRequest(Locking.Request req)protected voidhandleSignalRequest(Locking.Request req)protected voidhandleSignalResponse(java.lang.String lock_name, Owner owner)protected voidhandleView(View view)voidinit()Called after instance has been created (null constructor) and before protocol is started.protected voidnotifyAwaited(java.lang.String lock_name, Owner owner)protected voidnotifyAwaiting(java.lang.String lock_name, Owner owner)protected voidnotifyLockCreated(java.lang.String lock_name)protected voidnotifyLockDeleted(java.lang.String lock_name)protected voidnotifyLocked(java.lang.String lock_name, Owner owner)protected voidnotifyLockRevoked(java.lang.String lock_name, Owner current_owner)protected voidnotifyUnlocked(java.lang.String lock_name, Owner owner)java.lang.StringprintLocks()java.lang.ObjectprintServerLocks()voidremoveLockListener(LockNotification listener)protected voidrequestReceived(Locking.Request req)protected voidsend(Address dest, Locking.Request req)protected abstract voidsendAwaitConditionRequest(java.lang.String lock_name, Owner owner)protected abstract voidsendDeleteAwaitConditionRequest(java.lang.String lock_name, Owner owner)protected abstract voidsendGrantLockRequest(java.lang.String lock_name, int lock_id, Owner owner, long timeout, boolean is_trylock)protected voidsendLockResponse(Locking.Type type, Owner dest, java.lang.String lock_name, int lock_id)protected abstract voidsendReleaseLockRequest(java.lang.String lock_name, int lock_id, Owner owner)protected voidsendRequest(Address dest, Locking.Type type, java.lang.String lock_name, int lock_id, Owner owner, long timeout, boolean is_trylock)protected voidsendRequest(Address dest, Locking.Type type, java.lang.String lock_name, Owner owner, long timeout, boolean is_trylock)protected abstract voidsendSignalConditionRequest(java.lang.String lock_name, boolean all)protected voidsendSignalResponse(Owner dest, java.lang.String lock_name)voidsetBypassBundling(boolean bypass_bundling)voidunlockAll()voidunlockForce(java.lang.String lock_name)java.lang.Objectup(Event evt)An event was received from the protocol below.java.lang.Objectup(Message msg)A single message was received.-
Methods inherited from class org.jgroups.stack.Protocol
accept, afterCreationHook, destroy, down, enableStats, getConfigurableObjects, getDownProtocol, getDownServices, getId, getIdsAbove, getLevel, getLog, getName, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getUpServices, getValue, isErgonomics, level, parse, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, resetStatistics, resetStats, setDownProtocol, setErgonomics, setId, setLevel, setProtocolStack, setSocketFactory, setUpProtocol, setValue, start, statsEnabled, stop, up
-
-
-
-
Field Detail
-
bypass_bundling
protected boolean bypass_bundling
-
lock_striping_size
protected int lock_striping_size
-
local_addr
protected Address local_addr
-
view
protected View view
-
server_locks
protected final java.util.concurrent.ConcurrentMap<java.lang.String,Locking.ServerLock> server_locks
-
lock_stripes
protected java.util.concurrent.locks.Lock[] lock_stripes
-
client_lock_table
protected final Locking.ClientLockTable client_lock_table
-
lock_listeners
protected final java.util.Set<LockNotification> lock_listeners
-
current_lock_id
protected static final java.util.concurrent.atomic.AtomicInteger current_lock_id
-
-
Method Detail
-
getBypassBundling
public boolean getBypassBundling()
-
setBypassBundling
public void setBypassBundling(boolean bypass_bundling)
-
addLockListener
public void addLockListener(LockNotification listener)
-
removeLockListener
public void removeLockListener(LockNotification listener)
-
getAddress
public java.lang.String getAddress()
-
getView
public java.lang.String getView()
-
getNumServerLocks
public int getNumServerLocks()
-
getNumClientLocks
public int getNumClientLocks()
-
init
public void init() throws java.lang.ExceptionDescription copied from class:ProtocolCalled after instance has been created (null constructor) and before protocol is started. Properties are already set. Other protocols are not yet connected and events cannot yet be sent.
-
down
public java.lang.Object down(Event evt)
Description copied from class:ProtocolAn event is to be sent down the stack. A protocol may want to examine its type and perform some action on it, depending on the event's type. If the event is a message MSG, then the protocol may need to add a header to it (or do nothing at all) before sending it down the stack usingdown_prot.down().
-
up
public java.lang.Object up(Event evt)
Description copied from class:ProtocolAn event was received from the protocol below. Usually the current protocol will want to examine the event type and - depending on its type - perform some computation (e.g. removing headers from a MSG event type, or updating the internal membership list when receiving a VIEW_CHANGE event). Finally the event is either a) discarded, or b) an event is sent down the stack usingdown_prot.down()or c) the event (or another event) is sent up the stack usingup_prot.up().
-
up
public java.lang.Object up(Message msg)
Description copied from class:ProtocolA single message was received. Protocols may examine the message and do something (e.g. add a header) with it before passing it up.
-
requestReceived
protected void requestReceived(Locking.Request req)
-
handleRequest
protected void handleRequest(Locking.Request req)
-
getLock
protected Locking.ClientLock getLock(java.lang.String name)
-
getLock
protected Locking.ClientLock getLock(java.lang.String name, boolean create_if_absent)
-
unlockAll
public void unlockAll()
-
unlockForce
public void unlockForce(java.lang.String lock_name)
-
printLocks
public java.lang.String printLocks()
-
printServerLocks
public java.lang.Object printServerLocks()
-
handleView
protected void handleView(View view)
-
createLock
protected Locking.ClientLock createLock(java.lang.String lock_name, Owner owner)
-
_getLock
protected java.util.concurrent.locks.Lock _getLock(java.lang.String lock_name)
Gets a lock from locks based on the hash of the lock name
-
getOwner
protected Owner getOwner()
-
sendGrantLockRequest
protected abstract void sendGrantLockRequest(java.lang.String lock_name, int lock_id, Owner owner, long timeout, boolean is_trylock)
-
sendReleaseLockRequest
protected abstract void sendReleaseLockRequest(java.lang.String lock_name, int lock_id, Owner owner)
-
sendAwaitConditionRequest
protected abstract void sendAwaitConditionRequest(java.lang.String lock_name, Owner owner)
-
sendSignalConditionRequest
protected abstract void sendSignalConditionRequest(java.lang.String lock_name, boolean all)
-
sendDeleteAwaitConditionRequest
protected abstract void sendDeleteAwaitConditionRequest(java.lang.String lock_name, Owner owner)
-
sendRequest
protected void sendRequest(Address dest, Locking.Type type, java.lang.String lock_name, Owner owner, long timeout, boolean is_trylock)
-
sendRequest
protected void sendRequest(Address dest, Locking.Type type, java.lang.String lock_name, int lock_id, Owner owner, long timeout, boolean is_trylock)
-
sendLockResponse
protected void sendLockResponse(Locking.Type type, Owner dest, java.lang.String lock_name, int lock_id)
-
sendSignalResponse
protected void sendSignalResponse(Owner dest, java.lang.String lock_name)
-
send
protected void send(Address dest, Locking.Request req)
-
handleLockRequest
protected void handleLockRequest(Locking.Request req)
-
handleLockGrantedResponse
protected void handleLockGrantedResponse(java.lang.String lock_name, int lock_id, Owner owner)
-
handleLockReleasedResponse
protected void handleLockReleasedResponse(java.lang.String lock_name, int lock_id, Owner owner)
-
handleLockDeniedResponse
protected void handleLockDeniedResponse(java.lang.String lock_name, int lock_id, Owner owner)
-
handleLockInfoRequest
protected void handleLockInfoRequest(Address requester)
-
handleLockInfoResponse
protected void handleLockInfoResponse(Address sender, Locking.Request rsp)
-
handleLockRevoked
protected void handleLockRevoked(Locking.Request rsp)
-
handleAwaitRequest
protected void handleAwaitRequest(java.lang.String lock_name, Owner owner)
-
handleDeleteAwaitRequest
protected void handleDeleteAwaitRequest(java.lang.String lock_name, Owner owner)
-
handleSignalResponse
protected void handleSignalResponse(java.lang.String lock_name, Owner owner)
-
handleSignalRequest
protected void handleSignalRequest(Locking.Request req)
-
handleCreateLockRequest
protected void handleCreateLockRequest(java.lang.String lock_name, Owner owner)
-
handleDeleteLockRequest
protected void handleDeleteLockRequest(java.lang.String lock_name)
-
handleCreateAwaitingRequest
protected void handleCreateAwaitingRequest(java.lang.String lock_name, Owner owner)
-
handleDeleteAwaitingRequest
protected void handleDeleteAwaitingRequest(java.lang.String lock_name, Owner owner)
-
notifyLockCreated
protected void notifyLockCreated(java.lang.String lock_name)
-
notifyLockDeleted
protected void notifyLockDeleted(java.lang.String lock_name)
-
notifyLockRevoked
protected void notifyLockRevoked(java.lang.String lock_name, Owner current_owner)
-
notifyLocked
protected void notifyLocked(java.lang.String lock_name, Owner owner)
-
notifyUnlocked
protected void notifyUnlocked(java.lang.String lock_name, Owner owner)
-
notifyAwaiting
protected void notifyAwaiting(java.lang.String lock_name, Owner owner)
-
notifyAwaited
protected void notifyAwaited(java.lang.String lock_name, Owner owner)
-
-