{-# LANGUAGE DuplicateRecordFields #-}
module Arbiter.RateLimit
(
HasRateLimit (..)
, RateLimitFor
, Selector
, noLimit
, limitBy
, globalLimit
, chooseWhen
, limitByCase
, RegistryRateLimitPolicies
, RateLimitPolicy (..)
, tokenBucket
, AdmissionPolicy (..)
, Durability (..)
, RateLimitKey (..)
, RateLimitPolicyView (..)
, RateLimitBucketView (..)
, RateLimitPolicyUpdate (..)
, addRateLimitTokens
, pruneRateLimitBuckets
, resetRateLimitBuckets
, listRateLimitPolicies
, listRateLimitBuckets
, updateRateLimitPolicyOverrides
, setRateLimit
, clearRateLimit
, getRateLimitPolicy
, rateLimitPolicyExists
) where
import Arbiter.Core.Admission (AdmissionPolicy (..))
import Arbiter.Core.HighLevel
( addRateLimitTokens
, clearRateLimit
, getRateLimitPolicy
, listRateLimitBuckets
, listRateLimitPolicies
, pruneRateLimitBuckets
, rateLimitPolicyExists
, resetRateLimitBuckets
, setRateLimit
, updateRateLimitPolicyOverrides
)
import Arbiter.Core.RateLimit.Spec
( Durability (..)
, HasRateLimit (..)
, RateLimitFor
, RateLimitKey (..)
, RateLimitPolicy (..)
, RegistryRateLimitPolicies
, chooseWhen
, globalLimit
, limitBy
, limitByCase
, noLimit
, tokenBucket
)
import Arbiter.Core.RateLimit.Stats
( RateLimitBucketView (..)
, RateLimitPolicyUpdate (..)
, RateLimitPolicyView (..)
)
import Arbiter.Core.Selector (Selector)