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

io.datakernel.http.AsyncServletWithStats Maven / Gradle / Ivy

package io.datakernel.http;

import io.datakernel.async.Stage;
import io.datakernel.eventloop.Eventloop;
import io.datakernel.jmx.EventloopJmxMBeanEx;
import io.datakernel.jmx.JmxAttribute;
import io.datakernel.jmx.StageStats;

import java.time.Duration;

public abstract class AsyncServletWithStats implements AsyncServlet, EventloopJmxMBeanEx {
	protected final Eventloop eventloop;

	private final StageStats stats = StageStats.create(Duration.ofMinutes(5));

	protected AsyncServletWithStats(Eventloop eventloop) {
		this.eventloop = eventloop;
	}

	protected abstract Stage doServe(HttpRequest request);

	@Override
	public final Stage serve(HttpRequest request) {
		return doServe(request).whenComplete(stats.recordStats());
	}

	@Override
	public Eventloop getEventloop() {
		return eventloop;
	}

	@JmxAttribute
	public StageStats getStats() {
		return stats;
	}

	public void setStatsHistogramLevels(int[] levels) {
		stats.setHistogramLevels(levels);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy