KeyValue *rmKV = NULL;
// Make sure there are no duplicates
- SetIterator<KeyValue *> *kvit = keyValueUpdateSet->iterator();
+ SetIterator<KeyValue *, KeyValue *> *kvit = keyValueUpdateSet->iterator();
while (kvit->hasNext()) {
KeyValue *kv = kvit->next();
if (kv->getKey()->equals(newKV->getKey())) {
}
bool PendingTransaction::evaluateGuard(Hashtable<IoTString *, KeyValue *> *keyValTableCommitted, Hashtable<IoTString *, KeyValue *> *keyValTableSpeculative, Hashtable<IoTString *, KeyValue *> *keyValTablePendingTransSpeculative) {
- SetIterator<KeyValue *> *kvit = keyValueGuardSet->iterator();
+ SetIterator<KeyValue *, KeyValue *> *kvit = keyValueGuardSet->iterator();
while (kvit->hasNext()) {
KeyValue *kvGuard = kvit->next();
// First check if the key is in the speculative table, this is the
TransactionPart *part = new TransactionPart(NULL, machineId, arbitrator, clientLocalSequenceNumber, transactionPartCount, partData, isLastPart);
newTransaction->addPartEncode(part);
-
+ part->releaseRef();
+
// Update position, count and remaining
currentPosition += copySize;
transactionPartCount++;
remaining -= copySize;
}
-
+ delete charData;
+
// Add the Guard Conditions
- SetIterator<KeyValue *> *kvit = keyValueGuardSet->iterator();
+ SetIterator<KeyValue *, KeyValue *> *kvit = keyValueGuardSet->iterator();
while (kvit->hasNext()) {
KeyValue *kv = kvit->next();
newTransaction->addGuardKV(kv);
bbEncode->putInt(keyValueUpdateSet->size());
// Encode all the guard conditions
- SetIterator<KeyValue *> *kvit = keyValueGuardSet->iterator();
+ SetIterator<KeyValue *, KeyValue *> *kvit = keyValueGuardSet->iterator();
while (kvit->hasNext()) {
KeyValue *kv = kvit->next();
kv->encode(bbEncode);
}
delete kvit;
- return bbEncode->array();
+ Array<char> *array = bbEncode->array();
+ bbEncode->releaseArray();
+ delete bbEncode;
+ return array;
}