diff --git a/codec/src/main/java/io/netty/handler/codec/protobuf/ProtobufEncoder.java b/codec/src/main/java/io/netty/handler/codec/protobuf/ProtobufEncoder.java index 2646abaf5c..70d8a8719e 100644 --- a/codec/src/main/java/io/netty/handler/codec/protobuf/ProtobufEncoder.java +++ b/codec/src/main/java/io/netty/handler/codec/protobuf/ProtobufEncoder.java @@ -24,7 +24,9 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.handler.codec.LengthFieldPrepender; -import io.netty.handler.codec.MessageToByteEncoder; +import io.netty.handler.codec.MessageToMessageEncoder; + +import static io.netty.buffer.Unpooled.*; /** * Encodes the requested Google @@ -54,16 +56,16 @@ import io.netty.handler.codec.MessageToByteEncoder; * */ @Sharable -public class ProtobufEncoder extends MessageToByteEncoder { +public class ProtobufEncoder extends MessageToMessageEncoder { @Override - protected void encode(ChannelHandlerContext ctx, MessageLiteOrBuilder msg, ByteBuf out) throws Exception { + protected Object encode(ChannelHandlerContext ctx, MessageLiteOrBuilder msg) throws Exception { if (msg instanceof MessageLite) { - out.writeBytes(((MessageLite) msg).toByteArray()); - return; + return wrappedBuffer(((MessageLite) msg).toByteArray()); } if (msg instanceof MessageLite.Builder) { - out.writeBytes(((MessageLite.Builder) msg).build().toByteArray()); + return wrappedBuffer(((MessageLite.Builder) msg).build().toByteArray()); } + return null; } }