@ChannelHandler.Sharable public class ProtobufDecoder extends MessageToMessageDecoder<io.netty.buffer.ByteBuf>
ByteBuf
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:
and then you can use aChannelPipeline
pipeline = ...; // Decoders pipeline.addLast("frameDecoder", newLengthFieldBasedFrameDecoder
(1048576, 0, 4, 0, 4)); pipeline.addLast("protobufDecoder", newProtobufDecoder
(MyMessage.getDefaultInstance())); // Encoder pipeline.addLast("frameEncoder", newLengthFieldPrepender
(4)); pipeline.addLast("protobufEncoder", newProtobufEncoder
());
MyMessage
instead of a ByteBuf
as a message:
void messageReceived(ChannelHandlerContext
ctx, MyMessage req) {
MyMessage res = MyMessage.newBuilder().setText(
"Did you say '" + req.getText() + "'?").build();
ch.write(res);
}
Constructor and Description |
---|
ProtobufDecoder(com.google.protobuf.MessageLite prototype)
Creates a new instance.
|
ProtobufDecoder(com.google.protobuf.MessageLite prototype,
com.google.protobuf.ExtensionRegistry extensionRegistry) |
Modifier and Type | Method and Description |
---|---|
protected void |
decode(io.netty.channel.ChannelHandlerContext ctx,
io.netty.buffer.ByteBuf msg,
io.netty.buffer.MessageBuf<Object> out)
Decode from one message to an other.
|
messageReceived
acceptInboundMessage, beginMessageReceived, endMessageReceived, inboundBufferUpdated, newInboundBuffer
channelActive, channelInactive, channelReadSuspended, channelRegistered, channelUnregistered, userEventTriggered
exceptionCaught, handlerAdded, handlerRemoved
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public ProtobufDecoder(com.google.protobuf.MessageLite prototype)
public ProtobufDecoder(com.google.protobuf.MessageLite prototype, com.google.protobuf.ExtensionRegistry extensionRegistry)
protected void decode(io.netty.channel.ChannelHandlerContext ctx, io.netty.buffer.ByteBuf msg, io.netty.buffer.MessageBuf<Object> out) throws Exception
MessageToMessageDecoder
MessageBuf
has
nothing left or till this method returns null
.decode
in class MessageToMessageDecoder<io.netty.buffer.ByteBuf>
ctx
- the ChannelHandlerContext
which this MessageToMessageDecoder
belongs tomsg
- the message to decode to an other oneout
- the MessageBuf
to which decoded messages should be addedException
- is thrown if an error accourCopyright © 2008-2013 The Netty Project. All Rights Reserved.