Visitar URL original
Keiro.Router.Selection
keiro
Safe HaskellNone
LanguageGHC2024

Keiro.Router.Selection

Description

Closed runtime semantics for bounded declarative router selection.

Synopsis

Documentation

data RecipientLimit Source #

A positive post-deduplication recipient bound.

Instances

Instances details
Generic RecipientLimit Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep RecipientLimit 
Instance details

Defined in Keiro.Router.Selection

type Rep RecipientLimit = D1 ('MetaData "RecipientLimit" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'True) (C1 ('MetaCons "RecipientLimit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)))
Show RecipientLimit Source # 
Instance details

Defined in Keiro.Router.Selection

Eq RecipientLimit Source # 
Instance details

Defined in Keiro.Router.Selection

Ord RecipientLimit Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep RecipientLimit Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep RecipientLimit = D1 ('MetaData "RecipientLimit" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'True) (C1 ('MetaCons "RecipientLimit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)))

newtype SelectionIdentity Source #

Stable operator-facing identity for one declarative selection contract.

Constructors

SelectionIdentity Text 

Instances

Instances details
Generic SelectionIdentity Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep SelectionIdentity 
Instance details

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)))
Show SelectionIdentity Source # 
Instance details

Defined in Keiro.Router.Selection

Eq SelectionIdentity Source # 
Instance details

Defined in Keiro.Router.Selection

Ord SelectionIdentity Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionIdentity Source # 
Instance details

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

Instances details
Generic SelectionVersion Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep SelectionVersion 
Instance details

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)))
Show SelectionVersion Source # 
Instance details

Defined in Keiro.Router.Selection

Eq SelectionVersion Source # 
Instance details

Defined in Keiro.Router.Selection

Ord SelectionVersion Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionVersion Source # 
Instance details

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.

Instances

Instances details
Generic SelectionFingerprint Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep SelectionFingerprint 
Instance details

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)))
Show SelectionFingerprint Source # 
Instance details

Defined in Keiro.Router.Selection

Eq SelectionFingerprint Source # 
Instance details

Defined in Keiro.Router.Selection

Ord SelectionFingerprint Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionFingerprint Source # 
Instance details

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

Instances details
Generic SelectionOrder Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep SelectionOrder 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionOrder = D1 ('MetaData "SelectionOrder" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "OrderByTargetStream" 'PrefixI 'False) (U1 :: Type -> Type))
Show SelectionOrder Source # 
Instance details

Defined in Keiro.Router.Selection

Eq SelectionOrder Source # 
Instance details

Defined in Keiro.Router.Selection

Ord SelectionOrder Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionOrder Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionOrder = D1 ('MetaData "SelectionOrder" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "OrderByTargetStream" 'PrefixI 'False) (U1 :: Type -> Type))

data SelectionDedupe Source #

Constructors

DedupeByTargetStream 

Instances

Instances details
Generic SelectionDedupe Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep SelectionDedupe 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionDedupe = D1 ('MetaData "SelectionDedupe" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "DedupeByTargetStream" 'PrefixI 'False) (U1 :: Type -> Type))
Show SelectionDedupe Source # 
Instance details

Defined in Keiro.Router.Selection

Eq SelectionDedupe Source # 
Instance details

Defined in Keiro.Router.Selection

Ord SelectionDedupe Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionDedupe Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionDedupe = D1 ('MetaData "SelectionDedupe" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "DedupeByTargetStream" 'PrefixI 'False) (U1 :: Type -> Type))

data RedeliveryPolicy Source #

Constructors

StableUnion 

Instances

Instances details
Generic RedeliveryPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep RedeliveryPolicy 
Instance details

Defined in Keiro.Router.Selection

type Rep RedeliveryPolicy = D1 ('MetaData "RedeliveryPolicy" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "StableUnion" 'PrefixI 'False) (U1 :: Type -> Type))
Show RedeliveryPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Eq RedeliveryPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Ord RedeliveryPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep RedeliveryPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep RedeliveryPolicy = D1 ('MetaData "RedeliveryPolicy" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "StableUnion" 'PrefixI 'False) (U1 :: Type -> Type))

data PartialDispatchPolicy Source #

Constructors

RetainSuccesses 

Instances

Instances details
Generic PartialDispatchPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep PartialDispatchPolicy 
Instance details

Defined in Keiro.Router.Selection

type Rep PartialDispatchPolicy = D1 ('MetaData "PartialDispatchPolicy" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "RetainSuccesses" 'PrefixI 'False) (U1 :: Type -> Type))
Show PartialDispatchPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Eq PartialDispatchPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Ord PartialDispatchPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep PartialDispatchPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep PartialDispatchPolicy = D1 ('MetaData "PartialDispatchPolicy" "Keiro.Router.Selection" "keiro-0.24.0.0-inplace" 'False) (C1 ('MetaCons "RetainSuccesses" 'PrefixI 'False) (U1 :: Type -> Type))

data EmptySelectionPolicy Source #

Instances

Instances details
Generic EmptySelectionPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep EmptySelectionPolicy 
Instance details

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)))
Show EmptySelectionPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Eq EmptySelectionPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Ord EmptySelectionPolicy Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep EmptySelectionPolicy Source # 
Instance details

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 #

Instances

Instances details
Generic SelectionFailurePolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep SelectionFailurePolicy 
Instance details

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)))
Show SelectionFailurePolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Eq SelectionFailurePolicy Source # 
Instance details

Defined in Keiro.Router.Selection

Ord SelectionFailurePolicy Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep SelectionFailurePolicy Source # 
Instance details

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 #

Instances

Instances details
Generic RouterSelectionContract Source # 
Instance details

Defined in Keiro.Router.Selection

Show RouterSelectionContract Source # 
Instance details

Defined in Keiro.Router.Selection

Eq RouterSelectionContract Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep RouterSelectionContract Source # 
Instance details

Defined in Keiro.Router.Selection

data RouterSelectionFailure Source #

Instances

Instances details
Generic RouterSelectionFailure Source # 
Instance details

Defined in Keiro.Router.Selection

Associated Types

type Rep RouterSelectionFailure 
Instance details

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))))
Show RouterSelectionFailure Source # 
Instance details

Defined in Keiro.Router.Selection

Eq RouterSelectionFailure Source # 
Instance details

Defined in Keiro.Router.Selection

type Rep RouterSelectionFailure Source # 
Instance details

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.