/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002, 2015 Oracle and/or its affiliates. All rights reserved.
*
* $Id$
*/
package com.sleepycat.db;
import com.sleepycat.db.internal.DbConstants;
/** Deadlock detection modes. */
public final class LockDetectMode {
/**
Turn off deadlock detection.
*/
public static final LockDetectMode NONE =
new LockDetectMode("NONE", 0);
/**
Use whatever lock policy was specified when the database environment
was created. If no lock policy has yet been specified, set the lock
policy to DB_LOCK_RANDOM.
*/
public static final LockDetectMode DEFAULT =
new LockDetectMode("DEFAULT", DbConstants.DB_LOCK_DEFAULT);
/**
Reject lock requests which have timed out. No other deadlock detection
is performed.
*/
public static final LockDetectMode EXPIRE =
new LockDetectMode("EXPIRE", DbConstants.DB_LOCK_EXPIRE);
/**
Reject the lock request for the locker ID with the most locks.
*/
public static final LockDetectMode MAXLOCKS =
new LockDetectMode("MAXLOCKS", DbConstants.DB_LOCK_MAXLOCKS);
/**
Reject the lock request for the locker ID with the most write locks.
*/
public static final LockDetectMode MAXWRITE =
new LockDetectMode("MAXWRITE", DbConstants.DB_LOCK_MAXWRITE);
/**
Reject the lock request for the locker ID with the fewest locks.
*/
public static final LockDetectMode MINLOCKS =
new LockDetectMode("MINLOCKS", DbConstants.DB_LOCK_MINLOCKS);
/**
Reject the lock request for the locker ID with the fewest write locks.
*/
public static final LockDetectMode MINWRITE =
new LockDetectMode("MINWRITE", DbConstants.DB_LOCK_MINWRITE);
/**
Reject the lock request for the locker ID with the oldest lock.
*/
public static final LockDetectMode OLDEST =
new LockDetectMode("OLDEST", DbConstants.DB_LOCK_OLDEST);
/**
Reject the lock request for a random locker ID.
*/
public static final LockDetectMode RANDOM =
new LockDetectMode("RANDOM", DbConstants.DB_LOCK_RANDOM);
/**
Reject the lock request for the locker ID with the youngest lock.
*/
public static final LockDetectMode YOUNGEST =
new LockDetectMode("YOUNGEST", DbConstants.DB_LOCK_YOUNGEST);
/* package */
static LockDetectMode fromFlag(int flag) {
switch (flag) {
case 0:
return NONE;
case DbConstants.DB_LOCK_DEFAULT:
return DEFAULT;
case DbConstants.DB_LOCK_EXPIRE:
return EXPIRE;
case DbConstants.DB_LOCK_MAXLOCKS:
return MAXLOCKS;
case DbConstants.DB_LOCK_MAXWRITE:
return MAXWRITE;
case DbConstants.DB_LOCK_MINLOCKS:
return MINLOCKS;
case DbConstants.DB_LOCK_MINWRITE:
return MINWRITE;
case DbConstants.DB_LOCK_OLDEST:
return OLDEST;
case DbConstants.DB_LOCK_RANDOM:
return RANDOM;
case DbConstants.DB_LOCK_YOUNGEST:
return YOUNGEST;
default:
throw new IllegalArgumentException(
"Unknown lock detect mode: " + flag);
}
}
private String modeName;
private int flag;
private LockDetectMode(final String modeName, final int flag) {
this.modeName = modeName;
this.flag = flag;
}
/* package */
int getFlag() {
return flag;
}
/** {@inheritDoc} */
public String toString() {
return "LockDetectMode." + modeName;
}
}