{-# LANGUAGE DuplicateRecordFields #-}
module Arbiter.Concurrency
(
HasConcurrency (..)
, ConcurrencyFor
, Selector
, noConcurrency
, concurrencyBy
, globalConcurrency
, chooseWhen
, concurrencyByCase
, RegistryConcurrencyPolicies
, ConcurrencyPolicy (..)
, concurrencyPolicy
, AdmissionPolicy (..)
, ConcurrencyKey (..)
, ConcurrencyPolicyView (..)
, ConcurrencyKeyView (..)
, ConcurrencyPolicyUpdate (..)
, updateConcurrencyPolicyOverrides
, setConcurrencyLimit
, clearConcurrencyLimit
, pruneConcurrencyKeys
, reconcileConcurrencyCounts
, reconcileConcurrencyCountsIfStale
, reconcileAndPruneConcurrency
, listConcurrencyPolicies
, listConcurrencyKeys
, getConcurrencyPolicy
, concurrencyPolicyExists
) where
import Arbiter.Core.Admission (AdmissionPolicy (..))
import Arbiter.Core.Concurrency.Spec
( ConcurrencyFor
, ConcurrencyKey (..)
, ConcurrencyPolicy (..)
, HasConcurrency (..)
, RegistryConcurrencyPolicies
, chooseWhen
, concurrencyBy
, concurrencyByCase
, concurrencyPolicy
, globalConcurrency
, noConcurrency
)
import Arbiter.Core.Concurrency.Stats
( ConcurrencyKeyView (..)
, ConcurrencyPolicyUpdate (..)
, ConcurrencyPolicyView (..)
)
import Arbiter.Core.HighLevel
( clearConcurrencyLimit
, concurrencyPolicyExists
, getConcurrencyPolicy
, listConcurrencyKeys
, listConcurrencyPolicies
, pruneConcurrencyKeys
, reconcileAndPruneConcurrency
, reconcileConcurrencyCounts
, reconcileConcurrencyCountsIfStale
, setConcurrencyLimit
, updateConcurrencyPolicyOverrides
)
import Arbiter.Core.Selector (Selector)