#[derive(serde::Serialize, serde::Deserialize, PartialOrd, PartialEq)]
#[serde(rename_all = "camelCase")]
pub(crate) struct ProbabilisticSamplingStrategy {
pub(crate) sampling_rate: f64,
}
#[derive(serde::Serialize, serde::Deserialize, PartialOrd, PartialEq)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RateLimitingSamplingStrategy {
pub(crate) max_traces_per_second: i32,
}
#[derive(serde::Serialize, serde::Deserialize, PartialOrd, PartialEq)]
#[serde(rename_all = "camelCase")]
pub(crate) struct OperationSamplingStrategy {
pub(crate) operation: String,
pub(crate) probabilistic_sampling: ProbabilisticSamplingStrategy,
}
#[derive(serde::Serialize, serde::Deserialize, PartialOrd, PartialEq)]
#[serde(rename_all = "camelCase")]
pub(crate) struct PerOperationSamplingStrategies {
pub(crate) default_sampling_probability: f64,
pub(crate) default_lower_bound_traces_per_second: f64,
pub(crate) per_operation_strategies: Vec<OperationSamplingStrategy>,
pub(crate) default_upper_bound_traces_per_second: f64,
}
#[derive(serde::Serialize, serde::Deserialize, PartialOrd, PartialEq)]
#[serde(rename_all = "camelCase")]
pub(crate) struct SamplingStrategyResponse {
pub(crate) strategy_type: SamplingStrategyType,
pub(crate) probabilistic_sampling: Option<ProbabilisticSamplingStrategy>,
pub(crate) rate_limiting_sampling: Option<RateLimitingSamplingStrategy>,
pub(crate) operation_sampling: Option<PerOperationSamplingStrategies>,
}
#[derive(serde::Serialize, serde::Deserialize, PartialOrd, PartialEq)]
#[serde(rename_all = "camelCase")]
pub(crate) struct SamplingStrategyParameters {
pub(crate) service_name: String,
}
#[derive(serde::Serialize, serde::Deserialize, PartialOrd, PartialEq)]
#[serde(rename_all = "UPPERCASE")]
pub(crate) enum SamplingStrategyType {
Probabilistic,
RateLimiting,
}