package com.sleepycat.je.txn;
import com.sleepycat.je.StatsConfig;
import com.sleepycat.je.TransactionStats;
public class TxnManager {
private int numCommits;
private int numAborts;
private int numXAPrepares;
private int numXACommits;
private int numXAAborts;
/**
* Collect transaction related stats.
*/
public TransactionStats txnStat( StatsConfig config) throws DatabaseException {
TransactionStats stats=new TransactionStats();
this.hook820(config,stats);
return stats;
}
/**
* Collect lock related stats.
*/
public LockStats lockStat( StatsConfig config) throws DatabaseException {
return lockManager.lockStat(config);
}
protected void hook820( StatsConfig config, TransactionStats stats) throws DatabaseException {
stats.setNCommits(numCommits);
stats.setNAborts(numAborts);
stats.setNXAPrepares(numXAPrepares);
stats.setNXACommits(numXACommits);
stats.setNXAAborts(numXAAborts);
stats.setNActive(allTxns.size());
TransactionStats.Active[] activeSet=new TransactionStats.Active[stats.getNActive()];
stats.setActiveTxns(activeSet);
Iterator iter=allTxns.iterator();
int i=0;
while (iter.hasNext()) {
Locker txn=(Locker)iter.next();
activeSet[i]=new TransactionStats.Active(txn.toString(),txn.getId(),0);
i++;
}
if (config.getClear()) {
numCommits=0;
numAborts=0;
numXACommits=0;
numXAAborts=0;
}
}
protected void hook824() throws DatabaseException {
numCommits=0;
numAborts=0;
numXAPrepares=0;
numXACommits=0;
numXAAborts=0;
original();
}
protected void hook825( boolean isCommit) throws DatabaseException {
if (isCommit) {
numCommits++;
}
else {
numAborts++;
}
original(isCommit);
}
protected void hook826( boolean isPrepare) throws DatabaseException {
if (isPrepare) {
numXAPrepares++;
}
original(isPrepare);
}
protected void hook827( boolean isCommit) throws DatabaseException {
if (isCommit) {
numXACommits++;
}
else {
numXAAborts++;
}
original(isCommit);
}
}