public static void writeDataOnce( @NotNull WireOut wireOut, boolean metaData, @NotNull WriteMarshallable writer) { Bytes bytes = wireOut.bytes(); long position = bytes.writePosition(); int metaDataBit = metaData ? Wires.META_DATA : 0; int value = metaDataBit | Wires.NOT_READY | Wires.UNKNOWN_LENGTH; if (!bytes.compareAndSwapInt(position, 0, value)) return; bytes.writeSkip(4); writer.writeMarshallable(wireOut); int length = metaDataBit | toIntU30( bytes.writePosition() - position - 4, "Document length %,d out of 30-bit int range."); if (!bytes.compareAndSwapInt(position, value, length | Wires.META_DATA)) throw new AssertionError(); }
public static void writeData( @NotNull WireOut wireOut, boolean metaData, boolean notReady, @NotNull WriteMarshallable writer) { Bytes bytes = wireOut.bytes(); long position = bytes.writePosition(); int metaDataBit = metaData ? Wires.META_DATA : 0; bytes.writeOrderedInt(metaDataBit | Wires.NOT_READY | Wires.UNKNOWN_LENGTH); writer.writeMarshallable(wireOut); int length = metaDataBit | toIntU30( bytes.writePosition() - position - 4, "Document length %,d out of 30-bit int range."); bytes.writeOrderedInt(position, length | (notReady ? Wires.NOT_READY : 0)); }