diff --git a/experimental/packages/opentelemetry-api-metrics/src/NoopMeter.ts b/experimental/packages/opentelemetry-api-metrics/src/NoopMeter.ts index df48c30b1d..a2ad1370a4 100644 --- a/experimental/packages/opentelemetry-api-metrics/src/NoopMeter.ts +++ b/experimental/packages/opentelemetry-api-metrics/src/NoopMeter.ts @@ -20,13 +20,9 @@ import { Attributes, Counter, Histogram, - ObservableGauge, UpDownCounter, - ObservableBase, - ObservableCounter, - ObservableUpDownCounter, + ObservableCallback, } from './types/Metric'; -import { ObservableResult } from './types/ObservableResult'; /** * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses @@ -70,11 +66,9 @@ export class NoopMeter implements Meter { */ createObservableGauge( _name: string, - _callback: (observableResult: ObservableResult) => void, + _callback: ObservableCallback, _options?: MetricOptions, - ): ObservableGauge { - return NOOP_OBSERVABLE_GAUGE_METRIC; - } + ): void {} /** * Returns a constant noop observable counter. @@ -84,11 +78,9 @@ export class NoopMeter implements Meter { */ createObservableCounter( _name: string, - _callback: (observableResult: ObservableResult) => void, + _callback: ObservableCallback, _options?: MetricOptions, - ): ObservableCounter { - return NOOP_OBSERVABLE_COUNTER_METRIC; - } + ): void {} /** * Returns a constant noop up down observable counter. @@ -98,11 +90,9 @@ export class NoopMeter implements Meter { */ createObservableUpDownCounter( _name: string, - _callback: (observableResult: ObservableResult) => void, + _callback: ObservableCallback, _options?: MetricOptions, - ): ObservableUpDownCounter { - return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC; - } + ): void {} } export class NoopMetric {} @@ -119,16 +109,9 @@ export class NoopHistogramMetric extends NoopMetric implements Histogram { record(_value: number, _attributes: Attributes): void {} } -export class NoopObservableBaseMetric extends NoopMetric implements ObservableBase {} - export const NOOP_METER = new NoopMeter(); // Synchronous instruments export const NOOP_COUNTER_METRIC = new NoopCounterMetric(); export const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric(); export const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric(); - -// Asynchronous instruments -export const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableBaseMetric(); -export const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableBaseMetric(); -export const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableBaseMetric(); diff --git a/experimental/packages/opentelemetry-api-metrics/src/types/Meter.ts b/experimental/packages/opentelemetry-api-metrics/src/types/Meter.ts index 449741b147..fb1978c3aa 100644 --- a/experimental/packages/opentelemetry-api-metrics/src/types/Meter.ts +++ b/experimental/packages/opentelemetry-api-metrics/src/types/Meter.ts @@ -18,15 +18,12 @@ import { CounterOptions, HistogramOptions, UpDownCounterOptions } from '..'; import { Counter, Histogram, - ObservableCounter, + ObservableCallback, ObservableCounterOptions, - ObservableGauge, ObservableGaugeOptions, - ObservableUpDownCounter, ObservableUpDownCounterOptions, UpDownCounter, } from './Metric'; -import { ObservableResult } from './ObservableResult'; /** * An interface describes additional metadata of a meter. @@ -89,9 +86,9 @@ export interface Meter { */ createObservableGauge( name: string, - callback: (observableResult: ObservableResult) => void, + callback: ObservableCallback, options?: ObservableGaugeOptions - ): ObservableGauge; + ): void; /** * Creates a new `ObservableCounter` metric. @@ -101,9 +98,9 @@ export interface Meter { */ createObservableCounter( name: string, - callback: (observableResult: ObservableResult) => void, + callback: ObservableCallback, options?: ObservableCounterOptions - ): ObservableCounter; + ): void; /** * Creates a new `ObservableUpDownCounter` metric. @@ -113,7 +110,7 @@ export interface Meter { */ createObservableUpDownCounter( name: string, - callback: (observableResult: ObservableResult) => void, + callback: ObservableCallback, options?: ObservableUpDownCounterOptions - ): ObservableUpDownCounter; + ): void; } diff --git a/experimental/packages/opentelemetry-api-metrics/src/types/Metric.ts b/experimental/packages/opentelemetry-api-metrics/src/types/Metric.ts index 31c6a61c40..b541acc2fa 100644 --- a/experimental/packages/opentelemetry-api-metrics/src/types/Metric.ts +++ b/experimental/packages/opentelemetry-api-metrics/src/types/Metric.ts @@ -15,6 +15,7 @@ */ import { Context } from '@opentelemetry/api'; +import { ObservableResult } from './ObservableResult'; /** * Options needed for metric creation @@ -88,21 +89,12 @@ export interface Histogram { record(value: number, attributes?: Attributes, context?: Context): void; } -// ObservableBase has to be an Object but for now there is no field or method -// declared. -/** Base interface for the Observable metrics. */ -export type ObservableBase = Record; - -/** Base interface for the ObservableGauge metrics. */ -export type ObservableGauge = ObservableBase; - -/** Base interface for the ObservableUpDownCounter metrics. */ -export type ObservableUpDownCounter = ObservableBase; - -/** Base interface for the ObservableCounter metrics. */ -export type ObservableCounter = ObservableBase; - /** * key-value pairs passed by the user. */ export type Attributes = { [key: string]: string }; + +/** + * The observable callback for Observable instruments. + */ +export type ObservableCallback = (observableResult: ObservableResult) => void | Promise; diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/src/Meter.ts b/experimental/packages/opentelemetry-sdk-metrics-base/src/Meter.ts index 0e058447dd..b47da6e835 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/src/Meter.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/src/Meter.ts @@ -61,25 +61,25 @@ export class Meter implements metrics.Meter { createObservableGauge( _name: string, - _callback: (observableResult: metrics.ObservableResult) => void, + _callback: metrics.ObservableCallback, _options?: metrics.ObservableGaugeOptions, - ): metrics.ObservableGauge { + ): void { throw new Error('Method not implemented.'); } createObservableCounter( _name: string, - _callback: (observableResult: metrics.ObservableResult) => void, + _callback: metrics.ObservableCallback, _options?: metrics.ObservableCounterOptions, - ): metrics.ObservableCounter { + ): void { throw new Error('Method not implemented.'); } createObservableUpDownCounter( _name: string, - _callback: (observableResult: metrics.ObservableResult) => void, + _callback: metrics.ObservableCallback, _options?: metrics.ObservableUpDownCounterOptions, - ): metrics.ObservableUpDownCounter { + ): void { throw new Error('Method not implemented.'); }