X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=blobdiff_plain;f=src%2Fjava%2Fiotcloud%2FKeyValue.java;h=ac1975930bb5e6853ae559c6c269a77896ea6020;hp=fd74dc1a3fe8e85ea8c2898018dc6ee789374f8f;hb=89e8371e2ca27ce4f581596497b786eb0a209678;hpb=4bb8bcf9ca08818f91e2d188710b9d57b0158279;ds=sidebyside diff --git a/src/java/iotcloud/KeyValue.java b/src/java/iotcloud/KeyValue.java index fd74dc1..ac19759 100644 --- a/src/java/iotcloud/KeyValue.java +++ b/src/java/iotcloud/KeyValue.java @@ -1,6 +1,47 @@ package iotcloud; +import java.nio.ByteBuffer; -public class KeyValue extends Entry { +class KeyValue extends Entry { + private IoTString key; + private IoTString value; + KeyValue(Slot slot, IoTString _key, IoTString _value) { + super(slot); + key=_key; + value=_value; + } + IoTString getKey() { + return key; + } + + IoTString getValue() { + return value; + } + + static Entry decode(Slot slot, ByteBuffer bb) { + int keylength=bb.getInt(); + int valuelength=bb.getInt(); + byte[] key=new byte[keylength]; + byte[] value=new byte[valuelength]; + bb.get(key); + bb.get(value); + return new KeyValue(slot, IoTString.shallow(key), IoTString.shallow(value)); + } + + void encode(ByteBuffer bb) { + bb.put(Entry.TypeKeyValue); + bb.putInt(key.length()); + bb.putInt(value.length()); + bb.put(key.internalBytes()); + bb.put(value.internalBytes()); + } + + int getSize() { + return 2*Integer.BYTES+key.length()+value.length()+Byte.BYTES; + } + + byte getType() { + return Entry.TypeKeyValue; + } }