Class ByteBucketMT

  • All Implemented Interfaces:
    ByteBucket

    public class ByteBucketMT
    extends java.lang.Object
    implements ByteBucket
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        ByteBucketMT​(int rate_bytes_per_sec)
      Create a new byte-bucket with the given byte fill (guaranteed) rate.
      private ByteBucketMT​(int rate_bytes_per_sec, int burst_rate)
      Create a new byte-bucket with the given byte fill (guaranteed) rate and the given burst rate.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private void ensureByteBucketMinBurstRate()
      Make sure the bucket's burst rate is at least MSS-sized, otherwise it will never allow a full packet's worth of data.
      int getAvailableByteCount()
      Get the number of bytes currently available for use.
      int getBurstRate()
      Get the configured burst rate.
      int getRate()
      Get the configured fill rate.
      void setBytesUsed​(int bytes_used)
      Update the bucket with the number of bytes just used.
      void setFrozen​(boolean f)  
      void setRate​(int rate_bytes_per_sec)
      Set the current fill/guaranteed rate, with a burst rate of 1.2X the given rate.
      void setRate​(int rate_bytes_per_sec, int burst_rate)
      Set the current fill/guaranteed rate, along with the burst rate.
      private void update_avail_byte_count()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • rate

        private int rate
      • burst_rate

        private int burst_rate
      • avail_bytes

        private volatile long avail_bytes
      • prev_update_time

        private volatile long prev_update_time
      • frozen

        private volatile boolean frozen
    • Constructor Detail

      • ByteBucketMT

        public ByteBucketMT​(int rate_bytes_per_sec)
        Create a new byte-bucket with the given byte fill (guaranteed) rate. Burst rate is set to default 1.2X of given fill rate.
        Parameters:
        rate_bytes_per_sec - fill rate
      • ByteBucketMT

        private ByteBucketMT​(int rate_bytes_per_sec,
                             int burst_rate)
        Create a new byte-bucket with the given byte fill (guaranteed) rate and the given burst rate.
        Parameters:
        rate_bytes_per_sec - fill rate
        burst_rate - max rate
    • Method Detail

      • getAvailableByteCount

        public int getAvailableByteCount()
        Get the number of bytes currently available for use.
        Specified by:
        getAvailableByteCount in interface ByteBucket
        Returns:
        number of free bytes
      • setBytesUsed

        public void setBytesUsed​(int bytes_used)
        Update the bucket with the number of bytes just used.
        Specified by:
        setBytesUsed in interface ByteBucket
        Parameters:
        bytes_used -
      • getRate

        public int getRate()
        Get the configured fill rate.
        Specified by:
        getRate in interface ByteBucket
        Returns:
        guaranteed rate in bytes per sec
      • getBurstRate

        public int getBurstRate()
        Get the configured burst rate.
        Returns:
        burst rate in bytes per sec
      • setRate

        public void setRate​(int rate_bytes_per_sec)
        Set the current fill/guaranteed rate, with a burst rate of 1.2X the given rate.
        Specified by:
        setRate in interface ByteBucket
        Parameters:
        rate_bytes_per_sec -
      • setFrozen

        public void setFrozen​(boolean f)
        Specified by:
        setFrozen in interface ByteBucket
      • setRate

        public void setRate​(int rate_bytes_per_sec,
                            int burst_rate)
        Set the current fill/guaranteed rate, along with the burst rate.
        Parameters:
        rate_bytes_per_sec -
        burst_rate -
      • update_avail_byte_count

        private void update_avail_byte_count()
      • ensureByteBucketMinBurstRate

        private void ensureByteBucketMinBurstRate()
        Make sure the bucket's burst rate is at least MSS-sized, otherwise it will never allow a full packet's worth of data.