1 #include "CommitPart.h"
2 #include "ByteBuffer.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 fldisLastPart(_isLastPart),
12 partId(Pair<int64_t, int32_t>(sequenceNumber, partNumber)),
13 commitId(Pair<int64_t, int64_t>(machineId, sequenceNumber)) {
16 CommitPart::~CommitPart() {
20 int CommitPart::getSize() {
22 return (3 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char));
24 return (3 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)) + data->length();
27 void CommitPart::setSlot(Slot *s) {
31 int CommitPart::getPartNumber() {
35 int CommitPart::getDataSize() {
36 return data->length();
39 Array<char> *CommitPart::getData() {
43 Pair<int64_t, int32_t> CommitPart::getPartId() {
47 Pair<int64_t, int64_t> CommitPart::getCommitId() {
51 bool CommitPart::isLastPart() {
55 int64_t CommitPart::getMachineId() {
59 int64_t CommitPart::getTransactionSequenceNumber() {
60 return transactionSequenceNumber;
63 int64_t CommitPart::getSequenceNumber() {
64 return sequenceNumber;
67 Entry *CommitPart_decode(Slot *s, ByteBuffer *bb) {
68 int64_t machineId = bb->getLong();
69 int64_t sequenceNumber = bb->getLong();
70 int64_t transactionSequenceNumber = bb->getLong();
71 int partNumber = bb->getInt();
72 int dataSize = bb->getInt();
73 bool isLastPart = bb->get() == 1;
76 Array<char> *data = new Array<char>(dataSize);
79 return new CommitPart(s, machineId, sequenceNumber, transactionSequenceNumber, partNumber, data, isLastPart);
82 void CommitPart::encode(ByteBuffer *bb) {
83 bb->put(TypeCommitPart);
84 bb->putLong(machineId);
85 bb->putLong(sequenceNumber);
86 bb->putLong(transactionSequenceNumber);
87 bb->putInt(partNumber);
88 bb->putInt(data->length());
99 char CommitPart::getType() {
100 return TypeCommitPart;
103 Entry *CommitPart::getCopy(Slot *s) {
104 return new CommitPart(s, machineId, sequenceNumber, transactionSequenceNumber, partNumber, new Array<char>(data), fldisLastPart);