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

io.ebeaninternal.server.profile.DTimeMetricStats Maven / Gradle / Ivy

There is a newer version: 15.10.0
Show newest version
package io.ebeaninternal.server.profile;

import io.ebean.meta.MetricType;
import io.ebean.metric.TimedMetricStats;

/**
 * Snapshot of the current statistics for a Counter or TimeCounter.
 */
class DTimeMetricStats implements TimedMetricStats {

  private final MetricType metricType;

  private final String name;

  private String location;

  private final long startTime;

  private final long count;

  private final long total;

  private final long max;

  private final long beanCount;

  DTimeMetricStats(MetricType metricType, String name, long collectionStart, long count, long total, long max, long beanCount) {
    this.metricType = metricType;
    this.name = name;
    this.startTime = collectionStart;
    this.count = count;
    this.total = total;
    // collection is racy so sanitize the max value if it has not been set
    // this most likely would happen when count = 1 so max = mean
    this.max = max != Long.MIN_VALUE ? max : (count < 1 ? 0 : Math.round(total / count));
    this.beanCount = beanCount;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    if (location != null) {
      sb.append("loc:").append(location).append(" ");
    }
    if (name != null) {
      sb.append("name:").append(name).append(" ");
    }
    sb.append("count:").append(count)
      .append(" total:").append(total)
      .append(" max:").append(max)
      .append(" beanCount:").append(beanCount);
    return sb.toString();
  }

  @Override
  public void setLocation(String location) {
    this.location = location;
  }

  @Override
  public MetricType getMetricType() {
    return metricType;
  }

  @Override
  public String getName() {
    return name;
  }

  @Override
  public String getLocation() {
    return location;
  }

  /**
   * Return the time the counter started statistics collection.
   */
  @Override
  public long getStartTime() {
    return startTime;
  }

  /**
   * Return the count of values collected.
   */
  @Override
  public long getCount() {
    return count;
  }

  /**
   * Return the total of all the values.
   */
  @Override
  public long getTotal() {
    return total;
  }

  /**
   * Return the Max value collected.
   */
  @Override
  public long getMax() {
    return max;
  }

  /**
   * Return the mean value rounded up.
   */
  @Override
  public long getMean() {
    return (count < 1) ? 0L : Math.round((double)(total / count));
  }

  @Override
  public long getBeanCount() {
    return beanCount;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy