diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:44:33 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:44:33 +0000 |
commit | b196c6498d22e47bb9d0da0153068ec54eac7956 (patch) | |
tree | 1a994a492581e93224a7ee6455f5d4e9d2ec8e59 /src/dynamic_load.cpp | |
parent | Initial commit. (diff) | |
download | opentracing-cpp-b196c6498d22e47bb9d0da0153068ec54eac7956.tar.xz opentracing-cpp-b196c6498d22e47bb9d0da0153068ec54eac7956.zip |
Adding upstream version 1.6.0.upstream/1.6.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/dynamic_load.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/dynamic_load.cpp b/src/dynamic_load.cpp new file mode 100644 index 0000000..d36c062 --- /dev/null +++ b/src/dynamic_load.cpp @@ -0,0 +1,56 @@ +#include <opentracing/dynamic_load.h> +#include <opentracing/version.h> + +namespace opentracing { +BEGIN_OPENTRACING_ABI_NAMESPACE +namespace { +class DynamicLoadErrorCategory : public std::error_category { + public: + DynamicLoadErrorCategory() {} + + const char* name() const noexcept override { + return "OpenTracingDynamicLoadError"; + } + + std::error_condition default_error_condition(int code) const + noexcept override { + if (code == dynamic_load_failure_error.value()) { + return std::make_error_condition(std::errc::no_such_file_or_directory); + } + if (code == dynamic_load_not_supported_error.value()) { + return std::make_error_condition(std::errc::not_supported); + } + if (code == incompatible_library_versions_error.value()) { + return std::make_error_condition(std::errc::invalid_argument); + } + return std::error_condition(code, *this); + } + + std::string message(int code) const override { + if (code == dynamic_load_failure_error.value()) { + return "opentracing: failed to load dynamic library"; + } + if (code == dynamic_load_not_supported_error.value()) { + return "opentracing: dynamic library loading is not supported"; + } + if (code == incompatible_library_versions_error.value()) { + return "opentracing: versions of opentracing libraries are incompatible"; + } + return "opentracing: unknown dynamic load error"; + } +}; +} // anonymous namespace + +const std::error_category& dynamic_load_error_category() { + static const DynamicLoadErrorCategory error_category; + return error_category; +} + +DynamicTracingLibraryHandle::DynamicTracingLibraryHandle( + std::unique_ptr<const TracerFactory>&& tracer_factory, + std::unique_ptr<DynamicLibraryHandle>&& dynamic_library_handle) noexcept + : dynamic_library_handle_{std::move(dynamic_library_handle)}, + tracer_factory_{std::move(tracer_factory)} {} + +END_OPENTRACING_ABI_NAMESPACE +} // namespace opentracing |