Start port
[iotcloud.git] / version2 / src / C / Entry.cc
diff --git a/version2/src/C/Entry.cc b/version2/src/C/Entry.cc
new file mode 100644 (file)
index 0000000..1a06288
--- /dev/null
@@ -0,0 +1,51 @@
+#include "Entry.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 ) {
+    return; // already dead
+  }
+  
+  islive = false;
+  
+  if (parentslot != NULL) {
+    parentslot->decrementLiveCount();
+  }
+}