X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=blobdiff_plain;f=version2%2Fsrc%2FC%2FTransactionPart.cc;h=fef588e529564e434c95ce9cddc9304da3ed3d99;hp=1acda0b7bdc3dd33194fd6ab2e6ed3b9b246d27a;hb=f3fdb1f3b472981933d32c8f707f0cdc0db2f050;hpb=0b9aca2b62c74f68652b170a92271a98d5b96666 diff --git a/version2/src/C/TransactionPart.cc b/version2/src/C/TransactionPart.cc index 1acda0b..fef588e 100644 --- a/version2/src/C/TransactionPart.cc +++ b/version2/src/C/TransactionPart.cc @@ -1,137 +1,104 @@ +#include "TransactionPart.h" +#include "ByteBuffer.h" - -class TransactionPart extends Entry { - - // Max size of the part excluding the fixed size header - static final int MAX_NON_HEADER_SIZE = 512; - - int64_t sequenceNumber = -1; - int64_t machineId = -1; - int64_t arbitratorId = -1; - int64_t clientLocalSequenceNumber = -1; // Sequence number of the transaction that this is a part of - int partNumber = -1; // Parts position in the - bool isLastPart = false; - - Pair transactionId = NULL; - Pair partId = NULL; - - char[] data = NULL; - - TransactionPart(Slot s, int64_t _machineId, int64_t _arbitratorId, int64_t _clientLocalSequenceNumber, int _partNumber, char[] _data, bool _isLastPart) { - super(s); - machineId = _machineId; - arbitratorId = _arbitratorId; - clientLocalSequenceNumber = _clientLocalSequenceNumber; - partNumber = _partNumber; - data = _data; - isLastPart = _isLastPart; - - transactionId = new Pair(machineId, clientLocalSequenceNumber); - partId = new Pair(clientLocalSequenceNumber, partNumber); - - } - - int getSize() { - if (data == NULL) { - return (4 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)); - } - return (4 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)) + data.length; +int TransactionPart::getSize() { + if (data == NULL) { + return (4 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)); } + return (4 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)) + data->length(); +} - void setSlot(Slot s) { - parentslot = s; - } +void TransactionPart::setSlot(Slot *s) { + parentslot = s; +} - Pair getTransactionId() { - return transactionId; - } +Pair *TransactionPart::getTransactionId() { + return transactionId; +} - int64_t getArbitratorId() { - return arbitratorId; - } +int64_t TransactionPart::getArbitratorId() { + return arbitratorId; +} - Pair getPartId() { - return partId; - } +Pair *TransactionPart::getPartId() { + return partId; +} - int getPartNumber() { - return partNumber; - } +int TransactionPart::getPartNumber() { + return partNumber; +} - int getDataSize() { - return data.length; - } +int TransactionPart::getDataSize() { + return data->length(); +} - char[] getData() { - return data; - } +Array *TransactionPart::getData() { + return data; +} - bool isLastPart() { - return isLastPart; - } +bool TransactionPart::isLastPart() { + return fldisLastPart; +} - int64_t getMachineId() { - return machineId; - } +int64_t TransactionPart::getMachineId() { + return machineId; +} - int64_t getClientLocalSequenceNumber() { - return clientLocalSequenceNumber; - } +int64_t TransactionPart::getClientLocalSequenceNumber() { + return clientLocalSequenceNumber; +} +int64_t TransactionPart::getSequenceNumber() { + return sequenceNumber; +} - int64_t getSequenceNumber() { - return sequenceNumber; - } +void TransactionPart::setSequenceNumber(int64_t _sequenceNumber) { + sequenceNumber = _sequenceNumber; +} - void setSequenceNumber(int64_t _sequenceNumber) { - sequenceNumber = _sequenceNumber; - } +Entry *TransactionPart_decode(Slot *s, ByteBuffer *bb) { + int64_t sequenceNumber = bb->getLong(); + int64_t machineId = bb->getLong(); + int64_t arbitratorId = bb->getLong(); + int64_t clientLocalSequenceNumber = bb->getLong(); + int partNumber = bb->getInt(); + int dataSize = bb->getInt(); + bool isLastPart = (bb->get() == 1); + // Get the data + Array *data = new Array(dataSize); + bb->get(data); + + TransactionPart *returnTransactionPart = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, isLastPart); + returnTransactionPart->setSequenceNumber(sequenceNumber); + + return returnTransactionPart; +} - static Entry decode(Slot s, ByteBuffer bb) { - int64_t sequenceNumber = bb->getLong(); - int64_t machineId = bb->getLong(); - int64_t arbitratorId = bb->getLong(); - int64_t clientLocalSequenceNumber = bb->getLong(); - int partNumber = bb->getInt(); - int dataSize = bb->getInt(); - bool isLastPart = (bb->get() == 1); - // Get the data - char[] data = new char[dataSize]; - bb->get(data); - - TransactionPart returnTransactionPart = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, isLastPart); - returnTransactionPart.setSequenceNumber(sequenceNumber); - - return returnTransactionPart; - } +void TransactionPart::encode(ByteBuffer *bb) { + bb->put(TypeTransactionPart); + bb->putLong(sequenceNumber); + bb->putLong(machineId); + bb->putLong(arbitratorId); + bb->putLong(clientLocalSequenceNumber); + bb->putInt(partNumber); + bb->putInt(data->length()); - void encode(ByteBuffer bb) { - bb->put(Entry.TypeTransactionPart); - bb->putLong(sequenceNumber); - bb->putLong(machineId); - bb->putLong(arbitratorId); - bb->putLong(clientLocalSequenceNumber); - bb->putInt(partNumber); - bb->putInt(data.length); - - if (isLastPart) { - bb->put((char)1); - } else { - bb->put((char)0); - } - - bb->put(data); + if (fldisLastPart) { + bb->put((char)1); + } else { + bb->put((char)0); } - char getType() { - return Entry.TypeTransactionPart; - } + bb->put(data); +} - Entry getCopy(Slot s) { +char TransactionPart::getType() { + return TypeTransactionPart; +} - TransactionPart copyTransaction = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, isLastPart); - copyTransaction.setSequenceNumber(sequenceNumber); +Entry *TransactionPart::getCopy(Slot *s) { + TransactionPart *copyTransaction = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, fldisLastPart); + copyTransaction->setSequenceNumber(sequenceNumber); - return copyTransaction; - } + return copyTransaction; }