Class ProtobufDecoder

  • All Implemented Interfaces:
    io.netty5.channel.ChannelHandler

    public class ProtobufDecoder
    extends io.netty5.handler.codec.MessageToMessageDecoder<io.netty5.buffer.Buffer>
    Decodes a received Buffer into a Google Protocol Buffers Message and MessageLite. Please note that this decoder must be used with a proper ByteToMessageDecoder such as ProtobufVarint32FrameDecoder or LengthFieldBasedFrameDecoder if you are using a stream-based transport such as TCP/IP. 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 Buffer 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);
     }
     
    • Constructor Summary

      Constructors 
      Constructor Description
      ProtobufDecoder​(com.google.protobuf.MessageLite prototype)
      Creates a new instance.
      ProtobufDecoder​(com.google.protobuf.MessageLite prototype, com.google.protobuf.ExtensionRegistry extensionRegistry)  
      ProtobufDecoder​(com.google.protobuf.MessageLite prototype, com.google.protobuf.ExtensionRegistryLite extensionRegistry)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void decode​(io.netty5.channel.ChannelHandlerContext ctx, io.netty5.buffer.Buffer msg)  
      boolean isSharable()  
      • Methods inherited from class io.netty5.handler.codec.MessageToMessageDecoder

        acceptInboundMessage, channelRead, decodeAndClose
      • Methods inherited from interface io.netty5.channel.ChannelHandler

        bind, channelActive, channelExceptionCaught, channelInactive, channelInboundEvent, channelReadComplete, channelRegistered, channelShutdown, channelUnregistered, channelWritabilityChanged, close, connect, deregister, disconnect, flush, handlerAdded, handlerRemoved, pendingOutboundBytes, read, register, sendOutboundEvent, shutdown, write
    • Constructor Detail

      • ProtobufDecoder

        public ProtobufDecoder​(com.google.protobuf.MessageLite prototype)
        Creates a new instance.
      • ProtobufDecoder

        public ProtobufDecoder​(com.google.protobuf.MessageLite prototype,
                               com.google.protobuf.ExtensionRegistry extensionRegistry)
      • ProtobufDecoder

        public ProtobufDecoder​(com.google.protobuf.MessageLite prototype,
                               com.google.protobuf.ExtensionRegistryLite extensionRegistry)
    • Method Detail

      • decode

        protected void decode​(io.netty5.channel.ChannelHandlerContext ctx,
                              io.netty5.buffer.Buffer msg)
                       throws Exception
        Overrides:
        decode in class io.netty5.handler.codec.MessageToMessageDecoder<io.netty5.buffer.Buffer>
        Throws:
        Exception
      • isSharable

        public boolean isSharable()