Ich schreibe einen Encoder, der NUL-Terminiert eine JSON-Nachricht, so dass es im Falle einer fragmentierten Nachricht entschlüsselt werden kann.Wann muss ich ByteBuf.retain() in einem Netty4 Encoder verwenden?
Ich fand dieses Beispiel ->click wo ByteBuf.retain()
aufgerufen wurde, am Ende ein vorhandenes ByteBuf an den Ausgang zu schreiben. Warum haben sie das getan und warum wird es gebraucht?
Hier ist mein Encoder:
public class FrameEncoder extends MessageToMessageEncoder<ByteBuf> {
@Override
protected void encode(ChannelHandlerContext ctx, ByteBuf msg, List<Object> out) throws Exception {
out.add(msg.retain());
out.add(ctx.alloc().buffer(1).writeByte(NUL));
}
}