1 #ifndef TRANSACTIONPART_H
2 #define TRANSACTIONPART_H
7 // Max size of the part excluding the fixed size header
8 #define TransactionPart_MAX_NON_HEADER_SIZE 512
10 class TransactionPart : public Entry {
12 int64_t sequenceNumber;
15 int64_t clientLocalSequenceNumber; // Sequence number of the transaction that this is a part of
16 int32_t partNumber; // Parts position in the
19 Pair<int64_t, int64_t> *transactionId;
20 Pair<int64_t, int32_t> *partId;
25 TransactionPart(Slot *s, int64_t _machineId, int64_t _arbitratorId, int64_t _clientLocalSequenceNumber, int _partNumber, Array<char> *_data, bool _isLastPart) : Entry(s),
27 machineId( _machineId),
28 arbitratorId(_arbitratorId),
29 clientLocalSequenceNumber(_clientLocalSequenceNumber),
30 partNumber(_partNumber),
31 fldisLastPart(_isLastPart),
32 transactionId(new Pair<int64_t, int64_t>(machineId, clientLocalSequenceNumber)),
33 partId(new Pair<int64_t, int32_t>(clientLocalSequenceNumber, partNumber)),
38 void setSlot(Slot *s);
39 Pair<int64_t, int64_t> *getTransactionId();
40 int64_t getArbitratorId();
41 Pair<int64_t, int32_t> *getPartId();
44 Array<char> *getData();
46 int64_t getMachineId();
47 int64_t getClientLocalSequenceNumber();
48 int64_t getSequenceNumber();
49 void setSequenceNumber(int64_t _sequenceNumber);
50 void encode(ByteBuffer *bb);
52 Entry *getCopy(Slot *s);
55 Entry *TransactionPart_decode(Slot *s, ByteBuffer *bb);