53 std::cout <<
"=== Network Tracing Example ===" << std::endl;
56 std::cout <<
"\n1. Creating trace context:" << std::endl;
57 auto ctx = tracing::trace_context::create(
"handle_request");
58 std::cout <<
" Trace context created for 'handle_request'" << std::endl;
61 std::cout <<
"\n2. Creating nested spans:" << std::endl;
63 auto request_span = ctx.create_span(
"process_request");
66 std::cout <<
" Request processing complete" << std::endl;
70 std::cout <<
"\n3. Header propagation:" << std::endl;
71 auto headers = ctx.to_headers();
72 std::cout <<
" Trace headers (" << headers.size() <<
"):" << std::endl;
73 for (
const auto& [key, value] : headers)
75 std::cout <<
" " << key <<
": " << value << std::endl;
79 std::cout <<
"\n4. Reconstructing context from headers:" << std::endl;
80 std::unordered_map<std::string, std::string> header_map;
81 for (
const auto& [key, value] : headers)
83 header_map[key] = value;
86 auto downstream_span = downstream_ctx.create_span(
"downstream_service");
87 std::cout <<
" Downstream context reconstructed" << std::endl;
88 std::cout <<
" Downstream span created" << std::endl;
90 std::cout <<
"\nDone." << std::endl;
Immutable trace context for distributed tracing.
static auto create_span(std::string_view name) -> span
Create a new root span with a new trace context.
static auto from_headers(const std::vector< std::pair< std::string, std::string > > &headers) -> trace_context
Parse trace context from HTTP headers.