1 #include "TransactionPart.h"
2 #include "ByteBuffer.h"
4 int TransactionPart::getSize() {
6 return (4 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char));
8 return (4 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)) + data->length();
11 Pair<int64_t, int64_t> TransactionPart::getTransactionId() {
15 int64_t TransactionPart::getArbitratorId() {
19 Pair<int64_t, int32_t> TransactionPart::getPartId() {
23 int TransactionPart::getPartNumber() {
27 int TransactionPart::getDataSize() {
28 return data->length();
31 Array<char> *TransactionPart::getData() {
35 bool TransactionPart::isLastPart() {
39 int64_t TransactionPart::getMachineId() {
43 int64_t TransactionPart::getClientLocalSequenceNumber() {
44 return clientLocalSequenceNumber;
47 int64_t TransactionPart::getSequenceNumber() {
48 return sequenceNumber;
51 void TransactionPart::setSequenceNumber(int64_t _sequenceNumber) {
52 sequenceNumber = _sequenceNumber;
55 Entry *TransactionPart_decode(Slot *s, ByteBuffer *bb) {
56 int64_t sequenceNumber = bb->getLong();
57 int64_t machineId = bb->getLong();
58 int64_t arbitratorId = bb->getLong();
59 int64_t clientLocalSequenceNumber = bb->getLong();
60 int partNumber = bb->getInt();
61 int dataSize = bb->getInt();
62 bool isLastPart = (bb->get() == 1);
64 Array<char> *data = new Array<char>(dataSize);
67 TransactionPart *returnTransactionPart = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, isLastPart);
68 returnTransactionPart->setSequenceNumber(sequenceNumber);
70 return returnTransactionPart;
73 void TransactionPart::encode(ByteBuffer *bb) {
74 bb->put(TypeTransactionPart);
75 bb->putLong(sequenceNumber);
76 bb->putLong(machineId);
77 bb->putLong(arbitratorId);
78 bb->putLong(clientLocalSequenceNumber);
79 bb->putInt(partNumber);
80 bb->putInt(data->length());
91 char TransactionPart::getType() {
92 return TypeTransactionPart;
95 Entry *TransactionPart::getCopy(Slot *s) {
96 TransactionPart *copyTransaction = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, fldisLastPart);
97 copyTransaction->setSequenceNumber(sequenceNumber);
99 return copyTransaction;