mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Niklas Therning (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (DIRMINA-199) CumulativeProtocolDecoder javadoc example
Date Wed, 13 Sep 2006 19:53:23 GMT
     [ http://issues.apache.org/jira/browse/DIRMINA-199?page=all ]

Niklas Therning resolved DIRMINA-199.
-------------------------------------

    Resolution: Fixed

I've updated the example in the javadoc to be more advanced as requested. Please let me know
if you think it's a good example or if you find any bugs in it. Zohar, if it looks ok please
close this issue.

Here's a copy of the example code:

public class CRLFTerminatedCommandLineDecoder 
        extends CumulativeProtocolDecoder {

    private Command parseCommand(ByteBuffer in) {
        // Convert the bytes in the specified buffer to a 
        // Command object.
        ...
    }

    protected boolean doDecode(IoSession session, ByteBuffer in,
                               ProtocolDecoderOutput out) 
            throws Exception {

        // Remember the initial position.
        int start = in.position();
       
        // Now find the first CRLF in the buffer.
        byte previous = 0;
        while (in.hasRemaining()) {
            byte current = in.get();
           
            if (previous == '\r' && current == '\n') {
                // Remember the current position and limit.
                int position = in.position();
                int limit = in.limit();
                try {
                    in.position(start);
                    in.limit(position);
                    // The bytes between in.position() and in.limit()
                    // now contain a full CRLF terminated line.
                    out.write(parseCommand(in.slice()));
                } finally {
                    // Set the position to point right after the
                    // detected line and set the limit to the old
                    // one.
                    in.position(position);
                    in.limit(limit);
                }
                // Decoded one line; CumulativeProtocolDecoder will  
                // call me again until I return false. So just 
                // return true until there are no more lines in the 
                // buffer.
                return true;
            }
           
            previous = current;
        }
        
        // Could not find CRLF in the buffer. Reset the initial 
        // position to the one we recorded above.
        in.position(start);
       
        return false;
    }
}

> CumulativeProtocolDecoder javadoc example
> -----------------------------------------
>
>                 Key: DIRMINA-199
>                 URL: http://issues.apache.org/jira/browse/DIRMINA-199
>             Project: Directory MINA
>          Issue Type: Bug
>    Affects Versions: 0.9.2
>            Reporter: Zohar Amir
>         Assigned To: Niklas Therning
>            Priority: Minor
>             Fix For: 1.0
>
>
> I think that the example given in the CumulativeProtocolDecoder's javadoc is a bit too
simplistic. I think the example should include some reading from the buffer, so that it can
demonstrate the need to rewind it before returning 'false'.

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

        

Mime
View raw message