1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! Cluster-wide [`super::DomainEventBus`] backed by
//! [`atomr_cluster_tools::ClusterPubSub`].
//!
//! Gated on the `bus-cluster` feature. The user supplies a
//! [`atomr_cluster_tools::MediatorTransport`] (the concrete
//! cross-process delivery mechanism) plus a typed event codec, and
//! the pattern wires up local fan-out + remote forwarding.
//!
//! ## Wiring
//!
//! ```ignore
//! let local = DistributedPubSub::new();
//! let cluster = ClusterPubSub::new(local.clone(), "node-a", transport);
//! let bus = DomainEventBus::<MyEvent>::builder()
//! .name("orders")
//! .cluster(local, cluster)
//! .topic("orders")
//! .type_id("MyEvent")
//! .codec(|e| bincode::encode(e), |b| bincode::decode(b))
//! .build()
//! .materialize(&system).await?;
//! ```
use Arc;
use ;
pub type EventEncoder<E> = ;
pub type EventDecoder<E> = ;
/// Bundled cluster wiring. Hold inside the bus topology when the
/// user opts into clustering.
pub