| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Keiro.Router.Selection
Description
Closed runtime semantics for bounded declarative router selection.
Synopsis
- data RecipientLimit
- mkRecipientLimit :: Natural -> Either RouterSelectionFailure RecipientLimit
- recipientLimitValue :: RecipientLimit -> Natural
- newtype SelectionIdentity = SelectionIdentity Text
- data SelectionVersion
- mkSelectionVersion :: Natural -> Either RouterSelectionFailure SelectionVersion
- selectionVersionValue :: SelectionVersion -> Natural
- newtype SelectionFingerprint = SelectionFingerprint Text
- data SelectionOrder = OrderByTargetStream
- data SelectionDedupe = DedupeByTargetStream
- data RedeliveryPolicy = StableUnion
- data PartialDispatchPolicy = RetainSuccesses
- data EmptySelectionPolicy
- data SelectionFailurePolicy
- data RouterSelectionContract = RouterSelectionContract {
- identity :: !SelectionIdentity
- version :: !SelectionVersion
- fingerprint :: !SelectionFingerprint
- limit :: !RecipientLimit
- order :: !SelectionOrder
- dedupe :: !SelectionDedupe
- emptyPolicy :: !EmptySelectionPolicy
- failurePolicy :: !SelectionFailurePolicy
- redeliveryPolicy :: !RedeliveryPolicy
- partialPolicy :: !PartialDispatchPolicy
- data RouterSelectionFailure
- normalizeRecipients :: Eq targetCi => RecipientLimit -> [PMCommand targetCi] -> Either RouterSelectionFailure [PMCommand targetCi]
- emptySelectionDeadLetterReason :: RouterSelectionContract -> DeadLetterReason
- selectionFailureDeadLetterReason :: RouterSelectionContract -> RouterSelectionFailure -> DeadLetterReason
Documentation
data RecipientLimit Source #
A positive post-deduplication recipient bound.
Instances
newtype SelectionIdentity Source #
Stable operator-facing identity for one declarative selection contract.
Constructors
| SelectionIdentity Text |
Instances
| Generic SelectionIdentity Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: SelectionIdentity -> Rep SelectionIdentity x # to :: Rep SelectionIdentity x -> SelectionIdentity # | |||||
| Show SelectionIdentity Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> SelectionIdentity -> ShowS # show :: SelectionIdentity -> String # showList :: [SelectionIdentity] -> ShowS # | |||||
| Eq SelectionIdentity Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: SelectionIdentity -> SelectionIdentity -> Bool # (/=) :: SelectionIdentity -> SelectionIdentity -> Bool # | |||||
| Ord SelectionIdentity Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: SelectionIdentity -> SelectionIdentity -> Ordering # (<) :: SelectionIdentity -> SelectionIdentity -> Bool # (<=) :: SelectionIdentity -> SelectionIdentity -> Bool # (>) :: SelectionIdentity -> SelectionIdentity -> Bool # (>=) :: SelectionIdentity -> SelectionIdentity -> Bool # max :: SelectionIdentity -> SelectionIdentity -> SelectionIdentity # min :: SelectionIdentity -> SelectionIdentity -> SelectionIdentity # | |||||
| type Rep SelectionIdentity Source # | |||||
Defined in Keiro.Router.Selection type Rep SelectionIdentity = D1 ('MetaData "SelectionIdentity" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'True) (C1 ('MetaCons "SelectionIdentity" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) | |||||
data SelectionVersion Source #
Positive author-controlled semantic edition.
Instances
| Generic SelectionVersion Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: SelectionVersion -> Rep SelectionVersion x # to :: Rep SelectionVersion x -> SelectionVersion # | |||||
| Show SelectionVersion Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> SelectionVersion -> ShowS # show :: SelectionVersion -> String # showList :: [SelectionVersion] -> ShowS # | |||||
| Eq SelectionVersion Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: SelectionVersion -> SelectionVersion -> Bool # (/=) :: SelectionVersion -> SelectionVersion -> Bool # | |||||
| Ord SelectionVersion Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: SelectionVersion -> SelectionVersion -> Ordering # (<) :: SelectionVersion -> SelectionVersion -> Bool # (<=) :: SelectionVersion -> SelectionVersion -> Bool # (>) :: SelectionVersion -> SelectionVersion -> Bool # (>=) :: SelectionVersion -> SelectionVersion -> Bool # max :: SelectionVersion -> SelectionVersion -> SelectionVersion # min :: SelectionVersion -> SelectionVersion -> SelectionVersion # | |||||
| type Rep SelectionVersion Source # | |||||
Defined in Keiro.Router.Selection type Rep SelectionVersion = D1 ('MetaData "SelectionVersion" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'True) (C1 ('MetaCons "SelectionVersion" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural))) | |||||
newtype SelectionFingerprint Source #
Lowercase hexadecimal digest of checked selection semantics.
Constructors
| SelectionFingerprint Text |
Instances
| Generic SelectionFingerprint Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: SelectionFingerprint -> Rep SelectionFingerprint x # to :: Rep SelectionFingerprint x -> SelectionFingerprint # | |||||
| Show SelectionFingerprint Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> SelectionFingerprint -> ShowS # show :: SelectionFingerprint -> String # showList :: [SelectionFingerprint] -> ShowS # | |||||
| Eq SelectionFingerprint Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: SelectionFingerprint -> SelectionFingerprint -> Bool # (/=) :: SelectionFingerprint -> SelectionFingerprint -> Bool # | |||||
| Ord SelectionFingerprint Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: SelectionFingerprint -> SelectionFingerprint -> Ordering # (<) :: SelectionFingerprint -> SelectionFingerprint -> Bool # (<=) :: SelectionFingerprint -> SelectionFingerprint -> Bool # (>) :: SelectionFingerprint -> SelectionFingerprint -> Bool # (>=) :: SelectionFingerprint -> SelectionFingerprint -> Bool # max :: SelectionFingerprint -> SelectionFingerprint -> SelectionFingerprint # min :: SelectionFingerprint -> SelectionFingerprint -> SelectionFingerprint # | |||||
| type Rep SelectionFingerprint Source # | |||||
Defined in Keiro.Router.Selection type Rep SelectionFingerprint = D1 ('MetaData "SelectionFingerprint" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'True) (C1 ('MetaCons "SelectionFingerprint" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) | |||||
data SelectionOrder Source #
Constructors
| OrderByTargetStream |
Instances
| Generic SelectionOrder Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: SelectionOrder -> Rep SelectionOrder x # to :: Rep SelectionOrder x -> SelectionOrder # | |||||
| Show SelectionOrder Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> SelectionOrder -> ShowS # show :: SelectionOrder -> String # showList :: [SelectionOrder] -> ShowS # | |||||
| Eq SelectionOrder Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: SelectionOrder -> SelectionOrder -> Bool # (/=) :: SelectionOrder -> SelectionOrder -> Bool # | |||||
| Ord SelectionOrder Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: SelectionOrder -> SelectionOrder -> Ordering # (<) :: SelectionOrder -> SelectionOrder -> Bool # (<=) :: SelectionOrder -> SelectionOrder -> Bool # (>) :: SelectionOrder -> SelectionOrder -> Bool # (>=) :: SelectionOrder -> SelectionOrder -> Bool # max :: SelectionOrder -> SelectionOrder -> SelectionOrder # min :: SelectionOrder -> SelectionOrder -> SelectionOrder # | |||||
| type Rep SelectionOrder Source # | |||||
data SelectionDedupe Source #
Constructors
| DedupeByTargetStream |
Instances
| Generic SelectionDedupe Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: SelectionDedupe -> Rep SelectionDedupe x # to :: Rep SelectionDedupe x -> SelectionDedupe # | |||||
| Show SelectionDedupe Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> SelectionDedupe -> ShowS # show :: SelectionDedupe -> String # showList :: [SelectionDedupe] -> ShowS # | |||||
| Eq SelectionDedupe Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: SelectionDedupe -> SelectionDedupe -> Bool # (/=) :: SelectionDedupe -> SelectionDedupe -> Bool # | |||||
| Ord SelectionDedupe Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: SelectionDedupe -> SelectionDedupe -> Ordering # (<) :: SelectionDedupe -> SelectionDedupe -> Bool # (<=) :: SelectionDedupe -> SelectionDedupe -> Bool # (>) :: SelectionDedupe -> SelectionDedupe -> Bool # (>=) :: SelectionDedupe -> SelectionDedupe -> Bool # max :: SelectionDedupe -> SelectionDedupe -> SelectionDedupe # min :: SelectionDedupe -> SelectionDedupe -> SelectionDedupe # | |||||
| type Rep SelectionDedupe Source # | |||||
data RedeliveryPolicy Source #
Constructors
| StableUnion |
Instances
| Generic RedeliveryPolicy Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: RedeliveryPolicy -> Rep RedeliveryPolicy x # to :: Rep RedeliveryPolicy x -> RedeliveryPolicy # | |||||
| Show RedeliveryPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> RedeliveryPolicy -> ShowS # show :: RedeliveryPolicy -> String # showList :: [RedeliveryPolicy] -> ShowS # | |||||
| Eq RedeliveryPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: RedeliveryPolicy -> RedeliveryPolicy -> Bool # (/=) :: RedeliveryPolicy -> RedeliveryPolicy -> Bool # | |||||
| Ord RedeliveryPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: RedeliveryPolicy -> RedeliveryPolicy -> Ordering # (<) :: RedeliveryPolicy -> RedeliveryPolicy -> Bool # (<=) :: RedeliveryPolicy -> RedeliveryPolicy -> Bool # (>) :: RedeliveryPolicy -> RedeliveryPolicy -> Bool # (>=) :: RedeliveryPolicy -> RedeliveryPolicy -> Bool # max :: RedeliveryPolicy -> RedeliveryPolicy -> RedeliveryPolicy # min :: RedeliveryPolicy -> RedeliveryPolicy -> RedeliveryPolicy # | |||||
| type Rep RedeliveryPolicy Source # | |||||
data PartialDispatchPolicy Source #
Constructors
| RetainSuccesses |
Instances
| Generic PartialDispatchPolicy Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: PartialDispatchPolicy -> Rep PartialDispatchPolicy x # to :: Rep PartialDispatchPolicy x -> PartialDispatchPolicy # | |||||
| Show PartialDispatchPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> PartialDispatchPolicy -> ShowS # show :: PartialDispatchPolicy -> String # showList :: [PartialDispatchPolicy] -> ShowS # | |||||
| Eq PartialDispatchPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: PartialDispatchPolicy -> PartialDispatchPolicy -> Bool # (/=) :: PartialDispatchPolicy -> PartialDispatchPolicy -> Bool # | |||||
| Ord PartialDispatchPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: PartialDispatchPolicy -> PartialDispatchPolicy -> Ordering # (<) :: PartialDispatchPolicy -> PartialDispatchPolicy -> Bool # (<=) :: PartialDispatchPolicy -> PartialDispatchPolicy -> Bool # (>) :: PartialDispatchPolicy -> PartialDispatchPolicy -> Bool # (>=) :: PartialDispatchPolicy -> PartialDispatchPolicy -> Bool # max :: PartialDispatchPolicy -> PartialDispatchPolicy -> PartialDispatchPolicy # min :: PartialDispatchPolicy -> PartialDispatchPolicy -> PartialDispatchPolicy # | |||||
| type Rep PartialDispatchPolicy Source # | |||||
data EmptySelectionPolicy Source #
Constructors
| EmptyAck | |
| EmptyRetry | |
| EmptyDeadLetter | |
| EmptyHalt |
Instances
| Generic EmptySelectionPolicy Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: EmptySelectionPolicy -> Rep EmptySelectionPolicy x # to :: Rep EmptySelectionPolicy x -> EmptySelectionPolicy # | |||||
| Show EmptySelectionPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> EmptySelectionPolicy -> ShowS # show :: EmptySelectionPolicy -> String # showList :: [EmptySelectionPolicy] -> ShowS # | |||||
| Eq EmptySelectionPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: EmptySelectionPolicy -> EmptySelectionPolicy -> Bool # (/=) :: EmptySelectionPolicy -> EmptySelectionPolicy -> Bool # | |||||
| Ord EmptySelectionPolicy Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: EmptySelectionPolicy -> EmptySelectionPolicy -> Ordering # (<) :: EmptySelectionPolicy -> EmptySelectionPolicy -> Bool # (<=) :: EmptySelectionPolicy -> EmptySelectionPolicy -> Bool # (>) :: EmptySelectionPolicy -> EmptySelectionPolicy -> Bool # (>=) :: EmptySelectionPolicy -> EmptySelectionPolicy -> Bool # max :: EmptySelectionPolicy -> EmptySelectionPolicy -> EmptySelectionPolicy # min :: EmptySelectionPolicy -> EmptySelectionPolicy -> EmptySelectionPolicy # | |||||
| type Rep EmptySelectionPolicy Source # | |||||
Defined in Keiro.Router.Selection type Rep EmptySelectionPolicy = D1 ('MetaData "EmptySelectionPolicy" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) ((C1 ('MetaCons "EmptyAck" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyRetry" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "EmptyDeadLetter" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EmptyHalt" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
data SelectionFailurePolicy Source #
Constructors
| FailureRetry | |
| FailureDeadLetter | |
| FailureHalt |
Instances
| Generic SelectionFailurePolicy Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: SelectionFailurePolicy -> Rep SelectionFailurePolicy x # to :: Rep SelectionFailurePolicy x -> SelectionFailurePolicy # | |||||
| Show SelectionFailurePolicy Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> SelectionFailurePolicy -> ShowS # show :: SelectionFailurePolicy -> String # showList :: [SelectionFailurePolicy] -> ShowS # | |||||
| Eq SelectionFailurePolicy Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: SelectionFailurePolicy -> SelectionFailurePolicy -> Bool # (/=) :: SelectionFailurePolicy -> SelectionFailurePolicy -> Bool # | |||||
| Ord SelectionFailurePolicy Source # | |||||
Defined in Keiro.Router.Selection Methods compare :: SelectionFailurePolicy -> SelectionFailurePolicy -> Ordering # (<) :: SelectionFailurePolicy -> SelectionFailurePolicy -> Bool # (<=) :: SelectionFailurePolicy -> SelectionFailurePolicy -> Bool # (>) :: SelectionFailurePolicy -> SelectionFailurePolicy -> Bool # (>=) :: SelectionFailurePolicy -> SelectionFailurePolicy -> Bool # max :: SelectionFailurePolicy -> SelectionFailurePolicy -> SelectionFailurePolicy # min :: SelectionFailurePolicy -> SelectionFailurePolicy -> SelectionFailurePolicy # | |||||
| type Rep SelectionFailurePolicy Source # | |||||
Defined in Keiro.Router.Selection type Rep SelectionFailurePolicy = D1 ('MetaData "SelectionFailurePolicy" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "FailureRetry" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FailureDeadLetter" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FailureHalt" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
data RouterSelectionContract Source #
Constructors
| RouterSelectionContract | |
Fields
| |
Instances
| Generic RouterSelectionContract Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: RouterSelectionContract -> Rep RouterSelectionContract x # to :: Rep RouterSelectionContract x -> RouterSelectionContract # | |||||
| Show RouterSelectionContract Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> RouterSelectionContract -> ShowS # show :: RouterSelectionContract -> String # showList :: [RouterSelectionContract] -> ShowS # | |||||
| Eq RouterSelectionContract Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: RouterSelectionContract -> RouterSelectionContract -> Bool # (/=) :: RouterSelectionContract -> RouterSelectionContract -> Bool # | |||||
| type Rep RouterSelectionContract Source # | |||||
Defined in Keiro.Router.Selection type Rep RouterSelectionContract = D1 ('MetaData "RouterSelectionContract" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "RouterSelectionContract" 'PrefixI 'True) (((S1 ('MetaSel ('Just "identity") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SelectionIdentity) :*: S1 ('MetaSel ('Just "version") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SelectionVersion)) :*: (S1 ('MetaSel ('Just "fingerprint") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SelectionFingerprint) :*: (S1 ('MetaSel ('Just "limit") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RecipientLimit) :*: S1 ('MetaSel ('Just "order") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SelectionOrder)))) :*: ((S1 ('MetaSel ('Just "dedupe") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SelectionDedupe) :*: S1 ('MetaSel ('Just "emptyPolicy") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 EmptySelectionPolicy)) :*: (S1 ('MetaSel ('Just "failurePolicy") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SelectionFailurePolicy) :*: (S1 ('MetaSel ('Just "redeliveryPolicy") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RedeliveryPolicy) :*: S1 ('MetaSel ('Just "partialPolicy") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 PartialDispatchPolicy)))))) | |||||
data RouterSelectionFailure Source #
Constructors
| SelectionQueryFailed !Text | |
| SelectionEvaluationFailed !Text | |
| SelectionConflictingCommands !StreamName | |
| SelectionRecipientOverflow !RecipientLimit !Natural |
Instances
| Generic RouterSelectionFailure Source # | |||||
Defined in Keiro.Router.Selection Associated Types
Methods from :: RouterSelectionFailure -> Rep RouterSelectionFailure x # to :: Rep RouterSelectionFailure x -> RouterSelectionFailure # | |||||
| Show RouterSelectionFailure Source # | |||||
Defined in Keiro.Router.Selection Methods showsPrec :: Int -> RouterSelectionFailure -> ShowS # show :: RouterSelectionFailure -> String # showList :: [RouterSelectionFailure] -> ShowS # | |||||
| Eq RouterSelectionFailure Source # | |||||
Defined in Keiro.Router.Selection Methods (==) :: RouterSelectionFailure -> RouterSelectionFailure -> Bool # (/=) :: RouterSelectionFailure -> RouterSelectionFailure -> Bool # | |||||
| type Rep RouterSelectionFailure Source # | |||||
Defined in Keiro.Router.Selection type Rep RouterSelectionFailure = D1 ('MetaData "RouterSelectionFailure" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) ((C1 ('MetaCons "SelectionQueryFailed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "SelectionEvaluationFailed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text))) :+: (C1 ('MetaCons "SelectionConflictingCommands" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 StreamName)) :+: C1 ('MetaCons "SelectionRecipientOverflow" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RecipientLimit) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Natural)))) | |||||
normalizeRecipients :: Eq targetCi => RecipientLimit -> [PMCommand targetCi] -> Either RouterSelectionFailure [PMCommand targetCi] Source #
Sort by physical target stream, collapse exact duplicates, reject unequal commands for one target, and apply the positive cap after deduplication.