saluki_core/topology/
mod.rs1use std::num::NonZeroUsize;
4
5use memory_accounting::ComponentRegistry;
6
7use crate::data_model::payload::Payload;
8use crate::topology::interconnect::FixedSizeEventBuffer;
9
10mod blueprint;
11pub use self::blueprint::{BlueprintError, TopologyBlueprint};
12
13mod built;
14pub use self::built::BuiltTopology;
15
16mod context;
17pub use self::context::TopologyContext;
18
19mod graph;
20
21mod ids;
22pub use self::ids::*;
23
24pub mod interconnect;
25use self::interconnect::{Consumer, Dispatcher};
26
27mod running;
28pub use self::running::RunningTopology;
29
30pub mod shutdown;
31
32#[cfg(test)]
33pub(super) mod test_util;
34
35const DEFAULT_EVENTS_BUFFER_CAPACITY: usize = 1024;
37const DEFAULT_INTERCONNECT_CAPACITY: NonZeroUsize = NonZeroUsize::new(128).unwrap();
38
39pub type EventsBuffer = FixedSizeEventBuffer<DEFAULT_EVENTS_BUFFER_CAPACITY>;
43
44pub type EventsDispatcher = Dispatcher<EventsBuffer>;
46
47pub type EventsConsumer = Consumer<EventsBuffer>;
49
50pub type PayloadsBuffer = Payload;
52
53pub type PayloadsDispatcher = Dispatcher<PayloadsBuffer>;
55
56pub type PayloadsConsumer = Consumer<PayloadsBuffer>;
58
59pub(super) struct RegisteredComponent<T> {
60 component: T,
61 component_registry: ComponentRegistry,
62}
63
64impl<T> RegisteredComponent<T> {
65 fn new(component: T, component_registry: ComponentRegistry) -> Self {
66 Self {
67 component,
68 component_registry,
69 }
70 }
71 fn into_parts(self) -> (T, ComponentRegistry) {
72 (self.component, self.component_registry)
73 }
74}