]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/sdk/src/trace/span.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / sdk / src / trace / span.h
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3
4 #pragma once
5
6 #include <mutex>
7
8 #include "opentelemetry/sdk/trace/tracer.h"
9 #include "opentelemetry/version.h"
10
11 OPENTELEMETRY_BEGIN_NAMESPACE
12 namespace sdk
13 {
14 namespace trace
15 {
16 class Span final : public opentelemetry::trace::Span
17 {
18 public:
19 Span(std::shared_ptr<Tracer> &&tracer,
20 nostd::string_view name,
21 const opentelemetry::common::KeyValueIterable &attributes,
22 const opentelemetry::trace::SpanContextKeyValueIterable &links,
23 const opentelemetry::trace::StartSpanOptions &options,
24 const opentelemetry::trace::SpanContext &parent_span_context,
25 std::unique_ptr<opentelemetry::trace::SpanContext> span_context) noexcept;
26
27 ~Span() override;
28
29 // trace::Span
30 void SetAttribute(nostd::string_view key,
31 const opentelemetry::common::AttributeValue &value) noexcept override;
32
33 void AddEvent(nostd::string_view name) noexcept override;
34
35 void AddEvent(nostd::string_view name,
36 opentelemetry::common::SystemTimestamp timestamp) noexcept override;
37
38 void AddEvent(nostd::string_view name,
39 opentelemetry::common::SystemTimestamp timestamp,
40 const opentelemetry::common::KeyValueIterable &attributes) noexcept override;
41
42 void SetStatus(opentelemetry::trace::StatusCode code,
43 nostd::string_view description) noexcept override;
44
45 void UpdateName(nostd::string_view name) noexcept override;
46
47 void End(const opentelemetry::trace::EndSpanOptions &options = {}) noexcept override;
48
49 bool IsRecording() const noexcept override;
50
51 opentelemetry::trace::SpanContext GetContext() const noexcept override
52 {
53 return *span_context_.get();
54 }
55
56 private:
57 std::shared_ptr<Tracer> tracer_;
58 mutable std::mutex mu_;
59 std::unique_ptr<Recordable> recordable_;
60 opentelemetry::common::SteadyTimestamp start_steady_time;
61 std::unique_ptr<opentelemetry::trace::SpanContext> span_context_;
62 bool has_ended_;
63 };
64 } // namespace trace
65 } // namespace sdk
66 OPENTELEMETRY_END_NAMESPACE