Top Description Fields Constructors Methods
io.netty.handler.codec.protobuf

public Class ProtobufDecoderNano

extends MessageToMessageDecoder<ByteBuf>
Class Inheritance
Annotations
@Sharable
Imports
com.google.protobuf.nano.MessageNano, java.util.List, io.netty.buffer.ByteBuf, .ByteBufUtil, io.netty.channel.ChannelHandler.Sharable, .ChannelHandlerContext, .ChannelPipeline, io.netty.handler.codec.ByteToMessageDecoder, .LengthFieldBasedFrameDecoder, .MessageToMessageDecoder, io.netty.util.internal.ObjectUtil

Decodes a received ByteBuf into a Google Protocol Buffers MessageNano. Please note that this decoder must be used with a proper ByteToMessageDecoder such as 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 ProtobufDecoderNano(MyMessage.getDefaultInstance()));

// Encoder
pipeline.addLast("frameEncoder", new io.netty.handler.codec.LengthFieldPrepender(4));
pipeline.addLast("protobufEncoder", new ProtobufEncoderNano());
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);
}

Field Summary

Modifier and TypeField and Description
private final Class<? extends MessageNano>

Constructor Summary

AccessConstructor and Description
public
ProtobufDecoderNano(Class<? extends MessageNano> clazz)

Creates a new instance.

Method Summary

Modifier and TypeMethod and Description
protected void
decode(ChannelHandlerContext ctx, ByteBuf
the message to decode to an other one
msg
,
List<Object>
the List to which decoded messages should be added
out
)

Implements abstract io.netty.handler.codec.MessageToMessageDecoder.decode.

Decode from one message to an other.
Inherited from io.netty.handler.codec.MessageToMessageDecoder:
acceptInboundMessagechannelRead

Field Detail

clazzback to summary
private final Class<? extends MessageNano> clazz

Constructor Detail

ProtobufDecoderNanoback to summary
public ProtobufDecoderNano(Class<? extends MessageNano> clazz)

Creates a new instance.

Method Detail

decodeback to summary
protected void decode(ChannelHandlerContext ctx, ByteBuf msg, List<Object> out) throws Exception

Implements abstract io.netty.handler.codec.MessageToMessageDecoder.decode.

Doc from io.netty.handler.codec.MessageToMessageDecoder.decode.

Decode from one message to an other. This method will be called for each written message that can be handled by this decoder.

Parameters
ctx:ChannelHandlerContext

the ChannelHandlerContext which this MessageToMessageDecoder belongs to

msg:ByteBuf

the message to decode to an other one

out:List<Object>

the List to which decoded messages should be added

Annotations
@Override
Exceptions
Exception:
is thrown if an error occurs