org.jboss.netty.handler.codec.protobuf
Class ProtobufDecoder

java.lang.Object
  extended by org.jboss.netty.handler.codec.oneone.OneToOneDecoder
      extended by org.jboss.netty.handler.codec.protobuf.ProtobufDecoder
All Implemented Interfaces:
ChannelHandler, ChannelUpstreamHandler

@ChannelHandler.Sharable
public class ProtobufDecoder
extends OneToOneDecoder

Decodes a received 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:

 ChannelPipeline pipeline = ...;

 // Decoders
 pipeline.addLast("frameDecoder",
                  new LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4));
 pipeline.addLast("protobufDecoder",
                  new ProtobufDecoder(MyMessage.getDefaultInstance()));

 // Encoder
 pipeline.addLast("frameEncoder", new LengthFieldPrepender(4));
 pipeline.addLast("protobufEncoder", new ProtobufEncoder());
 
and then you can use a MyMessage instead of a ChannelBuffer as a message:
 void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
     MyMessage req = (MyMessage) e.getMessage();
     MyMessage res = MyMessage.newBuilder().setText(
                               "Did you say '" + req.getText() + "'?").build();
     ch.write(res);
 }
 

Version:
$Rev:231 $, $Date:2008-06-12 16:44:50 +0900 (목, 12 6월 2008) $
Author:
The Netty Project, Trustin Lee

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler
ChannelHandler.Sharable
 
Constructor Summary
ProtobufDecoder(MessageLite prototype)
          Creates a new instance.
ProtobufDecoder(MessageLite prototype, ExtensionRegistry extensionRegistry)
           
 
Method Summary
protected  Object decode(ChannelHandlerContext ctx, Channel channel, Object msg)
          Transforms the specified received message into another message and return the transformed message.
 
Methods inherited from class org.jboss.netty.handler.codec.oneone.OneToOneDecoder
handleUpstream
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ProtobufDecoder

public ProtobufDecoder(MessageLite prototype)
Creates a new instance.


ProtobufDecoder

public ProtobufDecoder(MessageLite prototype,
                       ExtensionRegistry extensionRegistry)
Method Detail

decode

protected Object decode(ChannelHandlerContext ctx,
                        Channel channel,
                        Object msg)
                 throws Exception
Description copied from class: OneToOneDecoder
Transforms the specified received message into another message and return the transformed message. Return null if the received message is supposed to be discarded.

Specified by:
decode in class OneToOneDecoder
Throws:
Exception


Copyright © 2008-2011 JBoss, a division of Red Hat, Inc.. All Rights Reserved.