@ChannelHandler.Sharable public class ProtobufEncoder extends MessageToMessageEncoder<com.google.protobuf.MessageLiteOrBuilder>
Message
and MessageLite
into a
ByteBuf
. 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 |
---|
ProtobufEncoder() |
Modifier and Type | Method and Description |
---|---|
protected void |
encode(io.netty.channel.ChannelHandlerContext ctx,
com.google.protobuf.MessageLiteOrBuilder msg,
io.netty.buffer.MessageBuf<Object> out)
Encode from one message to an other.
|
flush
acceptOutboundMessage, beginFlush, endFlush, flush, isCloseOnFailedFlush, newOutboundBuffer, setCloseOnFailedFlush
bind, close, connect, deregister, disconnect, read, sendFile
exceptionCaught, handlerAdded, handlerRemoved
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
protected void encode(io.netty.channel.ChannelHandlerContext ctx, com.google.protobuf.MessageLiteOrBuilder msg, io.netty.buffer.MessageBuf<Object> out) throws Exception
MessageToMessageEncoder
MessageBuf
has nothing
left or till this method returns null
.encode
in class MessageToMessageEncoder<com.google.protobuf.MessageLiteOrBuilder>
ctx
- the ChannelHandlerContext
which this MessageToMessageEncoder
belongs tomsg
- the message to encode to an other oneout
- the MessageBuf
into which the encoded msg should be added
needs to do some kind of aggragationException
- is thrown if an error accourCopyright © 2008-2013 The Netty Project. All Rights Reserved.