Skip to main content

behavior_actors/routing/
mod.rs

1//! Deterministic recipient selection and delivery-policy behaviors.
2//!
3//! Routing policies in this module select typed [`behavior::Recipient`]
4//! values. Endpoint resolution, mailbox admission, delivery, and physical
5//! backpressure remain runtime capabilities.
6
7/// Ordered target deliveries followed by ordered factual outcomes.
8///
9/// Routing templates use this product when these are their complete and
10/// semantically distinct effect lanes. Interpretation always exhausts
11/// `deliveries` before beginning `outcomes`.
12#[derive(behavior_macros::SendProduct)]
13pub struct DeliveryOutcomes<Deliveries, OutcomeSends> {
14    pub deliveries: Deliveries,
15    pub outcomes: OutcomeSends,
16}
17
18mod acknowledgements;
19mod buffer;
20mod circuit_breaker;
21mod correlator;
22mod deduplicator;
23mod order_gate;
24mod priority_queue;
25mod rate_limiter;
26mod router;
27mod sequencer;
28mod work_queue;
29
30pub use acknowledgements::{
31    AcknowledgementError, AcknowledgementInput, AcknowledgementMessage, AcknowledgementOutcome,
32    AcknowledgementRecord, AcknowledgementState, Acknowledgements,
33};
34pub use buffer::{
35    Buffer, BufferConfigError, BufferConfiguration, BufferMessage, BufferOutcome, BufferRejection,
36    BufferState, Buffered, OverflowPolicy,
37};
38pub use circuit_breaker::{
39    BreakerAttempt, BreakerCompletion, BreakerConfigError, BreakerError, BreakerMessage,
40    BreakerOutcome, BreakerPhase, BreakerRejection, BreakerSends, CircuitBreaker, ClosedPhase,
41    ProbePhase,
42};
43pub use correlator::{
44    CorrelationResult, CorrelationState, Correlator, CorrelatorError, CorrelatorMessage,
45};
46pub use deduplicator::{
47    Deduplicator, DeduplicatorConfigError, DeduplicatorMessage, DeduplicatorOutcome,
48    DeduplicatorState,
49};
50pub use order_gate::{OrderGate, OrderGateMessage, OrderGateOutcome, OrderGateState};
51pub use priority_queue::{
52    PriorityQueue, PriorityQueueConfigError, PriorityQueueMessage, PriorityQueueOutcome,
53    PriorityQueueRejection, PriorityQueueState,
54};
55pub use rate_limiter::{
56    RateLimitRejection, RateLimiter, RateLimiterConfigError, RateLimiterMessage,
57    RateLimiterOutcome, RateLimiterState, TokenCount,
58};
59pub use router::{
60    ConsistentHash, LeastLoaded, Load, LoadEvidence, LoadObservation, LoadVersion,
61    MemberEvidenceError, MemberToken, MemberTokenEvidence, MemberTokenObservation,
62    MemberTokenVersion, RendezvousHash, RoundRobin, RouteKey, Router, RouterError, RouterMessage,
63    RoutingObservationRejection, RoutingStrategy,
64};
65pub use sequencer::{Sequence, Sequencer, SequencerMessage, SequencerOutcome, SequencerState};
66pub use work_queue::{
67    WorkQueue, WorkQueueMessage, WorkQueueOutcome, WorkQueueRejection, WorkQueueSends,
68    WorkQueueState,
69};