diff --git a/api/include/opentelemetry/plugin/detail/tracer_handle.h b/api/include/opentelemetry/plugin/detail/tracer_handle.h index b1efad3e86..ce4f773c66 100644 --- a/api/include/opentelemetry/plugin/detail/tracer_handle.h +++ b/api/include/opentelemetry/plugin/detail/tracer_handle.h @@ -13,8 +13,6 @@ class TracerHandle { public: virtual ~TracerHandle() = default; - - virtual trace::Tracer &tracer() const noexcept = 0; }; } // namespace plugin OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/trace/default_span.h b/api/include/opentelemetry/trace/default_span.h index 14858f7c63..0d3fda41ad 100644 --- a/api/include/opentelemetry/trace/default_span.h +++ b/api/include/opentelemetry/trace/default_span.h @@ -4,7 +4,6 @@ #include "opentelemetry/trace/canonical_code.h" #include "opentelemetry/common/attribute_value.h" #include "opentelemetry/trace/span.h" -//#include "opentelemetry/trace/tracer.h" #define pass OPENTELEMETRY_BEGIN_NAMESPACE @@ -67,20 +66,8 @@ class DefaultSpan: public Span { DefaultSpan(DefaultSpan&& spn) : span_context_(spn.GetContext()) {} DefaultSpan(const DefaultSpan& spn) : span_context_(spn.GetContext()) {} - // This is an invalid implementation - trace::Tracer &tracer() const noexcept { - trace::Tracer tracer = trace::Tracer(); - return tracer; // Invalid tracer - } - - // Creates an instance of this class with spancontext. - static DefaultSpan Create(SpanContext span_context) { - return DefaultSpan(span_context); - } - private: SpanContext span_context_; - trace::Tracer tracer_; }; } OPENTELEMETRY_END_NAMESPACE \ No newline at end of file diff --git a/api/include/opentelemetry/trace/default_tracer.h b/api/include/opentelemetry/trace/default_tracer.h new file mode 100644 index 0000000000..cb8126d174 --- /dev/null +++ b/api/include/opentelemetry/trace/default_tracer.h @@ -0,0 +1,40 @@ +#pragma once +#include "opentelemetry/trace/tracer.h" +#include "opentelemetry/nostd/unique_ptr.h" +#include "opentelemetry/trace/span.h" +#include "opentelemetry/trace/default_span.h" + +#define pass +OPENTELEMETRY_BEGIN_NAMESPACE +namespace trace { +class DefaultTracer: public Tracer { +public: + ~DefaultTracer() = default; + + /** + * Starts a span. + * + * Optionally sets attributes at Span creation from the given key/value pairs. + * + * Attributes will be processed in order, previous attributes with the same + * key will be overwritten. + */ + nostd::unique_ptr StartSpan(nostd::string_view name, + const KeyValueIterable &attributes, + const StartSpanOptions &options = {}) noexcept + { + return nostd::unique_ptr(new DefaultSpan::GetInvalid()); + } + + void ForceFlushWithMicroseconds(uint64_t timeout) noexcept + { + pass; + } + + void CloseWithMicroseconds(uint64_t timeout) noexcept + { + pass; + } +}; +} +OPENTELEMETRY_END_NAMESPACE \ No newline at end of file diff --git a/api/include/opentelemetry/trace/propagation/http_trace_context.h b/api/include/opentelemetry/trace/propagation/http_trace_context.h index 4ff65a5c32..0ebee00a49 100644 --- a/api/include/opentelemetry/trace/propagation/http_trace_context.h +++ b/api/include/opentelemetry/trace/propagation/http_trace_context.h @@ -17,7 +17,6 @@ #include #include #include -#include "opentelemetry/trace/propagation/http_text_format.h" #include "opentelemetry/trace/span_context.h" #include "opentelemetry/trace/trace_state.h" #include "opentelemetry/trace/key_value_iterable.h" @@ -27,6 +26,7 @@ #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/nostd/variant.h" #include "opentelemetry/nostd/span.h" +#include "opentelemetry/trace/propagation/http_text_format.h" #include "opentelemetry/trace/default_span.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -304,16 +304,6 @@ class HttpTraceContext : public HTTPTextFormat { return context_from_parent_header; } } - const nostd::string_view kTraceParent = "traceparent"; - const nostd::string_view kTraceState = "tracestate"; - const int kVersionBytes = 2; - const int kTraceIdBytes = 32; - const int kSpanIdBytes = 16; - const int kTraceFlagBytes = 2; - const int kTraceDelimiterBytes = 3; - const int kHeaderSize = kVersionBytes + kTraceIdBytes + kSpanIdBytes + kTraceFlagBytes + kTraceDelimiterBytes; - const int kTraceStateMaxMembers = 32; - const int kHeaderElementLengths[4] = {2,32,16,2}; }; } } // namespace trace diff --git a/api/include/opentelemetry/trace/span.h b/api/include/opentelemetry/trace/span.h index 3a37e97ca5..87aeb66c1e 100644 --- a/api/include/opentelemetry/trace/span.h +++ b/api/include/opentelemetry/trace/span.h @@ -9,7 +9,6 @@ #include "opentelemetry/nostd/string_view.h" #include "opentelemetry/trace/canonical_code.h" #include "opentelemetry/trace/key_value_iterable_view.h" -#include "opentelemetry/trace/tracer.h" #include "opentelemetry/version.h" OPENTELEMETRY_BEGIN_NAMESPACE @@ -56,7 +55,7 @@ struct EndSpanOptions }; class Tracer; - +class DefaultTracer; /** * A Span represents a single operation within a Trace. */ @@ -153,8 +152,6 @@ class Span // Returns true if this Span is recording tracing events (e.g. SetAttribute, // AddEvent). virtual bool IsRecording() const noexcept = 0; - - virtual trace::Tracer &tracer() const noexcept = 0; }; } // namespace trace OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/trace/tracer.h b/api/include/opentelemetry/trace/tracer.h index 3b97963900..e09b2ae3f0 100644 --- a/api/include/opentelemetry/trace/tracer.h +++ b/api/include/opentelemetry/trace/tracer.h @@ -7,9 +7,6 @@ #include -class Span; -struct StartSpanOptions; - OPENTELEMETRY_BEGIN_NAMESPACE namespace trace { @@ -19,6 +16,7 @@ namespace trace * This class provides methods for manipulating the context, creating spans, and controlling spans' * lifecycles. */ + class Tracer { public: @@ -31,6 +29,7 @@ class Tracer * Attributes will be processed in order, previous attributes with the same * key will be overwritten. */ + virtual nostd::unique_ptr StartSpan(nostd::string_view name, const KeyValueIterable &attributes, const StartSpanOptions &options = {}) noexcept = 0; diff --git a/api/test/trace/default_span_test.cc b/api/test/trace/default_span_test.cc deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/api/test/trace/propagation/http_text_format_test.cc b/api/test/trace/propagation/http_text_format_test.cc index 879313b483..ab699d03bb 100644 --- a/api/test/trace/propagation/http_text_format_test.cc +++ b/api/test/trace/propagation/http_text_format_test.cc @@ -1,10 +1,9 @@ -#include "opentelemetry/trace/propagation/http_text_format.h" -#include "opentelemetry/trace/propagation/http_trace_context.h" #include "opentelemetry/context/context.h" #include "opentelemetry/trace/span.h" #include "opentelemetry/trace/default_span.h" #include "opentelemetry/trace/span_context.h" #include "opentelemetry/nostd/string_view.h" +#include "opentelemetry/trace/tracer.h" #include "opentelemetry/nostd/span.h" #include "opentelemetry/nostd/shared_ptr.h" #include "opentelemetry/trace/trace_id.h" @@ -16,6 +15,10 @@ #include +#include "opentelemetry/trace/default_span.h" +#include "opentelemetry/trace/propagation/http_text_format.h" +#include "opentelemetry/trace/propagation/http_trace_context.h" + using namespace opentelemetry; static nostd::string_view Getter(const std::map &carrier, nostd::string_view trace_type = "traceparent") {