saluki_env/workload/
mod.rs1use saluki_context::{
10 origin::{OriginTagCardinality, RawOrigin},
11 tags::SharedTagSet,
12};
13
14pub mod aggregator;
15pub mod collectors;
16
17pub mod entity;
18pub use self::entity::EntityId;
19
20mod helpers;
21mod metadata;
22pub use self::metadata::{MetadataAction, MetadataOperation};
23
24mod on_demand_pid;
25pub use self::on_demand_pid::OnDemandPIDResolver;
26
27pub mod origin;
28use self::origin::ResolvedOrigin;
29
30pub mod providers;
31
32pub mod stores;
33
34pub trait CaptureEntityResolver {
40 fn resolve_container_entity_for_live_pid(&self, process_id: u32) -> Option<EntityId>;
42}
43
44impl<T> CaptureEntityResolver for Option<T>
45where
46 T: CaptureEntityResolver,
47{
48 fn resolve_container_entity_for_live_pid(&self, process_id: u32) -> Option<EntityId> {
49 match self.as_ref() {
50 Some(resolver) => resolver.resolve_container_entity_for_live_pid(process_id),
51 None => None,
52 }
53 }
54}
55
56pub trait WorkloadProvider {
58 fn get_tags_for_entity(&self, entity_id: &EntityId, cardinality: OriginTagCardinality) -> Option<SharedTagSet>;
66
67 fn get_self_container_tags(&self) -> Option<SharedTagSet> {
71 None
72 }
73
74 fn get_resolved_origin(&self, origin: RawOrigin<'_>) -> Option<ResolvedOrigin>;
79}
80
81impl<T> WorkloadProvider for Option<T>
82where
83 T: WorkloadProvider,
84{
85 fn get_tags_for_entity(&self, entity_id: &EntityId, cardinality: OriginTagCardinality) -> Option<SharedTagSet> {
86 match self.as_ref() {
87 Some(provider) => provider.get_tags_for_entity(entity_id, cardinality),
88 None => None,
89 }
90 }
91
92 fn get_self_container_tags(&self) -> Option<SharedTagSet> {
93 match self.as_ref() {
94 Some(provider) => provider.get_self_container_tags(),
95 None => None,
96 }
97 }
98
99 fn get_resolved_origin(&self, origin: RawOrigin<'_>) -> Option<ResolvedOrigin> {
100 match self.as_ref() {
101 Some(provider) => provider.get_resolved_origin(origin),
102 None => None,
103 }
104 }
105}