| 123456789101112131415161718192021222324252627282930313233 | // Copyright The OpenTelemetry Authors// SPDX-License-Identifier: Apache-2.0#pragma once#include "opentelemetry/metrics/observer_result.h"#include "opentelemetry/version.h"OPENTELEMETRY_BEGIN_NAMESPACEnamespace metrics{using ObservableCallbackPtr = void (*)(ObserverResult, void *);class ObservableInstrument{public:  ObservableInstrument()          = default;  virtual ~ObservableInstrument() = default;  /**   * Sets up a function that will be called whenever a metric collection is initiated.   */  virtual void AddCallback(ObservableCallbackPtr, void *state) noexcept = 0;  /**   * Remove a function that was configured to be called whenever a metric collection is initiated.   */  virtual void RemoveCallback(ObservableCallbackPtr, void *state) noexcept = 0;};}  // namespace metricsOPENTELEMETRY_END_NAMESPACE
 |