saluki_core/data_model/payload/
metadata.rs1use std::any::Any;
2
3use anymap3::{CloneAny, Map};
4
5#[derive(Clone)]
10pub struct PayloadMetadata {
11 event_count: usize,
12 data_point_count: usize,
13 extensions: Map<dyn CloneAny + Send + Sync>,
14}
15
16impl PayloadMetadata {
17 pub fn from_event_count(event_count: usize) -> Self {
19 PayloadMetadata {
20 event_count,
21 data_point_count: 0,
22 extensions: Map::new(),
23 }
24 }
25
26 pub fn from_event_and_data_point_count(event_count: usize, data_point_count: usize) -> Self {
28 PayloadMetadata {
29 event_count,
30 data_point_count,
31 extensions: Map::new(),
32 }
33 }
34
35 pub fn event_count(&self) -> usize {
37 self.event_count
38 }
39
40 pub fn data_point_count(&self) -> usize {
42 self.data_point_count
43 }
44
45 pub fn get<T: Any + Clone + Send + Sync>(&self) -> Option<&T> {
47 self.extensions.get::<T>()
48 }
49
50 pub fn with<T: Any + Clone + Send + Sync>(mut self, value: T) -> Self {
52 self.extensions.insert(value);
53 self
54 }
55
56 pub fn set<T: Any + Clone + Send + Sync>(&mut self, value: T) {
58 self.extensions.insert(value);
59 }
60}