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.Promise;
import io.datakernel.eventloop.Eventloop;
import io.datakernel.jmx.EventloopJmxMBeanEx;
import io.datakernel.jmx.JmxAttribute;
import io.datakernel.jmx.PromiseStats;
import org.jetbrains.annotations.NotNull;

import java.time.Duration;

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

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

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

	@NotNull
	protected abstract Promise doServe(@NotNull HttpRequest request);

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

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

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

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

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy