if (missingParts)
delete missingParts;
{
+ uint Size = parts->size();
+ for(uint i=0; i<Size; i++)
+ parts->get(i)->releaseRef();
delete parts;
}
{
}
void Transaction::addPartEncode(TransactionPart *newPart) {
+ newPart->acquireRef();
+ printf("Add part %d\n", newPart->getPartNumber());
TransactionPart *old = parts->setExpand(newPart->getPartNumber(), newPart);
if (old == NULL) {
partCount++;
- } else
- delete old;
+ } else {
+ old->releaseRef();
+ }
partsPendingSend->add(newPart->getPartNumber());
sequenceNumber = newPart->getSequenceNumber();
newPart->setDead();
return;
}
-
+ newPart->acquireRef();
sequenceNumber = newPart->getSequenceNumber();
arbitratorId = newPart->getArbitratorId();
transactionId = newPart->getTransactionId();
if (previouslySeenPart != NULL) {
// Set dead the old one since the new one is a rescued version of this part
+ previouslySeenPart->releaseRef();
previouslySeenPart->setDead();
} else if (newPart->isLastPart()) {
missingParts = new Hashset<int32_t>();
}
}
-TransactionPart *Transaction::getPart(int index) {
- return parts->get(index);
-}
-
void Transaction::decodeTransactionData() {
// Calculate the size of the data section
int dataSize = 0;