natskell-1.1.0.0: internal/Policy/Subscription/Types.hs
module Subscription.Types
( SubscribeConfig (..)
, SubscriptionKind (..)
, SubscriptionMeta (..)
, isOneShotSubscription
, isResumableSubscription
, tracksSubscriptionExpiry
, PendingLimits (..)
, defaultPendingLimits
) where
import Data.Time.Clock (NominalDiffTime)
import Types.Msg (Subject)
data SubscribeConfig = SubscribeConfig
{ expiry :: Maybe NominalDiffTime
, subscribeQueueGroup :: Maybe Subject
}
data SubscriptionKind = StandardSubscription | OneShotSubscription | RequestReplySubscription
deriving (Eq, Show)
data SubscriptionMeta = SubscriptionMeta
{ subject :: Subject
, queueGroup :: Maybe Subject
, kind :: SubscriptionKind
}
deriving (Eq, Show)
isOneShotSubscription :: SubscriptionMeta -> Bool
isOneShotSubscription meta =
case kind meta of
StandardSubscription -> False
OneShotSubscription -> True
RequestReplySubscription -> True
isResumableSubscription :: SubscriptionMeta -> Bool
isResumableSubscription meta = kind meta /= RequestReplySubscription
tracksSubscriptionExpiry :: SubscriptionMeta -> Bool
tracksSubscriptionExpiry meta = kind meta == OneShotSubscription
data PendingLimits = PendingLimits
{ pendingMessageLimit :: Int
, pendingByteLimit :: Int
}
deriving (Eq, Show)
defaultPendingLimits :: PendingLimits
defaultPendingLimits = PendingLimits
{ pendingMessageLimit = 65536
, pendingByteLimit = 64 * 1024 * 1024
}