1 20 package org.apache.mina.filter.codec.netty; 21 22 import net.gleamynode.netty2.Message; 23 24 import org.apache.mina.common.ByteBuffer; 25 import org.apache.mina.common.IoSession; 26 import org.apache.mina.filter.codec.ProtocolEncoder; 27 import org.apache.mina.filter.codec.ProtocolEncoderException; 28 import org.apache.mina.filter.codec.ProtocolEncoderOutput; 29 30 37 public class NettyEncoder implements ProtocolEncoder { 38 41 public NettyEncoder() { 42 } 43 44 public void encode(IoSession session, Object message, 45 ProtocolEncoderOutput out) throws Exception { 46 if (!(message instanceof Message)) { 47 throw new ProtocolEncoderException( 48 "This encoder can decode only Netty Messages."); 49 } 50 51 for (;;) { 52 ByteBuffer buf = ByteBuffer.allocate(8192); 53 Message m = (Message) message; 54 try { 55 if (m.write(buf.buf())) { 56 break; 57 } 58 } finally { 59 buf.flip(); 60 if (buf.hasRemaining()) { 61 out.write(buf); 62 } else { 63 buf.release(); 64 } 65 } 66 } 67 } 68 69 public void dispose(IoSession session) throws Exception { 70 } 71 } 72 | Popular Tags |