| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | // Copyright The OpenTelemetry Authors// SPDX-License-Identifier: Apache-2.0#include <memory>#include <string>#include <utility>#include "opentelemetry/exporters/otlp/otlp_file_client_options.h"#include "opentelemetry/exporters/otlp/otlp_file_exporter_factory.h"#include "opentelemetry/exporters/otlp/otlp_file_exporter_options.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 otlp      = opentelemetry::exporter::otlp;namespace{opentelemetry::exporter::otlp::OtlpFileExporterOptions opts;std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> provider;void InitTracer(){  // Create OTLP exporter instance  auto exporter  = otlp::OtlpFileExporterFactory::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)  {    opentelemetry::exporter::otlp::OtlpFileClientFileSystemOptions fs_backend;    fs_backend.file_pattern = argv[1];    opts.backend_options    = fs_backend;  }  // Removing this line will leave the default noop TracerProvider in place.  InitTracer();  foo_library();  CleanupTracer();  return 0;}
 |