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

org.kairosdb.metrics4j.collectors.impl.DoubleCounter Maven / Gradle / Ivy

package org.kairosdb.metrics4j.collectors.impl;

import lombok.EqualsAndHashCode;
import lombok.Setter;
import lombok.ToString;
import org.kairosdb.metrics4j.MetricsContext;
import org.kairosdb.metrics4j.collectors.Collector;
import org.kairosdb.metrics4j.collectors.DoubleCollector;
import org.kairosdb.metrics4j.reporting.DoubleValue;
import org.kairosdb.metrics4j.reporting.MetricReporter;

import java.time.Instant;

@ToString
@EqualsAndHashCode
public class DoubleCounter implements DoubleCollector
{
	protected double m_count;

	@EqualsAndHashCode.Exclude
	protected Object m_counterLock = new Object();

	@Setter
	protected boolean reset;

	@Setter
	protected boolean reportZero;

	public DoubleCounter(boolean reset, boolean reportZero)
	{
		this.reset = reset;
		this.reportZero = reportZero;
	}

	public DoubleCounter()
	{
		this(false, true);
	}

	@Override
	public void put(double value)
	{
		synchronized (m_counterLock)
		{
			m_count += value;
		}
	}

	@Override
	public void put(Instant time, double value)
	{
		put(value);
	}

	@Override
	public Collector clone()
	{
		return new DoubleCounter(reset, reportZero);
	}

	@Override
	public void init(MetricsContext context)
	{

	}

	@Override
	public void reportMetric(MetricReporter metricReporter)
	{
		synchronized (m_counterLock)
		{
			if (m_count != 0.0 || reportZero)
				metricReporter.put("count", new DoubleValue(m_count));

			if (reset)
				m_count = 0.0;
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy