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