1 #include "ArbitrationRound.h"
4 ArbitrationRound::ArbitrationRound(Commit *_commit, Hashset<Abort *> *_abortsBefore) :
5 abortsBefore(_abortsBefore),
6 parts(new Vector<Entry *>()),
10 didGenerateParts(false) {
13 commit->createCommitParts();
14 currentSize += commit->getNumberOfParts();
17 currentSize += abortsBefore->size();
20 ArbitrationRound::~ArbitrationRound() {
27 void ArbitrationRound::generateParts() {
28 if (didGenerateParts) {
31 parts = new Vector<Entry *>();
32 SetIterator<Abort *, Abort *> *abit = abortsBefore->iterator();
33 while (abit->hasNext())
34 parts->add((Entry *)abit->next());
37 Vector<CommitPart *> *cParts = commit->getParts();
38 uint cPartsSize = cParts->size();
39 for (uint i = 0; i < cPartsSize; i++) {
40 parts->add((Entry *)cParts->get(i));
45 Vector<Entry *> *ArbitrationRound::getParts() {
49 void ArbitrationRound::removeParts(Vector<Entry *> *removeParts) {
50 parts->removeAll(removeParts);
55 bool ArbitrationRound::isDoneSending() {
56 if ((commit == NULL) && abortsBefore->isEmpty()) {
59 return parts->isEmpty();
62 Commit *ArbitrationRound::getCommit() {
66 void ArbitrationRound::setCommit(Commit *_commit) {
68 currentSize -= commit->getNumberOfParts();
73 currentSize += commit->getNumberOfParts();
77 void ArbitrationRound::addAbort(Abort *abort) {
78 abortsBefore->add(abort);
82 void ArbitrationRound::addAborts(Hashset<Abort *> *aborts) {
83 abortsBefore->addAll(aborts);
84 currentSize += aborts->size();
87 Hashset<Abort *> *ArbitrationRound::getAborts() {
91 int ArbitrationRound::getAbortsCount() {
92 return abortsBefore->size();
95 int ArbitrationRound::getCurrentSize() {
99 bool ArbitrationRound::isFull() {
100 return currentSize >= ArbitrationRound_MAX_PARTS;
103 bool ArbitrationRound::getDidSendPart() {