Trustin Lee wrote:
> 
> On 10/28/07, paul bryant <[EMAIL PROTECTED]> wrote:
>>
>> Hi
>> I have a very strange mixed up legacy protocol, where the message payload
>> can either be big or little endian depending on the payload type which is
>> contained in header (which is always big endian).
>> The header consists 4 16bit words as follows
>> 0xAA 0xAA    Start Word
>> 0xXX 0xXX     Total length in bytes
>> 0xXX 0xXX     Payload Type
>> 0x00 0x0X     Source ID
>> The paylaod size varies per Type but is 16bit word aligned.
>>
>> So I think I need to use a DemuxingProtocolCodecFactory  with a set of
>> chained MessageDecoder's
>> Which will return MessageDecoderResult.NOT_OK if the payload type doesn't
>> match.
> 
> Right.
> 
>> Right there's the background here are the questions:
>>
>> 1.     If the first decoder in the chain returns
>> MessageDecoderResult.NEED_DATA will the other decoders be called or will
>> the
>> IO handler keep calling the first decoder until the it returns OK or
>> NOT_OK?
> 
> If you are referring to decodable() method, it will also call other
> decoders.  For decode(), it will keep calling the first decoder until
> it returns OK or NOT OK.
> 
>> 2.    Can I swap endianness on the bytebuffer in each decoder in
>> isolation
>> or do I need to make sure the state of the bytebuffers endianness when I
>> return NEED_DATA or NOT_OK?
> 
> You have to set the byte order of the buffer in every decode() method
> to make sure you are in the correct order.  Please do not rely on the
> internal implementation detail of the DemuxingProtocolCodecFactory.
> 
>> 3.     Are there any examples of multiple chained decoders with binary
>> data
>> and mixed endians (Well I gotta ask).
> 
> Unfortunately not yet.  I think we need to provide an example for a
> multi-layered protocol, but not sure about mixed endians.
> 
>> 4.    Is the latest 1.1.3 ok for this or would 2.x be a better starting
>> point?
> 
> It depends on how brave you are. :)
> 
> 1.1.3 is enough IMHO though.
> 
> Trustin
> -- 
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP Key ID: 0x0255ECA6
> 
> 
Trustin,
Have now implemented the protocol but have dealt with the endianess outside
of MINA

A good tutorial would be an excellent idea. Its a bit daunting to a newbie
how all the protocol/ message decoders fit together. In the end I just went
for it and experimented with it as I went until it worked. I suspect the
framework complexity (number of ways of doing the same thing) puts people
off using it.

One last question if may is there away of avoiding a "if else" tree in the
SessionHandler.

if (message instanceof Msg1)
{
}
else
if (message instanceof Msg2)
{
}
else
And so on


Thanks for the support

Paul
-- 
View this message in context: 
http://www.nabble.com/DemuxingProtocolCodecFactory-mixed-endianess-tf4703968s16868.html#a13470799
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.

Reply via email to