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

org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.aggregator.DoubleSumAggregator Maven / Gradle / Ivy

There is a newer version: 5.0.7
Show newest version
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.aggregator;

import org.apache.rocketmq.shaded.io.opentelemetry.api.common.Attributes;
import org.apache.rocketmq.shaded.io.opentelemetry.context.Context;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.common.InstrumentationScopeInfo;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.data.AggregationTemporality;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.data.DoubleExemplarData;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.data.MetricData;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.concurrent.AdderUtil;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.concurrent.DoubleAdder;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.data.ImmutableMetricData;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.descriptor.MetricDescriptor;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarReservoir;
import org.apache.rocketmq.shaded.io.opentelemetry.sdk.resources.Resource;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;

/**
 * Sum aggregator that keeps values as {@code double}s.
 *
 * 

This class is internal and is hence not for public use. Its APIs are unstable and can change * at any time. */ public final class DoubleSumAggregator extends AbstractSumAggregator { private final Supplier> reservoirSupplier; /** * Constructs a sum aggregator. * * @param instrumentDescriptor The instrument being recorded, used to compute monotonicity. * @param reservoirSupplier Supplier of exemplar reservoirs per-stream. */ public DoubleSumAggregator( InstrumentDescriptor instrumentDescriptor, Supplier> reservoirSupplier) { super(instrumentDescriptor); this.reservoirSupplier = reservoirSupplier; } @Override public AggregatorHandle createHandle() { return new Handle(reservoirSupplier.get()); } @Override public DoubleAccumulation accumulateDoubleMeasurement( double value, Attributes attributes, Context context) { return DoubleAccumulation.create(value); } @Override public DoubleAccumulation merge( DoubleAccumulation previousAccumulation, DoubleAccumulation accumulation) { return DoubleAccumulation.create( previousAccumulation.getValue() + accumulation.getValue(), accumulation.getExemplars()); } @Override public DoubleAccumulation diff( DoubleAccumulation previousAccumulation, DoubleAccumulation accumulation) { return DoubleAccumulation.create( accumulation.getValue() - previousAccumulation.getValue(), accumulation.getExemplars()); } @Override public MetricData toMetricData( Resource resource, InstrumentationScopeInfo instrumentationScopeInfo, MetricDescriptor descriptor, Map accumulationByLabels, AggregationTemporality temporality, long startEpochNanos, long lastCollectionEpoch, long epochNanos) { return ImmutableMetricData.createDoubleSum( resource, instrumentationScopeInfo, descriptor.getName(), descriptor.getDescription(), descriptor.getSourceInstrument().getUnit(), ImmutableSumData.create( isMonotonic(), temporality, MetricDataUtils.toDoublePointList( accumulationByLabels, temporality == AggregationTemporality.CUMULATIVE ? startEpochNanos : lastCollectionEpoch, epochNanos))); } static final class Handle extends AggregatorHandle { private final DoubleAdder current = AdderUtil.createDoubleAdder(); Handle(ExemplarReservoir exemplarReservoir) { super(exemplarReservoir); } @Override protected DoubleAccumulation doAccumulateThenReset(List exemplars) { return DoubleAccumulation.create(this.current.sumThenReset(), exemplars); } @Override protected void doRecordDouble(double value) { current.add(value); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy