userver: userver/tracing/opentelemetry.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
opentelemetry.hpp
1#pragma once
2
3#include <string>
4
5#include <userver/utils/expected.hpp>
6#include <userver/utils/small_string.hpp>
7#include <userver/utils/strong_typedef.hpp>
8
9USERVER_NAMESPACE_BEGIN
10
11namespace tracing::opentelemetry {
12
13inline constexpr std::size_t kTraceIdSize = 32;
14inline constexpr std::size_t kSpanIdSize = 16;
15
17 std::string version;
18 utils::SmallString<kTraceIdSize> trace_id;
19 utils::SmallString<kSpanIdSize> span_id;
20 std::string trace_flags;
21};
22
23utils::expected<TraceParentData, std::string> ExtractTraceParentData(std::string_view trace_parent);
24
25utils::expected<std::string, std::string>
26BuildTraceParentHeader(std::string_view trace_id, std::string_view span_id, std::string_view trace_flags);
27
28} // namespace tracing::opentelemetry
29
30USERVER_NAMESPACE_END