# Interface RateLimiter

All Known Implementing Classes:
  `ExactRateLimiter, FastRateLimiter, RateLimiterBase`

public interface RateLimiter
Defines the contract for a rate limiter that tracks and limits the number of requests per time window for a given identifier.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `destroy()`
  Cleanup no longer needed resources.
  `int`
  `getDuration()`
  Returns the actual duration of a time window in seconds.
  `default String`
  `getPolicy()`
  Returns the full representation of the current rate limit policy in the format defined by the IETF draft for RateLimit header fields.
  `String`
  `getPolicyName()`
  Returns the name of the rate limit policy.
  `default String`
  `getQuota(int requestCount)`
  Provide the quota header for this rate limit for a given request count within the current time window.
  `int`
  `getRequests()`
  Returns the maximum number of requests allowed per time window.
  `int`
  `increment(String identifier)`
  Increments the number of requests by the given identifier in the current time window.
  `void`
  `setDuration(int duration)`
  Sets the configured duration value in seconds.
  `void`
  `setFilterConfig(FilterConfig filterConfig)`
  Pass the FilterConfig to configure the filter.
  `void`
  `setPolicyName(String name)`
  Sets the policy name, otherwise an auto-generated name is used.
  `void`
  `setRequests(int requests)`
  Sets the configured number of requests allowed per time window.

- ## Method Details

  - ### getDuration

    int getDuration()
    Returns the actual duration of a time window in seconds.
    Returns:
      the duration in seconds

  - ### setDuration

    void setDuration(int duration)
    Sets the configured duration value in seconds.
    Parameters:
      `duration` - The duration of the time window in seconds

  - ### getRequests

    int getRequests()
    Returns the maximum number of requests allowed per time window.
    Returns:
      the maximum number of requests

  - ### setRequests

    void setRequests(int requests)
    Sets the configured number of requests allowed per time window.
    Parameters:
      `requests` - The number of requests per time window

  - ### increment

    int increment(String identifier)
    Increments the number of requests by the given identifier in the current time window.
    Parameters:
      `identifier` - the identifier for which the number of associated requests should be incremented
    Returns:
      the new value after incrementing

  - ### destroy

    void destroy()
    Cleanup no longer needed resources.

  - ### setFilterConfig

    void setFilterConfig(FilterConfig filterConfig)
    Pass the FilterConfig to configure the filter.
    Parameters:
      `filterConfig` - The FilterConfig used to configure the associated filter

  - ### getPolicyName

    String getPolicyName()
    Returns the name of the rate limit policy.
    Returns:
      the policy name

  - ### setPolicyName

    void setPolicyName(String name)
    Sets the policy name, otherwise an auto-generated name is used.
    Parameters:
      `name` - of rate limit policy

  - ### getPolicy

    default String getPolicy()
    Returns the full representation of the current rate limit policy in the format defined by the IETF draft for RateLimit header fields.
    Returns:
      the policy representation string
    See Also:
      - RateLimit header fields for HTTP (draft)

  - ### getQuota

    default String getQuota(int requestCount)
    Provide the quota header for this rate limit for a given request count within the current time window.
    Parameters:
      `requestCount` - The request count within the current time window
    Returns:
      the quota header for the given value of request count
    See Also:
      - RateLimit header fields for HTTP (draft)