@Override public Map<String, String> parseBytes(byte[] buf) { if (buf == null) throw new NullPointerException("buf == null"); // programming error if (buf.length == 0) return Collections.emptyMap(); Buffer bytes = new Buffer(buf); byte version = bytes.readByte(); if (version != VERSION) { Platform.get().log("Invalid input: unsupported version {0}", version, null); return null; } Map<String, String> result = new LinkedHashMap<>(); while (bytes.remaining() > 3) { // tag for field ID and two lengths if (bytes.readByte() == TAG_FIELD_ID) { String key = bytes.readLengthPrefixed(); if (key == null) break; String val = bytes.readLengthPrefixed(); if (val == null) break; result.put(key, val); } else { Platform.get().log("Invalid input: expected TAG_FIELD_ID at offset {0}", bytes.pos, null); break; } } return result; }
@Override public Map<String, String> parseBytes(byte[] buf) { if (buf == null) throw new NullPointerException("buf == null"); // programming error if (buf.length == 0) return Collections.emptyMap(); Buffer bytes = new Buffer(buf); byte version = bytes.readByte(); if (version != VERSION) { Platform.get().log("Invalid input: unsupported version {0}", version, null); return null; } Map<String, String> result = new LinkedHashMap<>(); while (bytes.remaining() > 3) { // tag for field ID and two lengths if (bytes.readByte() == TAG_FIELD_ID) { String key = bytes.readLengthPrefixed(); if (key == null) break; String val = bytes.readLengthPrefixed(); if (val == null) break; result.put(key, val); } else { Platform.get().log("Invalid input: expected TAG_FIELD_ID at offset {0}", bytes.pos, null); break; } } return result; }