Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <memory>

#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:
void Accept(SpanProcessorConfigurationVisitor *visitor) const override
{
visitor->VisitBatch(this);
}

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

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

#pragma once

#include <memory>
#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) : doc_(std::move(doc)) {}
Configuration(Configuration &&) = delete;
Configuration(const Configuration &) = delete;
Configuration &operator=(Configuration &&) = delete;
Configuration &operator=(const Configuration &other) = delete;
~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> doc_;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// 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:
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,33 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <string>

#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: ExperimentalOtlpFileExporter
class OtlpFileSpanExporterConfiguration : public SpanExporterConfiguration
{
public:
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 <memory>
#include <string>

#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:
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;
std::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 <memory>
#include <string>

#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:
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;
std::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 <memory>

#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: SimpleSpanProcessor
class SimpleSpanProcessorConfiguration : public SpanProcessorConfiguration
{
public:
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,32 @@
// 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;
SpanExporterConfiguration(SpanExporterConfiguration &&) = default;
SpanExporterConfiguration(const SpanExporterConfiguration &) = default;
SpanExporterConfiguration &operator=(SpanExporterConfiguration &&) = default;
SpanExporterConfiguration &operator=(const SpanExporterConfiguration &other) = 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,42 @@
// 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;
SpanExporterConfigurationVisitor(SpanExporterConfigurationVisitor &&) = default;
SpanExporterConfigurationVisitor(const SpanExporterConfigurationVisitor &) = default;
SpanExporterConfigurationVisitor &operator=(SpanExporterConfigurationVisitor &&) = default;
SpanExporterConfigurationVisitor &operator=(const SpanExporterConfigurationVisitor &other) =
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