1 #include "CommitPart.h"
4 CommitPart::CommitPart(Slot* s, int64_t _machineId, int64_t _sequenceNumber, int64_t _transactionSequenceNumber, int _partNumber, Array<char>* _data, bool _isLastPart) :
7 sequenceNumber(_sequenceNumber),
8 transactionSequenceNumber(_transactionSequenceNumber),
9 partNumber(_partNumber),
10 isLastPart(_isLastPart),
12 partId(new Pair<int64_t int32_t>(sequenceNumber, partNumber)),
13 commitId(new Pair<int64_t, int64_t>(machineId, sequenceNumber)) {
16 int CommitPart::getSize() {
18 return (3 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char));
20 return (3 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)) + data->length();
23 void CommitPart::setSlot(Slot s) {
27 int CommitPart::getPartNumber() {
31 int CommitPart::getDataSize() {
32 return data->length();
35 Array<char> * CommitPart::getData() {
39 Pair<int64_t int32_t> * CommitPart::getPartId() {
43 Pair<int64_t, int64_t> *CommitPart::getCommitId() {
47 bool CommitPart::isLastPart() {
51 int64_t CommitPart::getMachineId() {
55 int64_t CommitPart::getTransactionSequenceNumber() {
56 return transactionSequenceNumber;
59 int64_t CommitPart::getSequenceNumber() {
60 return sequenceNumber;
63 Entry* CommitPart_decode(Slot* s, ByteBuffer* bb) {
64 int64_t machineId = bb->getLong();
65 int64_t sequenceNumber = bb->getLong();
66 int64_t transactionSequenceNumber = bb->getLong();
67 int partNumber = bb->getInt();
68 int dataSize = bb->getInt();
69 bool isLastPart = bb->get() == 1;
72 Array<char> * data = new Array<char>(dataSize);
75 return new CommitPart(s, machineId, sequenceNumber, transactionSequenceNumber, partNumber, data, isLastPart);
78 void CommitPart::encode(ByteBuffer bb) {
79 bb->put(TypeCommitPart);
80 bb->putLong(machineId);
81 bb->putLong(sequenceNumber);
82 bb->putLong(transactionSequenceNumber);
83 bb->putInt(partNumber);
84 bb->putInt(data.length);
95 char CommitPart::getType() {
96 return TypeCommitPart;
99 Entry *CommitPart::getCopy(Slot *s) {
100 return new CommitPart(s, machineId, sequenceNumber, transactionSequenceNumber, partNumber, data, isLastPart);