edits
[iotcloud.git] / src / java / iotcloud / Entry.java
1 package iotcloud;
2 import java.nio.ByteBuffer;
3
4 abstract class Entry implements Liveness {
5         static final byte TypeKeyValue = 1;
6         static final byte TypeLastMessage = 2;
7         static final byte TypeRejectedMessage = 3;
8         static final byte TypeTableStatus = 4;
9         private boolean islive = true;
10         private Slot parentslot;
11
12         Entry(Slot _parentslot) {
13                 parentslot = _parentslot;
14         }
15
16         static Entry decode(Slot slot, ByteBuffer bb) {
17                 byte type=bb.get();
18                 switch(type) {
19                 case TypeKeyValue:
20                         return KeyValue.decode(slot, bb);
21
22                 case TypeLastMessage:
23                         return LastMessage.decode(slot, bb);
24
25                 case TypeRejectedMessage:
26                         return RejectedMessage.decode(slot, bb);
27
28                 case TypeTableStatus:
29                         return TableStatus.decode(slot, bb);
30
31                 default:
32                         throw new Error("Unrecognized Entry Type: "+type);
33                 }
34         }
35
36         boolean isLive() {
37                 return islive;
38         }
39
40         void setDead() {
41                 islive = false;
42                 parentslot.decrementLiveCount();
43         }
44
45         abstract void encode(ByteBuffer bb);
46
47         abstract int getSize();
48
49         abstract byte getType();
50 }