rename files
[iotcloud.git] / version2 / src / C / Entry.cpp
diff --git a/version2/src/C/Entry.cpp b/version2/src/C/Entry.cpp
new file mode 100644 (file)
index 0000000..097967b
--- /dev/null
@@ -0,0 +1,48 @@
+#include "Entry.h"
+#include "Slot.h"
+#include "ByteBuffer.h"
+#include "Abort.h"
+#include "CommitPart.h"
+#include "NewKey.h"
+#include "LastMessage.h"
+#include "RejectedMessage.h"
+#include "TableStatus.h"
+#include "TransactionPart.h"
+/**
+ * Generic class that wraps all the different types of information
+ * that can be stored in a Slot.
+ * @author Brian Demsky <bdemsky@uci.edu>
+ * @version 1.0
+ */
+
+Entry *Entry_decode(Slot *slot, ByteBuffer *bb) {
+       char type = bb->get();
+       switch (type) {
+       case TypeCommitPart:
+               return CommitPart_decode(slot, bb);
+       case TypeAbort:
+               return Abort_decode(slot, bb);
+       case TypeTransactionPart:
+               return TransactionPart_decode(slot, bb);
+       case TypeNewKey:
+               return NewKey_decode(slot, bb);
+       case TypeLastMessage:
+               return LastMessage_decode(slot, bb);
+       case TypeRejectedMessage:
+               return RejectedMessage_decode(slot, bb);
+       case TypeTableStatus:
+               return TableStatus_decode(slot, bb);
+
+       default:
+               ASSERT(0);
+       }
+}
+
+void Entry::setDead() {
+       if (islive) {
+               islive = false;
+               if (parentslot != NULL) {
+                       parentslot->decrementLiveCount();
+               }
+       }
+}