package iotcloud;
import java.nio.ByteBuffer;
+/**
+ * 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
+ */
+
abstract class Entry implements Liveness {
static final byte TypeKeyValue = 1;
static final byte TypeLastMessage = 2;
static final byte TypeRejectedMessage = 3;
static final byte TypeTableStatus = 4;
+
+ /* Records whether the information is still live or has been
+ superceded by a newer update. */
+
private boolean islive = true;
private Slot parentslot;
parentslot = _parentslot;
}
+ /**
+ * Static method for decoding byte array into Entry objects. First
+ * byte tells the type of entry.
+ */
+
static Entry decode(Slot slot, ByteBuffer bb) {
byte type=bb.get();
switch(type) {
}
}
+ /**
+ * Returns true if the Entry object is still live.
+ */
+
boolean isLive() {
return islive;
}
+ /**
+ * Flags the entry object as dead. Also decrements the live count
+ * of the parent slot.
+ */
+
void setDead() {
islive = false;
parentslot.decrementLiveCount();
}
+ /**
+ * Serializes the Entry object into the byte buffer.
+ */
+
abstract void encode(ByteBuffer bb);
+ /**
+ * Returns the size in bytes the entry object will take in the byte
+ * array.
+ */
+
abstract int getSize();
+ /**
+ * Returns a byte encoding the type of the entry object.
+ */
+
abstract byte getType();
}