22#include <opentelemetry/trace/tracer.h>
29 explicit otel_request_span(opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span> span)
30 : span_(std::move(span))
33 void add_tag(
const std::string&
name,
const std::string& value)
override
35 span_->SetAttribute(
name, value);
37 void add_tag(
const std::string&
name, uint64_t value)
override
39 span_->SetAttribute(
name, value);
45 auto wrapped_span() -> opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span>
51 opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span> span_;
58 opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> tracer)
59 : tracer_(std::move(tracer))
63 auto start_span(std::string name, std::shared_ptr<couchbase::tracing::request_span>
parent)
64 -> std::shared_ptr<couchbase::tracing::request_span>
override
66 const auto wrapped_parent = std::dynamic_pointer_cast<otel_request_span>(
parent);
67 opentelemetry::trace::StartSpanOptions opts;
68 opts.kind = opentelemetry::trace::SpanKind::kClient;
70 opts.parent = wrapped_parent->wrapped_span()->GetContext();
72 return std::make_shared<otel_request_span>(tracer_->StartSpan(name, opts));
75 auto wrap_span(opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span> span)
76 -> std::shared_ptr<couchbase::tracing::otel_request_span>
78 return std::make_shared<couchbase::tracing::otel_request_span>(std::move(span));
82 opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> tracer_;
void add_tag(const std::string &name, uint64_t value) override
Definition otel_tracer.hxx:37
auto wrapped_span() -> opentelemetry::nostd::shared_ptr< opentelemetry::trace::Span >
Definition otel_tracer.hxx:45
void end() override
Definition otel_tracer.hxx:41
otel_request_span(opentelemetry::nostd::shared_ptr< opentelemetry::trace::Span > span)
Definition otel_tracer.hxx:29
void add_tag(const std::string &name, const std::string &value) override
Definition otel_tracer.hxx:33
auto start_span(std::string name, std::shared_ptr< couchbase::tracing::request_span > parent) -> std::shared_ptr< couchbase::tracing::request_span > override
Definition otel_tracer.hxx:63
auto wrap_span(opentelemetry::nostd::shared_ptr< opentelemetry::trace::Span > span) -> std::shared_ptr< couchbase::tracing::otel_request_span >
Definition otel_tracer.hxx:75
otel_request_tracer(opentelemetry::nostd::shared_ptr< opentelemetry::trace::Tracer > tracer)
Definition otel_tracer.hxx:57
Definition request_span.hxx:27
auto name() const -> const std::string &
Definition request_span.hxx:49
Definition request_tracer.hxx:28
Definition otel_tracer.hxx:25
@ parent
Notify the context that the process has forked and is the parent.
Definition fork_event.hxx:31