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() {
25 void ArbitrationRound::generateParts() {
26 if (didGenerateParts) {
29 parts = new Vector<Entry *>();
30 SetIterator<Abort *, Abort *> *abit = abortsBefore->iterator();
31 while (abit->hasNext())
32 parts->add((Entry *)abit->next());
35 Vector<CommitPart *> *cParts = commit->getParts();
36 uint cPartsSize = cParts->size();
37 for (uint i = 0; i < cPartsSize; i++) {
38 parts->add((Entry *)cParts->get(i));
43 Vector<Entry *> *ArbitrationRound::getParts() {
47 void ArbitrationRound::removeParts(Vector<Entry *> *removeParts) {
48 parts->removeAll(removeParts);
53 bool ArbitrationRound::isDoneSending() {
54 if ((commit == NULL) && abortsBefore->isEmpty()) {
57 return parts->isEmpty();
60 Commit *ArbitrationRound::getCommit() {
64 void ArbitrationRound::setCommit(Commit *_commit) {
66 currentSize -= commit->getNumberOfParts();
71 currentSize += commit->getNumberOfParts();
75 void ArbitrationRound::addAbort(Abort *abort) {
76 abortsBefore->add(abort);
80 void ArbitrationRound::addAborts(Hashset<Abort *> *aborts) {
81 abortsBefore->addAll(aborts);
82 currentSize += aborts->size();
85 Hashset<Abort *> *ArbitrationRound::getAborts() {
89 int ArbitrationRound::getAbortsCount() {
90 return abortsBefore->size();
93 int ArbitrationRound::getCurrentSize() {
97 bool ArbitrationRound::isFull() {
98 return currentSize >= ArbitrationRound_MAX_PARTS;
101 bool ArbitrationRound::getDidSendPart() {