1
#pragma once
2

            
3
#include <string>
4

            
5
#include "envoy/config/trace/v3/opentelemetry.pb.h"
6
#include "envoy/config/trace/v3/opentelemetry.pb.validate.h"
7

            
8
#include "source/extensions/tracers/common/factory_base.h"
9

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

            
15
/**
16
 * Config registration for the OpenTelemetry tracer. @see TracerFactory.
17
 */
18
class OpenTelemetryTracerFactory
19
    : Logger::Loggable<Logger::Id::tracing>,
20
      public Common::FactoryBase<envoy::config::trace::v3::OpenTelemetryConfig> {
21
public:
22
  OpenTelemetryTracerFactory();
23

            
24
private:
25
  // FactoryBase
26
  Tracing::DriverSharedPtr
27
  createTracerDriverTyped(const envoy::config::trace::v3::OpenTelemetryConfig& proto_config,
28
                          Server::Configuration::TracerFactoryContext& context) override;
29
};
30

            
31
} // namespace OpenTelemetry
32
} // namespace Tracers
33
} // namespace Extensions
34
} // namespace Envoy