blob: 3983fead72e72a36f8e9982dc81f175c666615e2 [file] [log] [blame]
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.je.txn;
/**
* LockConflict is a type safe enumeration of lock conflict types. Methods on
* LockConflict objects are used to determine whether a conflict exists and, if
* so, how it should be handled.
*/
class LockConflict {
static final LockConflict ALLOW = new LockConflict(true, false);
static final LockConflict BLOCK = new LockConflict(false, false);
static final LockConflict RESTART = new LockConflict(false, true);
private boolean allowed;
private boolean restart;
/**
* No conflict types can be defined outside this class.
*/
private LockConflict(boolean allowed, boolean restart) {
this.allowed = allowed;
this.restart= restart;
}
/**
* This method is called first to determine whether the locks is allowed.
* If true, there is no conflict. If false, there is a conflict and the
* requester must wait for or be denied the lock, or (if getRestart returns
* true) an exception should be thrown to cause the requester's operation
* to be restarted.
*/
boolean getAllowed() {
return allowed;
}
/**
* This method is called when getAllowed returns false to determine whether
* an exception should be thrown to cause the requester's operation to be
* restarted. If getAllowed returns false and this method returns false,
* the requester should wait for or be denied the lock, depending on the
* request mode. If getAllowed returns true, this method will always
* return false.
*/
boolean getRestart() {
return restart;
}
}