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

io.opentelemetry.sdk.metrics.export.AggregationTemporalitySelector Maven / Gradle / Ivy

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

package io.opentelemetry.sdk.metrics.export;

import io.opentelemetry.sdk.metrics.InstrumentType;
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
import java.util.StringJoiner;

/**
 * A functional interface that selects {@link AggregationTemporality} based on {@link
 * InstrumentType}.
 *
 * @since 1.14.0
 */
@FunctionalInterface
public interface AggregationTemporalitySelector {

  /**
   * A common implementation of {@link AggregationTemporalitySelector} which returns {@link
   * AggregationTemporality#CUMULATIVE} for all instruments.
   */
  static AggregationTemporalitySelector alwaysCumulative() {
    return instrumentType -> AggregationTemporality.CUMULATIVE;
  }

  /**
   * A common implementation of {@link AggregationTemporalitySelector} which indicates delta
   * preference.
   *
   * 

{@link AggregationTemporality#DELTA} is returned for {@link InstrumentType#COUNTER}, {@link * InstrumentType#OBSERVABLE_COUNTER}, and {@link InstrumentType#HISTOGRAM}. {@link * AggregationTemporality#CUMULATIVE} is returned for {@link InstrumentType#UP_DOWN_COUNTER} and * {@link InstrumentType#OBSERVABLE_UP_DOWN_COUNTER}. */ static AggregationTemporalitySelector deltaPreferred() { return instrumentType -> { switch (instrumentType) { case UP_DOWN_COUNTER: case OBSERVABLE_UP_DOWN_COUNTER: return AggregationTemporality.CUMULATIVE; case COUNTER: case OBSERVABLE_COUNTER: case HISTOGRAM: default: return AggregationTemporality.DELTA; } }; } /** * A common implementation of {@link AggregationTemporalitySelector} which reduces memory. * *

{@link AggregationTemporality#DELTA} is returned for {@link InstrumentType#COUNTER} and * {@link InstrumentType#HISTOGRAM}. {@link AggregationTemporality#CUMULATIVE} is returned for * {@link InstrumentType#UP_DOWN_COUNTER}, {@link InstrumentType#OBSERVABLE_UP_DOWN_COUNTER}, and * {@link InstrumentType#OBSERVABLE_COUNTER}. * * @since 1.28.0 */ static AggregationTemporalitySelector lowMemory() { return instrumentType -> { switch (instrumentType) { case UP_DOWN_COUNTER: case OBSERVABLE_UP_DOWN_COUNTER: case OBSERVABLE_COUNTER: return AggregationTemporality.CUMULATIVE; case COUNTER: case HISTOGRAM: default: return AggregationTemporality.DELTA; } }; } /** Return the aggregation temporality for the {@link InstrumentType}. */ AggregationTemporality getAggregationTemporality(InstrumentType instrumentType); /** * Returns a string representation of this selector, for using in {@link Object#toString()} * implementations. * * @since 1.38.0 */ static String asString(AggregationTemporalitySelector selector) { StringJoiner joiner = new StringJoiner(", ", "AggregationTemporalitySelector{", "}"); for (InstrumentType type : InstrumentType.values()) { joiner.add(type.name() + "=" + selector.getAggregationTemporality(type).name()); } return joiner.toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy