001package io.ebean.metric;
002
003import io.ebean.meta.MetricType;
004
005/**
006 * Factory to create timed metric counters.
007 */
008public interface MetricFactory {
009
010  /**
011   * Return the factory instance.
012   */
013  static MetricFactory get() {
014    return MetricServiceProvider.get();
015  }
016
017  /**
018   * Create a timed metric group.
019   */
020  TimedMetricMap createTimedMetricMap(MetricType metricType, String name);
021
022  /**
023   * Create a Timed metric.
024   */
025  TimedMetric createTimedMetric(MetricType metricType, String name);
026
027  /**
028   * Create a Timed metric.
029   */
030  QueryPlanMetric createQueryPlanMetric(MetricType metricType, Class<?> type, String label, String sql);
031
032}