Class GridDelimitedParser

  • All Implemented Interfaces:
    GridNioParser

    public class GridDelimitedParser
    extends Object
    implements GridNioParser
    This class implements stream parser based on GridNioDelimitedBuffer.

    The rule for this parser is that every message sent over the stream is appended with delimiter (bytes array). So, the stream structure is as follows:

         +--+--+...+--+--+--+--+--+--+--+...+--+--+--+--+--+-
         |   MESSAGE  | DELIMITER  |  MESSAGE  | DELIMITER  |
         +--+--+...+--+--+--+--+--+--+--+...+--+--+--+--+--+-
     
    • Constructor Detail

      • GridDelimitedParser

        public GridDelimitedParser​(byte[] delim,
                                   boolean directBuf)
        Parameters:
        delim - Delimiter.
        directBuf - Direct buffer.
    • Method Detail

      • decode

        public byte[] decode​(GridNioSession ses,
                             ByteBuffer buf)
                      throws IOException,
                             IgniteCheckedException
        This method is called when input bytes are available on the underlying network connection.

        Method must read given buffer until either it reaches the end of buffer or a valid user message is encountered. In this case it must return parsed message.

        Specified by:
        decode in interface GridNioParser
        Parameters:
        ses - Session on which bytes are read.
        buf - Buffer that contains input data.
        Returns:
        Parsed user message or null if complete message has not been received yet. Note that in case of returning null given buffer must be completely read.
        Throws:
        IOException - If exception occurred while reading data.
        IgniteCheckedException - If any user-specific error occurred.
      • encode

        public ByteBuffer encode​(GridNioSession ses,
                                 Object msg)
                          throws IOException,
                                 IgniteCheckedException
        This method is called whenever a message should be sent to the network connection and network buffer is ready to be filled with bytes.

        Method must encode the complete message and return byte buffer from which data should be read.

        Specified by:
        encode in interface GridNioParser
        Parameters:
        ses - Session on which message is being sent.
        msg - Message to encode.
        Returns:
        Buffer containing encoded message.
        Throws:
        IOException - If exception occurred while encoding data.
        IgniteCheckedException - If any user-specific error occurred while encoding data.