private void writeInnerValue() { writer.wrap(buffer, cursorOffset); innerValue.write(writer); }
@Override public void write(MutableDirectBuffer buffer, int offset) { writer.wrap(buffer, offset); write(writer); } }
private void writeInnerValue() { writer.wrap(buffer, cursorOffset); innerValue.write(writer); }
@Override public void write(MutableDirectBuffer buffer, int offset) { writer.wrap(buffer, offset); write(writer); } }
/** * Writes the message pack tree into the result buffer. Returns the size of the written message * pock document. The result buffer is available via the {@link #getResult()} method. * * @param documentTree the tree which should be written * @return the size of the message pack document */ public int write(MsgPackTree documentTree) { this.documentTree = documentTree; msgPackWriter.wrap(resultingBuffer, 0); if (documentTree.size() > 0) { final String startNode = Mapping.JSON_ROOT_PATH; writeNode("", startNode, false); } else { msgPackWriter.writeNil(); } return msgPackWriter.getOffset(); }
/** * Writes the message pack tree into the result buffer. Returns the size of the written message * pock document. The result buffer is available via the {@link #getResult()} method. * * @param documentTree the tree which should be written * @return the size of the message pack document */ public int write(MsgPackTree documentTree) { this.documentTree = documentTree; msgPackWriter.wrap(resultingBuffer, 0); if (documentTree.size() > 0) { final String startNode = Mapping.JSON_ROOT_PATH; writeNode("", startNode, false); } else { msgPackWriter.writeNil(); } return msgPackWriter.getOffset(); }
@Override public void read(final MsgPackReader reader) { reset(); elementCount = reader.readArrayHeader(); writer.wrap(buffer, 0); for (int i = 0; i < elementCount; i++) { innerValue.read(reader); innerValue.write(writer); } resetInnerValue(); bufferLength = writer.getOffset(); }
@Override public void read(final MsgPackReader reader) { reset(); elementCount = reader.readArrayHeader(); writer.wrap(buffer, 0); for (int i = 0; i < elementCount; i++) { innerValue.read(reader); innerValue.write(writer); } resetInnerValue(); bufferLength = writer.getOffset(); }
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 write(final Consumer<MsgPackWriter> arg) { final UnsafeBuffer buffer = new UnsafeBuffer(new byte[1024]); final MsgPackWriter writer = new MsgPackWriter(); writer.wrap(buffer, 0); arg.accept(writer); buffer.wrap(buffer, 0, writer.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; }
public DirectBuffer getVariablesLocalAsDocument(long scopeKey) { writer.wrap(documentResultBuffer, 0); writer.reserveMapHeader(); variableCount = 0; visitVariablesLocal( scopeKey, name -> true, (name, value) -> { writer.writeString(name.getBuffer()); writer.writeRaw(value.getValue()); variableCount += 1; }, () -> false); writer.writeReservedMapHeader(0, variableCount); resultView.wrap(documentResultBuffer, 0, writer.getOffset()); return resultView; }
public DirectBuffer getVariablesLocalAsDocument(long scopeKey) { writer.wrap(documentResultBuffer, 0); writer.reserveMapHeader(); variableCount = 0; visitVariablesLocal( scopeKey, name -> true, (name, value) -> { writer.writeString(name.getBuffer()); writer.writeRaw(value.getValue()); variableCount += 1; }, () -> false); writer.writeReservedMapHeader(0, variableCount); resultView.wrap(documentResultBuffer, 0, writer.getOffset()); return resultView; }
public DirectBuffer getVariablesAsDocument(long scopeKey, Collection<DirectBuffer> names) { variablesToCollect.clear(); variablesToCollect.addAll(names); writer.wrap(documentResultBuffer, 0); writer.reserveMapHeader(); visitVariables( scopeKey, name -> variablesToCollect.contains(name.getBuffer()), (name, value) -> { writer.writeString(name.getBuffer()); writer.writeRaw(value.getValue()); variablesToCollect.remove(name.getBuffer()); }, () -> variablesToCollect.isEmpty()); writer.writeReservedMapHeader(0, names.size() - variablesToCollect.size()); resultView.wrap(documentResultBuffer, 0, writer.getOffset()); return resultView; }
public DirectBuffer getVariablesAsDocument(long scopeKey, Collection<DirectBuffer> names) { variablesToCollect.clear(); variablesToCollect.addAll(names); writer.wrap(documentResultBuffer, 0); writer.reserveMapHeader(); visitVariables( scopeKey, name -> variablesToCollect.contains(name.getBuffer()), (name, value) -> { writer.writeString(name.getBuffer()); writer.writeRaw(value.getValue()); variablesToCollect.remove(name.getBuffer()); }, () -> variablesToCollect.isEmpty()); writer.writeReservedMapHeader(0, names.size() - variablesToCollect.size()); resultView.wrap(documentResultBuffer, 0, writer.getOffset()); return resultView; }
public DirectBuffer getVariablesAsDocument(long scopeKey) { collectedVariables.clear(); writer.wrap(documentResultBuffer, 0); writer.reserveMapHeader(); visitVariables( scopeKey, name -> !collectedVariables.contains(name.getBuffer()), (name, value) -> { final DirectBuffer variableNameBuffer = name.getBuffer(); writer.writeString(variableNameBuffer); writer.writeRaw(value.getValue()); // must create a new name wrapper, because we keep them all in the hashset at the same // time final MutableDirectBuffer nameView = new UnsafeBuffer(variableNameBuffer); collectedVariables.add(nameView); }, () -> false); writer.writeReservedMapHeader(0, collectedVariables.size()); resultView.wrap(documentResultBuffer, 0, writer.getOffset()); return resultView; }
public DirectBuffer getVariablesAsDocument(long scopeKey) { collectedVariables.clear(); writer.wrap(documentResultBuffer, 0); writer.reserveMapHeader(); visitVariables( scopeKey, name -> !collectedVariables.contains(name.getBuffer()), (name, value) -> { final DirectBuffer variableNameBuffer = name.getBuffer(); writer.writeString(variableNameBuffer); writer.writeRaw(value.getValue()); // must create a new name wrapper, because we keep them all in the hashset at the same // time final MutableDirectBuffer nameView = new UnsafeBuffer(variableNameBuffer); collectedVariables.add(nameView); }, () -> false); writer.writeReservedMapHeader(0, collectedVariables.size()); resultView.wrap(documentResultBuffer, 0, writer.getOffset()); return resultView; }
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; } }