1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/extensions/tracers/opentelemetry/samplers/v3/trace_id_ratio_based_sampler.pb.h"
6
#include "envoy/registry/registry.h"
7

            
8
#include "source/extensions/tracers/opentelemetry/samplers/sampler.h"
9

            
10
namespace Envoy {
11
namespace Extensions {
12
namespace Tracers {
13
namespace OpenTelemetry {
14

            
15
/**
16
 * Config registration for the TraceIdRatioBasedSampler. @see SamplerFactory.
17
 */
18
class TraceIdRatioBasedSamplerFactory : public SamplerFactory {
19
public:
20
  /**
21
   * @brief Create a Sampler. @see TraceIdRatioBasedSampler
22
   *
23
   * @param config Protobuf config for the sampler.
24
   * @param context A reference to the TracerFactoryContext.
25
   * @return SamplerSharedPtr
26
   */
27
  SamplerSharedPtr createSampler(const Protobuf::Message& config,
28
                                 Server::Configuration::TracerFactoryContext& context) override;
29

            
30
14
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
31
14
    return std::make_unique<
32
14
        envoy::extensions::tracers::opentelemetry::samplers::v3::TraceIdRatioBasedSamplerConfig>();
33
14
  }
34

            
35
18
  std::string name() const override {
36
18
    return "envoy.tracers.opentelemetry.samplers.trace_id_ratio_based";
37
18
  }
38
};
39

            
40
DECLARE_FACTORY(TraceIdRatioBasedSamplerFactory);
41

            
42
} // namespace OpenTelemetry
43
} // namespace Tracers
44
} // namespace Extensions
45
} // namespace Envoy