Skip to content

Commit fad89b4

Browse files
Create otel_tracer.h
1 parent e5af77f commit fad89b4

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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

0 commit comments

Comments
 (0)