Package akka.util

Class TokenBucket

  • Direct Known Subclasses:
    NanoTimeTokenBucket

    public abstract class TokenBucket
    extends java.lang.Object
    INTERNAL API
    • Constructor Summary

      Constructors 
      Constructor Description
      TokenBucket​(long capacity, long nanosBetweenTokens)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract long currentTime()
      The current time in nanos.
      void init()
      This method must be called before the token bucket can be used.
      long offer​(long cost)
      Call this (side-effecting) method whenever an element should be passed through the token-bucket.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • TokenBucket

        public TokenBucket​(long capacity,
                           long nanosBetweenTokens)
    • Method Detail

      • currentTime

        public abstract long currentTime()
        The current time in nanos. The returned value is monotonic, might wrap over and has no relationship with wall-clock.

        Returns:
        return the current time in nanos as a Long.
      • init

        public void init()
        This method must be called before the token bucket can be used.
      • offer

        public long offer​(long cost)
        Call this (side-effecting) method whenever an element should be passed through the token-bucket. This method will return the number of nanoseconds the element needs to be delayed to conform with the token bucket parameters. Returns zero if the element can be emitted immediately. The method does not handle overflow, if an element is to be delayed longer in nanoseconds than what can be represented as a positive Long then an undefined value is returned.

        If a non-zero value is returned, it is the responsibility of the caller to not call this method before the returned delay has been elapsed (but can be called later). This class does not check or protect against early calls.

        Parameters:
        cost - How many tokens the element costs. Can be larger than the capacity of the bucket.
        Returns: