Class RateLimiterBase

java.lang.Object
org.apache.catalina.util.RateLimiterBase
All Implemented Interfaces:
RateLimiter
Direct Known Subclasses:
ExactRateLimiter, FastRateLimiter

public abstract class RateLimiterBase extends Object implements RateLimiter
Base implementation of RateLimiter, provides runtime data maintenance mechanism monitor.
  • Constructor Details

    • RateLimiterBase

      public RateLimiterBase()
  • Method Details

    • getDefaultPolicyName

      protected abstract String getDefaultPolicyName()
      If policy name has not been specified, the first call of getPolicyName() returns an auto-generated policy name using the default policy name as prefix and followed by auto-increase index.
      Returns:
      default policy name, as a prefix of auto-generated policy name.
    • getPolicyName

      public String getPolicyName()
      Specified by:
      getPolicyName in interface RateLimiter
      Returns:
      name of RateLimit policy
    • setPolicyName

      public void setPolicyName(String name)
      Description copied from interface: RateLimiter
      Sets the policy name, otherwise an auto-generated name is used.
      Specified by:
      setPolicyName in interface RateLimiter
      Parameters:
      name - of rate limit policy
    • getDuration

      public int getDuration()
      Specified by:
      getDuration in interface RateLimiter
      Returns:
      the actual duration of a time window in seconds
    • setDuration

      public void setDuration(int duration)
      Description copied from interface: RateLimiter
      Sets the configured duration value in seconds.
      Specified by:
      setDuration in interface RateLimiter
      Parameters:
      duration - The duration of the time window in seconds
    • getRequests

      public int getRequests()
      Specified by:
      getRequests in interface RateLimiter
      Returns:
      the maximum number of requests allowed per time window
    • setRequests

      public void setRequests(int requests)
      Description copied from interface: RateLimiter
      Sets the configured number of requests allowed per time window.
      Specified by:
      setRequests in interface RateLimiter
      Parameters:
      requests - The number of requests per time window
    • increment

      public int increment(String identifier)
      Description copied from interface: RateLimiter
      Increments the number of requests by the given identifier in the current time window.
      Specified by:
      increment in interface RateLimiter
      Parameters:
      identifier - the identifier for which the number of associated requests should be incremented
      Returns:
      the new value after incrementing
    • destroy

      public void destroy()
      Description copied from interface: RateLimiter
      Cleanup no longer needed resources.
      Specified by:
      destroy in interface RateLimiter
    • newCounterInstance

      protected abstract TimeBucketCounterBase newCounterInstance(int duration, ScheduledExecutorService utilityExecutor)
      Instantiate an instance of TimeBucketCounterBase for specific time bucket size. Concrete classes determine its counter policy by returning different implementation instances.
      Parameters:
      duration - size of each time bucket in seconds
      utilityExecutor - the executor
      Returns:
      counter instance of TimeBucketCounterBase
    • setFilterConfig

      public void setFilterConfig(FilterConfig filterConfig)
      Description copied from interface: RateLimiter
      Pass the FilterConfig to configure the filter.
      Specified by:
      setFilterConfig in interface RateLimiter
      Parameters:
      filterConfig - The FilterConfig used to configure the associated filter
    • getBucketCounter

      public TimeBucketCounterBase getBucketCounter()
      Returns the internal instance of TimeBucketCounterBase.
      Returns:
      instance of TimeBucketCounterBase