azure-core
tracing.hpp
Go to the documentation of this file.
1 // Copyright (c) Microsoft Corporation. All rights reserved.
2 // SPDX-License-Identifier: MIT
3 
9 #pragma once
10 
11 #include <azure/core/context.hpp>
12 #include <memory>
13 #include <string>
14 
15 namespace Azure { namespace Core { namespace Tracing {
16  class TracerProvider;
17  namespace _internal {
18  class Tracer;
22  class TracerProviderImpl {
23  public:
32  virtual std::shared_ptr<Azure::Core::Tracing::_internal::Tracer> CreateTracer(
33  std::string const& name,
34  std::string const& version = {}) const = 0;
35 
36  virtual ~TracerProviderImpl() = default;
37  };
38 
39  struct TracerProviderImplGetter
40  {
47  static std::shared_ptr<TracerProviderImpl> TracerImplFromTracer(
48  std::shared_ptr<TracerProvider> const& provider);
49  };
50 
51  } // namespace _internal
52 
56  class TracerProvider : private _internal::TracerProviderImpl {
57  // Marked TracerImplFromTracer as friend so it can access private members in the class.
58  friend std::shared_ptr<TracerProviderImpl>
59  _internal::TracerProviderImplGetter::TracerImplFromTracer(
60  std::shared_ptr<TracerProvider> const&);
61  };
62 
63 }}} // namespace Azure::Core::Tracing
Trace Provider - factory for creating Tracer objects.
Definition: tracing.hpp:56
Context for canceling long running operations.
Azure SDK abstractions.
Definition: azure_assert.hpp:55