package com.limegroup.gnutella;
/**
* Defines the interface for any class wanting to track
* bandwidth. Typically a timer periodically calls {@link #measureBandwidth()},
* leaving other threads free to call {@link #getMeasuredBandwidth()}.
*/
public interface BandwidthTracker {
//TODO: you could have measureBandwidth take a time as an argument.
/**
* Measures the data throughput since the last call to <code>measureBandwidth</code>.
* This value can be read by calling <code>getMeasuredBandwidth</code>.
*/
public void measureBandwidth();
/**
* Returns the throughput of this in kilobytes/sec (KB/s) between the last
* two calls to <code>measureBandwidth</code>, or 0.0 if unknown.
*/
public float getMeasuredBandwidth() throws InsufficientDataException;
/**
* Returns the overall averaged bandwidth between
* all calls of <code>measureBandwidth</code>.
*/
public float getAverageBandwidth();
}