I followed the Sumup Server example. In decodable, normally check the body
len. you don't have to care about the position since in decodable get()
method is to get the length of the body. The rest of bytebuffer is saved in
the instance of the AbstractMessageDecoder. One session is one instance of
the AbstractMessageDecoder if you follow the Sumup Server approach.

2007/3/19, Coding Horse <[EMAIL PROTECTED]>:


I'm trying to figure out the relationship between decodable() and
decode().
By trying and testing I got to the following conclusion but not sure it's
correct or not.  Please confirm/correct me. Thx!

Say my decodable() implementation guarantees that the current buffer
contains at least 1 complete MyPacket(but could be more).

Since a call of method decodable() guarantees there is at least one
complete
MyPacket inside buffer "in".  I handle this very packet and simply return
MessageDecoderResult.OK. in my decode().  I don't have to worry about the
remaining stuff in current buffer "in" - mina is so great that it will
continue to call decodable() automatically to handle the exact same
current
buffer "in".  The recycle continues until nothing is left in this buffer
"in". I guess only after that the buffer starts receiving new data from
external world.


Coding Horse wrote:
>
> Hi,
>
> In my decodable() and decode() methods I use relative get of ByteBuffer
to
> check data ready or not and return MessageDecoderResult.NEED_DATA when
it
> is not ready.
>
> My question:
> Should I care about the buffer's position/limit etc. before returning
> MessageDecoderResult.NEED_DATA? My "get" changed the buffer's position,
> right?
>
> thx a lot!
>

--
View this message in context:
http://www.nabble.com/A-question-about-implementing-MessageDecoder-tf3422797.html#a9540526
Sent from the mina dev mailing list archive at Nabble.com.


Reply via email to