1
#pragma once
2

            
3
#include "envoy/config/trace/v3/http_tracer.pb.h"
4
#include "envoy/tracing/tracer.h"
5

            
6
namespace Envoy {
7
namespace Tracing {
8

            
9
/**
10
 * An Tracer manager which ensures existence of at most one Tracer instance
11
 * for a given configuration.
12
 */
13
class TracerManager {
14
public:
15
9774
  virtual ~TracerManager() = default;
16

            
17
  /**
18
   * Get an existing Tracer or create a new one for a given configuration.
19
   * @param config supplies the configuration for the tracing provider.
20
   * @return TracerSharedPtr.
21
   */
22
  virtual TracerSharedPtr
23
  getOrCreateTracer(const envoy::config::trace::v3::Tracing_Http* config) PURE;
24
};
25

            
26
using TracerManagerSharedPtr = std::shared_ptr<TracerManager>;
27

            
28
} // namespace Tracing
29
} // namespace Envoy