/** * Caution: In case not all properties are writeable (i.e. value not set and no default), this * method may write some of the values and only then throw an exception. The same exception is * raised by {@link #getEncodedLength()}. If you call that first and it succeeds, you are safe to * write all the values. */ @Override public void write(MsgPackWriter writer) { final int size = declaredProperties.size() + undeclaredProperties.size(); writer.writeMapHeader(size); write(writer, declaredProperties); write(writer, undeclaredProperties); }
/** * Caution: In case not all properties are writeable (i.e. value not set and no default), this * method may write some of the values and only then throw an exception. The same exception is * raised by {@link #getEncodedLength()}. If you call that first and it succeeds, you are safe to * write all the values. */ @Override public void write(MsgPackWriter writer) { final int size = declaredProperties.size() + undeclaredProperties.size(); writer.writeMapHeader(size); write(writer, declaredProperties); write(writer, undeclaredProperties); }
msgPackWriter.writeArrayHeader(childs.size()); } else { msgPackWriter.writeMapHeader(childs.size());
msgPackWriter.writeArrayHeader(childs.size()); } else { msgPackWriter.writeMapHeader(childs.size());
private DirectBuffer encode(List<ZeebeHeader> taskHeaders) { final MutableDirectBuffer buffer = new UnsafeBuffer(0, 0); final ExpandableArrayBuffer expandableBuffer = new ExpandableArrayBuffer(INITIAL_SIZE_KEY_VALUE_PAIR * taskHeaders.size()); msgPackWriter.wrap(expandableBuffer, 0); msgPackWriter.writeMapHeader(taskHeaders.size()); taskHeaders.forEach( h -> { if (isValidHeader(h)) { final DirectBuffer key = wrapString(h.getKey()); msgPackWriter.writeString(key); final DirectBuffer value = wrapString(h.getValue()); msgPackWriter.writeString(value); } }); buffer.wrap(expandableBuffer.byteArray(), 0, msgPackWriter.getOffset()); return buffer; }
private DirectBuffer encode(List<ZeebeHeader> taskHeaders) { final MutableDirectBuffer buffer = new UnsafeBuffer(0, 0); final ExpandableArrayBuffer expandableBuffer = new ExpandableArrayBuffer(INITIAL_SIZE_KEY_VALUE_PAIR * taskHeaders.size()); msgPackWriter.wrap(expandableBuffer, 0); msgPackWriter.writeMapHeader(taskHeaders.size()); taskHeaders.forEach( h -> { if (isValidHeader(h)) { final DirectBuffer key = wrapString(h.getKey()); msgPackWriter.writeString(key); final DirectBuffer value = wrapString(h.getValue()); msgPackWriter.writeString(value); } }); buffer.wrap(expandableBuffer.byteArray(), 0, msgPackWriter.getOffset()); return buffer; }
protected DirectBuffer revertMapProperties(final DirectBuffer msgPack) { final MsgPackReader reader = new MsgPackReader(); reader.wrap(msgPack, 0, msgPack.capacity()); final int size = reader.readMapHeader(); final UnsafeBuffer buf = new UnsafeBuffer(new byte[msgPack.capacity()]); final MsgPackWriter writer = new MsgPackWriter(); writer.wrap(buf, 0); writer.writeMapHeader(size); int targetOffset = msgPack.capacity(); for (int i = 0; i < size; i++) { final int keySourceOffset = reader.getOffset(); reader.skipValue(); final int valueSourceOffset = reader.getOffset(); final int keyLength = valueSourceOffset - keySourceOffset; reader.skipValue(); final int valueLength = reader.getOffset() - valueSourceOffset; targetOffset -= keyLength + valueLength; buf.putBytes(targetOffset, msgPack, keySourceOffset, keyLength + valueLength); } return buf; } }
write( (w) -> { w.writeMapHeader(4); w.writeString(BufferUtil.wrapString("key1")); w.writeString(BufferUtil.wrapString("aValue")); write( (w) -> { w.writeMapHeader(2); w.writeString(BufferUtil.wrapString("key1")); w.writeString(BufferUtil.wrapString("value"));