22
22
#if defined(__GNUC__)
23
23
#pragma GCC diagnostic push
24
24
#pragma GCC diagnostic ignored "-Wsign-conversion"
25
+ #pragma GCC diagnostic ignored "-Wdeprecated-builtins"
26
+ #elif defined(__clang__)
27
+ #pragma clang diagnostic push
28
+ #pragma clang diagnostic ignored "-Wdeprecated-builtins"
25
29
#endif
26
30
#include < opentelemetry/trace/provider.h>
27
31
#include < opentelemetry/trace/tracer.h>
28
32
#if defined(__GNUC__)
29
33
#pragma GCC diagnostic pop
34
+ #elif defined(__clang__)
35
+ #pragma clang diagnostic pop
30
36
#endif
31
37
32
38
namespace couchbase ::core::tracing
33
39
{
34
- namespace
35
- {
36
- class otel_request_span : public couchbase ::tracing::request_span
40
+
41
+ auto
42
+ otel_request_span::wrapped_span () -> std::shared_ptr<opentelemetry::trace::Span>
37
43
{
38
- public:
39
- explicit otel_request_span (opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span> span)
40
- : span_(std::move(span))
41
- {
42
- }
44
+ return span_;
45
+ }
43
46
44
- void add_tag (const std::string& name, const std::string& value) override
45
- {
46
- span_->SetAttribute (name, value);
47
- }
47
+ void
48
+ otel_request_span::end ()
49
+ {
50
+ span_->End ();
51
+ }
48
52
49
- void add_tag (const std::string& name, std::uint64_t value) override
50
- {
51
- span_->SetAttribute (name, value);
52
- }
53
+ void
54
+ otel_request_span::add_tag (const std::string& name, std::uint64_t value)
55
+ {
56
+ span_->SetAttribute (name, value);
57
+ }
53
58
54
- void end () override
55
- {
56
- span_->End ();
57
- }
59
+ void
60
+ otel_request_span::add_tag (const std::string& name, const std::string& value)
61
+ {
62
+ span_->SetAttribute (name, value);
63
+ }
58
64
59
- auto wrapped_span () -> opentelemetry::nostd ::shared_ptr<opentelemetry::trace::Span>
60
- {
61
- return span_;
62
- }
65
+ otel_request_span::otel_request_span (std ::shared_ptr<opentelemetry::trace::Span> span)
66
+ : span_(std::move(span))
67
+ {
68
+ }
63
69
64
- private:
65
- opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span> span_;
66
- };
70
+ otel_request_span::~otel_request_span ()
71
+ {
72
+ span_->End ();
73
+ }
67
74
68
- } // namespace
75
+ auto
76
+ otel_request_span::wrap (std::shared_ptr<opentelemetry::trace::Span> span)
77
+ -> std::shared_ptr<otel_request_span>
78
+ {
79
+ return std::make_shared<otel_request_span>(span);
80
+ }
69
81
70
82
class otel_request_tracer_impl
71
83
{
@@ -80,15 +92,32 @@ class otel_request_tracer_impl
80
92
{
81
93
}
82
94
95
+ explicit otel_request_tracer_impl (std::shared_ptr<opentelemetry::trace::Tracer> tracer)
96
+ : tracer_{ std::move (tracer) }
97
+ {
98
+ }
99
+
83
100
private:
84
- opentelemetry::nostd ::shared_ptr<opentelemetry::trace::Tracer> tracer_;
101
+ std ::shared_ptr<opentelemetry::trace::Tracer> tracer_;
85
102
};
86
103
87
104
otel_request_tracer::otel_request_tracer ()
88
105
: impl_{ std::make_unique<otel_request_tracer_impl>() }
89
106
{
90
107
}
91
108
109
+ otel_request_tracer::otel_request_tracer (std::shared_ptr<opentelemetry::trace::Tracer> tracer)
110
+ : impl_{ std::make_unique<otel_request_tracer_impl>(std::move (tracer)) }
111
+ {
112
+ }
113
+
114
+ auto
115
+ otel_request_tracer::wrap (std::shared_ptr<opentelemetry::trace::Tracer> tracer)
116
+ -> std::shared_ptr<otel_request_tracer>
117
+ {
118
+ return std::make_shared<couchbase::core::tracing::otel_request_tracer>(std::move (tracer));
119
+ }
120
+
92
121
otel_request_tracer::~otel_request_tracer () = default ;
93
122
94
123
auto
@@ -100,9 +129,9 @@ otel_request_tracer::start_span(std::string name,
100
129
if (wrapped_parent) {
101
130
opentelemetry::trace::StartSpanOptions opts;
102
131
opts.parent = wrapped_parent->wrapped_span ()->GetContext ();
103
- return std::make_shared<otel_request_span> (impl_->tracer_ ->StartSpan (name, opts));
132
+ return otel_request_span::wrap (impl_->tracer_ ->StartSpan (name, opts));
104
133
}
105
- return std::make_shared<otel_request_span> (impl_->tracer_ ->StartSpan (name));
134
+ return otel_request_span::wrap (impl_->tracer_ ->StartSpan (name));
106
135
}
107
136
108
137
} // namespace couchbase::core::tracing
0 commit comments