1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
6 #include "opentelemetry/exporters/otlp/protobuf_include_prefix.h"
8 #include "opentelemetry/proto/resource/v1/resource.pb.h"
9 #include "opentelemetry/proto/trace/v1/trace.pb.h"
11 #include "opentelemetry/exporters/otlp/protobuf_include_suffix.h"
13 #include "opentelemetry/sdk/trace/recordable.h"
14 #include "opentelemetry/version.h"
16 OPENTELEMETRY_BEGIN_NAMESPACE
21 class OtlpRecordable final
: public opentelemetry::sdk::trace::Recordable
24 proto::trace::v1::Span
&span() noexcept
{ return span_
; }
25 const proto::trace::v1::Span
&span() const noexcept
{ return span_
; }
27 /** Dynamically converts the resource of this span into a proto. */
28 proto::resource::v1::Resource
ProtoResource() const noexcept
;
30 const std::string
GetResourceSchemaURL() const noexcept
;
31 const std::string
GetInstrumentationLibrarySchemaURL() const noexcept
;
33 proto::common::v1::InstrumentationLibrary
GetProtoInstrumentationLibrary() const noexcept
;
35 void SetIdentity(const opentelemetry::trace::SpanContext
&span_context
,
36 opentelemetry::trace::SpanId parent_span_id
) noexcept override
;
38 void SetAttribute(nostd::string_view key
,
39 const opentelemetry::common::AttributeValue
&value
) noexcept override
;
41 void AddEvent(nostd::string_view name
,
42 common::SystemTimestamp timestamp
,
43 const common::KeyValueIterable
&attributes
) noexcept override
;
45 void AddLink(const opentelemetry::trace::SpanContext
&span_context
,
46 const common::KeyValueIterable
&attributes
) noexcept override
;
48 void SetStatus(trace::StatusCode code
, nostd::string_view description
) noexcept override
;
50 void SetName(nostd::string_view name
) noexcept override
;
52 void SetSpanKind(opentelemetry::trace::SpanKind span_kind
) noexcept override
;
54 void SetResource(const opentelemetry::sdk::resource::Resource
&resource
) noexcept override
;
56 void SetStartTime(opentelemetry::common::SystemTimestamp start_time
) noexcept override
;
58 void SetDuration(std::chrono::nanoseconds duration
) noexcept override
;
60 void SetInstrumentationLibrary(
61 const opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary
62 &instrumentation_library
) noexcept override
;
65 proto::trace::v1::Span span_
;
66 const opentelemetry::sdk::resource::Resource
*resource_
= nullptr;
67 const opentelemetry::sdk::instrumentationlibrary::InstrumentationLibrary
68 *instrumentation_library_
= nullptr;
71 } // namespace exporter
72 OPENTELEMETRY_END_NAMESPACE