Class FIFOBandwidthRefiller

java.lang.Object
net.i2p.router.transport.FIFOBandwidthRefiller
All Implemented Interfaces:
Runnable

public class FIFOBandwidthRefiller extends Object implements Runnable
Thread that runs several times a second to "give" bandwidth to FIFOBandwidthLimiter. Instantiated by FIFOBandwidthLimiter. As of 0.8.12, this also contains a counter for outbound participating bandwidth. This was a good place for it since we needed a thread for it. Public only for the properties and defaults.
  • Field Details

    • PROP_INBOUND_BANDWIDTH

      public static final String PROP_INBOUND_BANDWIDTH
      See Also:
    • PROP_OUTBOUND_BANDWIDTH

      public static final String PROP_OUTBOUND_BANDWIDTH
      See Also:
    • PROP_INBOUND_BURST_BANDWIDTH

      public static final String PROP_INBOUND_BURST_BANDWIDTH
      See Also:
    • PROP_OUTBOUND_BURST_BANDWIDTH

      public static final String PROP_OUTBOUND_BURST_BANDWIDTH
      See Also:
    • PROP_INBOUND_BANDWIDTH_PEAK

      public static final String PROP_INBOUND_BANDWIDTH_PEAK
      See Also:
    • PROP_OUTBOUND_BANDWIDTH_PEAK

      public static final String PROP_OUTBOUND_BANDWIDTH_PEAK
      See Also:
    • DEFAULT_INBOUND_BANDWIDTH

      public static final int DEFAULT_INBOUND_BANDWIDTH
      See Also:
    • DEFAULT_OUTBOUND_BANDWIDTH

      public static final int DEFAULT_OUTBOUND_BANDWIDTH
      Caution, do not make DEFAULT_OUTBOUND_BANDWIDTH * DEFAULT_SHARE_PCT > 32 without thinking about the implications (default connection limits, for example) of moving the default bandwidth class from L to M, or maybe adjusting bandwidth class boundaries.
      See Also:
    • DEFAULT_INBOUND_BURST_BANDWIDTH

      public static final int DEFAULT_INBOUND_BURST_BANDWIDTH
      See Also:
    • DEFAULT_OUTBOUND_BURST_BANDWIDTH

      public static final int DEFAULT_OUTBOUND_BURST_BANDWIDTH
      See Also:
    • DEFAULT_BURST_SECONDS

      public static final int DEFAULT_BURST_SECONDS
      See Also:
    • MIN_INBOUND_BANDWIDTH

      public static final int MIN_INBOUND_BANDWIDTH
      For now, until there is some tuning and safe throttling, we set the floor at this inbound (KBps)
      See Also:
    • MIN_OUTBOUND_BANDWIDTH

      public static final int MIN_OUTBOUND_BANDWIDTH
      For now, until there is some tuning and safe throttling, we set the floor at this outbound (KBps)
      See Also:
    • MIN_INBOUND_BANDWIDTH_PEAK

      public static final int MIN_INBOUND_BANDWIDTH_PEAK
      For now, until there is some tuning and safe throttling, we set the floor at this during burst (KBps)
      See Also:
    • MIN_OUTBOUND_BANDWIDTH_PEAK

      public static final int MIN_OUTBOUND_BANDWIDTH_PEAK
      For now, until there is some tuning and safe throttling, we set the floor at this during burst (KBps)
      See Also:
    • MAX_OUTBOUND_BANDWIDTH

      public static final int MAX_OUTBOUND_BANDWIDTH
      Max for reasonable Bloom filter false positive rate. Do not increase without adding a new Bloom filter size! See util/DecayingBloomFilter and tunnel/BloomFilterIVValidator.
      See Also:
  • Constructor Details

  • Method Details

    • shutdown

      void shutdown()
      Since:
      0.8.8
    • run

      public void run()
      Specified by:
      run in interface Runnable
    • reinitialize

      void reinitialize()
    • getOutboundKBytesPerSecond

      int getOutboundKBytesPerSecond()
    • getInboundKBytesPerSecond

      int getInboundKBytesPerSecond()
    • getOutboundBurstKBytesPerSecond

      int getOutboundBurstKBytesPerSecond()
    • getInboundBurstKBytesPerSecond

      int getInboundBurstKBytesPerSecond()
    • incrementParticipatingMessageBytes

      boolean incrementParticipatingMessageBytes(int size, float factor)
      We intend to send traffic for a participating tunnel with the given size and adjustment factor. Returns true if the message can be sent within the current share bandwidth limits, or false if it should be dropped.
      Parameters:
      size - bytes
      factor - multiplier of size for the drop calculation, 1 for no adjustment
      Returns:
      true for accepted, false for drop
      Since:
      0.8.12
    • getCurrentParticipatingBandwidth

      int getCurrentParticipatingBandwidth()
      Out bandwidth. Actual bandwidth, not smoothed, not bucketed.
      Returns:
      Bps in recent period (a few seconds)
      Since:
      0.8.12