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