1
#pragma once
2

            
3
#include "envoy/extensions/tracers/fluentd/v3/fluentd.pb.h"
4
#include "envoy/extensions/tracers/fluentd/v3/fluentd.pb.validate.h"
5

            
6
#include "source/extensions/tracers/common/factory_base.h"
7
#include "source/extensions/tracers/fluentd/fluentd_tracer_impl.h"
8

            
9
namespace Envoy {
10
namespace Extensions {
11
namespace Tracers {
12
namespace Fluentd {
13

            
14
/**
15
 * Config registration for the Fluentd tracer. @see TracerFactory.
16
 */
17
class FluentdTracerFactory
18
    : public Common::FactoryBase<envoy::extensions::tracers::fluentd::v3::FluentdConfig> {
19
public:
20
  FluentdTracerFactory();
21

            
22
  static FluentdTracerCacheSharedPtr
23
  getTracerCacheSingleton(Server::Configuration::ServerFactoryContext& context);
24

            
25
private:
26
  // FactoryBase
27
  Tracing::DriverSharedPtr createTracerDriverTyped(
28
      const envoy::extensions::tracers::fluentd::v3::FluentdConfig& proto_config,
29
      Server::Configuration::TracerFactoryContext& context) override;
30
};
31

            
32
} // namespace Fluentd
33
} // namespace Tracers
34
} // namespace Extensions
35
} // namespace Envoy