Eliminate unnessary copy of ByteBuf on ByteToMessageDecoder removal (#9662)

Motivation:

At the moment we do a ByteBuf.readBytes(...) on removal of the ByteToMessageDecoder if there are any bytes left and forward the returned ByteBuf to the next handler in the pipeline. This is not really needed as we can just forward the cumulation buffer directly and so eliminate the extra memory copy

Modifications:

Just forward the cumulation buffer directly on removal of the ByteToMessageDecoder

Result:

Less memory copies
This commit is contained in:
Norman Maurer 2019-10-16 06:47:59 -07:00 committed by GitHub
parent 2e5dd28800
commit 3d7dba373f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -251,9 +251,7 @@ public abstract class ByteToMessageDecoder extends ChannelInboundHandlerAdapter
numReads = 0;
int readable = buf.readableBytes();
if (readable > 0) {
ByteBuf bytes = buf.readBytes(readable);
buf.release();
ctx.fireChannelRead(bytes);
ctx.fireChannelRead(buf);
ctx.fireChannelReadComplete();
} else {
buf.release();