package iotcloud; import java.nio.ByteBuffer; /** * KeyValue entry for Slot. * @author Brian Demsky * @version 1.0 */ class KeyValue { /*extends Entry */ private IoTString key; private IoTString value; public KeyValue(IoTString _key, IoTString _value) { key = _key; value = _value; } public IoTString getKey() { return key; } public IoTString getValue() { return value; } static KeyValue decode(ByteBuffer bb) { int keylength = bb.getInt(); int valuelength = bb.getInt(); byte[] key = new byte[keylength]; bb.get(key); if (valuelength != 0) { byte[] value = new byte[valuelength]; bb.get(value); return new KeyValue(IoTString.shallow(key), IoTString.shallow(value)); } return new KeyValue(IoTString.shallow(key), null); } public void encode(ByteBuffer bb) { bb.putInt(key.length()); if (value != null) { bb.putInt(value.length()); } else { bb.putInt(0); } bb.put(key.internalBytes()); if (value != null) { bb.put(value.internalBytes()); } } public int getSize() { if (value != null) { return 2 * Integer.BYTES + key.length() + value.length(); } return 2 * Integer.BYTES + key.length(); } public String toString() { if (value == null) { return "null"; } return value.toString(); } public KeyValue getCopy() { return new KeyValue(key, value); } }