summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/opentelemetry-cpp/api/include/opentelemetry/trace/default_span.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/api/include/opentelemetry/trace/default_span.h')
-rw-r--r--src/jaegertracing/opentelemetry-cpp/api/include/opentelemetry/trace/default_span.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/api/include/opentelemetry/trace/default_span.h b/src/jaegertracing/opentelemetry-cpp/api/include/opentelemetry/trace/default_span.h
new file mode 100644
index 000000000..fadd92386
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/api/include/opentelemetry/trace/default_span.h
@@ -0,0 +1,66 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+#pragma once
+#include "opentelemetry/common/attribute_value.h"
+#include "opentelemetry/trace/canonical_code.h"
+#include "opentelemetry/trace/span.h"
+#include "opentelemetry/trace/span_context.h"
+
+OPENTELEMETRY_BEGIN_NAMESPACE
+namespace trace
+{
+
+/**
+ * DefaultSpan provides a non-operational Span that propagates
+ * the tracer context by wrapping it inside the Span object.
+ */
+
+class DefaultSpan : public Span
+{
+public:
+ // Returns an invalid span.
+ static DefaultSpan GetInvalid() { return DefaultSpan(SpanContext::GetInvalid()); }
+
+ trace::SpanContext GetContext() const noexcept { return span_context_; }
+
+ bool IsRecording() const noexcept { return false; }
+
+ void SetAttribute(nostd::string_view /* key */,
+ const common::AttributeValue & /* value */) noexcept
+ {}
+
+ void AddEvent(nostd::string_view /* name */) noexcept {}
+
+ void AddEvent(nostd::string_view /* name */, common::SystemTimestamp /* timestamp */) noexcept {}
+
+ void AddEvent(nostd::string_view /* name */,
+ common::SystemTimestamp /* timestamp */,
+ const common::KeyValueIterable & /* attributes */) noexcept
+ {}
+
+ void AddEvent(nostd::string_view name, const common::KeyValueIterable &attributes) noexcept
+ {
+ this->AddEvent(name, std::chrono::system_clock::now(), attributes);
+ }
+
+ void SetStatus(StatusCode /* status */, nostd::string_view /* description */) noexcept {}
+
+ void UpdateName(nostd::string_view /* name */) noexcept {}
+
+ void End(const EndSpanOptions & /* options */ = {}) noexcept {}
+
+ nostd::string_view ToString() const noexcept { return "DefaultSpan"; }
+
+ DefaultSpan(SpanContext span_context) noexcept : span_context_(span_context) {}
+
+ // movable and copiable
+ DefaultSpan(DefaultSpan &&spn) noexcept : span_context_(spn.GetContext()) {}
+ DefaultSpan(const DefaultSpan &spn) noexcept : span_context_(spn.GetContext()) {}
+
+private:
+ SpanContext span_context_;
+};
+
+} // namespace trace
+OPENTELEMETRY_END_NAMESPACE