All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.opentelemetry.sdk.metrics.internal.aggregator.Aggregator Maven / Gradle / Ivy

The newest version!
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package io.opentelemetry.sdk.metrics.internal.aggregator;

import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
import io.opentelemetry.sdk.metrics.data.DoubleExemplarData;
import io.opentelemetry.sdk.metrics.data.ExemplarData;
import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.data.MetricDataType;
import io.opentelemetry.sdk.metrics.data.PointData;
import io.opentelemetry.sdk.metrics.internal.descriptor.MetricDescriptor;
import io.opentelemetry.sdk.metrics.internal.state.Measurement;
import io.opentelemetry.sdk.resources.Resource;
import java.util.Collection;
import javax.annotation.concurrent.Immutable;

/**
 * Aggregator represents the abstract class for all the available aggregations that can be computed
 * during the collection phase for all the instruments.
 *
 * 

This class is internal and is hence not for public use. Its APIs are unstable and can change * at any time. */ @Immutable public interface Aggregator { /** Returns the drop aggregator, an aggregator that drops measurements. */ static Aggregator drop() { return DropAggregator.INSTANCE; } /** * Returns a new {@link AggregatorHandle}. This MUST by used by the synchronous to aggregate * recorded measurements during the collection cycle. * * @return a new {@link AggregatorHandle}. */ AggregatorHandle createHandle(); /** * Returns a new DELTA point by computing the difference between two cumulative points. * *

Aggregators MUST implement diff if it can be used with asynchronous instruments. * * @param previousCumulative the previously captured point. * @param currentCumulative the newly captured (cumulative) point. * @return The resulting delta point. */ default T diff(T previousCumulative, T currentCumulative) { throw new UnsupportedOperationException("This aggregator does not support diff."); } /** * Resets one reusable point to be a DELTA point by computing the difference between two * cumulative points. * *

The delta between the two points is set on {@code previousCumulativeReusable} * *

Aggregators MUST implement diff if it can be used with asynchronous instruments. * * @param previousCumulativeReusable the previously captured point. * @param currentCumulative the newly captured (cumulative) point. */ default void diffInPlace(T previousCumulativeReusable, T currentCumulative) { throw new UnsupportedOperationException("This aggregator does not support diffInPlace."); } /** * Return a new point representing the measurement. * *

Aggregators MUST implement diff if it can be used with asynchronous instruments. */ default T toPoint(Measurement measurement) { throw new UnsupportedOperationException("This aggregator does not support toPoint."); } /** * Resets {@code reusablePoint} to represent the {@code measurement}. * *

Aggregators MUST implement diff if it can be used with asynchronous instruments. */ default void toPoint(Measurement measurement, T reusablePoint) { throw new UnsupportedOperationException("This aggregator does not support toPoint."); } /** Creates a new reusable point. */ default T createReusablePoint() { throw new UnsupportedOperationException( "This aggregator does not support createReusablePoint."); } /** Copies {@code point} into {@code toReusablePoint}. */ default void copyPoint(T point, T toReusablePoint) { throw new UnsupportedOperationException("This aggregator does not support toPoint."); } /** * Returns the {@link MetricData} that this {@code Aggregation} will produce. * * @param resource the resource producing the metric. * @param instrumentationScopeInfo the scope that instrumented the metric. * @param metricDescriptor the name, description and unit of the metric. * @param points list of points * @param temporality the temporality of the metric. * @return the {@link MetricDataType} that this {@code Aggregation} will produce. */ MetricData toMetricData( Resource resource, InstrumentationScopeInfo instrumentationScopeInfo, MetricDescriptor metricDescriptor, Collection points, AggregationTemporality temporality); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy