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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
use crate::{sdk, sdk::trace::Sampler, trace::IdGenerator};
use std::sync::Arc;
pub fn config() -> Config {
Config::default()
}
#[derive(Debug)]
pub struct Config {
pub default_sampler: Box<dyn sdk::trace::ShouldSample>,
pub id_generator: Box<dyn IdGenerator>,
pub max_events_per_span: u32,
pub max_attributes_per_span: u32,
pub max_links_per_span: u32,
pub resource: Arc<sdk::Resource>,
}
impl Config {
pub fn with_default_sampler<T: sdk::trace::ShouldSample + 'static>(
mut self,
sampler: T,
) -> Self {
self.default_sampler = Box::new(sampler);
self
}
pub fn with_id_generator<T: IdGenerator + 'static>(mut self, id_generator: T) -> Self {
self.id_generator = Box::new(id_generator);
self
}
pub fn with_max_events_per_span(mut self, max_events: u32) -> Self {
self.max_events_per_span = max_events;
self
}
pub fn with_max_attributes_per_span(mut self, max_attributes: u32) -> Self {
self.max_attributes_per_span = max_attributes;
self
}
pub fn with_max_links_per_span(mut self, max_links: u32) -> Self {
self.max_links_per_span = max_links;
self
}
pub fn with_resource(mut self, resource: sdk::Resource) -> Self {
self.resource = Arc::new(resource);
self
}
}
impl Default for Config {
fn default() -> Self {
Config {
default_sampler: Box::new(Sampler::ParentBased(Box::new(Sampler::AlwaysOn))),
id_generator: Box::new(sdk::trace::IdGenerator::default()),
max_events_per_span: 128,
max_attributes_per_span: 32,
max_links_per_span: 32,
resource: Arc::new(sdk::Resource::default()),
}
}
}