Skip to content

Commit fdc10c4

Browse files
authored
chore: use readRetainedSlice to avoid copy in SpdyFrameDecoder (#14573)
Motivation: We can use readRetainedSlice to reduce the copy of bytes in `SpdyFrameDecoder`. Modification: Make use of `readRetainedSlice` instead of new a byteBuf and copy data to it. Result: Less copy
1 parent 46b11cc commit fdc10c4

1 file changed

Lines changed: 3 additions & 6 deletions

File tree

codec-http/src/main/java/io/netty/handler/codec/spdy/SpdyFrameDecoder.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,7 @@ public void decode(ByteBuf buffer) {
161161
return;
162162
}
163163

164-
ByteBuf data = buffer.alloc().buffer(dataLength);
165-
data.writeBytes(buffer, dataLength);
164+
ByteBuf data = buffer.readRetainedSlice(dataLength);
166165
length -= dataLength;
167166

168167
if (length == 0) {
@@ -361,8 +360,7 @@ public void decode(ByteBuf buffer) {
361360
}
362361

363362
int compressedBytes = Math.min(buffer.readableBytes(), length);
364-
ByteBuf headerBlock = buffer.alloc().buffer(compressedBytes);
365-
headerBlock.writeBytes(buffer, compressedBytes);
363+
ByteBuf headerBlock = buffer.readRetainedSlice(compressedBytes);
366364
length -= compressedBytes;
367365

368366
delegate.readHeaderBlock(headerBlock);
@@ -445,8 +443,7 @@ protected boolean decodeUnknownFrame(int frameType, byte flags, int length, Byte
445443
return false;
446444
}
447445
if (delegate instanceof SpdyFrameDecoderExtendedDelegate) {
448-
ByteBuf data = buffer.alloc().buffer(length);
449-
data.writeBytes(buffer, length);
446+
ByteBuf data = buffer.readRetainedSlice(length);
450447
((SpdyFrameDecoderExtendedDelegate) delegate).readUnknownFrame(frameType, flags, data);
451448
} else {
452449
buffer.skipBytes(length);

0 commit comments

Comments
 (0)