]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/metrics/state/metric_collector.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / sdk / include / opentelemetry / sdk / metrics / state / metric_collector.h
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3
4 #pragma once
5 #ifndef ENABLE_METRICS_PREVIEW
6 # include "opentelemetry/sdk/metrics/data/metric_data.h"
7 # include "opentelemetry/sdk/metrics/export/metric_producer.h"
8
9 OPENTELEMETRY_BEGIN_NAMESPACE
10 namespace sdk
11 {
12 namespace metrics
13 {
14
15 class MetricReader;
16 class MeterContext;
17
18 class CollectorHandle
19 {
20 public:
21 virtual AggregationTemporality GetAggregationTemporality() noexcept = 0;
22 };
23
24 /**
25 * An internal opaque interface that the MetricReader receives as
26 * MetricProducer. It acts as the storage key to the internal metric stream
27 * state for each MetricReader.
28 */
29
30 class MetricCollector : public MetricProducer, public CollectorHandle
31 {
32 public:
33 MetricCollector(std::shared_ptr<MeterContext> &&context,
34 std::unique_ptr<MetricReader> metric_reader);
35
36 AggregationTemporality GetAggregationTemporality() noexcept override;
37
38 /**
39 * The callback to be called for each metric exporter. This will only be those
40 * metrics that have been produced since the last time this method was called.
41 *
42 * @return a status of completion of method.
43 */
44 bool Collect(nostd::function_ref<bool(ResourceMetrics &metric_data)> callback) noexcept override;
45
46 bool ForceFlush(std::chrono::microseconds timeout = std::chrono::microseconds::max()) noexcept;
47
48 bool Shutdown(std::chrono::microseconds timeout = std::chrono::microseconds::max()) noexcept;
49
50 private:
51 std::shared_ptr<MeterContext> meter_context_;
52 std::shared_ptr<MetricReader> metric_reader_;
53 };
54 } // namespace metrics
55 } // namespace sdk
56 OPENTELEMETRY_END_NAMESPACE
57 #endif