X-Git-Url: http://plrg.eecs.uci.edu/git/?p=iotcloud.git;a=blobdiff_plain;f=src%2Fjava%2Fiotcloud%2FKeyValue.java;h=bed66a2cf436bcc56effb8f7c5f3f7eb726110eb;hp=36a56dce99ef45bcbd9fd29eba167c6537bd821f;hb=9ce98cd22cdf689d65fface4d31741f74ca54121;hpb=fab8d658ba7fadb167e72884a3cab2920b718178 diff --git a/src/java/iotcloud/KeyValue.java b/src/java/iotcloud/KeyValue.java index 36a56dc..bed66a2 100644 --- a/src/java/iotcloud/KeyValue.java +++ b/src/java/iotcloud/KeyValue.java @@ -1,37 +1,61 @@ package iotcloud; import java.nio.ByteBuffer; +/** + * KeyValue entry for Slot. + * @author Brian Demsky + * @version 1.0 + */ + class KeyValue extends Entry { - byte[] key; - byte[] value; - KeyValue(byte[] _key, byte[] _value) { + private IoTString key; + private IoTString value; + + KeyValue(Slot slot, IoTString _key, IoTString _value) { + super(slot); key=_key; value=_value; } - - static Entry decode(ByteBuffer bb) { + + 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(key, 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); - bb.put(value); + 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; + return 2*Integer.BYTES+key.length()+value.length()+Byte.BYTES; } byte getType() { return Entry.TypeKeyValue; } + + public String toString() { + return value.toString(); + } + + Entry getCopy(Slot s) { + return new KeyValue(s, key, value); + } }