![JAR search and dependency download from the Maven repository](/logo.png)
com.ringcentral.platform.metrics.micrometer.MfMeterRegistry Maven / Gradle / Ivy
package com.ringcentral.platform.metrics.micrometer;
import com.ringcentral.platform.metrics.MetricRegistry;
import io.micrometer.core.instrument.*;
import io.micrometer.core.instrument.config.NamingConvention;
import io.micrometer.core.instrument.distribution.*;
import io.micrometer.core.instrument.distribution.pause.PauseDetector;
import io.micrometer.core.lang.Nullable;
import java.util.concurrent.TimeUnit;
import java.util.function.*;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
public class MfMeterRegistry extends MeterRegistry {
private final MetricRegistry mfRegistry;
public MfMeterRegistry(MetricRegistry mfRegistry, Clock clock) {
super(clock);
this.mfRegistry = mfRegistry;
config()
.namingConvention(NamingConvention.identity)
.onMeterRemoved(this::meterRemoved);
}
private void meterRemoved(Meter meter) {
if (meter instanceof MfMeter) {
((MfMeter)meter).meterRemoved();
}
}
@Override
protected Gauge newGauge(Meter.Id id, @Nullable T obj, ToDoubleFunction valueFunction) {
return new MfDoubleGauge<>(mfRegistry, id, valueFunction, obj, false);
}
@Override
protected Counter newCounter(Meter.Id id) {
return new MfCounter(mfRegistry, id);
}
@Override
protected FunctionCounter newFunctionCounter(Meter.Id id, T obj, ToDoubleFunction countFunction) {
return new MfFunctionCounter<>(mfRegistry, id, countFunction, obj);
}
@Override
protected DistributionSummary newDistributionSummary(
Meter.Id id,
DistributionStatisticConfig distributionStatisticConfig,
double scale) {
MfDistributionSummary distributionSummary = new MfDistributionSummary(
mfRegistry,
id,
clock,
distributionStatisticConfig,
scale);
HistogramGauges.registerWithCommonFormat(distributionSummary, this);
return distributionSummary;
}
@Override
protected Timer newTimer(
Meter.Id id,
DistributionStatisticConfig distributionStatisticConfig,
PauseDetector pauseDetector) {
MfTimer timer = new MfTimer(mfRegistry, id, clock, distributionStatisticConfig, pauseDetector);
HistogramGauges.registerWithCommonFormat(timer, this);
return timer;
}
@Override
protected FunctionTimer newFunctionTimer(
Meter.Id id,
T obj,
ToLongFunction countFunction,
ToDoubleFunction totalTimeFunction,
TimeUnit totalTimeFunctionUnit) {
return new MfFunctionTimer<>(
mfRegistry,
id,
countFunction,
totalTimeFunction,
totalTimeFunctionUnit,
getBaseTimeUnit(),
obj);
}
@Override
protected LongTaskTimer newLongTaskTimer(Meter.Id id, DistributionStatisticConfig distributionStatisticConfig) {
MfLongTaskTimer longTaskTimer = new MfLongTaskTimer(
mfRegistry,
id,
clock,
getBaseTimeUnit(),
distributionStatisticConfig);
HistogramGauges.registerWithCommonFormat(longTaskTimer, this);
return longTaskTimer;
}
@Override
protected Meter newMeter(Meter.Id id, Meter.Type type, Iterable measurements) {
return new MfMeasurementsMeter(mfRegistry, id, type, measurements);
}
@Override
protected TimeUnit getBaseTimeUnit() {
return MILLISECONDS;
}
@Override
protected DistributionStatisticConfig defaultHistogramConfig() {
return DistributionStatisticConfig.builder()
.build()
.merge(DistributionStatisticConfig.DEFAULT);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy