]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/exporters/otlp/include/opentelemetry/exporters/otlp/otlp_recordable.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / exporters / otlp / include / opentelemetry / exporters / otlp / otlp_recordable.h
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3
4 #pragma once
5
6 #include "opentelemetry/exporters/otlp/protobuf_include_prefix.h"
7
8 #include "opentelemetry/proto/resource/v1/resource.pb.h"
9 #include "opentelemetry/proto/trace/v1/trace.pb.h"
10
11 #include "opentelemetry/exporters/otlp/protobuf_include_suffix.h"
12
13 #include "opentelemetry/sdk/trace/recordable.h"
14 #include "opentelemetry/version.h"
15
16 OPENTELEMETRY_BEGIN_NAMESPACE
17 namespace exporter
18 {
19 namespace otlp
20 {
21 class OtlpRecordable final : public opentelemetry::sdk::trace::Recordable
22 {
23 public:
24 proto::trace::v1::Span &span() noexcept { return span_; }
25 const proto::trace::v1::Span &span() const noexcept { return span_; }
26
27 /** Dynamically converts the resource of this span into a proto. */
28 proto::resource::v1::Resource ProtoResource() const noexcept;
29
30 const std::string GetResourceSchemaURL() const noexcept;
31 const std::string GetInstrumentationLibrarySchemaURL() const noexcept;
32
33 proto::common::v1::InstrumentationLibrary GetProtoInstrumentationLibrary() const noexcept;
34
35 void SetIdentity(const opentelemetry::trace::SpanContext &span_context,
36 opentelemetry::trace::SpanId parent_span_id) noexcept override;
37
38 void SetAttribute(nostd::string_view key,
39 const opentelemetry::common::AttributeValue &value) noexcept override;
40
41 void AddEvent(nostd::string_view name,
42 common::SystemTimestamp timestamp,
43 const common::KeyValueIterable &attributes) noexcept override;
44
45 void AddLink(const opentelemetry::trace::SpanContext &span_context,
46 const common::KeyValueIterable &attributes) noexcept override;
47
48 void SetStatus(trace::StatusCode code, nostd::string_view description) noexcept override;
49
50 void SetName(nostd::string_view name) noexcept override;
51
52 void SetSpanKind(opentelemetry::trace::SpanKind span_kind) noexcept override;
53
54 void SetResource(const opentelemetry::sdk::resource::Resource &resource) noexcept override;
55
56 void SetStartTime(opentelemetry::common::SystemTimestamp start_time) noexcept override;
57
58 void SetDuration(std::chrono::nanoseconds duration) noexcept override;
59
60 void SetInstrumentationLibrary(
61 const opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary
62 &instrumentation_library) noexcept override;
63
64 private:
65 proto::trace::v1::Span span_;
66 const opentelemetry::sdk::resource::Resource *resource_ = nullptr;
67 const opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary
68 *instrumentation_library_ = nullptr;
69 };
70 } // namespace otlp
71 } // namespace exporter
72 OPENTELEMETRY_END_NAMESPACE