default_span.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #pragma once
  4. #include "opentelemetry/common/attribute_value.h"
  5. #include "opentelemetry/nostd/string_view.h"
  6. #include "opentelemetry/trace/span.h"
  7. #include "opentelemetry/trace/span_context.h"
  8. #include "opentelemetry/version.h"
  9. OPENTELEMETRY_BEGIN_NAMESPACE
  10. namespace trace
  11. {
  12. /**
  13. * DefaultSpan provides a non-operational Span that propagates
  14. * the tracer context by wrapping it inside the Span object.
  15. */
  16. class DefaultSpan : public Span
  17. {
  18. public:
  19. // Returns an invalid span.
  20. static DefaultSpan GetInvalid() { return DefaultSpan(SpanContext::GetInvalid()); }
  21. trace::SpanContext GetContext() const noexcept override { return span_context_; }
  22. bool IsRecording() const noexcept override { return false; }
  23. void SetAttribute(nostd::string_view /* key */,
  24. const common::AttributeValue & /* value */) noexcept override
  25. {}
  26. void AddEvent(nostd::string_view /* name */) noexcept override {}
  27. void AddEvent(nostd::string_view /* name */,
  28. common::SystemTimestamp /* timestamp */) noexcept override
  29. {}
  30. void AddEvent(nostd::string_view /* name */,
  31. const common::KeyValueIterable & /* attributes */) noexcept override
  32. {}
  33. void AddEvent(nostd::string_view /* name */,
  34. common::SystemTimestamp /* timestamp */,
  35. const common::KeyValueIterable & /* attributes */) noexcept override
  36. {}
  37. #if OPENTELEMETRY_ABI_VERSION_NO >= 2
  38. void AddLink(const SpanContext & /* target */,
  39. const common::KeyValueIterable & /* attrs */) noexcept override
  40. {}
  41. void AddLinks(const SpanContextKeyValueIterable & /* links */) noexcept override {}
  42. #endif
  43. void SetStatus(StatusCode /* status */, nostd::string_view /* description */) noexcept override {}
  44. void UpdateName(nostd::string_view /* name */) noexcept override {}
  45. void End(const EndSpanOptions & /* options */) noexcept override {}
  46. nostd::string_view ToString() const noexcept { return "DefaultSpan"; }
  47. DefaultSpan(SpanContext span_context) noexcept : span_context_(std::move(span_context)) {}
  48. // movable and copiable
  49. DefaultSpan(DefaultSpan &&spn) noexcept : Span(), span_context_(spn.GetContext()) {}
  50. DefaultSpan(const DefaultSpan &spn) noexcept : Span(), span_context_(spn.GetContext()) {}
  51. private:
  52. SpanContext span_context_;
  53. };
  54. } // namespace trace
  55. OPENTELEMETRY_END_NAMESPACE