import static org.jctools.util.UnsafeAccess.UNSAFE; import org.jctools.channels.spsc.SpscChannelConsumer; import java.nio.ByteBuffer; import org.jctools.channels.ChannelReceiver; public class {{className}} extends {{implementationParent}}<{{flyweightInterface}}> implements {{flyweightInterface}} { public {{className}}( final ByteBuffer buffer, final int capacity, final int messageSize, final ChannelReceiver<{{flyweightInterface}}> receiver) { super(buffer, capacity, messageSize, receiver); } public boolean read() { final long pointer = readAcquire(); if (pointer == EOF) { return false; } this.pointer = pointer; receiver.accept(this); readRelease(pointer); return true; } {{#fields}} public {{type}} get{{name}}() { return UNSAFE.get{{unsafeMethodSuffix}}(pointer + {{fieldOffset}}L); } public void set{{name}}({{type}} value) { UNSAFE.put{{unsafeMethodSuffix}}(pointer + {{fieldOffset}}L, value); } {{/fields}} }