org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.exemplar.FilteredExemplarReservoir Maven / Gradle / Ivy
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.apache.rocketmq.shaded.io.opentelemetry.sdk.metrics.internal.exemplar;
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.metrics.data.ExemplarData;
import java.util.List;
/** A reservoir that has a pre-filter on measurements. */
class FilteredExemplarReservoir implements ExemplarReservoir {
private final ExemplarFilter filter;
private final ExemplarReservoir reservoir;
FilteredExemplarReservoir(ExemplarFilter filter, ExemplarReservoir reservoir) {
this.filter = filter;
this.reservoir = reservoir;
}
@Override
public void offerDoubleMeasurement(double value, Attributes attributes, Context context) {
if (filter.shouldSampleMeasurement(value, attributes, context)) {
reservoir.offerDoubleMeasurement(value, attributes, context);
}
}
@Override
public void offerLongMeasurement(long value, Attributes attributes, Context context) {
if (filter.shouldSampleMeasurement(value, attributes, context)) {
reservoir.offerLongMeasurement(value, attributes, context);
}
}
@Override
public List collectAndReset(Attributes pointAttributes) {
return reservoir.collectAndReset(pointAttributes);
}
}