async_instruments.h 848 B

123456789101112131415161718192021222324252627282930313233
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #pragma once
  4. #include "opentelemetry/metrics/observer_result.h"
  5. #include "opentelemetry/version.h"
  6. OPENTELEMETRY_BEGIN_NAMESPACE
  7. namespace metrics
  8. {
  9. using ObservableCallbackPtr = void (*)(ObserverResult, void *);
  10. class ObservableInstrument
  11. {
  12. public:
  13. ObservableInstrument() = default;
  14. virtual ~ObservableInstrument() = default;
  15. /**
  16. * Sets up a function that will be called whenever a metric collection is initiated.
  17. */
  18. virtual void AddCallback(ObservableCallbackPtr, void *state) noexcept = 0;
  19. /**
  20. * Remove a function that was configured to be called whenever a metric collection is initiated.
  21. */
  22. virtual void RemoveCallback(ObservableCallbackPtr, void *state) noexcept = 0;
  23. };
  24. } // namespace metrics
  25. OPENTELEMETRY_END_NAMESPACE