Class AdaptiveReceiveBufferSizePredictor

java.lang.Object
org.jboss.netty.channel.AdaptiveReceiveBufferSizePredictor
All Implemented Interfaces:
ReceiveBufferSizePredictor

public class AdaptiveReceiveBufferSizePredictor extends Object implements ReceiveBufferSizePredictor
The ReceiveBufferSizePredictor that automatically increases and decreases the predicted buffer size on feed back.

It gradually increases the expected number of readable bytes if the previous read fully filled the allocated buffer. It gradually decreases the expected number of readable bytes if the read operation was not able to fill a certain amount of the allocated buffer two times consecutively. Otherwise, it keeps returning the same prediction.

  • Field Details

    • DEFAULT_MINIMUM

      static final int DEFAULT_MINIMUM
      See Also:
    • DEFAULT_INITIAL

      static final int DEFAULT_INITIAL
      See Also:
    • DEFAULT_MAXIMUM

      static final int DEFAULT_MAXIMUM
      See Also:
    • INDEX_INCREMENT

      private static final int INDEX_INCREMENT
      See Also:
    • INDEX_DECREMENT

      private static final int INDEX_DECREMENT
      See Also:
    • SIZE_TABLE

      private static final int[] SIZE_TABLE
    • minIndex

      private final int minIndex
    • maxIndex

      private final int maxIndex
    • index

      private int index
    • nextReceiveBufferSize

      private int nextReceiveBufferSize
    • decreaseNow

      private boolean decreaseNow
  • Constructor Details

    • AdaptiveReceiveBufferSizePredictor

      public AdaptiveReceiveBufferSizePredictor()
      Creates a new predictor with the default parameters. With the default parameters, the expected buffer size starts from 1024, does not go down below 64, and does not go up above 65536.
    • AdaptiveReceiveBufferSizePredictor

      public AdaptiveReceiveBufferSizePredictor(int minimum, int initial, int maximum)
      Creates a new predictor with the specified parameters.
      Parameters:
      minimum - the inclusive lower bound of the expected buffer size
      initial - the initial buffer size when no feed back was received
      maximum - the inclusive upper bound of the expected buffer size
  • Method Details

    • getSizeTableIndex

      private static int getSizeTableIndex(int size)
    • nextReceiveBufferSize

      public int nextReceiveBufferSize()
      Description copied from interface: ReceiveBufferSizePredictor
      Predicts the capacity of the ChannelBuffer for the next read operation depending on the actual number of read bytes in the previous read operation.
      Specified by:
      nextReceiveBufferSize in interface ReceiveBufferSizePredictor
      Returns:
      the expected number of readable bytes this time
    • previousReceiveBufferSize

      public void previousReceiveBufferSize(int previousReceiveBufferSize)
      Description copied from interface: ReceiveBufferSizePredictor
      Updates this predictor by specifying the actual number of read bytes in the previous read operation.
      Specified by:
      previousReceiveBufferSize in interface ReceiveBufferSizePredictor
      Parameters:
      previousReceiveBufferSize - the actual number of read bytes in the previous read operation