org.jboss.netty.handler.codec.marshalling

## Class CompatibleMarshallingDecoder

- java.lang.Object
- - org.jboss.netty.channel.SimpleChannelUpstreamHandler
  - - org.jboss.netty.handler.codec.frame.FrameDecoder
    - - org.jboss.netty.handler.codec.replay.ReplayingDecoder<VoidEnum>
      - - org.jboss.netty.handler.codec.marshalling.CompatibleMarshallingDecoder

- All Implemented Interfaces:
    ChannelHandler, ChannelUpstreamHandler, LifeCycleAwareChannelHandler

      public class CompatibleMarshallingDecoder
      extends ReplayingDecoder<VoidEnum>

  `ReplayingDecoder` which use an `Unmarshaller` to read the Object out of the `ChannelBuffer`. If you can you should use `MarshallingDecoder`.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler

      `ChannelHandler.Sharable`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `maxObjectSize`
    `protected UnmarshallerProvider` | `provider`

    - ### Fields inherited from class org.jboss.netty.handler.codec.frame.FrameDecoder

      `cumulation, DEFAULT_MAX_COMPOSITEBUFFER_COMPONENTS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CompatibleMarshallingDecoder(UnmarshallerProvider provider, int maxObjectSize)` Create a new instance of `CompatibleMarshallingDecoder`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Object` | `decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer, VoidEnum state)` Decodes the received packets so far into a frame.
    `protected Object` | `decodeLast(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer, VoidEnum state)` Decodes the received data so far into a frame when the channel is disconnected.
    `void` | `exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)` Calls `Channel.close()` if a TooLongFrameException was thrown

    - ### Methods inherited from class org.jboss.netty.handler.codec.replay.ReplayingDecoder

      `checkpoint, checkpoint, cleanup, decode, decodeLast, getState, internalBuffer, messageReceived, setState`

    - ### Methods inherited from class org.jboss.netty.handler.codec.frame.FrameDecoder

      `actualReadableBytes, afterAdd, afterRemove, appendToCumulation, beforeAdd, beforeRemove, channelClosed, channelDisconnected, getMaxCumulationBufferCapacity, getMaxCumulationBufferComponents, isUnfold, newCumulationBuffer, replace, setMaxCumulationBufferCapacity, setMaxCumulationBufferComponents, setUnfold, unfoldAndFireMessageReceived, updateCumulation`

    - ### Methods inherited from class org.jboss.netty.channel.SimpleChannelUpstreamHandler

      `channelBound, channelConnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, handleUpstream, writeComplete`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### provider

          protected final UnmarshallerProvider provider

    - #### maxObjectSize

          protected final int maxObjectSize

  - ### Constructor Detail

    - #### CompatibleMarshallingDecoder

          public CompatibleMarshallingDecoder(UnmarshallerProvider provider,
                                      int maxObjectSize)

      Create a new instance of `CompatibleMarshallingDecoder`.
      Parameters:
        `provider` - the `UnmarshallerProvider` which is used to obtain the `Unmarshaller` for the `Channel`
        `maxObjectSize` - the maximal size (in bytes) of the `Object` to unmarshal. Once the size is exceeded the `Channel` will get closed. Use a a maxObjectSize of `Integer.MAX_VALUE` to disable this. You should only do this if you are sure that the received Objects will never be big and the sending side are trusted, as this opens the possibility for a DOS-Attack due an `OutOfMemoryError`.

  - ### Method Detail

    - #### decode

          protected Object decode(ChannelHandlerContext ctx,
                      Channel channel,
                      ChannelBuffer buffer,
                      VoidEnum state)
                           throws Exception

      Description copied from class: `ReplayingDecoder`
      Decodes the received packets so far into a frame.
      Specified by:
        `decode` in class `ReplayingDecoder<VoidEnum>`
      Parameters:
        `ctx` - the context of this handler
        `channel` - the current channel
        `buffer` - the cumulative buffer of received packets so far. Note that the buffer might be empty, which means you should not make an assumption that the buffer contains at least one byte in your decoder implementation.
        `state` - the current decoder state (`null` if unused)
      Returns:
        the decoded frame
      Throws:
        `Exception`

    - #### decodeLast

          protected Object decodeLast(ChannelHandlerContext ctx,
                          Channel channel,
                          ChannelBuffer buffer,
                          VoidEnum state)
                               throws Exception

      Description copied from class: `ReplayingDecoder`
      Decodes the received data so far into a frame when the channel is disconnected.
      Overrides:
        `decodeLast` in class `ReplayingDecoder<VoidEnum>`
      Parameters:
        `ctx` - the context of this handler
        `channel` - the current channel
        `buffer` - the cumulative buffer of received packets so far. Note that the buffer might be empty, which means you should not make an assumption that the buffer contains at least one byte in your decoder implementation.
        `state` - the current decoder state (`null` if unused)
      Returns:
        the decoded frame
      Throws:
        `Exception`

    - #### exceptionCaught

          public void exceptionCaught(ChannelHandlerContext ctx,
                             ExceptionEvent e)
                               throws Exception

      Calls `Channel.close()` if a TooLongFrameException was thrown
      Overrides:
        `exceptionCaught` in class `FrameDecoder`
      Throws:
        `Exception`

Copyright © 2008-2012 The Netty Project. All Rights Reserved.