Line data Source code
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 96 : 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