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

You have to check the remaining number of bytes before you read:

public MessageDecoderResult decode(ProtocolSession session, ByteBuffer in, 
ProtocolDecoderOutput out) 
                                   throws ProtocolViolationException { 
    if( in.remaining() < 8 )
        return MessageDecoder.NEED_DATA;

    long l = in.getLong(); 
    return MessageDecoder.OK; 
} 

BTW your code above will throw IndexOutOfBoundsException instead of 
IllegalStateException because it 'always' calls 'getLong()'.  It seems like you 
simplified the code too much.

Thanks,
Trustin

> DemuxingProtocolCodecFactory.doDecode is called even after the buffer is 
> empty.
> -------------------------------------------------------------------------------
>
>          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
>      Fix For: 0.7.2

>
> 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

Reply via email to