Hi, Trustin,

Could you please explain what will happen if NOT_OK is returned in
decodable()?  Is it the recommended way to check protocol header and if a
violation detected return NOT_OK in decodable()?  Thx.


Trustin Lee wrote:
> 
> On 2/3/07, Stefan Bischof <[EMAIL PROTECTED]> wrote:
>>
>> Hi Trustin,
>>
>> Trustin Lee schrieb:
>> > Hi Stefan,
>> >
>> > On 2/1/07, Stefan Bischof <[EMAIL PROTECTED]> wrote:
>> >
>> > Now I have a question regarding errors:
>> >>
>> >> Scenario:
>> >> The client sends me a message which violates the protocol. As far as I
>> >> understood, this problem should be detected in
>> >> IcapRequestDecoder.decode. Right?
>> >
>> >
>> > Yes, you can *detect* the problem, but you could also just do what you
>> > are
>> > supposed to do (i.e. parsing the message) and let the exception arise
>> > due to
>> > a unexpected value.  You don't need to perform every integrity check on
>> a
>> > received message as long as an exception can be thrown.
>> >
>> > Once an exception is throw from a ProtocolDecoder, MINA wraps the
>> > exception
>> > with ProtocolDecoderException, and forward it to your IoHandler's
>> > exceptionCaught() handler method.  You can check the type of the cause
>> > (exception) using 'instanceof' keyword:
>> >
>> > if (cause instanceof ProtocolDecoderException) {
>> >    Throwable causeOfCause = cause.getCause(); // what is thrown from
>> > ProtocolDecoder
>> >    session.write(new FourOhOhMessage());
>> > }
>> Thanks! I just tried and it naturally worked (after realizing some
>> strange eclipse behaviour, but thats another story). I just wasn't sure
>> about the 'MINA-way' of handling protocol decoding error issues.
>> > I've never thought about using MessageDecoderResult.NOT_OK, but using
>> > ProtocolDecoderException is better IMHO.  It sounds interesting though.
>> I wasn't sure what the NOT_OK is really for. But then I found a line in
>> the Javadoc for MessageDecoder.decode (the returns-section): "Returns:
>> [...] NOT_OK if you cannot decode current message due to protocol
>> specification violation.", and I thought, "hey, this is what I need". In
>> which case would you really need NOT_OK?
> 
> 
> NOT_OK is for decodable().  It's not usually for decode().  We need to fix
> the documentation.  Thanks for the info!
> 
> BTW: If you are interested, I could translate tutorials to german (when
>> they are ready).
> 
> 
> Very cool!
> 
> Trustin
> -- 
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP key fingerprints:
> * E167 E6AF E73A CBCE EE41  4A29 544D DE48 FE95 4E7E
> * B693 628E 6047 4F8F CFA4  455E 1C62 A7DC 0255 ECA6
> 
> 

-- 
View this message in context: 
http://www.nabble.com/newbiequestion%3A-protocolcodec-errorhandling-tf3154829.html#a9848301
Sent from the mina dev mailing list archive at Nabble.com.

Reply via email to