add makefile
[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                 case TypeLastMessage:
22                         return LastMessage.decode(slot, bb);
23                 case TypeRejectedMessage:
24                         return RejectedMessage.decode(slot, bb);
25                 case TypeTableStatus:
26                         return TableStatus.decode(slot, bb);
27                 default:
28                         throw new Error("Unrecognized Entry Type: "+type);
29                 }
30         }
31
32         boolean isLive() {
33                 return islive;
34         }
35
36         void decrementLiveCount() {
37                 islive = false;
38                 parentslot.decrementLiveCount();
39         }
40         
41         abstract void encode(ByteBuffer bb);
42
43         abstract int getSize();
44
45         abstract byte getType();
46 }