org.apache.qpid.junit.extensions
Interface Throttle

All Known Implementing Classes:
BaseThrottle, BatchedThrottle, SleepThrottle

public interface Throttle

Throttle is an interface that supplies a throttle() method, that can only be called at the rate specified in a call to the setRate(float) method. This can be used to restict processing to run at a certain number of operations per second.

Throttle also supplies a method to check the throttle rate, without waiting. This could be used to update a user interface every time an event occurs, but only up to a maximum rate. For example, as elements are added to a list, a count of elements is updated for the user to see, but only up to a maximum rate of ten updates a second, as updating faster than that slows the processing of element-by-element additions to the list unnecessarily.

CRC Card
Responsibilities
Accept throttling rate in operations per second.
Inject short pauses to fill-out processing cycles to a specified rate.
Check against a throttle speed without waiting.


Method Summary
 boolean checkThrottle()
          Checks but does not enforce the throttle rate.
 void setRate(float hertz)
          Specifies the throttling rate in operations per second.
 void throttle()
          This method can only be called at the rate set by the setRate(float) method, if it is called faster than this it will inject short pauses to restrict the call rate to that rate.
 

Method Detail

setRate

void setRate(float hertz)
Specifies the throttling rate in operations per second. This must be called with with a value, the inverse of which is a measurement in nano seconds, such that the number of nano seconds do not overflow a long integer. The value must also be larger than zero.

Parameters:
hertz - The throttling rate in cycles per second.

throttle

void throttle()
This method can only be called at the rate set by the setRate(float) method, if it is called faster than this it will inject short pauses to restrict the call rate to that rate.

If the thread executing this method is interrupted, it must ensure that the threads interrupt thread remains set upon exit from the method. This method does not expose InterruptedException, to indicate interruption of the throttle during a timed wait. It may be changed so that it does.


checkThrottle

boolean checkThrottle()
Checks but does not enforce the throttle rate. When this method is called, it checks if a length of time greater than that equal to the inverse of the throttling rate has passed since it was last called and returned true

Returns:
true if a length of time greater than that equal to the inverse of the throttling rate has passed since this method was last called and returned true, false otherwise. The very first time this method is called on a throttle, it returns true as the base case to the above self-referential definition.


Licensed to the Apache Software Foundation