org.apache.mina.filter.codec.demux

## Interface MessageDecoder

- All Known Implementing Classes:
    AbstractMessageDecoder, AddMessageDecoder, MessageDecoderAdapter, ResultMessageDecoder

      public interface MessageDecoder

  Decodes a certain type of messages.

  We didn't provide any `dispose` method for `MessageDecoder` because it can give you performance penalty in case you have a lot of message types to handle.

  Author:
    Apache MINA Project
  See Also:
    `DemuxingProtocolDecoder`, `MessageDecoderFactory`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static MessageDecoderResult` | `NEED_DATA` Represents a result from `decodable(IoSession, IoBuffer)` and `decode(IoSession, IoBuffer, ProtocolDecoderOutput)`.
    `static MessageDecoderResult` | `NOT_OK` Represents a result from `decodable(IoSession, IoBuffer)` and `decode(IoSession, IoBuffer, ProtocolDecoderOutput)`.
    `static MessageDecoderResult` | `OK` Represents a result from `decodable(IoSession, IoBuffer)` and `decode(IoSession, IoBuffer, ProtocolDecoderOutput)`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `MessageDecoderResult` | `decodable(IoSession session, IoBuffer in)` Checks the specified buffer is decodable by this decoder.
    `MessageDecoderResult` | `decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out)` Decodes binary or protocol-specific content into higher-level message objects.
    `void` | `finishDecode(IoSession session, ProtocolDecoderOutput out)` Invoked when the specified `session` is closed while this decoder was parsing the data.

- - ### Field Detail

    - #### OK

          static final MessageDecoderResult OK

      Represents a result from `decodable(IoSession, IoBuffer)` and `decode(IoSession, IoBuffer, ProtocolDecoderOutput)`. Please refer to each method's documentation for detailed explanation.

    - #### NEED_DATA

          static final MessageDecoderResult NEED_DATA

      Represents a result from `decodable(IoSession, IoBuffer)` and `decode(IoSession, IoBuffer, ProtocolDecoderOutput)`. Please refer to each method's documentation for detailed explanation.

    - #### NOT_OK

          static final MessageDecoderResult NOT_OK

      Represents a result from `decodable(IoSession, IoBuffer)` and `decode(IoSession, IoBuffer, ProtocolDecoderOutput)`. Please refer to each method's documentation for detailed explanation.

  - ### Method Detail

    - #### decodable

          MessageDecoderResult decodable(IoSession session,
                                       IoBuffer in)

      Checks the specified buffer is decodable by this decoder.
      Returns:
        `OK` if this decoder can decode the specified buffer. `NOT_OK` if this decoder cannot decode the specified buffer. `NEED_DATA` if more data is required to determine if the specified buffer is decodable (`OK`) or not decodable `NOT_OK`.

    - #### decode

          MessageDecoderResult decode(IoSession session,
                                    IoBuffer in,
                                    ProtocolDecoderOutput out)
                                      throws Exception

      Decodes binary or protocol-specific content into higher-level message objects. MINA invokes `decode(IoSession, IoBuffer, ProtocolDecoderOutput)` method with read data, and then the decoder implementation puts decoded messages into `ProtocolDecoderOutput`.
      Returns:
        `OK` if you finished decoding messages successfully. `NEED_DATA` if you need more data to finish decoding current message. `NOT_OK` if you cannot decode current message due to protocol specification violation.
      Throws:
        `Exception` - if the read data violated protocol specification

    - #### finishDecode

          void finishDecode(IoSession session,
                          ProtocolDecoderOutput out)
                            throws Exception

      Invoked when the specified `session` is closed while this decoder was parsing the data. This method is useful when you deal with the protocol which doesn't specify the length of a message such as HTTP response without `content-length` header. Implement this method to process the remaining data that `decode(IoSession, IoBuffer, ProtocolDecoderOutput)` method didn't process completely.
      Throws:
        `Exception` - if the read data violated protocol specification

Copyright © 2004-2012 Apache MINA Project. All Rights Reserved.