}
Transaction::~Transaction() {
- delete parts;
- delete keyValueGuardSet;
- delete keyValueUpdateSet;
+ if (missingParts)
+ delete missingParts;
+ {
+ delete parts;
+ }
+ {
+ SetIterator<KeyValue *, KeyValue *> *kvit = keyValueGuardSet->iterator();
+ while (kvit->hasNext()) {
+ KeyValue *kvGuard = kvit->next();
+ delete kvGuard;
+ }
+ delete kvit;
+ delete keyValueGuardSet;
+ }
+ {
+ SetIterator<KeyValue *, KeyValue *> *kvit = keyValueUpdateSet->iterator();
+ while (kvit->hasNext()) {
+ KeyValue *kvUpdate = kvit->next();
+ delete kvUpdate;
+ }
+ delete kvit;
+ delete keyValueUpdateSet;
+ }
+ delete partsPendingSend;
}
void Transaction::addPartEncode(TransactionPart *newPart) {
TransactionPart *old = parts->setExpand(newPart->getPartNumber(), newPart);
- if (old == NULL)
+ if (old == NULL) {
partCount++;
+ } else
+ delete old;
partsPendingSend->add(newPart->getPartNumber());
sequenceNumber = newPart->getSequenceNumber();
KeyValue *kv = (KeyValue *)KeyValue_decode(bbDecode);
keyValueUpdateSet->add(kv);
}
+ delete bbDecode;
}
bool Transaction::evaluateGuard(Hashtable<IoTString *, KeyValue *, uintptr_t, 0, hashString, StringEquals> *committedKeyValueTable, Hashtable<IoTString *, KeyValue *, uintptr_t, 0, hashString, StringEquals> *speculatedKeyValueTable, Hashtable<IoTString *, KeyValue *, uintptr_t, 0, hashString, StringEquals> *pendingTransactionSpeculatedKeyValueTable) {