Class AdaptiveReceiveBufferSizePredictor

  • All Implemented Interfaces:
    ReceiveBufferSizePredictor

    public class AdaptiveReceiveBufferSizePredictor
    extends java.lang.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 Detail

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

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

      • getSizeTableIndex

        private static int getSizeTableIndex​(int size)
      • 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