package org.limewire.nio;
/**
* Defines the interface to interact with a {@link Throttle}. The listener
* hears/observes throttles which decouples the throttle from the listener.
* Therefore, the listener knows when the throttle bandwidth availability
* changes.
*
*/
public interface ThrottleListener {
/** Gets the attachment for the <code>Throttle</code> to recognize. */
Object getAttachment();
/** Notifies the listener that bandwidth is available and interest should be registered. */
boolean bandwidthAvailable();
/** Notifies the listener that bandwidth should be requested. */
void requestBandwidth();
/** Notifies the listener that bandwidth should be released. */
void releaseBandwidth();
/** Determines if the listener is still open. */
boolean isOpen();
}