net.i2p.router.transport
Class FIFOBandwidthRefiller

java.lang.Object
  extended by 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 Summary
static int DEFAULT_BURST_SECONDS
           
static int DEFAULT_INBOUND_BANDWIDTH
           
static int DEFAULT_INBOUND_BURST_BANDWIDTH
           
static 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.
static int DEFAULT_OUTBOUND_BURST_BANDWIDTH
           
static int MIN_INBOUND_BANDWIDTH
          For now, until there is some tuning and safe throttling, we set the floor at 3KBps inbound
static int MIN_INBOUND_BANDWIDTH_PEAK
          For now, until there is some tuning and safe throttling, we set the floor at a 3KBps during burst
static int MIN_OUTBOUND_BANDWIDTH
          For now, until there is some tuning and safe throttling, we set the floor at 3KBps outbound
static int MIN_OUTBOUND_BANDWIDTH_PEAK
          For now, until there is some tuning and safe throttling, we set the floor at a 3KBps during burst
static String PROP_INBOUND_BANDWIDTH
           
static String PROP_INBOUND_BANDWIDTH_PEAK
           
static String PROP_INBOUND_BURST_BANDWIDTH
           
static String PROP_OUTBOUND_BANDWIDTH
           
static String PROP_OUTBOUND_BANDWIDTH_PEAK
           
static String PROP_OUTBOUND_BURST_BANDWIDTH
           
 
Constructor Summary
FIFOBandwidthRefiller(I2PAppContext context, FIFOBandwidthLimiter limiter)
           
 
Method Summary
(package private)  int getCurrentParticipatingBandwidth()
          Out bandwidth.
(package private)  int getInboundBurstKBytesPerSecond()
           
(package private)  int getInboundKBytesPerSecond()
           
(package private)  int getOutboundBurstKBytesPerSecond()
           
(package private)  int getOutboundKBytesPerSecond()
           
(package private)  void incrementParticipatingMessageBytes(int size)
          We sent a message.
(package private)  void reinitialize()
           
 void run()
           
(package private)  void shutdown()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROP_INBOUND_BANDWIDTH

public static final String PROP_INBOUND_BANDWIDTH
See Also:
Constant Field Values

PROP_OUTBOUND_BANDWIDTH

public static final String PROP_OUTBOUND_BANDWIDTH
See Also:
Constant Field Values

PROP_INBOUND_BURST_BANDWIDTH

public static final String PROP_INBOUND_BURST_BANDWIDTH
See Also:
Constant Field Values

PROP_OUTBOUND_BURST_BANDWIDTH

public static final String PROP_OUTBOUND_BURST_BANDWIDTH
See Also:
Constant Field Values

PROP_INBOUND_BANDWIDTH_PEAK

public static final String PROP_INBOUND_BANDWIDTH_PEAK
See Also:
Constant Field Values

PROP_OUTBOUND_BANDWIDTH_PEAK

public static final String PROP_OUTBOUND_BANDWIDTH_PEAK
See Also:
Constant Field Values

DEFAULT_INBOUND_BANDWIDTH

public static final int DEFAULT_INBOUND_BANDWIDTH
See Also:
Constant Field Values

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:
Constant Field Values

DEFAULT_INBOUND_BURST_BANDWIDTH

public static final int DEFAULT_INBOUND_BURST_BANDWIDTH
See Also:
Constant Field Values

DEFAULT_OUTBOUND_BURST_BANDWIDTH

public static final int DEFAULT_OUTBOUND_BURST_BANDWIDTH
See Also:
Constant Field Values

DEFAULT_BURST_SECONDS

public static final int DEFAULT_BURST_SECONDS
See Also:
Constant Field Values

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 3KBps inbound

See Also:
Constant Field Values

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 3KBps outbound

See Also:
Constant Field Values

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 a 3KBps during burst

See Also:
Constant Field Values

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 a 3KBps during burst

See Also:
Constant Field Values
Constructor Detail

FIFOBandwidthRefiller

FIFOBandwidthRefiller(I2PAppContext context,
                      FIFOBandwidthLimiter limiter)
Method Detail

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

void incrementParticipatingMessageBytes(int size)
We sent a message.

Parameters:
size - bytes
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