more code
[iotcloud.git] / src / java / iotcloud / Entry.java
index 0e6d43d637c903f6b07c0ee79afdb4db822ea3a9..157a09b9412b45009b0cdc6dfe8a7917da730053 100644 (file)
@@ -1,5 +1,46 @@
 package iotcloud;
+import java.nio.ByteBuffer;
 
-public abstract class Entry {
+abstract class Entry {
+       static final byte TypeKeyValue = 1;
+       static final byte TypeLastMessage = 2;
+       static final byte TypeRejectedMessage = 3;
+       static final byte TypeTableStatus = 4;
+       private boolean islive = true;
+       private Slot parentslot;
+
+       Entry(Slot _parentslot) {
+               parentslot = _parentslot;
+       }
+       
+       static Entry decode(Slot slot, ByteBuffer bb) {
+               byte type=bb.get();
+               switch(type) {
+               case TypeKeyValue:
+                       return KeyValue.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:
+                       throw new Error("Unrecognized Entry Type: "+type);
+               }
+       }
+
+       boolean isLive() {
+               return islive;
+       }
+
+       void setDead() {
+               islive = false;
+               parentslot.decrementLiveCount();
+       }
        
+       abstract void encode(ByteBuffer bb);
+
+       abstract int getSize();
+
+       abstract byte getType();
 }