Line data Source code
1 : #pragma once 2 : 3 : #include <memory> 4 : 5 : #include "envoy/common/pure.h" 6 : #include "envoy/tracing/trace_context.h" 7 : #include "envoy/tracing/trace_driver.h" 8 : #include "envoy/tracing/trace_reason.h" 9 : 10 : namespace Envoy { 11 : namespace Tracing { 12 : 13 : /** 14 : * Tracer is responsible for handling traces and delegate actions to the 15 : * corresponding drivers. 16 : */ 17 : class Tracer { 18 : public: 19 272 : virtual ~Tracer() = default; 20 : 21 : virtual SpanPtr startSpan(const Config& config, TraceContext& trace_context, 22 : const StreamInfo::StreamInfo& stream_info, 23 : Tracing::Decision tracing_decision) PURE; 24 : }; 25 : 26 : using TracerSharedPtr = std::shared_ptr<Tracer>; 27 : 28 : } // namespace Tracing 29 : } // namespace Envoy