ac1975930bb5e6853ae559c6c269a77896ea6020
[iotcloud.git] / src / java / iotcloud / KeyValue.java
1 package iotcloud;
2 import java.nio.ByteBuffer;
3
4 class KeyValue extends Entry {
5         private IoTString key;
6         private IoTString value;
7         
8         KeyValue(Slot slot, IoTString _key, IoTString _value) {
9                 super(slot);
10                 key=_key;
11                 value=_value;
12         }
13
14         IoTString getKey() {
15                 return key;
16         }
17
18         IoTString getValue() {
19                 return value;
20         }
21         
22         static Entry decode(Slot slot, ByteBuffer bb) {
23                 int keylength=bb.getInt();
24                 int valuelength=bb.getInt();
25                 byte[] key=new byte[keylength];
26                 byte[] value=new byte[valuelength];
27                 bb.get(key);
28                 bb.get(value);
29                 return new KeyValue(slot, IoTString.shallow(key), IoTString.shallow(value));
30         }
31
32         void encode(ByteBuffer bb) {
33                 bb.put(Entry.TypeKeyValue);
34                 bb.putInt(key.length());
35                 bb.putInt(value.length());
36                 bb.put(key.internalBytes());
37                 bb.put(value.internalBytes());
38         }
39
40         int getSize() {
41                 return 2*Integer.BYTES+key.length()+value.length()+Byte.BYTES;
42         }
43
44         byte getType() {
45                 return Entry.TypeKeyValue;
46         }
47 }