simple-binary-encoding icon indicating copy to clipboard operation
simple-binary-encoding copied to clipboard

Add `copy()` to message decoders

Open ratcashdev opened this issue 5 months ago • 3 comments

Flyweights are mutable by nature. However, sometimes it is quite handy to make them 'frozen' or immutable.

For this reason, we could be adding a method like copy() like below to the SBE (JAVA) generator template and to agrona's MessageDecoderFlyweight interface:

public <T extends MessageDecoderFlyweight> T copy() {
    int version = this.actingVersion();
    int blockLength = this.actingBlockLength();
    sbeSkip();
    final int length = this.encodedLength();
    sbeRewind();
    final var dst = new ExpandableArrayBuffer(length);
    dst.putBytes(0, this.buffer(), this.offset(), length);
    return new (class).wrap(dst, 0, blockLength, version);
  }

Volunteering for a PR, if this gets accepted.

ratcashdev avatar Jan 15 '24 11:01 ratcashdev