package com.sleepycat.je.txn;
import com.sleepycat.je.tree.LN;
import com.sleepycat.je.utilint.DbLsn;
import de.ovgu.cide.jakutil.*;
/**
* This class is a container to encapsulate a LockGrantType and a WriteLockInfo
* so that they can both be returned from writeLock.
*/
public class LockResult {
private LockGrantType grant;
private WriteLockInfo info;
private LN ln;
public LockResult( LockGrantType grant, WriteLockInfo info){
this.grant=grant;
this.info=info;
}
public LN getLN(){
return ln;
}
public void setLN( LN ln){
this.ln=ln;
}
public LockGrantType getLockGrant(){
return grant;
}
public void setAbortLsn( long abortLsn, boolean abortKnownDeleted){
setAbortLsnInternal(abortLsn,abortKnownDeleted,false);
}
public void setAbortLsn( long abortLsn, boolean abortKnownDeleted, boolean createdThisTxn){
setAbortLsnInternal(abortLsn,abortKnownDeleted,createdThisTxn);
}
private void setAbortLsnInternal( long abortLsn, boolean abortKnownDeleted, boolean createdThisTxn){
if (info != null && info.neverLocked) {
if (abortLsn != DbLsn.NULL_LSN) {
info.abortLsn=abortLsn;
info.abortKnownDeleted=abortKnownDeleted;
}
info.createdThisTxn=createdThisTxn;
info.neverLocked=false;
}
}
}