Line data Source code
1 : #pragma once 2 : 3 : #include "envoy/tracing/trace_driver.h" 4 : 5 : #include "source/common/common/empty_string.h" 6 : 7 : namespace Envoy { 8 : namespace Tracing { 9 : 10 : /** 11 : * Null implementation of Span. 12 : */ 13 : class NullSpan : public Span { 14 : public: 15 266 : static NullSpan& instance() { 16 266 : static NullSpan* instance = new NullSpan(); 17 266 : return *instance; 18 266 : } 19 : 20 : // Tracing::Span 21 0 : void setOperation(absl::string_view) override {} 22 0 : void setTag(absl::string_view, absl::string_view) override {} 23 0 : void log(SystemTime, const std::string&) override {} 24 0 : void finishSpan() override {} 25 : void injectContext(Tracing::TraceContext&, 26 251 : const Upstream::HostDescriptionConstSharedPtr&) override {} 27 0 : void setBaggage(absl::string_view, absl::string_view) override {} 28 0 : std::string getBaggage(absl::string_view) override { return EMPTY_STRING; } 29 0 : std::string getTraceIdAsHex() const override { return EMPTY_STRING; } 30 0 : SpanPtr spawnChild(const Config&, const std::string&, SystemTime) override { 31 0 : return SpanPtr{new NullSpan()}; 32 0 : } 33 0 : void setSampled(bool) override {} 34 : }; 35 : 36 : } // namespace Tracing 37 : } // namespace Envoy