Class ParentBasedSampler

Inheritance Relationships

Base Type

Class Documentation

class ParentBasedSampler : public opentelemetry::sdk::trace::Sampler

The ParentBased sampler is a composite sampler that delegates sampling decisions based on the parent span’s context.

The decision is delegated to one of five configurable samplers:

  • No parent exists (root span): delegates to root sampler.

  • A remote parent exists and was sampled: delegates to remote_parent_sampled_sampler (default to AlwaysOnSampler).

  • A remote parent exists and was not sampled: delegates to remote_parent_nonsampled_sampler (default to AlwaysOffSampler).

  • A local parent exists and was sampled: delegates to local_parent_sampled_sampler (default to AlwaysOnSampler).

  • A local parent exists and was not sampled: delegates to local_parent_nonsampled_sampler (default to AlwaysOffSampler).

Public Functions

explicit ParentBasedSampler(const std::shared_ptr<Sampler> &root_sampler, const std::shared_ptr<Sampler> &remote_parent_sampled_sampler = std::make_shared<AlwaysOnSampler>(), const std::shared_ptr<Sampler> &remote_parent_nonsampled_sampler = std::make_shared<AlwaysOffSampler>(), const std::shared_ptr<Sampler> &local_parent_sampled_sampler = std::make_shared<AlwaysOnSampler>(), const std::shared_ptr<Sampler> &local_parent_nonsampled_sampler = std::make_shared<AlwaysOffSampler>()) noexcept
virtual SamplingResult ShouldSample(const opentelemetry::trace::SpanContext &parent_context, opentelemetry::trace::TraceId trace_id, nostd::string_view name, opentelemetry::trace::SpanKind span_kind, const opentelemetry::common::KeyValueIterable &attributes, const opentelemetry::trace::SpanContextKeyValueIterable &links) noexcept override

Implements the decision logic by checking the parent context and delegating to the appropriate configured sampler

Returns:

The SamplingResult from the delegated sampler

virtual nostd::string_view GetDescription() const noexcept override
Returns:

Description MUST be ParentBased{delegate_sampler_.getDescription()}