Viam C++ SDK current
Loading...
Searching...
No Matches
tracer.hpp
1#pragma once
2
3#ifdef VIAMCPPSDK_OPENTELEMETRY_TRACING
4#include <memory>
5
6#include <opentelemetry/sdk/trace/tracer_provider.h>
7#endif
8
9namespace viam {
10namespace sdk {
11
12class RobotClient;
13
14namespace impl {
15
18class Tracer {
19 public:
20 Tracer();
21 ~Tracer() noexcept; // NOLINT(performance-trivially-destructible)
22
23 Tracer(const Tracer&) = delete;
24 Tracer& operator=(const Tracer&) = delete;
25
27 static Tracer& get();
28
31 static void initialize_propagator() noexcept;
32
35 void initialize_provider(RobotClient* client) noexcept;
36 void shutdown_provider() noexcept;
37
38#ifdef VIAMCPPSDK_OPENTELEMETRY_TRACING
39 private:
40 std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> sdk_provider_;
41#endif
42};
43
44} // namespace impl
45} // namespace sdk
46} // namespace viam
gRPC client for a robot, to be used for all interactions with a robot. There are two ways to instanti...
Definition client.hpp:48
Holds the SDK-side OpenTelemetry tracer provider. Spans go nowhere until initialize_provider installs...
Definition tracer.hpp:18
static Tracer & get()
Returns the Tracer owned by the current Instance.
static void initialize_propagator() noexcept
Install the W3C Trace Context propagator. Called once during Instance construction.
void initialize_provider(RobotClient *client) noexcept
Install an exporter sourced from client. The caller must keep client alive until shutdown_provider re...