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