1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/extensions/tracers/opentelemetry/samplers/v3/cel_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 CELSampler. @see SamplerFactory.
17
 */
18
class CELSamplerFactory : public SamplerFactory {
19
public:
20
  /**
21
   * @brief Create a CEL Sampler.
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
22
  ProtobufTypes::MessagePtr createEmptyConfigProto() override {
31
22
    return std::make_unique<
32
22
        envoy::extensions::tracers::opentelemetry::samplers::v3::CELSamplerConfig>();
33
22
  }
34
15
  std::string name() const override { return "envoy.tracers.opentelemetry.samplers.cel"; }
35
};
36

            
37
DECLARE_FACTORY(AlwaysOnSamplerFactory);
38

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