1
#pragma once
2

            
3
#include "envoy/config/trace/v3/xray.pb.h"
4

            
5
#include "source/common/common/logger.h"
6
#include "source/extensions/tracers/common/factory_base.h"
7

            
8
namespace Envoy {
9
namespace Extensions {
10
namespace Tracers {
11
namespace XRay {
12

            
13
/**
14
 * Config registration for the XRay tracer. @see TracerFactory.
15
 */
16
class XRayTracerFactory : public Common::FactoryBase<envoy::config::trace::v3::XRayConfig>,
17
                          Logger::Loggable<Logger::Id::tracing> {
18
public:
19
  XRayTracerFactory();
20

            
21
private:
22
  Tracing::DriverSharedPtr
23
  createTracerDriverTyped(const envoy::config::trace::v3::XRayConfig& proto_config,
24
                          Server::Configuration::TracerFactoryContext& context) override;
25
};
26

            
27
} // namespace XRay
28
} // namespace Tracers
29
} // namespace Extensions
30
} // namespace Envoy