Skip to main content

ranvier_runtime/
lib.rs

1#![allow(deprecated)]
2
3pub mod axon;
4pub mod cluster;
5pub mod distributed;
6pub mod persistence;
7pub mod replay;
8pub mod retry;
9pub mod testkit;
10
11pub mod prelude {
12    pub use crate::axon::{Axon, BoxFuture, ExecutionMode, SchematicExportRequest};
13    pub use crate::{InfallibleAxon, SimpleAxon, TypedAxon};
14    pub use crate::cluster::{ClusterManager, LeaderElection, LockBasedElection};
15    pub use crate::distributed::{
16        DistributedError, DistributedLock, DistributedStore, Guard, LockOptions,
17    };
18    pub use crate::persistence::{
19        CompensationAutoTrigger, CompensationContext, CompensationHandle, CompensationHook,
20        CompensationIdempotencyHandle, CompensationIdempotencyStore, CompensationRetryPolicy,
21        CompletionState, InMemoryCompensationIdempotencyStore, InMemoryPersistenceStore,
22        PersistedTrace, PersistenceAutoComplete, PersistenceEnvelope, PersistenceHandle,
23        PersistenceStore, PersistenceTraceId, ResumeCursor,
24    };
25    #[cfg(feature = "persistence-postgres")]
26    pub use crate::persistence::{PostgresCompensationIdempotencyStore, PostgresPersistenceStore};
27    #[cfg(feature = "persistence-redis")]
28    pub use crate::persistence::{RedisCompensationIdempotencyStore, RedisPersistenceStore};
29    pub use crate::replay::ReplayEngine;
30    pub use crate::retry::{BackoffStrategy, RetryPolicy};
31    pub use crate::testkit::AxonTestKit;
32}
33
34/// Axon with `String` error — the most common pattern for examples and prototyping.
35pub type SimpleAxon<In, Out, Res = ()> = Axon<In, Out, String, Res>;
36
37/// Axon with `RanvierError` — typed error categories without a custom enum.
38pub type TypedAxon<In, Out, Res = ()> = Axon<In, Out, ranvier_core::error::RanvierError, Res>;
39
40/// Axon with `Never` error — for pipelines that cannot fail.
41///
42/// Uses `ranvier_core::Never` instead of `std::convert::Infallible`
43/// because `Never` satisfies the `Serialize + DeserializeOwned` bounds
44/// required by `Axon`.
45pub type InfallibleAxon<In, Out, Res = ()> = Axon<In, Out, ranvier_core::Never, Res>;
46
47pub use axon::{Axon, SchematicExportRequest};
48pub use cluster::{ClusterManager, LeaderElection, LockBasedElection};
49pub use distributed::{DistributedError, DistributedLock, DistributedStore, Guard, LockOptions};
50pub use persistence::{
51    CompensationAutoTrigger, CompensationContext, CompensationHandle, CompensationHook,
52    CompensationIdempotencyHandle, CompensationIdempotencyStore, CompensationRetryPolicy,
53    CompletionState, InMemoryCompensationIdempotencyStore, InMemoryPersistenceStore,
54    PersistedTrace, PersistenceAutoComplete, PersistenceEnvelope, PersistenceHandle,
55    PersistenceStore, PersistenceTraceId, ResumeCursor,
56};
57#[cfg(feature = "persistence-postgres")]
58pub use persistence::{PostgresCompensationIdempotencyStore, PostgresPersistenceStore};
59#[cfg(feature = "persistence-redis")]
60pub use persistence::{RedisCompensationIdempotencyStore, RedisPersistenceStore};
61pub use replay::ReplayEngine;
62pub use retry::{BackoffStrategy, RetryPolicy};
63pub use testkit::AxonTestKit;