| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | // Copyright The OpenTelemetry Authors// SPDX-License-Identifier: Apache-2.0#include <memory>#include <utility>#include "opentelemetry/exporters/ostream/span_exporter_factory.h"#include "opentelemetry/sdk/trace/exporter.h"#include "opentelemetry/sdk/trace/processor.h"#include "opentelemetry/sdk/trace/provider.h"#include "opentelemetry/sdk/trace/simple_processor_factory.h"#include "opentelemetry/sdk/trace/tracer_provider.h"#include "opentelemetry/sdk/trace/tracer_provider_factory.h"#include "opentelemetry/trace/tracer_provider.h"#ifdef BAZEL_BUILD#  include "examples/common/foo_library/foo_library.h"#else#  include "foo_library/foo_library.h"#endifnamespace trace_api      = opentelemetry::trace;namespace trace_sdk      = opentelemetry::sdk::trace;namespace trace_exporter = opentelemetry::exporter::trace;namespace{void InitTracer(){  auto exporter  = trace_exporter::OStreamSpanExporterFactory::Create();  auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));  std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> sdk_provider =      trace_sdk::TracerProviderFactory::Create(std::move(processor));  // Set the global trace provider  const std::shared_ptr<opentelemetry::trace::TracerProvider> &api_provider = sdk_provider;  trace_sdk::Provider::SetTracerProvider(api_provider);}void CleanupTracer(){  std::shared_ptr<opentelemetry::trace::TracerProvider> noop;  trace_sdk::Provider::SetTracerProvider(noop);}}  // namespaceint main(int /* argc */, char ** /* argv */){  // Removing this line will leave the default noop TracerProvider in place.  InitTracer();  foo_library();  CleanupTracer();  return 0;}
 |