Class ByteBucketMT

java.lang.Object
com.biglybt.core.networkmanager.impl.ByteBucketMT
All Implemented Interfaces:
ByteBucket

public class ByteBucketMT extends Object implements ByteBucket
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private long
     
    private int
     
    private boolean
     
    private long
     
    private int
     
  • 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

    Modifier and Type
    Method
    Description
    private void
    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
    Get the number of bytes currently available for use.
    int
    Get the configured burst rate.
    int
    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
     

    Methods inherited from class java.lang.Object

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

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

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

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