edits
[iotcloud.git] / version2 / src / C / TransactionPart.cc
index 0d8e2c424f0ddcd6c33ab71b5d5f27e79e0028c7..fef588e529564e434c95ce9cddc9304da3ed3d99 100644 (file)
+#include "TransactionPart.h"
+#include "ByteBuffer.h"
+
+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 TransactionPart::setSlot(Slot *s) {
+       parentslot = s;
+}
+
+Pair<int64_t, int64_t> *TransactionPart::getTransactionId() {
+       return transactionId;
+}
+
+int64_t TransactionPart::getArbitratorId() {
+       return arbitratorId;
+}
+
+Pair<int64_t, int32_t> *TransactionPart::getPartId() {
+       return partId;
+}
+
+int TransactionPart::getPartNumber() {
+       return partNumber;
+}
+
+int TransactionPart::getDataSize() {
+       return data->length();
+}
+
+Array<char> *TransactionPart::getData() {
+       return data;
+}
+
+bool TransactionPart::isLastPart() {
+       return fldisLastPart;
+}
+
+int64_t TransactionPart::getMachineId() {
+       return machineId;
+}
+
+int64_t TransactionPart::getClientLocalSequenceNumber() {
+       return clientLocalSequenceNumber;
+}
 
+int64_t TransactionPart::getSequenceNumber() {
+       return sequenceNumber;
+}
+
+void TransactionPart::setSequenceNumber(int64_t _sequenceNumber) {
+       sequenceNumber = _sequenceNumber;
+}
 
-class TransactionPart extends Entry {
+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<char> *data = new Array<char>(dataSize);
+       bb->get(data);
+
+       TransactionPart *returnTransactionPart = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, isLastPart);
+       returnTransactionPart->setSequenceNumber(sequenceNumber);
+
+       return returnTransactionPart;
+}
 
-    // Max size of the part excluding the fixed size header
-    static final int MAX_NON_HEADER_SIZE = 512;
+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());
+
+       if (fldisLastPart) {
+               bb->put((char)1);
+       } else {
+               bb->put((char)0);
+       }
+
+       bb->put(data);
+}
+
+char TransactionPart::getType() {
+       return TypeTransactionPart;
+}
 
-    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
-    Boolean isLastPart = false;
-
-    Pair<Long, Long> transactionId = NULL;
-    Pair<Long, Integer> partId = NULL;
-
-    char[] data = NULL;
-
-    TransactionPart(Slot s, int64_t _machineId, int64_t _arbitratorId, int64_t _clientLocalSequenceNumber, int _partNumber, char[] _data, Boolean _isLastPart) {
-        super(s);
-        machineId = _machineId;
-        arbitratorId = _arbitratorId;
-        clientLocalSequenceNumber = _clientLocalSequenceNumber;
-        partNumber = _partNumber;
-        data = _data;
-        isLastPart = _isLastPart;
-
-        transactionId = new Pair<Long, Long>(machineId, clientLocalSequenceNumber);
-        partId = new Pair<Long, Integer>(clientLocalSequenceNumber, partNumber);
+Entry *TransactionPart::getCopy(Slot *s) {
+       TransactionPart *copyTransaction = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, fldisLastPart);
+       copyTransaction->setSequenceNumber(sequenceNumber);
 
-    }
-
-    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;
-    }
-
-    void setSlot(Slot s) {
-        parentslot = s;
-    }
-
-    Pair<Long, Long> getTransactionId() {
-        return transactionId;
-    }
-
-    int64_t getArbitratorId() {
-        return arbitratorId;
-    }
-
-    Pair<Long, Integer> getPartId() {
-        return partId;
-    }
-
-    int getPartNumber() {
-        return partNumber;
-    }
-
-    int getDataSize() {
-        return data.length;
-    }
-
-    char[] getData() {
-        return data;
-    }
-
-    Boolean isLastPart() {
-        return isLastPart;
-    }
-
-    int64_t getMachineId() {
-        return machineId;
-    }
-
-    int64_t getClientLocalSequenceNumber() {
-        return clientLocalSequenceNumber;
-    }
-
-
-    int64_t getSequenceNumber() {
-        return sequenceNumber;
-    }
-
-    void setSequenceNumber(int64_t _sequenceNumber) {
-        sequenceNumber = _sequenceNumber;
-    }
-
-    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();
-        Boolean 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 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);
-    }
-
-    char getType() {
-        return Entry.TypeTransactionPart;
-    }
-
-    Entry getCopy(Slot s) {
-
-        TransactionPart copyTransaction = new TransactionPart(s, machineId, arbitratorId, clientLocalSequenceNumber, partNumber, data, isLastPart);
-        copyTransaction.setSequenceNumber(sequenceNumber);
-
-        return copyTransaction;
-    }
+       return copyTransaction;
 }