diff --git a/sdk/include/opentelemetry/sdk/configuration/attribute_limits_configuration.h b/sdk/include/opentelemetry/sdk/configuration/attribute_limits_configuration.h new file mode 100644 index 0000000000..69f311575c --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/attribute_limits_configuration.h @@ -0,0 +1,27 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/opentelemetry_configuration.json +// YAML-NODE: AttributeLimits +class AttributeLimitsConfiguration +{ +public: + std::size_t attribute_value_length_limit; + std::size_t attribute_count_limit; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/attribute_value_configuration.h new file mode 100644 index 0000000000..12409835f4 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/attribute_value_configuration.h @@ -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 AttributeValueConfigurationVisitor; + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class AttributeValueConfiguration +{ +public: + AttributeValueConfiguration() = default; + AttributeValueConfiguration(AttributeValueConfiguration &&) = default; + AttributeValueConfiguration(const AttributeValueConfiguration &) = default; + AttributeValueConfiguration &operator=(AttributeValueConfiguration &&) = default; + AttributeValueConfiguration &operator=(const AttributeValueConfiguration &other) = default; + virtual ~AttributeValueConfiguration() = default; + + virtual void Accept(AttributeValueConfigurationVisitor *visitor) const = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h new file mode 100644 index 0000000000..d7bc8f6792 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h @@ -0,0 +1,46 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +class StringAttributeValueConfiguration; +class IntegerAttributeValueConfiguration; +class DoubleAttributeValueConfiguration; +class BooleanAttributeValueConfiguration; +class StringArrayAttributeValueConfiguration; +class IntegerArrayAttributeValueConfiguration; +class DoubleArrayAttributeValueConfiguration; +class BooleanArrayAttributeValueConfiguration; + +class AttributeValueConfigurationVisitor +{ +public: + AttributeValueConfigurationVisitor() = default; + AttributeValueConfigurationVisitor(AttributeValueConfigurationVisitor &&) = default; + AttributeValueConfigurationVisitor(const AttributeValueConfigurationVisitor &) = default; + AttributeValueConfigurationVisitor &operator=(AttributeValueConfigurationVisitor &&) = default; + AttributeValueConfigurationVisitor &operator=(const AttributeValueConfigurationVisitor &other) = + default; + virtual ~AttributeValueConfigurationVisitor() = default; + + virtual void VisitString(const StringAttributeValueConfiguration *model) = 0; + virtual void VisitInteger(const IntegerAttributeValueConfiguration *model) = 0; + virtual void VisitDouble(const DoubleAttributeValueConfiguration *model) = 0; + virtual void VisitBoolean(const BooleanAttributeValueConfiguration *model) = 0; + virtual void VisitStringArray(const StringArrayAttributeValueConfiguration *model) = 0; + virtual void VisitIntegerArray(const IntegerArrayAttributeValueConfiguration *model) = 0; + virtual void VisitDoubleArray(const DoubleArrayAttributeValueConfiguration *model) = 0; + virtual void VisitBooleanArray(const BooleanArrayAttributeValueConfiguration *model) = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/attributes_configuration.h b/sdk/include/opentelemetry/sdk/configuration/attributes_configuration.h new file mode 100644 index 0000000000..655344ee68 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/attributes_configuration.h @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include +#include + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class AttributesConfiguration +{ +public: + std::map> kv_map; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/boolean_array_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/boolean_array_attribute_value_configuration.h new file mode 100644 index 0000000000..2c03f5c14f --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/boolean_array_attribute_value_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class BooleanArrayAttributeValueConfiguration : public AttributeValueConfiguration +{ +public: + void Accept(AttributeValueConfigurationVisitor *visitor) const override + { + visitor->VisitBooleanArray(this); + } + + std::vector value; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/boolean_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/boolean_attribute_value_configuration.h new file mode 100644 index 0000000000..2e2700f6eb --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/boolean_attribute_value_configuration.h @@ -0,0 +1,31 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class BooleanAttributeValueConfiguration : public AttributeValueConfiguration +{ +public: + void Accept(AttributeValueConfigurationVisitor *visitor) const override + { + visitor->VisitBoolean(this); + } + + bool value; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/double_array_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/double_array_attribute_value_configuration.h new file mode 100644 index 0000000000..5670e2e462 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/double_array_attribute_value_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class DoubleArrayAttributeValueConfiguration : public AttributeValueConfiguration +{ +public: + void Accept(AttributeValueConfigurationVisitor *visitor) const override + { + visitor->VisitDoubleArray(this); + } + + std::vector value; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/double_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/double_attribute_value_configuration.h new file mode 100644 index 0000000000..2408d81bc0 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/double_attribute_value_configuration.h @@ -0,0 +1,31 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class DoubleAttributeValueConfiguration : public AttributeValueConfiguration +{ +public: + void Accept(AttributeValueConfigurationVisitor *visitor) const override + { + visitor->VisitDouble(this); + } + + double value; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/headers_configuration.h b/sdk/include/opentelemetry/sdk/configuration/headers_configuration.h new file mode 100644 index 0000000000..b227b5f251 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/headers_configuration.h @@ -0,0 +1,25 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +class HeadersConfiguration +{ +public: + std::map kv_map; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/include_exclude_configuration.h b/sdk/include/opentelemetry/sdk/configuration/include_exclude_configuration.h new file mode 100644 index 0000000000..81167f247f --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/include_exclude_configuration.h @@ -0,0 +1,28 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/string_array_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/common.json +// YAML-NODE: IncludeExclude +class IncludeExcludeConfiguration +{ +public: + std::unique_ptr included; + std::unique_ptr excluded; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/integer_array_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/integer_array_attribute_value_configuration.h new file mode 100644 index 0000000000..23ca1ec18f --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/integer_array_attribute_value_configuration.h @@ -0,0 +1,34 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class IntegerArrayAttributeValueConfiguration : public AttributeValueConfiguration +{ +public: + void Accept(AttributeValueConfigurationVisitor *visitor) const override + { + visitor->VisitIntegerArray(this); + } + + std::vector value; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/integer_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/integer_attribute_value_configuration.h new file mode 100644 index 0000000000..4fa558157d --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/integer_attribute_value_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class IntegerAttributeValueConfiguration : public AttributeValueConfiguration +{ +public: + void Accept(AttributeValueConfigurationVisitor *visitor) const override + { + visitor->VisitInteger(this); + } + + std::size_t value; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_http_encoding.h b/sdk/include/opentelemetry/sdk/configuration/otlp_http_encoding.h new file mode 100644 index 0000000000..d245bf3487 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_http_encoding.h @@ -0,0 +1,26 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/common.json +// YAML-NODE: OtlpHttpEncoding +enum class OtlpHttpEncoding : std::uint8_t +{ + protobuf, + json +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h index 0ff65ec077..87d83f56c0 100644 --- a/sdk/include/opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h @@ -36,7 +36,7 @@ class OtlpHttpLogRecordExporterConfiguration : public LogRecordExporterConfigura std::string headers_list; std::string compression; std::size_t timeout{0}; - enum_otlp_http_encoding encoding{protobuf}; + OtlpHttpEncoding encoding{OtlpHttpEncoding::protobuf}; }; } // namespace configuration diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h index 394a6e75dd..76e0474fd3 100644 --- a/sdk/include/opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h @@ -36,7 +36,7 @@ class OtlpHttpSpanExporterConfiguration : public SpanExporterConfiguration std::string headers_list; std::string compression; std::size_t timeout{0}; - enum_otlp_http_encoding encoding{protobuf}; + OtlpHttpEncoding encoding{OtlpHttpEncoding::protobuf}; }; } // namespace configuration diff --git a/sdk/include/opentelemetry/sdk/configuration/propagator_configuration.h b/sdk/include/opentelemetry/sdk/configuration/propagator_configuration.h new file mode 100644 index 0000000000..cd1f7693d0 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/propagator_configuration.h @@ -0,0 +1,27 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/propagator.json +// YAML-NODE: Propagator +class PropagatorConfiguration +{ +public: + std::vector composite; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/resource_configuration.h b/sdk/include/opentelemetry/sdk/configuration/resource_configuration.h new file mode 100644 index 0000000000..6d29b10e34 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/resource_configuration.h @@ -0,0 +1,32 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/attributes_configuration.h" +#include "opentelemetry/sdk/configuration/include_exclude_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: Resource +class ResourceConfiguration +{ +public: + std::unique_ptr attributes; + std::unique_ptr detectors; + std::string schema_url; + std::string attributes_list; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/string_array_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/string_array_attribute_value_configuration.h new file mode 100644 index 0000000000..39951698fa --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/string_array_attribute_value_configuration.h @@ -0,0 +1,34 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class StringArrayAttributeValueConfiguration : public AttributeValueConfiguration +{ +public: + void Accept(AttributeValueConfigurationVisitor *visitor) const override + { + visitor->VisitStringArray(this); + } + + std::vector value; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/string_array_configuration.h b/sdk/include/opentelemetry/sdk/configuration/string_array_configuration.h new file mode 100644 index 0000000000..6a3cda65f9 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/string_array_configuration.h @@ -0,0 +1,28 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/common.json +// YAML-NODE: included +// YAML-NODE: excluded +class StringArrayConfiguration +{ +public: + std::vector string_array; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/string_attribute_value_configuration.h b/sdk/include/opentelemetry/sdk/configuration/string_attribute_value_configuration.h new file mode 100644 index 0000000000..3e0ea50b6e --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/string_attribute_value_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/attribute_value_configuration.h" +#include "opentelemetry/sdk/configuration/attribute_value_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/resource.json +// YAML-NODE: AttributeNameValue +class StringAttributeValueConfiguration : public AttributeValueConfiguration +{ +public: + void Accept(AttributeValueConfigurationVisitor *visitor) const override + { + visitor->VisitString(this); + } + + std::string value; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE