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
Array<char> *charData = convertDataToBytes();
int currentPosition = 0;
- for(int remaining = charData->length(); remaining > 0;) {
+ for (int remaining = charData->length(); remaining > 0;) {
bool isLastPart = false;
// determine how much to copy
int copySize = TransactionPart_MAX_NON_HEADER_SIZE;
copySize = remaining;
isLastPart = true;//last bit of data so last part
}
-
+
// Copy to a smaller version
Array<char> *partData = new Array<char>(copySize);
System_arraycopy(charData, currentPosition, partData, 0, copySize);
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;
}