You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Trustin Lee (JIRA)" <ji...@apache.org> on 2005/05/21 04:40:55 UTC

[jira] Commented: (DIRMINA-45) DemuxingProtocolCodecFactory.doDecode returns wrong value

     [ http://issues.apache.org/jira/browse/DIRMINA-45?page=comments#action_65903 ]
     
Trustin Lee commented on DIRMINA-45:
------------------------------------

This behavior is correct.

Let's assume that there are 3 and half messages in the buffer.

'OK' means 'I decoded one complete message correctly'.  You decode one message and return 'OK'.  DemuxingProtocolCodecFactory calls doDecode once more to decode remaining buffer.  You return two more OKs decoding two message and it will cause the internal implementation return 'true' so that the loop continue.  Now you've got half message left which is incomplete.  DemusingProtocolCodecFactory calls once again if your decoder can decode the remaining data.  You find out you cannot decode the half message because you need the whole message, and return NEED_DATA.  NEED_DATA will be translated into 'return false', and the loop ends.  doDecode will be called later when more data is received.

Do you understand what's going on?  Please leave some comment.  I'll add this documentation to JavaDoc if you think it is OK.  Please confirm the JavaDoc and then close this issue.

Thanks,
Trustin

> DemuxingProtocolCodecFactory.doDecode returns wrong value
> ---------------------------------------------------------
>
>          Key: DIRMINA-45
>          URL: http://issues.apache.org/jira/browse/DIRMINA-45
>      Project: Directory MINA
>         Type: Bug
>     Versions: 0.7.1
>  Environment: JDK1.4.2
>     Reporter: Alex
>     Assignee: Trustin Lee

>
> I am not sure if it is a bug or I just misunderstood something.
> I am implementing a protocol and use Demuxing* classes.
> When I return MessageDecoder.OK from my MessageDecoder's decode method, MINA tries repeatedly calls this method again. If I return MessageDecoder.NEED_DATA everything goes fine.
> So, I would expect completely reversal behaviour.
> I checked CumulativeProtocolDecoder and DemuxingProtocolCodecFactory classes.
> In CumulativeProtocolDecoder.decode it says that doDecode is invoked repeatedly until it returns false. Fine. But what "false" means here? I would guess that it means that buffer was completely decoded and no more data is needed. But DemuxingProtocolCodedFactory.doDecode returns true if decoder returned MessageDecoder.OK and false if decoder returned MessageDecoder.NEED_DATA. Isn't wrong here?
> Alex

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira