Class ProtobufEncoder

  • All Implemented Interfaces:
    io.netty.channel.ChannelHandler, io.netty.channel.ChannelOutboundHandler

    @Sharable
    public class ProtobufEncoder
    extends io.netty.handler.codec.MessageToMessageEncoder<com.google.protobuf.MessageLiteOrBuilder>
    Encodes the requested Google Protocol Buffers Message and MessageLite into a ByteBuf. A typical setup for TCP/IP would be:
     ChannelPipeline pipeline = ...;
    
     // Decoders
     pipeline.addLast("frameDecoder",
                      new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4));
     pipeline.addLast("protobufDecoder",
                      new ProtobufDecoder(MyMessage.getDefaultInstance()));
    
     // Encoder
     pipeline.addLast("frameEncoder", new LengthFieldPrepender(4));
     pipeline.addLast("protobufEncoder", new ProtobufEncoder());
     
    and then you can use a MyMessage instead of a ByteBuf as a message:
     void channelRead(ChannelHandlerContext ctx, Object msg) {
         MyMessage req = (MyMessage) msg;
         MyMessage res = MyMessage.newBuilder().setText(
                                   "Did you say '" + req.getText() + "'?").build();
         ch.write(res);
     }
     
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler

        io.netty.channel.ChannelHandler.Sharable
    • Constructor Summary

      Constructors 
      Constructor Description
      ProtobufEncoder()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void encode​(io.netty.channel.ChannelHandlerContext ctx, com.google.protobuf.MessageLiteOrBuilder msg, List<Object> out)  
      • Methods inherited from class io.netty.handler.codec.MessageToMessageEncoder

        acceptOutboundMessage, write
      • Methods inherited from class io.netty.channel.ChannelOutboundHandlerAdapter

        bind, close, connect, deregister, disconnect, flush, read
      • Methods inherited from class io.netty.channel.ChannelHandlerAdapter

        ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharable
      • Methods inherited from interface io.netty.channel.ChannelHandler

        exceptionCaught, handlerAdded, handlerRemoved
    • Constructor Detail

      • ProtobufEncoder

        public ProtobufEncoder()
    • Method Detail

      • encode

        protected void encode​(io.netty.channel.ChannelHandlerContext ctx,
                              com.google.protobuf.MessageLiteOrBuilder msg,
                              List<Object> out)
                       throws Exception
        Specified by:
        encode in class io.netty.handler.codec.MessageToMessageEncoder<com.google.protobuf.MessageLiteOrBuilder>
        Throws:
        Exception