Skip to content
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 AggregationConfigurationVisitor;

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: aggregation
class AggregationConfiguration
{
public:
AggregationConfiguration() = default;
AggregationConfiguration(AggregationConfiguration &&) = default;
AggregationConfiguration(const AggregationConfiguration &) = default;
AggregationConfiguration &operator=(AggregationConfiguration &&) = default;
AggregationConfiguration &operator=(const AggregationConfiguration &other) = default;
virtual ~AggregationConfiguration() = default;

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

} // 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/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

class Base2ExponentialBucketHistogramAggregationConfiguration;
class DefaultAggregationConfiguration;
class DropAggregationConfiguration;
class ExplicitBucketHistogramAggregationConfiguration;
class LastValueAggregationConfiguration;
class SumAggregationConfiguration;

class AggregationConfigurationVisitor
{
public:
AggregationConfigurationVisitor() = default;
AggregationConfigurationVisitor(AggregationConfigurationVisitor &&) = default;
AggregationConfigurationVisitor(const AggregationConfigurationVisitor &) = default;
AggregationConfigurationVisitor &operator=(AggregationConfigurationVisitor &&) = default;
AggregationConfigurationVisitor &operator=(const AggregationConfigurationVisitor &other) =
default;
virtual ~AggregationConfigurationVisitor() = default;

virtual void VisitBase2ExponentialBucketHistogram(
const Base2ExponentialBucketHistogramAggregationConfiguration *model) = 0;
virtual void VisitDefault(const DefaultAggregationConfiguration *model) = 0;
virtual void VisitDrop(const DropAggregationConfiguration *model) = 0;
virtual void VisitExplicitBucketHistogram(
const ExplicitBucketHistogramAggregationConfiguration *model) = 0;
virtual void VisitLastValue(const LastValueAggregationConfiguration *model) = 0;
virtual void VisitSum(const SumAggregationConfiguration *model) = 0;
};

} // 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 "opentelemetry/sdk/configuration/aggregation_configuration.h"
#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: base2_exponential_bucket_histogram
class Base2ExponentialBucketHistogramAggregationConfiguration : public AggregationConfiguration
{
public:
void Accept(AggregationConfigurationVisitor *visitor) const override
{
visitor->VisitBase2ExponentialBucketHistogram(this);
}

std::size_t max_scale{0};
std::size_t max_size{0};
bool record_min_max{false};
};

} // 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/aggregation_configuration.h"
#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: default
class DefaultAggregationConfiguration : public AggregationConfiguration
{
public:
void Accept(AggregationConfigurationVisitor *visitor) const override
{
visitor->VisitDefault(this);
}
};

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

#pragma once

#include <cstdint>

#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

enum enum_default_histogram_aggregation : std::uint8_t
{
explicit_bucket_histogram,
base2_exponential_bucket_histogram
};

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

#pragma once

#include "opentelemetry/sdk/configuration/aggregation_configuration.h"
#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: drop
class DropAggregationConfiguration : public AggregationConfiguration
{
public:
void Accept(AggregationConfigurationVisitor *visitor) const override { visitor->VisitDrop(this); }
};

} // 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 <vector>

#include "opentelemetry/sdk/configuration/aggregation_configuration.h"
#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: explicit_bucket_histogram
class ExplicitBucketHistogramAggregationConfiguration : public AggregationConfiguration
{
public:
void Accept(AggregationConfigurationVisitor *visitor) const override
{
visitor->VisitExplicitBucketHistogram(this);
}

std::vector<double> boundaries;
bool record_min_max{false};
};

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

#pragma once

#include <cstdint>

#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: InstrumentType
enum class InstrumentType : std::uint8_t
{
counter,
histogram,
observable_counter,
observable_gauge,
observable_up_down_counter,
up_down_counter
};

} // 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/aggregation_configuration.h"
#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: last_value
class LastValueAggregationConfiguration : public AggregationConfiguration
{
public:
void Accept(AggregationConfigurationVisitor *visitor) const override
{
visitor->VisitLastValue(this);
}
};

} // 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 <memory>
#include <vector>

#include "opentelemetry/sdk/configuration/metric_reader_configuration.h"
#include "opentelemetry/sdk/configuration/view_configuration.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: MeterProvider
class MeterProviderConfiguration
{
public:
std::vector<std::unique_ptr<MetricReaderConfiguration>> readers;
std::vector<std::unique_ptr<ViewConfiguration>> views;
// FIXME: exemplar_filter
// FIXME: meter_configurator
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@ class OtlpFilePushMetricExporterConfiguration : public PushMetricExporterConfigu
}

std::string output_stream;
enum_temporality_preference temporality_preference{cumulative};
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
TemporalityPreference temporality_preference{TemporalityPreference::cumulative};
DefaultHistogramAggregation default_histogram_aggregation{
DefaultHistogramAggregation::explicit_bucket_histogram};
};

} // namespace configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@ class OtlpGrpcPushMetricExporterConfiguration : public PushMetricExporterConfigu
std::string compression;
std::size_t timeout{0};
bool insecure{false};
enum_temporality_preference temporality_preference{cumulative};
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
TemporalityPreference temporality_preference{TemporalityPreference::cumulative};
DefaultHistogramAggregation default_histogram_aggregation{
DefaultHistogramAggregation::explicit_bucket_histogram};
};

} // namespace configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ class OtlpHttpPushMetricExporterConfiguration : public PushMetricExporterConfigu
std::string headers_list;
std::string compression;
std::size_t timeout{0};
enum_otlp_http_encoding encoding{protobuf};
enum_temporality_preference temporality_preference{cumulative};
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
OtlpHttpEncoding encoding{OtlpHttpEncoding::protobuf};
TemporalityPreference temporality_preference{TemporalityPreference::cumulative};
DefaultHistogramAggregation default_histogram_aggregation{
DefaultHistogramAggregation::explicit_bucket_histogram};
};

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

#pragma once

#include "opentelemetry/sdk/configuration/aggregation_configuration.h"
#include "opentelemetry/sdk/configuration/aggregation_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: sum
class SumAggregationConfiguration : public AggregationConfiguration
{
public:
void Accept(AggregationConfigurationVisitor *visitor) const override { visitor->VisitSum(this); }
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ namespace sdk
namespace configuration
{

enum enum_temporality_preference : std::uint8_t
// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: ExporterTemporalityPreference
enum class TemporalityPreference : std::uint8_t
{
cumulative,
delta,
Expand Down
Loading
Loading