1 #ifndef TRANSACTIONPART_H
2 #define TRANSACTIONPART_H
6 // Max size of the part excluding the fixed size header
7 #define TransactionPart_MAX_NON_HEADER_SIZE 512
9 class TransactionPart : public Entry {
11 int64_t sequenceNumber = -1;
12 int64_t machineId = -1;
13 int64_t arbitratorId = -1;
14 int64_t clientLocalSequenceNumber = -1; // Sequence number of the transaction that this is a part of
15 int partNumber = -1; // Parts position in the
16 bool isLastPart = false;
18 Pair<int64_t, int64_t> * transactionId = NULL;
19 Pair<int64_t int32_t> * partId = NULL;
21 Array<char> * data = NULL;
24 TransactionPart(Slot *s, int64_t _machineId, int64_t _arbitratorId, int64_t _clientLocalSequenceNumber, int _partNumber, Array<char>* _data, bool _isLastPart) : Entry(s),
26 machineId( _machineId),
27 arbitratorId(_arbitratorId),
28 clientLocalSequenceNumber(_clientLocalSequenceNumber),
29 partNumber(_partNumber),
30 isLastPart(_isLastPart)
31 transactionId(new Pair<int64_t, int64_t>(machineId, clientLocalSequenceNumber)),
32 partId(new Pair<int64_t int32_t>(clientLocalSequenceNumber, partNumber)),
38 Pair<int64_t, int64_t> * getTransactionId();
39 int64_t getArbitratorId();
40 Pair<int64_t int32_t>* getPartId();
43 Array<char>* getData();
45 int64_t getMachineId();
46 int64_t getClientLocalSequenceNumber();
47 int64_t getSequenceNumber();
48 void setSequenceNumber(int64_t _sequenceNumber);
49 void encode(ByteBuffer *bb);
51 Entry* getCopy(Slot *s);
54 Entry * TransactionPart_decode(Slot* s, ByteBuffer* bb);