123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- // Copyright The OpenTelemetry Authors
- // SPDX-License-Identifier: Apache-2.0
- #pragma once
- #include "opentelemetry/nostd/shared_ptr.h"
- #include "opentelemetry/nostd/string_view.h"
- #include "opentelemetry/nostd/unique_ptr.h"
- #include "opentelemetry/version.h"
- OPENTELEMETRY_BEGIN_NAMESPACE
- namespace metrics
- {
- template <typename T>
- class Counter;
- template <typename T>
- class Histogram;
- template <typename T>
- class UpDownCounter;
- template <typename T>
- class Gauge;
- class ObservableInstrument;
- /**
- * Handles instrument creation and provides a facility for batch recording.
- *
- * This class provides methods to create new metric instruments, record a
- * batch of values to a specified set of instruments, and collect
- * measurements from all instruments.
- *
- */
- class Meter
- {
- public:
- virtual ~Meter() = default;
- /**
- * Creates a Counter with the passed characteristics and returns a unique_ptr to that Counter.
- *
- * @param name the name of the new Counter.
- * @param description a brief description of what the Counter is used for.
- * @param unit the unit of metric values following https://unitsofmeasure.org/ucum.html.
- * @return a shared pointer to the created Counter.
- */
- virtual nostd::unique_ptr<Counter<uint64_t>> CreateUInt64Counter(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- virtual nostd::unique_ptr<Counter<double>> CreateDoubleCounter(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- /**
- * Creates a Asynchronous (Observable) counter with the passed characteristics and returns a
- * shared_ptr to that Observable Counter
- *
- * @param name the name of the new Observable Counter.
- * @param description a brief description of what the Observable Counter is used for.
- * @param unit the unit of metric values following https://unitsofmeasure.org/ucum.html.
- */
- virtual nostd::shared_ptr<ObservableInstrument> CreateInt64ObservableCounter(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- virtual nostd::shared_ptr<ObservableInstrument> CreateDoubleObservableCounter(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- /**
- * Creates a Histogram with the passed characteristics and returns a unique_ptr to that Histogram.
- *
- * @param name the name of the new Histogram.
- * @param description a brief description of what the Histogram is used for.
- * @param unit the unit of metric values following https://unitsofmeasure.org/ucum.html.
- * @return a shared pointer to the created Histogram.
- */
- virtual nostd::unique_ptr<Histogram<uint64_t>> CreateUInt64Histogram(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- virtual nostd::unique_ptr<Histogram<double>> CreateDoubleHistogram(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- #if OPENTELEMETRY_ABI_VERSION_NO >= 2
- /**
- * Creates a Gauge with the passed characteristics and returns a unique_ptr to that Gauge.
- *
- * @param name the name of the new Gauge.
- * @param description a brief description of what the Gauge is used for.
- * @param unit the unit of metric values following https://unitsofmeasure.org/ucum.html.
- * @return a unique pointer to the created Gauge.
- */
- virtual nostd::unique_ptr<Gauge<int64_t>> CreateInt64Gauge(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- virtual nostd::unique_ptr<Gauge<double>> CreateDoubleGauge(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- #endif
- /**
- * Creates a Asynchronous (Observable) Gauge with the passed characteristics and returns a
- * shared_ptr to that Observable Gauge
- *
- * @param name the name of the new Observable Gauge.
- * @param description a brief description of what the Observable Gauge is used for.
- * @param unit the unit of metric values following https://unitsofmeasure.org/ucum.html.
- */
- virtual nostd::shared_ptr<ObservableInstrument> CreateInt64ObservableGauge(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- virtual nostd::shared_ptr<ObservableInstrument> CreateDoubleObservableGauge(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- /**
- * Creates an UpDownCounter with the passed characteristics and returns a unique_ptr to that
- * UpDownCounter.
- *
- * @param name the name of the new UpDownCounter.
- * @param description a brief description of what the UpDownCounter is used for.
- * @param unit the unit of metric values following https://unitsofmeasure.org/ucum.html.
- * @return a shared pointer to the created UpDownCounter.
- */
- virtual nostd::unique_ptr<UpDownCounter<int64_t>> CreateInt64UpDownCounter(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- virtual nostd::unique_ptr<UpDownCounter<double>> CreateDoubleUpDownCounter(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- /**
- * Creates a Asynchronous (Observable) UpDownCounter with the passed characteristics and returns
- * a shared_ptr to that Observable UpDownCounter
- *
- * @param name the name of the new Observable UpDownCounter.
- * @param description a brief description of what the Observable UpDownCounter is used for.
- * @param unit the unit of metric values following https://unitsofmeasure.org/ucum.html.
- */
- virtual nostd::shared_ptr<ObservableInstrument> CreateInt64ObservableUpDownCounter(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- virtual nostd::shared_ptr<ObservableInstrument> CreateDoubleObservableUpDownCounter(
- nostd::string_view name,
- nostd::string_view description = "",
- nostd::string_view unit = "") noexcept = 0;
- };
- } // namespace metrics
- OPENTELEMETRY_END_NAMESPACE
|