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

com.codahale.metrics.ScheduledReporter Maven / Gradle / Ivy

The newest version!
package com.codahale.metrics;

import io.dropwizard.metrics5.MetricName;

import java.io.Closeable;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import static java.util.Objects.requireNonNull;

@Deprecated
public abstract class ScheduledReporter implements Closeable, Reporter {

    private io.dropwizard.metrics5.ScheduledReporter delegate;

    protected ScheduledReporter(io.dropwizard.metrics5.ScheduledReporter delegate) {
        this.delegate = requireNonNull(delegate);
    }

    protected ScheduledReporter(MetricRegistry registry, String name, MetricFilter filter, TimeUnit rateUnit,
                                TimeUnit durationUnit) {
        delegate = new Adapter(registry, name, filter, rateUnit, durationUnit, this);
    }

    protected ScheduledReporter(MetricRegistry registry, String name, MetricFilter filter, TimeUnit rateUnit,
                                TimeUnit durationUnit, ScheduledExecutorService executor) {
        delegate = new Adapter(registry, name, filter, rateUnit, durationUnit, executor, this);
    }

    protected ScheduledReporter(MetricRegistry registry, String name, MetricFilter filter, TimeUnit rateUnit,
                                TimeUnit durationUnit, ScheduledExecutorService executor, boolean shutdownExecutorOnStop) {
        delegate = new Adapter(registry, name, filter, rateUnit, durationUnit, executor, shutdownExecutorOnStop, this);
    }

    protected ScheduledReporter(MetricRegistry registry, String name, MetricFilter filter, TimeUnit rateUnit,
                                TimeUnit durationUnit, ScheduledExecutorService executor, boolean shutdownExecutorOnStop,
                                Set disabledMetricAttributes) {
        delegate = new Adapter(registry, name, filter, rateUnit, durationUnit, executor, shutdownExecutorOnStop,
                disabledMetricAttributes, this);
    }

    public void start(long period, TimeUnit unit) {
        delegate.start(period, unit);
    }

    synchronized public void start(long initialDelay, long period, TimeUnit unit) {
        delegate.start(initialDelay, period, unit);
    }

    public void stop() {
        delegate.stop();
    }

    @Override
    public void close() {
        delegate.close();
    }

    public void report() {
        delegate.report();
    }

    public io.dropwizard.metrics5.ScheduledReporter getDelegate() {
        return delegate;
    }

    @SuppressWarnings("rawtypes")
    public abstract void report(SortedMap gauges,
                                SortedMap counters,
                                SortedMap histograms,
                                SortedMap meters,
                                SortedMap timers);

    @SuppressWarnings("unchecked")
    protected  SortedMap transform(
            SortedMap metrics) {
        final SortedMap items = new TreeMap<>();
        for (Map.Entry entry : metrics.entrySet()) {
            items.put(MetricName.build(entry.getKey()), (T) entry.getValue().getDelegate());
        }
        return Collections.unmodifiableSortedMap(items);
    }

    protected String getRateUnit() {
        return delegate.getRateUnit();
    }

    protected String getDurationUnit() {
        return delegate.getDurationUnit();
    }

    protected double convertDuration(double duration) {
        return delegate.convertDuration(duration);
    }

    protected double convertRate(double rate) {
        return delegate.convertRate(rate);
    }

    protected boolean isShutdownExecutorOnStop() {
        return delegate.isShutdownExecutorOnStop();
    }

    protected Set getDisabledMetricAttributes() {
        return delegate.getDisabledMetricAttributes();
    }

    public static class Adapter extends io.dropwizard.metrics5.ScheduledReporter {

        private final ScheduledReporter delegate;

        public Adapter(MetricRegistry registry, String name, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit,
                       ScheduledReporter delegate) {
            super(registry.getDelegate(), name, filter.transform(), rateUnit, durationUnit);
            this.delegate = delegate;
        }

        public Adapter(MetricRegistry registry, String name, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit,
                       ScheduledExecutorService executor, ScheduledReporter delegate) {
            super(registry.getDelegate(), name, filter.transform(), rateUnit, durationUnit, executor);
            this.delegate = delegate;
        }

        public Adapter(MetricRegistry registry, String name, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit,
                       ScheduledExecutorService executor, boolean shutdownExecutorOnStop, ScheduledReporter delegate) {
            super(registry.getDelegate(), name, filter.transform(), rateUnit, durationUnit, executor, shutdownExecutorOnStop);
            this.delegate = delegate;
        }

        public Adapter(MetricRegistry registry, String name, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit,
                       ScheduledExecutorService executor, boolean shutdownExecutorOnStop, Set disabledMetricAttributes,
                       ScheduledReporter delegate) {
            super(registry.getDelegate(), name, filter.transform(), rateUnit, durationUnit, executor, shutdownExecutorOnStop,
                    MetricAttribute.transform(disabledMetricAttributes));
            this.delegate = delegate;
        }

        @Override
        public void report(SortedMap gauges, SortedMap counters,
                           SortedMap histograms, SortedMap meters,
                           SortedMap timers) {
            delegate.report(MetricRegistry.adaptMetrics(gauges), MetricRegistry.adaptMetrics(counters),
                    MetricRegistry.adaptMetrics(histograms), MetricRegistry.adaptMetrics(meters),
                    MetricRegistry.adaptMetrics(timers));
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy