Hello! I use MINA 1.1.1 for network program.

I have a problem.

--
[source]
public class PacketAckAnalysis extends ProtocolEncoderAdapter
{
        Logger logger = Logger.getLogger( PacketAckAnalysis.class );
        
        boolean ACK_TEST = true;
        
        public void encode(IoSession session, Object message,
ProtocolEncoderOutput out) throws Exception {
                logger.debug( "encode" );

                logger.debug( "send message to AP" );

                APMessageAck ack = (APMessageAck)message;

                ByteBuffer buffer = ByteBuffer.allocate( 9, false );
                buffer.setAutoExpand( true );

                if( ACK_TEST == true ) {
                        buffer.put( (byte)PacketDefineAP.START );
                        buffer.put( 
(byte)Configuration.getInstance().getIsCipher() );
                        buffer.put( (byte)ack.getCommand() );
                        buffer.putInt( ack.getBufSize() );
                        buffer.put( (byte)ack.getReserved1() );
                        buffer.put( (byte)ack.getReserved2() );
                        buffer.putShort( (short)ack.getKey() );

                        sendAP( session, message, out, buffer );
                } else {
                        buffer = ack.getMessage();

                        sendAP( session, message, out, buffer );
                }
        }

        private void sendAP( IoSession session, Object message,
ProtocolEncoderOutput out, ByteBuffer in ) {
                logger.debug( "before flip : " + in.getHexDump() );
                in.flip();
                logger.debug( "after flip : " + in.getHexDump() );
                out.write( in );
        }
}
--

case1) ACK_TEST is true
it's good work.
log is
DEBUG (PacketAckAnalysis.java[encode]) [2007-08-13 13:37:45,156] - encode
DEBUG (PacketAckAnalysis.java[encode]) [2007-08-13 13:37:45,156] -
send message to AP
DEBUG (PacketAckAnalysis.java[sendAP]) [2007-08-13 13:37:45,156] -
before flip : 00 00 00 00 00
DEBUG (PacketAckAnalysis.java[sendAP]) [2007-08-13 13:37:45,156] -
after flip : AA 01 00 00 00 00 00 00 00 0A 8B


case2) ACK_TEST is false
server cannot send packet to client.
log is
DEBUG (PacketAckAnalysis.java[encode]) [2007-08-13 13:38:08,984] - encode
DEBUG (PacketAckAnalysis.java[encode]) [2007-08-13 13:38:08,984] -
send message to AP
DEBUG (PacketAckAnalysis.java[sendAP]) [2007-08-13 13:38:08,984] -
before flip : AA 01 00 00 00 00 02 00 00 0A 8B
DEBUG (PacketAckAnalysis.java[sendAP]) [2007-08-13 13:38:08,984] -
after flip : empty


difference is using sendAP() function, or not using.

what's the problem in my think?

Thanks.

Reply via email to