Squashed Last bugs
[iotcloud.git] / version2 / src / java / iotcloud / KeyValue.java
1 package iotcloud;
2 import java.nio.ByteBuffer;
3
4 /**
5  * KeyValue entry for Slot.
6  * @author Brian Demsky <bdemsky@uci.edu>
7  * @version 1.0
8  */
9
10 class KeyValue { /*extends Entry */
11         private IoTString key;
12         private IoTString value;
13
14         public KeyValue(IoTString _key, IoTString _value) {
15                 key = _key;
16                 value = _value;
17         }
18
19         public IoTString getKey() {
20                 return key;
21         }
22
23         public IoTString getValue() {
24                 return value;
25         }
26
27         static KeyValue decode(ByteBuffer bb) {
28                 int keylength = bb.getInt();
29                 int valuelength = bb.getInt();
30                 byte[] key = new byte[keylength];
31                 byte[] value = new byte[valuelength];
32                 bb.get(key);
33                 bb.get(value);
34                 return new KeyValue(IoTString.shallow(key), IoTString.shallow(value));
35         }
36
37         public void encode(ByteBuffer bb) {
38                 bb.putInt(key.length());
39                 bb.putInt(value.length());
40                 bb.put(key.internalBytes());
41                 bb.put(value.internalBytes());
42         }
43
44         public int getSize() {
45                 return 2 * Integer.BYTES + key.length() + value.length();
46         }
47
48         public String toString() {
49                 return value.toString();
50         }
51
52         public KeyValue getCopy() {
53                 return new KeyValue(key, value);
54         }
55 }