| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | // Copyright The OpenTelemetry Authors// SPDX-License-Identifier: Apache-2.0#include <memory>#include <string>#include <utility>#include "opentelemetry/exporters/zipkin/zipkin_exporter_factory.h"#include "opentelemetry/exporters/zipkin/zipkin_exporter_options.h"#include "opentelemetry/sdk/resource/resource.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     = opentelemetry::trace;namespace trace_sdk = opentelemetry::sdk::trace;namespace zipkin    = opentelemetry::exporter::zipkin;namespace resource  = opentelemetry::sdk::resource;namespace{zipkin::ZipkinExporterOptions opts;void InitTracer(){  // Create zipkin exporter instance  resource::ResourceAttributes attributes = {{"service.name", "zipkin_demo_service"}};  auto resource                           = resource::Resource::Create(attributes);  auto exporter                           = zipkin::ZipkinExporterFactory::Create(opts);  auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));  std::shared_ptr<opentelemetry::trace::TracerProvider> provider =      trace_sdk::TracerProviderFactory::Create(std::move(processor), resource);  // Set the global trace provider  trace_sdk::Provider::SetTracerProvider(provider);}void CleanupTracer(){  std::shared_ptr<opentelemetry::trace::TracerProvider> none;  trace_sdk::Provider::SetTracerProvider(none);}}  // namespaceint main(int argc, char *argv[]){  if (argc == 2)  {    opts.endpoint = argv[1];  }  // Removing this line will leave the default noop TracerProvider in place.  InitTracer();  foo_library();  CleanupTracer();  return 0;}
 |