1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
6 #include "opentelemetry/context/context.h"
7 #include "opentelemetry/trace/default_span.h"
8 #include "opentelemetry/version.h"
10 OPENTELEMETRY_BEGIN_NAMESPACE
14 // Get Span from explicit context
15 inline nostd::shared_ptr
<Span
> GetSpan(const opentelemetry::context::Context
&context
) noexcept
17 context::ContextValue span
= context
.GetValue(kSpanKey
);
18 if (nostd::holds_alternative
<nostd::shared_ptr
<Span
>>(span
))
20 return nostd::get
<nostd::shared_ptr
<Span
>>(span
);
22 return nostd::shared_ptr
<Span
>(new DefaultSpan(SpanContext::GetInvalid()));
25 // Set Span into explicit context
26 inline context::Context
SetSpan(opentelemetry::context::Context
&context
,
27 nostd::shared_ptr
<Span
> span
) noexcept
29 return context
.SetValue(kSpanKey
, span
);
33 OPENTELEMETRY_END_NAMESPACE