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,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,26 @@
// 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: ExporterDefaultHistogramAggregation
enum class DefaultHistogramAggregation : 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
Loading
Loading