X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=ceph%2Fsrc%2Fjaegertracing%2Fopentelemetry-cpp%2Fsdk%2Finclude%2Fopentelemetry%2Fsdk%2Fmetrics%2Fview%2Fview.h;fp=ceph%2Fsrc%2Fjaegertracing%2Fopentelemetry-cpp%2Fsdk%2Finclude%2Fopentelemetry%2Fsdk%2Fmetrics%2Fview%2Fview.h;h=3cd9f850e15b884a1928959871353516e150041f;hb=1e59de90020f1d8d374046ef9cca56ccd4e806e2;hp=0000000000000000000000000000000000000000;hpb=bd41e436e25044e8e83156060a37c23cb661c364;p=ceph.git diff --git a/ceph/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/metrics/view/view.h b/ceph/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/metrics/view/view.h new file mode 100644 index 000000000..3cd9f850e --- /dev/null +++ b/ceph/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/metrics/view/view.h @@ -0,0 +1,57 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once +#ifndef ENABLE_METRICS_PREVIEW +# include "opentelemetry/nostd/string_view.h" +# include "opentelemetry/sdk/metrics/aggregation/default_aggregation.h" +# include "opentelemetry/sdk/metrics/instruments.h" +# include "opentelemetry/sdk/metrics/view/attributes_processor.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace metrics +{ +/** + * View defines the interface to allow SDK user to + * customize the metrics before exported. + */ + +class View +{ +public: + View(const std::string &name, + const std::string &description = "", + AggregationType aggregation_type = AggregationType::kDefault, + std::unique_ptr attributes_processor = + std::unique_ptr( + new opentelemetry::sdk::metrics::DefaultAttributesProcessor())) + : name_(name), + description_(description), + aggregation_type_{aggregation_type}, + attributes_processor_{std::move(attributes_processor)} + {} + + virtual std::string GetName() const noexcept { return name_; } + + virtual std::string GetDescription() const noexcept { return description_; } + + virtual AggregationType GetAggregationType() const noexcept { return aggregation_type_; } + + virtual const opentelemetry::sdk::metrics::AttributesProcessor &GetAttributesProcessor() + const noexcept + { + return *attributes_processor_.get(); + } + +private: + std::string name_; + std::string description_; + AggregationType aggregation_type_; + std::unique_ptr attributes_processor_; +}; +} // namespace metrics +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE +#endif