Skip to content
Merged
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/span_processor_configuration.h"
#include "opentelemetry/sdk/configuration/span_processor_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: BatchSpanProcessor
class BatchSpanProcessorConfiguration : public SpanProcessorConfiguration
{
public:
BatchSpanProcessorConfiguration() = default;
~BatchSpanProcessorConfiguration() override = default;

void Accept(SpanProcessorConfigurationVisitor *visitor) const override
{
visitor->VisitBatch(this);
}

size_t schedule_delay{0};
size_t export_timeout{0};
size_t max_queue_size{0};
size_t max_export_batch_size{0};
std::unique_ptr<SpanExporterConfiguration> exporter;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
70 changes: 70 additions & 0 deletions sdk/include/opentelemetry/sdk/configuration/configuration.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <string>

#include "opentelemetry/sdk/configuration/attribute_limits_configuration.h"
#include "opentelemetry/sdk/configuration/document.h"
#include "opentelemetry/sdk/configuration/logger_provider_configuration.h"
#include "opentelemetry/sdk/configuration/meter_provider_configuration.h"
#include "opentelemetry/sdk/configuration/propagator_configuration.h"
#include "opentelemetry/sdk/configuration/resource_configuration.h"
#include "opentelemetry/sdk/configuration/tracer_provider_configuration.h"
#include "opentelemetry/version.h"

/*
* General notes about configuration classes.
*
* Each Yaml node that exists in the yaml schema,
* as defined by https://github.com/open-telemetry/opentelemetry-configuration
* is represented by a C++ class.
* Special comments are used to relate the C++ class to
* the Yaml node it represents.
*
* YAML-SCHEMA: points to the relevant file within the
* opentelemetry-configuration repository
* YAML-NODE: points to the relevant node within the file.
*
* For example,
* C++ class opentelemetry::sdk::configuration::Configuration
* corresponds to
* Yaml node OpenTelemetryConfiguration,
* in file
* https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema/opentelemetry_configuration.json
*/

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/opentelemetry_configuration.json
// YAML-NODE: OpenTelemetryConfiguration
class Configuration
{
public:
Configuration(std::unique_ptr<Document> doc) : m_doc(std::move(doc)) {}
~Configuration() = default;

std::string file_format;
bool disabled{false};
std::string log_level;

std::unique_ptr<AttributeLimitsConfiguration> attribute_limits;
std::unique_ptr<LoggerProviderConfiguration> logger_provider;
std::unique_ptr<MeterProviderConfiguration> meter_provider;
std::unique_ptr<PropagatorConfiguration> propagator;
std::unique_ptr<TracerProviderConfiguration> tracer_provider;
std::unique_ptr<ResourceConfiguration> resource;
// Ignored: instrumentation

private:
std::unique_ptr<Document> m_doc;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/common.json
// YAML-NODE: Console
class ConsoleSpanExporterConfiguration : public SpanExporterConfiguration
{
public:
ConsoleSpanExporterConfiguration() = default;
~ConsoleSpanExporterConfiguration() override = default;

void Accept(SpanExporterConfigurationVisitor *visitor) const override
{
visitor->VisitConsole(this);
}
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration_visitor.h"
#include "opentelemetry/version.h"

#include <string>

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/common.json
// YAML-NODE: ExperimentalOtlpFileExporter
class OtlpFileSpanExporterConfiguration : public SpanExporterConfiguration
{
public:
OtlpFileSpanExporterConfiguration() = default;
~OtlpFileSpanExporterConfiguration() override = default;

void Accept(SpanExporterConfigurationVisitor *visitor) const override
{
visitor->VisitOtlpFile(this);
}

std::string output_stream;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/headers_configuration.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/common.json
// YAML-NODE: OtlpGrpcExporter
class OtlpGrpcSpanExporterConfiguration : public SpanExporterConfiguration
{
public:
OtlpGrpcSpanExporterConfiguration() = default;
~OtlpGrpcSpanExporterConfiguration() override = default;

void Accept(SpanExporterConfigurationVisitor *visitor) const override
{
visitor->VisitOtlpGrpc(this);
}

std::string endpoint;
std::string certificate_file;
std::string client_key_file;
std::string client_certificate_file;
std::unique_ptr<HeadersConfiguration> headers;
std::string headers_list;
std::string compression;
size_t timeout{0};
bool insecure{false};
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/headers_configuration.h"
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/span_exporter_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/common.json
// YAML-NODE: OtlpHttpExporter
class OtlpHttpSpanExporterConfiguration : public SpanExporterConfiguration
{
public:
OtlpHttpSpanExporterConfiguration() = default;
~OtlpHttpSpanExporterConfiguration() override = default;

void Accept(SpanExporterConfigurationVisitor *visitor) const override
{
visitor->VisitOtlpHttp(this);
}

std::string endpoint;
std::string certificate_file;
std::string client_key_file;
std::string client_certificate_file;
std::unique_ptr<HeadersConfiguration> headers;
std::string headers_list;
std::string compression;
size_t timeout{0};
enum_otlp_http_encoding encoding{protobuf};
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/span_processor_configuration.h"
#include "opentelemetry/sdk/configuration/span_processor_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: SimpleSpanProcessor
class SimpleSpanProcessorConfiguration : public SpanProcessorConfiguration
{
public:
SimpleSpanProcessorConfiguration() = default;
~SimpleSpanProcessorConfiguration() override = default;

void Accept(SpanProcessorConfigurationVisitor *visitor) const override
{
visitor->VisitSimple(this);
}

std::unique_ptr<SpanExporterConfiguration> exporter;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{
class SpanExporterConfigurationVisitor;

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: SpanExporter
class SpanExporterConfiguration
{
public:
SpanExporterConfiguration() = default;
virtual ~SpanExporterConfiguration() = default;

virtual void Accept(SpanExporterConfigurationVisitor *visitor) const = 0;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

class OtlpHttpSpanExporterConfiguration;
class OtlpGrpcSpanExporterConfiguration;
class OtlpFileSpanExporterConfiguration;
class ConsoleSpanExporterConfiguration;
class ZipkinSpanExporterConfiguration;
class ExtensionSpanExporterConfiguration;

class SpanExporterConfigurationVisitor
{
public:
SpanExporterConfigurationVisitor() = default;
virtual ~SpanExporterConfigurationVisitor() = default;

virtual void VisitOtlpHttp(const OtlpHttpSpanExporterConfiguration *model) = 0;
virtual void VisitOtlpGrpc(const OtlpGrpcSpanExporterConfiguration *model) = 0;
virtual void VisitOtlpFile(const OtlpFileSpanExporterConfiguration *model) = 0;
virtual void VisitConsole(const ConsoleSpanExporterConfiguration *model) = 0;
virtual void VisitZipkin(const ZipkinSpanExporterConfiguration *model) = 0;
virtual void VisitExtension(const ExtensionSpanExporterConfiguration *model) = 0;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Loading
Loading