1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/extensions/tracers/opentelemetry/samplers/v3/always_on_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 AlwaysOnSampler. @see SamplerFactory.
17
 */
18
class AlwaysOnSamplerFactory : public SamplerFactory {
19
public:
20
  /**
21
   * @brief Create a Sampler. @see AlwaysOnSampler
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
4
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
31
4
    return std::make_unique<
32
4
        envoy::extensions::tracers::opentelemetry::samplers::v3::AlwaysOnSamplerConfig>();
33
4
  }
34
12
  std::string name() const override { return "envoy.tracers.opentelemetry.samplers.always_on"; }
35
};
36

            
37
DECLARE_FACTORY(AlwaysOnSamplerFactory);
38

            
39
} // namespace OpenTelemetry
40
} // namespace Tracers
41
} // namespace Extensions
42
} // namespace Envoy