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();
}