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