X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=version2%2Fsrc%2FC%2FTransactionPart.h;fp=version2%2Fsrc%2FC%2FTransactionPart.h;h=47966e4feead9f4e85b43c53f62ce1d226dbcbc0;hb=3f24bffc82ebfe2730308b63100af08645316577;hp=c254049fab45f1a7687a46394c77bfcd4d59fad4;hpb=7095771b9769e87bdc5df84e306e3d95e6e4040b;p=iotcloud.git diff --git a/version2/src/C/TransactionPart.h b/version2/src/C/TransactionPart.h index c254049..47966e4 100644 --- a/version2/src/C/TransactionPart.h +++ b/version2/src/C/TransactionPart.h @@ -15,12 +15,12 @@ private: int64_t clientLocalSequenceNumber; // Sequence number of the transaction that this is a part of int32_t partNumber; // Parts position in the bool fldisLastPart; - + int32_t refCount; Pair transactionId; Pair partId; Array *data; - + public: TransactionPart(Slot *s, int64_t _machineId, int64_t _arbitratorId, int64_t _clientLocalSequenceNumber, int _partNumber, Array *_data, bool _isLastPart) : Entry(s), sequenceNumber(-1), @@ -29,6 +29,7 @@ public: clientLocalSequenceNumber(_clientLocalSequenceNumber), partNumber(_partNumber), fldisLastPart(_isLastPart), + refCount(1), transactionId(Pair(machineId, clientLocalSequenceNumber)), partId(Pair(clientLocalSequenceNumber, partNumber)), data(_data) { @@ -48,6 +49,8 @@ public: void setSequenceNumber(int64_t _sequenceNumber); void encode(ByteBuffer *bb); char getType(); + void releaseRef() {if ((--refCount)==0) delete this;} + void acquireRef() {refCount++;} Entry *getCopy(Slot *s); };