Le 3/29/12 9:58 PM, [email protected] a écrit :
Hi together,

i´m trying to use the CumulativeProtocollHandler and it is working for the most 
time ;)

But sometimes there coming more bytes then my message has. So i´m decoding my 
message and write the message to the messageReceive method and want to return 
true. But now there is already a second message in the Buffer. A return true 
results in a Exception, that describes that returning true is not allowed as 
long there Bytes left in the Buffer. So could somebody tell me, what i could do?
The CumulativeProtocolDecoder tries to gather all the incoming bytes up to a point it has a complete message to decode. You configure it to tell it that it has receive a complete message. Now, on TCP, there is no guarantee whatsoever that you won't receive some more bytes. In this case, the remaining bytes are simply kept into a buffer waiting for some more bytes.

Returning true in your doDecode() implementatio is the right thing to do. The decode() method just expect you to do that.

One possible reason you get an exception is that you have flipped the buffer before returning true. Just consume the buffer, the CumulativeProtocolDecoder will manage the buffer.

The next time my Decoder is called he decodes the message which is in Buffer from 
previous "double" message and the current one is in the end of the buffer an 
would´nt be decoded.
You most certainly flip the buffer. Don't.


--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to