edits
[iotcloud.git] / version2 / src / C / Commit.cc
index f159f71608c59bf74f427234cab8af797fee8ddc..a24e0148df376b6180c7bd574ff499c6c6b37519 100644 (file)
@@ -9,7 +9,7 @@ Commit::Commit() :
        missingParts(NULL),
        fldisComplete(false),
        hasLastPart(false),
-       keyValueUpdateSet(new Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue>()),
+       keyValueUpdateSet(new Hashset<KeyValue *, uintptr_t, 0>()),
        isDead(false),
        sequenceNumber(-1),
        machineId(-1),
@@ -23,7 +23,7 @@ Commit::Commit(int64_t _sequenceNumber, int64_t _machineId, int64_t _transaction
        missingParts(NULL),
        fldisComplete(true),
        hasLastPart(false),
-       keyValueUpdateSet(new Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue>()),
+       keyValueUpdateSet(new Hashset<KeyValue *, uintptr_t, 0>()),
        isDead(false),
        sequenceNumber(_sequenceNumber),
        machineId(_machineId),
@@ -31,6 +31,14 @@ Commit::Commit(int64_t _sequenceNumber, int64_t _machineId, int64_t _transaction
        liveKeys(new Hashset<IoTString *>) {
 }
 
+Commit::~Commit() {
+       delete parts;
+       delete keyValueUpdateSet;
+       delete liveKeys;
+       if (missingParts != NULL)
+               delete missingParts;
+}
+
 void Commit::addPartDecode(CommitPart *newPart) {
        if (isDead) {
                // If dead then just kill this part and move on
@@ -103,7 +111,7 @@ void Commit::invalidateKey(IoTString *key) {
        }
 }
 
-Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue> *Commit::getKeyValueUpdateSet() {
+Hashset<KeyValue *, uintptr_t, 0> *Commit::getKeyValueUpdateSet() {
        return keyValueUpdateSet;
 }
 
@@ -115,7 +123,7 @@ void Commit::setDead() {
        if (!isDead) {
                isDead = true;
                // Make all the parts of this transaction dead
-               for (int32_t partNumber = 0; partNumber < parts->size(); partNumber++) {
+               for (uint32_t partNumber = 0; partNumber < parts->size(); partNumber++) {
                        CommitPart *part = parts->get(partNumber);
                        if (parts != NULL)
                                part->setDead();
@@ -163,7 +171,7 @@ void Commit::createCommitParts() {
 void Commit::decodeCommitData() {
        // Calculate the size of the data section
        int dataSize = 0;
-       for (int i = 0; i < parts->size(); i++) {
+       for (uint i = 0; i < parts->size(); i++) {
                CommitPart *tp = parts->get(i);
                if (tp != NULL)
                        dataSize += tp->getDataSize();
@@ -173,7 +181,7 @@ void Commit::decodeCommitData() {
        int currentPosition = 0;
 
        // Stitch all the data sections together
-       for (int i = 0; i < parts->size(); i++) {
+       for (uint i = 0; i < parts->size(); i++) {
                CommitPart *tp = parts->get(i);
                if (tp != NULL) {
                        System_arraycopy(tp->getData(), 0, combinedData, currentPosition, tp->getDataSize());
@@ -198,7 +206,7 @@ void Commit::decodeCommitData() {
 Array<char> *Commit::convertDataToBytes() {
        // Calculate the size of the data
        int sizeOfData = sizeof(int32_t);       // Number of Update KV's
-       SetIterator<KeyValue *, KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue> *kvit = keyValueUpdateSet->iterator();
+       SetIterator<KeyValue *, KeyValue *, uintptr_t, 0> *kvit = keyValueUpdateSet->iterator();
        while (kvit->hasNext()) {
                KeyValue *kv = kvit->next();
                sizeOfData += kv->getSize();
@@ -223,13 +231,14 @@ Array<char> *Commit::convertDataToBytes() {
        return bbEncode->array();
 }
 
-void Commit::setKVsMap(Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue> *newKVs) {
+void Commit::setKVsMap(Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, KeyValueEquals> *newKVs) {
        keyValueUpdateSet->clear();
-       keyValueUpdateSet->addAll(newKVs);
        liveKeys->clear();
-       SetIterator<KeyValue *, KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue> *kvit = newKVs->iterator();
+       SetIterator<KeyValue *, KeyValue *, uintptr_t, 0, hashKeyValue, KeyValueEquals> *kvit = newKVs->iterator();
        while (kvit->hasNext()) {
-               liveKeys->add(kvit->next()->getKey());
+               KeyValue *kv = kvit->next();
+               liveKeys->add(kv->getKey());
+               keyValueUpdateSet->add(kv);
        }
        delete kvit;
 }
@@ -240,8 +249,8 @@ Commit *Commit_merge(Commit *newer, Commit *older, int64_t newSequenceNumber) {
        } else if (newer == NULL) {
                return older;
        }
-       Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue> *kvSet = new Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue>();
-       SetIterator<KeyValue *, KeyValue *, uintptr_t, 0, hashKeyValue, equalsKeyValue> *kvit = older->getKeyValueUpdateSet()->iterator();
+       Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, KeyValueEquals> *kvSet = new Hashset<KeyValue *, uintptr_t, 0, hashKeyValue, KeyValueEquals>();
+       SetIterator<KeyValue *, KeyValue *, uintptr_t, 0> *kvit = older->getKeyValueUpdateSet()->iterator();
        while (kvit->hasNext()) {
                KeyValue *kv = kvit->next();
                kvSet->add(kv);