Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package io.advantageous.qbit.metrics.support;
  
  
  import java.util.*;
 
 public class LocalStatsCollector implements StatReplicatorQueueCallBackHandler {
 
 
 
     private final Reactor reactor;
     private final ConcurrentHashMap<StringMetricstatsMap = new ConcurrentHashMap<>();
 
 
     public LocalStatsCollector(final int secondsfinal Timer timer) {
          = ReactorBuilder.reactorBuilder().setTimer(timer).build();
         .addRepeatingTask(seconds.this::packStat);
     }
 
 
 
     enum MetricType {
         COUNT, LEVEL, TIMING
     }
 
     final static class Metric {
 
         final StatList stats;
         int value;
         final String name;
         final MetricType type;
 
 
         public static Metric count(String name) {
 
             return new Metric(name.);
 
         }
 
         public static Metric level(String name) {
 
             return new Metric(name.);
 
         }
 
 
         public static Metric timing(String name) {
 
             return new Metric(name.);
 
         }
 
         public Metric(String nameMetricType type) {
             this. = name;
             this. = type;
             this. = new StatList(100);
         }
     }
 
 
     @Override
     public void replicateCount(String nameint countlong time) {
 
         Metric metric = .get(name);
         if (metric == null) {
             metric = Metric.count(name);
             .put(namemetric);
 
         }
 
         metric.value += count;
 
     }
 
     @Override
     public void replicateLevel(String nameint levellong time) {
 
 
         Metric metric = .get(name);
         if (metric == null) {
             metric = Metric.level(name);
             .put(namemetric);
 
         }
 
         metric.value = level;
         metric.stats.add(level);
 
     }
 
     @Override
     public void replicateTiming(String nameint timinglong time) {
 
        Metric metric = .get(name);
        if (metric == null) {
            metric = Metric.timing(name);
            .put(namemetric);
        }
        metric.stats.add(timing);
        metric.value = timing;
    }
    @Override
    public void queueProcess() {
        .process();
    }
    private void packStat() {
        final Set<Map.Entry<StringMetric>> entries = .entrySet();
        entries.stream().forEach(
                entry -> packMetric(entry.getValue()));
    }
    private void packMetric(final Metric metric) {
        switch (metric.type) {
            case :
                break;
            case :
                break;
            case :
                metric.value = (intmetric.stats.mean();
                break;
        }
        if (metric.stats.size() > 100) {
            metric.stats.clear();
        }
    }
    public Map<StringMap<String, ?>> collect() {
        final Map<StringMap<String, ?>> metricMap = new HashMap<>();
        final Map<StringList<Number>> metricsTimingMap = new HashMap<>();
        final Map<StringNumbermetricsCountMap = new HashMap<>();
        final Map<StringNumbermetricsLevelMap = new HashMap<>();
        metricMap.put("MetricsMS"metricsTimingMap);
        metricMap.put("MetricsC"metricsCountMap);
        metricMap.put("MetricsKV"metricsLevelMap);
        final Set<Map.Entry<StringMetric>> entries = .entrySet();
        entries.stream().filter(entry -> entry.getValue().==. && entry.getValue(). != 0)
                .forEach(entry -> collectTiming(entry.getValue(), metricsTimingMap));
        entries.stream().filter(entry -> entry.getValue().==. && entry.getValue(). != 0)
                .forEach(entry -> collectCount(entry.getValue(), metricsCountMap));
        entries.stream().filter(entry -> entry.getValue().==. && entry.getValue(). != 0)
                .forEach(entry -> collectLevel(entry.getValue(), metricsLevelMap));
        return metricMap;
    }
    private void collectCount(final Metric metricfinal  Map<StringNumbermetricsCountMap) {
        metricsCountMap.put(metric.namemetric.value);
        metric.value = 0;
        metric.stats.clear();
    }
    private void collectTiming(final Metric metricfinal  Map<StringList<Number>> metricsTimingMap) {
        if (metric.stats.size()>0) {
            metricsTimingMap.put(metric.namenew ArrayList<>(metric.stats));
        } else {
            metricsTimingMap.put(metric.name, Collections.singletonList(metric.value));
        }
        metric.value = 0;
        metric.stats.clear();
    }
    private void collectLevel(final Metric metricfinal  Map<StringNumbermetricsLevelMap) {
        metricsLevelMap.put(metric.namemetric.value);
        metricsLevelMap.put(metric.name + ".mean"metric.stats.mean());
        metricsLevelMap.put(metric.name + ".std"metric.stats.standardDeviation());
        metricsLevelMap.put(metric.name + ".median"metric.stats.median());
        metricsLevelMap.put(metric.name + ".min"metric.stats.min());
        metricsLevelMap.put(metric.name + ".max"metric.stats.max());
        metricsLevelMap.put(metric.name + ".count"metric.stats.size());
        metric.value = 0;
        metric.stats.clear();
    }
New to GrepCode? Check out our FAQ X