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.