/**
* JSTM (http://xstm.net)
* Distributed under the Apache License Version 2.0
* Copyright xstm.net
*/
package jstm4gwt.core;
import java.util.ArrayList;
import java.util.HashMap;
import jstm4gwt.misc.Debug;
final class Snapshot {
private TransactionCommit[] _commits;
private TransactionEntry[][] _deltas;
private int _lastAcknowledged;
private HashMap<Connection, Transaction> _lastReceived;
private ArrayList<TransactionCommit> _abortedOnStart;
public Snapshot() {
}
public Snapshot(TransactionCommit[] commits, TransactionEntry[][] deltas, int lastAcknowledged) {
_commits = commits;
_deltas = deltas;
_lastAcknowledged = lastAcknowledged;
}
public static Snapshot createInitial(TransactionManager manager) {
TransactionCommit[] commits = new TransactionCommit[1];
TransactionEntry[][] deltas = new TransactionEntry[1][];
TransactionCommit initial = new TransactionCommit();
if (Debug.ENABLED) {
manager.getHelper().addWatcher(initial, TransactionCommit.AmbientWatcher, 0, 1, "New commit");
if (Debug.DUMPS)
manager.putKey(initial, "Initial Commit");
}
initial.setStatus(TransactionCommit.Status.COMMITTED);
commits[TransactionManager.OBJECTS_VERSIONS_INDEX] = initial;
deltas[TransactionManager.OBJECTS_VERSIONS_INDEX] = TransactionManager.OBJECTS_DELTA;
return new Snapshot(commits, deltas, 0);
}
public TransactionCommit[] getCommits() {
return _commits;
}
public void setCommits(TransactionCommit[] value) {
_commits = value;
}
public TransactionCommit getLast() {
return _commits[_commits.length - 1];
}
public int getLastAcknowledgedIndex() {
return _lastAcknowledged;
}
public TransactionCommit getLastAcknowledgedCommit() {
return _commits[_lastAcknowledged];
}
public void setLastAcknowledgedIndex(int value) {
_lastAcknowledged = value;
}
public TransactionEntry[][] getDeltas() {
return _deltas;
}
public void setDeltas(TransactionEntry[][] value) {
_deltas = value;
}
public HashMap<Connection, Transaction> getLastReceived() {
return _lastReceived;
}
public void setLastReceived(HashMap<Connection, Transaction> value) {
_lastReceived = value;
}
public HashMap<Connection, Transaction> getOrCreateLastReceived() {
if (_lastReceived == null)
_lastReceived = new HashMap<Connection, Transaction>();
return _lastReceived;
}
public ArrayList<TransactionCommit> getAbortedOnStart() {
return _abortedOnStart;
}
public void setAbortedOnStart(ArrayList<TransactionCommit> value) {
_abortedOnStart = value;
}
public ArrayList<TransactionCommit> getOrCreateAbortedOnStart() {
if (_abortedOnStart == null)
_abortedOnStart = new ArrayList<TransactionCommit>();
return _abortedOnStart;
}
}
|