@ChannelHandler.Sharable public class ProtobufEncoderNano extends MessageToMessageEncoder<MessageNano>
MessageNano
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", newProtobufDecoderNano
(MyMessage.getDefaultInstance())); // Encoder pipeline.addLast("frameEncoder", newLengthFieldPrepender
(4)); pipeline.addLast("protobufEncoder", newProtobufEncoderNano
());
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);
}
ChannelHandler.Sharable
构造器和说明 |
---|
ProtobufEncoderNano() |
限定符和类型 | 方法和说明 |
---|---|
protected void |
encode(ChannelHandlerContext ctx,
MessageNano msg,
java.util.List<java.lang.Object> out)
Encode from one message to an other.
|
acceptOutboundMessage, write
bind, close, connect, deregister, disconnect, flush, read
ensureNotSharable, exceptionCaught, handlerAdded, handlerRemoved, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
exceptionCaught, handlerAdded, handlerRemoved
protected void encode(ChannelHandlerContext ctx, MessageNano msg, java.util.List<java.lang.Object> out) throws java.lang.Exception
MessageToMessageEncoder
encode
在类中 MessageToMessageEncoder<MessageNano>
ctx
- the ChannelHandlerContext
which this MessageToMessageEncoder
belongs tomsg
- the message to encode to an other oneout
- the List
into which the encoded msg should be added
needs to do some kind of aggregationjava.lang.Exception
- is thrown if an error occurs