@ChannelHandler.Sharable public class ProtobufDecoder extends OneToOneDecoder
ChannelBuffer into a
Google Protocol Buffers
Message and MessageLite. Please note that this decoder must
be used with a proper FrameDecoder 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 aChannelPipelinepipeline = ...; // 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 ChannelBuffer
as a message:
void messageReceived(ChannelHandlerContextctx,MessageEvente) { MyMessage req = (MyMessage) e.getMessage(); MyMessage res = MyMessage.newBuilder().setText( "Did you say '" + req.getText() + "'?").build(); ch.write(res); }
ChannelHandler.Sharable| Modifier and Type | Field and Description |
|---|---|
private com.google.protobuf.ExtensionRegistry |
extensionRegistry |
private static boolean |
HAS_PARSER |
private com.google.protobuf.MessageLite |
prototype |
| 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 java.lang.Object |
decode(ChannelHandlerContext ctx,
Channel channel,
java.lang.Object msg)
Transforms the specified received message into another message and return
the transformed message.
|
handleUpstreamprivate static final boolean HAS_PARSER
private final com.google.protobuf.MessageLite prototype
private final com.google.protobuf.ExtensionRegistry extensionRegistry
public ProtobufDecoder(com.google.protobuf.MessageLite prototype)
public ProtobufDecoder(com.google.protobuf.MessageLite prototype,
com.google.protobuf.ExtensionRegistry extensionRegistry)
protected java.lang.Object decode(ChannelHandlerContext ctx, Channel channel, java.lang.Object msg) throws java.lang.Exception
OneToOneDecodernull if the received message
is supposed to be discarded.decode in class OneToOneDecoderjava.lang.Exception