| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | // Copyright The OpenTelemetry Authors// SPDX-License-Identifier: Apache-2.0#include "opentelemetry/exporters/otlp/otlp_grpc_exporter_factory.h"#include "opentelemetry/nostd/shared_ptr.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/provider.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 otlp      = opentelemetry::exporter::otlp;namespace{opentelemetry::exporter::otlp::OtlpGrpcExporterOptions opts;std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> provider;void InitTracer(){  // Create OTLP exporter instance  auto exporter  = otlp::OtlpGrpcExporterFactory::Create(opts);  auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));  provider       = trace_sdk::TracerProviderFactory::Create(std::move(processor));  // Set the global trace provider  std::shared_ptr<opentelemetry::trace::TracerProvider> api_provider = provider;  trace_sdk::Provider::SetTracerProvider(api_provider);}void CleanupTracer(){  // We call ForceFlush to prevent to cancel running exportings, It's optional.  if (provider)  {    provider->ForceFlush();  }  provider.reset();  std::shared_ptr<opentelemetry::trace::TracerProvider> none;  trace_sdk::Provider::SetTracerProvider(none);}}  // namespaceint main(int argc, char *argv[]){  if (argc > 1)  {    opts.endpoint = argv[1];    if (argc > 2)    {      opts.use_ssl_credentials         = true;      opts.ssl_credentials_cacert_path = argv[2];    }  }  // Removing this line will leave the default noop TracerProvider in place.  InitTracer();  foo_library();  CleanupTracer();  return 0;}
 |