Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 27 additions & 9 deletions api/include/opentelemetry/logs/provider.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,17 @@
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace logs
{
// The forward declaration is sufficient,
// we do not want a API -> SDK dependency.
// IWYU pragma: no_include "opentelemetry/sdk/logs/provider.h"
class Provider;
} // namespace logs
} // namespace sdk

namespace logs
{

Expand All @@ -36,15 +47,6 @@ class OPENTELEMETRY_EXPORT Provider
return nostd::shared_ptr<LoggerProvider>(GetProvider());
}

/**
* Changes the singleton LoggerProvider.
*/
static void SetLoggerProvider(const nostd::shared_ptr<LoggerProvider> &tp) noexcept
{
std::lock_guard<common::SpinLockMutex> guard(GetLock());
GetProvider() = tp;
}

/**
* Returns the singleton EventLoggerProvider.
*
Expand All @@ -57,6 +59,19 @@ class OPENTELEMETRY_EXPORT Provider
return nostd::shared_ptr<EventLoggerProvider>(GetEventProvider());
}

#if OPENTELEMETRY_ABI_VERSION_NO >= 2
private:
#endif /* OPENTELEMETRY_ABI_VERSION_NO */

/**
* Changes the singleton LoggerProvider.
*/
static void SetLoggerProvider(const nostd::shared_ptr<LoggerProvider> &tp) noexcept
{
std::lock_guard<common::SpinLockMutex> guard(GetLock());
GetProvider() = tp;
}

/**
* Changes the singleton EventLoggerProvider.
*/
Expand All @@ -67,6 +82,9 @@ class OPENTELEMETRY_EXPORT Provider
}

private:
/* The SDK is allowed to change the singleton in the API. */
friend class opentelemetry::sdk::logs::Provider;

OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr<LoggerProvider> &GetProvider() noexcept
{
static nostd::shared_ptr<LoggerProvider> provider(new NoopLoggerProvider);
Expand Down
20 changes: 19 additions & 1 deletion api/include/opentelemetry/metrics/provider.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,24 @@

#include <mutex>

#include "opentelemetry/common/macros.h"
#include "opentelemetry/common/spin_lock_mutex.h"
#include "opentelemetry/metrics/meter_provider.h"
#include "opentelemetry/metrics/noop.h"
#include "opentelemetry/nostd/shared_ptr.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace metrics
{
// The forward declaration is sufficient,
// we do not want a API -> SDK dependency.
// IWYU pragma: no_include "opentelemetry/sdk/metrics/provider.h"
class Provider; // IWYU pragma: keep
} // namespace metrics
} // namespace sdk

namespace metrics
{

Expand All @@ -35,6 +46,10 @@ class Provider
return nostd::shared_ptr<MeterProvider>(GetProvider());
}

#if OPENTELEMETRY_ABI_VERSION_NO >= 2
private:
#endif /* OPENTELEMETRY_ABI_VERSION_NO */

/**
* Changes the singleton MeterProvider.
*/
Expand All @@ -45,6 +60,9 @@ class Provider
}

private:
/* The SDK is allowed to change the singleton in the API. */
friend class opentelemetry::sdk::metrics::Provider;

OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr<MeterProvider> &GetProvider() noexcept
{
static nostd::shared_ptr<MeterProvider> provider(new NoopMeterProvider);
Expand Down
18 changes: 18 additions & 0 deletions api/include/opentelemetry/trace/provider.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,17 @@
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace trace
{
// The forward declaration is sufficient,
// we do not want a API -> SDK dependency.
// IWYU pragma: no_include "opentelemetry/sdk/trace/provider.h"
class Provider; // IWYU pragma: keep
} // namespace trace
} // namespace sdk

namespace trace
{

Expand All @@ -33,6 +44,10 @@ class OPENTELEMETRY_EXPORT Provider
return nostd::shared_ptr<TracerProvider>(GetProvider());
}

#if OPENTELEMETRY_ABI_VERSION_NO >= 2
private:
#endif /* OPENTELEMETRY_ABI_VERSION_NO */

/**
* Changes the singleton TracerProvider.
*/
Expand All @@ -43,6 +58,9 @@ class OPENTELEMETRY_EXPORT Provider
}

private:
/* The SDK is allowed to change the singleton in the API. */
friend class opentelemetry::sdk::trace::Provider;

OPENTELEMETRY_API_SINGLETON static nostd::shared_ptr<TracerProvider> &GetProvider() noexcept
{
static nostd::shared_ptr<TracerProvider> provider(new NoopTracerProvider);
Expand Down
4 changes: 0 additions & 4 deletions api/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,3 @@ add_subdirectory(metrics)
add_subdirectory(logs)
add_subdirectory(common)
add_subdirectory(baggage)

if(NOT OPENTELEMETRY_SKIP_DYNAMIC_LOADING_TESTS)
add_subdirectory(singleton)
endif()
2 changes: 2 additions & 0 deletions api/test/logs/logger_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ class TestProvider : public LoggerProvider
}
};

#if OPENTELEMETRY_ABI_VERSION_NO == 1
TEST(Logger, PushLoggerImplementation)
{
// Push the new loggerprovider class into the global singleton
Expand All @@ -233,3 +234,4 @@ TEST(Logger, PushLoggerImplementation)
auto logger = lp->GetLogger("TestLogger", "opentelelemtry_library", "", schema_url);
ASSERT_EQ("test logger", logger->GetName());
}
#endif /* OPENTELEMETRY_ABI_VERSION_NO */
4 changes: 4 additions & 0 deletions api/test/logs/provider_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ TEST(Provider, GetLoggerProviderDefault)
EXPECT_NE(nullptr, tf);
}

#if OPENTELEMETRY_ABI_VERSION_NO == 1
TEST(Provider, SetLoggerProvider)
{
auto tf = shared_ptr<LoggerProvider>(new TestProvider());
Expand All @@ -56,6 +57,7 @@ TEST(Provider, MultipleLoggerProviders)

ASSERT_NE(Provider::GetLoggerProvider(), tf);
}
#endif /* OPENTELEMETRY_ABI_VERSION_NO */

TEST(Provider, GetLogger)
{
Expand Down Expand Up @@ -88,6 +90,7 @@ TEST(Provider, GetEventLoggerProviderDefault)
EXPECT_NE(nullptr, tf);
}

#if OPENTELEMETRY_ABI_VERSION_NO == 1
TEST(Provider, SetEventLoggerProvider)
{
auto tf = nostd::shared_ptr<EventLoggerProvider>(new TestEventLoggerProvider());
Expand All @@ -104,6 +107,7 @@ TEST(Provider, MultipleEventLoggerProviders)

ASSERT_NE(Provider::GetEventLoggerProvider(), tf);
}
#endif /* OPENTELEMETRY_ABI_VERSION_NO */

TEST(Provider, CreateEventLogger)
{
Expand Down
2 changes: 2 additions & 0 deletions api/test/metrics/meter_provider_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ TEST(Provider, GetMeterProviderDefault)
EXPECT_NE(nullptr, tf);
}

#if OPENTELEMETRY_ABI_VERSION_NO == 1
TEST(Provider, SetMeterProvider)
{
auto tf = opentelemetry::nostd::shared_ptr<MeterProvider>(new NoopMeterProvider());
Expand All @@ -33,3 +34,4 @@ TEST(Provider, MultipleMeterProviders)

ASSERT_NE(Provider::GetMeterProvider(), tf);
}
#endif /* OPENTELEMETRY_ABI_VERSION_NO */
2 changes: 2 additions & 0 deletions api/test/trace/provider_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,11 @@ TEST(Provider, GetTracerProviderDefault)
EXPECT_NE(nullptr, tf);
}

#if OPENTELEMETRY_ABI_VERSION_NO == 1
TEST(Provider, SetTracerProvider)
{
auto tf = nostd::shared_ptr<TracerProvider>(new TestProvider());
Provider::SetTracerProvider(tf);
ASSERT_EQ(tf, Provider::GetTracerProvider());
}
#endif /* OPENTELEMETRY_ABI_VERSION_NO */
5 changes: 3 additions & 2 deletions examples/batch/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "opentelemetry/sdk/trace/batch_span_processor_options.h"
#include "opentelemetry/sdk/trace/exporter.h"
#include "opentelemetry/sdk/trace/processor.h"
#include "opentelemetry/sdk/trace/provider.h"
#include "opentelemetry/sdk/trace/tracer_provider.h"
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
#include "opentelemetry/trace/provider.h"
Expand Down Expand Up @@ -56,13 +57,13 @@ void InitTracer()
trace_sdk::TracerProviderFactory::Create(std::move(processor), resource);

// Set the global trace provider.
trace_api::Provider::SetTracerProvider(provider);
trace_sdk::Provider::SetTracerProvider(provider);
}

void CleanupTracer()
{
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
trace_api::Provider::SetTracerProvider(none);
trace_sdk::Provider::SetTracerProvider(none);
}

opentelemetry::nostd::shared_ptr<trace_api::Tracer> get_tracer()
Expand Down
5 changes: 3 additions & 2 deletions examples/grpc/tracer_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "opentelemetry/nostd/shared_ptr.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_context.h"
#include "opentelemetry/sdk/trace/tracer_context_factory.h"
Expand Down Expand Up @@ -85,7 +86,7 @@ void InitTracer()
std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(context));
// Set the global trace provider
opentelemetry::trace::Provider::SetTracerProvider(provider);
opentelemetry::sdk::trace::Provider::SetTracerProvider(provider);

// set global propagator
opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator(
Expand All @@ -96,7 +97,7 @@ void InitTracer()
void CleanupTracer()
{
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
opentelemetry::trace::Provider::SetTracerProvider(none);
opentelemetry::sdk::trace::Provider::SetTracerProvider(none);
}

opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> get_tracer(std::string tracer_name)
Expand Down
24 changes: 12 additions & 12 deletions examples/http/tracer_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,24 @@

#pragma once

#include <cstring>
#include <iostream>
#include <vector>

#include "opentelemetry/context/propagation/global_propagator.h"
#include "opentelemetry/context/propagation/text_map_propagator.h"
#include "opentelemetry/exporters/ostream/span_exporter_factory.h"
#include "opentelemetry/ext/http/client/http_client.h"
#include "opentelemetry/nostd/shared_ptr.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_context.h"
#include "opentelemetry/sdk/trace/tracer_context_factory.h"
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
#include "opentelemetry/trace/provider.h"

#include "opentelemetry/context/propagation/global_propagator.h"
#include "opentelemetry/context/propagation/text_map_propagator.h"
#include "opentelemetry/trace/propagation/http_trace_context.h"

#include <cstring>
#include <iostream>
#include <vector>
#include "opentelemetry/ext/http/client/http_client.h"
#include "opentelemetry/nostd/shared_ptr.h"
#include "opentelemetry/trace/provider.h"

namespace
{
Expand Down Expand Up @@ -75,7 +75,7 @@ void InitTracer()
std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
opentelemetry::sdk::trace::TracerProviderFactory::Create(std::move(context));
// Set the global trace provider
opentelemetry::trace::Provider::SetTracerProvider(provider);
opentelemetry::sdk::trace::Provider::SetTracerProvider(provider);

// set global propagator
opentelemetry::context::propagation::GlobalTextMapPropagator::SetGlobalPropagator(
Expand All @@ -86,7 +86,7 @@ void InitTracer()
void CleanupTracer()
{
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
opentelemetry::trace::Provider::SetTracerProvider(none);
opentelemetry::sdk::trace::Provider::SetTracerProvider(none);
}

opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> get_tracer(std::string tracer_name)
Expand Down
10 changes: 6 additions & 4 deletions examples/logs_simple/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@
#include "opentelemetry/sdk/logs/logger_provider.h"
#include "opentelemetry/sdk/logs/logger_provider_factory.h"
#include "opentelemetry/sdk/logs/processor.h"
#include "opentelemetry/sdk/logs/provider.h"
#include "opentelemetry/sdk/logs/simple_log_record_processor_factory.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"
Expand Down Expand Up @@ -48,13 +50,13 @@ void InitTracer()

// Set the global trace provider
const std::shared_ptr<trace_api::TracerProvider> &api_provider = sdk_provider;
trace_api::Provider::SetTracerProvider(api_provider);
trace_sdk::Provider::SetTracerProvider(api_provider);
}

void CleanupTracer()
{
std::shared_ptr<trace_api::TracerProvider> noop;
trace_api::Provider::SetTracerProvider(noop);
trace_sdk::Provider::SetTracerProvider(noop);
}

void InitLogger()
Expand All @@ -69,13 +71,13 @@ void InitLogger()

// Set the global logger provider
const std::shared_ptr<logs_api::LoggerProvider> &api_provider = sdk_provider;
logs_api::Provider::SetLoggerProvider(api_provider);
logs_sdk::Provider::SetLoggerProvider(api_provider);
}

void CleanupLogger()
{
std::shared_ptr<logs_api::LoggerProvider> noop;
logs_api::Provider::SetLoggerProvider(noop);
logs_sdk::Provider::SetLoggerProvider(noop);
}

} // namespace
Expand Down
5 changes: 3 additions & 2 deletions examples/metrics_simple/metrics_ostream.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "opentelemetry/sdk/metrics/meter_provider.h"
#include "opentelemetry/sdk/metrics/meter_provider_factory.h"
#include "opentelemetry/sdk/metrics/metric_reader.h"
#include "opentelemetry/sdk/metrics/provider.h"
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
#include "opentelemetry/sdk/metrics/view/instrument_selector.h"
#include "opentelemetry/sdk/metrics/view/instrument_selector_factory.h"
Expand Down Expand Up @@ -114,13 +115,13 @@ void InitMetrics(const std::string &name)

std::shared_ptr<opentelemetry::metrics::MeterProvider> api_provider(std::move(provider));

metrics_api::Provider::SetMeterProvider(api_provider);
metrics_sdk::Provider::SetMeterProvider(api_provider);
}

void CleanupMetrics()
{
std::shared_ptr<metrics_api::MeterProvider> none;
metrics_api::Provider::SetMeterProvider(none);
metrics_sdk::Provider::SetMeterProvider(none);
}
} // namespace

Expand Down
Loading
Loading