1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
8 #include "opentelemetry/sdk/trace/tracer.h"
9 #include "opentelemetry/version.h"
11 OPENTELEMETRY_BEGIN_NAMESPACE
16 class Span final
: public opentelemetry::trace::Span
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
;
30 void SetAttribute(nostd::string_view key
,
31 const opentelemetry::common::AttributeValue
&value
) noexcept override
;
33 void AddEvent(nostd::string_view name
) noexcept override
;
35 void AddEvent(nostd::string_view name
,
36 opentelemetry::common::SystemTimestamp timestamp
) noexcept override
;
38 void AddEvent(nostd::string_view name
,
39 opentelemetry::common::SystemTimestamp timestamp
,
40 const opentelemetry::common::KeyValueIterable
&attributes
) noexcept override
;
42 void SetStatus(opentelemetry::trace::StatusCode code
,
43 nostd::string_view description
) noexcept override
;
45 void UpdateName(nostd::string_view name
) noexcept override
;
47 void End(const opentelemetry::trace::EndSpanOptions
&options
= {}) noexcept override
;
49 bool IsRecording() const noexcept override
;
51 opentelemetry::trace::SpanContext
GetContext() const noexcept override
53 return *span_context_
.get();
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_
;
66 OPENTELEMETRY_END_NAMESPACE