NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/sdk/trace/tracer_provider.h
Go to the documentation of this file.
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3 
4 #pragma once
5 
6 #include <chrono>
7 #include <mutex>
8 #include <vector>
9 
10 #include "opentelemetry/nostd/shared_ptr.h"
11 #include "opentelemetry/nostd/string_view.h"
12 #include "opentelemetry/sdk/resource/resource.h"
13 #include "opentelemetry/sdk/trace/id_generator.h"
14 #include "opentelemetry/sdk/trace/processor.h"
15 #include "opentelemetry/sdk/trace/random_id_generator.h"
16 #include "opentelemetry/sdk/trace/sampler.h"
17 #include "opentelemetry/sdk/trace/samplers/always_on.h"
18 #include "opentelemetry/sdk/trace/tracer.h"
19 #include "opentelemetry/sdk/trace/tracer_context.h"
20 #include "opentelemetry/trace/tracer.h"
21 #include "opentelemetry/trace/tracer_provider.h"
22 #include "opentelemetry/version.h"
23 
25 namespace sdk
26 {
27 namespace trace
28 {
29 
30 class OPENTELEMETRY_EXPORT TracerProvider final : public opentelemetry::trace::TracerProvider
31 {
32 public:
45  explicit TracerProvider(
46  std::unique_ptr<SpanProcessor> processor,
47  const opentelemetry::sdk::resource::Resource &resource =
48  opentelemetry::sdk::resource::Resource::Create({}),
49  std::unique_ptr<Sampler> sampler = std::unique_ptr<AlwaysOnSampler>(new AlwaysOnSampler),
50  std::unique_ptr<IdGenerator> id_generator =
51  std::unique_ptr<IdGenerator>(new RandomIdGenerator()),
56  .Build())) noexcept;
57 
58  explicit TracerProvider(
59  std::vector<std::unique_ptr<SpanProcessor>> &&processors,
60  const opentelemetry::sdk::resource::Resource &resource =
61  opentelemetry::sdk::resource::Resource::Create({}),
62  std::unique_ptr<Sampler> sampler = std::unique_ptr<AlwaysOnSampler>(new AlwaysOnSampler),
63  std::unique_ptr<IdGenerator> id_generator =
64  std::unique_ptr<IdGenerator>(new RandomIdGenerator()),
69  .Build())) noexcept;
70 
75  explicit TracerProvider(std::unique_ptr<TracerContext> context) noexcept;
76 
77  ~TracerProvider() override;
78 
79  /*
80  Make sure GetTracer() helpers from the API are seen in overload resolution.
81  */
82  using opentelemetry::trace::TracerProvider::GetTracer;
83 
84 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
85  opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> GetTracer(
86  nostd::string_view name,
88  nostd::string_view schema_url,
89  const opentelemetry::common::KeyValueIterable *attributes) noexcept override;
90 #else
91  opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> GetTracer(
92  nostd::string_view name,
94  nostd::string_view schema_url = "") noexcept override;
95 #endif
96 
105  void AddProcessor(std::unique_ptr<SpanProcessor> processor) noexcept;
106 
111  const opentelemetry::sdk::resource::Resource &GetResource() const noexcept;
112 
116  bool Shutdown(std::chrono::microseconds timeout = (std::chrono::microseconds::max)()) noexcept;
117 
121  bool ForceFlush(std::chrono::microseconds timeout = (std::chrono::microseconds::max)()) noexcept;
122 
123 private:
124  // order of declaration is important here - tracers should destroy only after context.
125  std::vector<std::shared_ptr<Tracer>> tracers_;
126  std::shared_ptr<TracerContext> context_;
127  std::mutex lock_;
128 };
129 } // namespace trace
130 } // namespace sdk
trace
Definition: includes/opentelemetry/context/context_value.h:18
nostd::unique_ptr
std::unique_ptr< _Types... > unique_ptr
Definition: includes/opentelemetry/std/unique_ptr.h:19
OPENTELEMETRY_EXPORT
#define OPENTELEMETRY_EXPORT
Definition: includes/opentelemetry/common/macros.h:386
prometheus::detail::make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: includes/prometheus/detail/future_std.h:28
version
int version
Definition: sources/libs/nvll_batch_jpeg_encode/oss/jpeglib.h:908
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
context
Definition: includes/opentelemetry/context/context.h:16
sdk::trace::RandomIdGenerator
Definition: includes/opentelemetry/sdk/trace/random_id_generator.h:17
max
int max(int a, int b)
Compute the component-wise maximum.
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/helper_math.h:60
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
sdk::instrumentationscope::ScopeConfigurator::Builder
A builder class for the ScopeConfigurator that facilitates the creation of ScopeConfigurators.
Definition: includes/opentelemetry/sdk/instrumentationscope/scope_configurator.h:26
sdk::instrumentationscope::ScopeConfigurator
A scope configurator is a function that returns the scope config for a given instrumentation scope.
Definition: includes/opentelemetry/sdk/instrumentationscope/scope_configurator.h:20
sdk::trace::TracerProvider
Definition: includes/opentelemetry/sdk/trace/tracer_provider.h:30
sdk::trace::TracerConfig::Default
static TracerConfig Default()
Returns a TracerConfig that represents a Tracer configured with the default behavior.
sdk
Definition: includes/opentelemetry/sdk/common/atomic_shared_ptr.h:13
sdk::trace::AlwaysOnSampler
The always on sampler is a default sampler which always return Decision::RECORD_AND_SAMPLE.
Definition: includes/opentelemetry/sdk/trace/samplers/always_on.h:31
nostd::string_view
Back port of std::string_view to work with pre-cpp-17 compilers.
Definition: includes/opentelemetry/nostd/string_view.h:37