]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/examples/plugin/plugin/factory_impl.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / examples / plugin / plugin / factory_impl.cc
CommitLineData
1e59de90
TL
1// Copyright The OpenTelemetry Authors
2// SPDX-License-Identifier: Apache-2.0
3
4#include "opentelemetry/plugin/factory.h"
5#include "opentelemetry/plugin/hook.h"
6#include "tracer.h"
7
8namespace nostd = opentelemetry::nostd;
9namespace plugin = opentelemetry::plugin;
10
11class TracerHandle final : public plugin::TracerHandle
12{
13public:
14 explicit TracerHandle(std::shared_ptr<Tracer> &&tracer) noexcept : tracer_{std::move(tracer)} {}
15
16 // opentelemetry::plugin::TracerHandle
17 Tracer &tracer() const noexcept override { return *tracer_; }
18
19private:
20 std::shared_ptr<Tracer> tracer_;
21};
22
23class FactoryImpl final : public plugin::Factory::FactoryImpl
24{
25public:
26 // opentelemetry::plugin::Factory::FactoryImpl
27 nostd::unique_ptr<plugin::TracerHandle> MakeTracerHandle(
28 nostd::string_view tracer_config,
29 nostd::unique_ptr<char[]> &error_message) const noexcept override
30 {
31 std::shared_ptr<Tracer> tracer{new (std::nothrow) Tracer{""}};
32 if (tracer == nullptr)
33 {
34 return nullptr;
35 }
36 return nostd::unique_ptr<TracerHandle>{new (std::nothrow) TracerHandle{std::move(tracer)}};
37 }
38};
39
40static nostd::unique_ptr<plugin::Factory::FactoryImpl> MakeFactoryImpl(
41 const plugin::LoaderInfo &loader_info,
42 nostd::unique_ptr<char[]> &error_message) noexcept
43{
44 (void)loader_info;
45 (void)error_message;
46 return nostd::unique_ptr<plugin::Factory::FactoryImpl>{new (std::nothrow) FactoryImpl{}};
47}
48
49OPENTELEMETRY_DEFINE_PLUGIN_HOOK(MakeFactoryImpl);