saluki_core/components/forwarders/
context.rs1use crate::accounting::ComponentRegistry;
2use crate::health::Health;
3use crate::{
4 components::{ComponentContext, ComponentSpawner},
5 topology::{PayloadsConsumer, TopologyContext},
6};
7
8pub struct ForwarderContext {
10 topology_context: TopologyContext,
11 component_context: ComponentContext,
12 component_registry: ComponentRegistry,
13 health_handle: Option<Health>,
14 consumer: PayloadsConsumer,
15 spawner: ComponentSpawner,
16}
17
18impl ForwarderContext {
19 pub fn new(
21 topology_context: &TopologyContext, component_context: &ComponentContext,
22 component_registry: ComponentRegistry, health_handle: Health, consumer: PayloadsConsumer,
23 spawner: ComponentSpawner,
24 ) -> Self {
25 Self {
26 topology_context: topology_context.clone(),
27 component_context: component_context.clone(),
28 component_registry,
29 health_handle: Some(health_handle),
30 consumer,
31 spawner,
32 }
33 }
34
35 pub fn take_health_handle(&mut self) -> Health {
41 self.health_handle.take().expect("health handle already taken")
42 }
43
44 pub fn topology_context(&self) -> &TopologyContext {
46 &self.topology_context
47 }
48
49 pub fn component_context(&self) -> &ComponentContext {
51 &self.component_context
52 }
53
54 pub fn component_registry(&mut self) -> &ComponentRegistry {
56 &self.component_registry
57 }
58
59 pub fn payloads(&mut self) -> &mut PayloadsConsumer {
61 &mut self.consumer
62 }
63
64 pub fn spawner(&self) -> &ComponentSpawner {
69 &self.spawner
70 }
71}