File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed
include/ydb-cpp-sdk/client/tracing Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change 1+ #pragma once
2+
3+ #include < ydb-cpp-sdk/client/tracing/tracer.h>
4+ #include < opentelemetry/trace/tracer.h>
5+ #include < opentelemetry/trace/span.h>
6+ #include < opentelemetry/common/attribute_value.h>
7+
8+ namespace NYdb ::inline V3 {
9+ namespace NTracing {
10+
11+ class TOpenTelemetrySpan : public ISpan {
12+ public:
13+ explicit TOpenTelemetrySpan (opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span> span)
14+ : Span_(std::move(span)) {}
15+
16+ void AddAttribute (const std::string& key, const std::string& value) override {
17+ if (Span_) {
18+ Span_->SetAttribute (key, value);
19+ }
20+ }
21+
22+ void End () override {
23+ if (Span_) {
24+ Span_->End ();
25+ }
26+ }
27+
28+ private:
29+ opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span> Span_;
30+ };
31+
32+ class TOpenTelemetryTracer : public ITracer {
33+ public:
34+ explicit TOpenTelemetryTracer (opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> tracer)
35+ : Tracer_(std::move(tracer)) {}
36+
37+ std::unique_ptr<ISpan> StartSpan (const std::string& name) override {
38+ if (!Tracer_) {
39+ return nullptr ;
40+ }
41+ auto span = Tracer_->StartSpan (name);
42+ return std::make_unique<TOpenTelemetrySpan>(std::move (span));
43+ }
44+
45+ private:
46+ opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> Tracer_;
47+ };
48+
49+ } // namespace NTracing
50+ } // namespace NYdb
You can’t perform that action at this time.
0 commit comments