]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/metrics/view/view.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / sdk / include / opentelemetry / sdk / metrics / view / view.h
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 (file)
index 0000000..3cd9f85
--- /dev/null
@@ -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<opentelemetry::sdk::metrics::AttributesProcessor> attributes_processor =
+           std::unique_ptr<opentelemetry::sdk::metrics::AttributesProcessor>(
+               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<opentelemetry::sdk::metrics::AttributesProcessor> attributes_processor_;
+};
+}  // namespace metrics
+}  // namespace sdk
+OPENTELEMETRY_END_NAMESPACE
+#endif