X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=blobdiff_plain;f=version2%2Fsrc%2FC%2FCommitPart.h;h=e0a0d91b4c5f7cc659a298520acf4f761e1f3295;hp=32a418b3e647ba4f830355cea0212dbdcb8942fa;hb=fc3e0b967949a83c40622b339a115900c07fd253;hpb=0b9aca2b62c74f68652b170a92271a98d5b96666 diff --git a/version2/src/C/CommitPart.h b/version2/src/C/CommitPart.h index 32a418b..e0a0d91 100644 --- a/version2/src/C/CommitPart.h +++ b/version2/src/C/CommitPart.h @@ -1,122 +1,42 @@ +#ifndef COMMITPART_H +#define COMMITPART_H +#include "common.h" +#include "Entry.h" +#include "Pair.h" +// Max size of the part excluding the fixed size header +#define CommitPart_MAX_NON_HEADER_SIZE 512 - - -class CommitPart extends Entry { - - // Max size of the part excluding the fixed size header - public static final int MAX_NON_HEADER_SIZE = 512; - - +class CommitPart : public Entry { +private: // Sequence number of the transaction this commit is for, -1 if not a cloud transaction - private int64_t machineId = -1; // Machine Id of the device that made the commit - private int64_t sequenceNumber = -1; // commit sequence number for this arbitrator - private int64_t transactionSequenceNumber = -1; - private int partNumber = -1; // Parts position in the - private bool isLastPart = false; - private char[] data = NULL; - - private Pair partId = NULL; - private Pair commitId = NULL; - - - public CommitPart(Slot s, int64_t _machineId, int64_t _sequenceNumber, int64_t _transactionSequenceNumber, int _partNumber, char[] _data, bool _isLastPart) { - super(s); - machineId = _machineId; - sequenceNumber = _sequenceNumber; - transactionSequenceNumber = _transactionSequenceNumber; - partNumber = _partNumber; - isLastPart = _isLastPart; - data = _data; - - partId = new Pair(sequenceNumber, partNumber); - commitId = new Pair(machineId, sequenceNumber); - } - - public int getSize() { - if (data == NULL) { - return (3 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)); - } - return (3 * sizeof(int64_t)) + (2 * sizeof(int32_t)) + (2 * sizeof(char)) + data.length; - } - - public void setSlot(Slot s) { - parentslot = s; - } - - public int getPartNumber() { - return partNumber; - } - - public int getDataSize() { - return data.length; - } - - public char[] getData() { - return data; - } - - public Pair getPartId() { - return partId; - } - - public Pair getCommitId() { - return commitId; - } - - public bool isLastPart() { - return isLastPart; - } - - public int64_t getMachineId() { - return machineId; - } - - public int64_t getTransactionSequenceNumber() { - return transactionSequenceNumber; - } - - public int64_t getSequenceNumber() { - return sequenceNumber; - } - - static Entry decode(Slot s, ByteBuffer bb) { - int64_t machineId = bb->getLong(); - int64_t sequenceNumber = bb->getLong(); - int64_t transactionSequenceNumber = 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); - - return new CommitPart(s, machineId, sequenceNumber, transactionSequenceNumber, partNumber, data, isLastPart); - } - - public void encode(ByteBuffer bb) { - bb->put(Entry.TypeCommitPart); - bb->putLong(machineId); - bb->putLong(sequenceNumber); - bb->putLong(transactionSequenceNumber); - bb->putInt(partNumber); - bb->putInt(data.length); - - if (isLastPart) { - bb->put((char)1); - } else { - bb->put((char)0); - } - - bb->put(data); - } - - public char getType() { - return Entry.TypeCommitPart; - } - - public Entry getCopy(Slot s) { - return new CommitPart(s, machineId, sequenceNumber, transactionSequenceNumber, partNumber, data, isLastPart); - } -} + int64_t machineId; // Machine Id of the device that made the commit + int64_t sequenceNumber; // commit sequence number for this arbitrator + int64_t transactionSequenceNumber; + int32_t partNumber; // Parts position in the + bool fldisLastPart; + Array *data; + + Pair *partId; + Pair *commitId; + +public: + CommitPart(Slot *s, int64_t _machineId, int64_t _sequenceNumber, int64_t _transactionSequenceNumber, int _partNumber, Array *_data, bool _isLastPart); + int getSize(); + void setSlot(Slot *s); + int getPartNumber(); + int getDataSize(); + Array *getData(); + Pair *getPartId(); + Pair *getCommitId(); + bool isLastPart(); + int64_t getMachineId(); + int64_t getTransactionSequenceNumber(); + int64_t getSequenceNumber(); + void encode(ByteBuffer *bb); + char getType(); + Entry *getCopy(Slot *s); +}; + +Entry *CommitPart_decode(Slot *s, ByteBuffer *bb); +#endif