com.yahoo.jdisc.TimeoutManager Maven / Gradle / Ivy
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc;
import com.yahoo.jdisc.handler.RequestHandler;
import java.util.concurrent.TimeUnit;
/**
* This interface provides a callback for when the {@link Request#setTimeout(long, TimeUnit)} is invoked. If no such
* handler is registered at the time where the target {@link RequestHandler} is called, the default timeout manager will
* be injected.
*
* @author Simon Thoresen Hult
*/
public interface TimeoutManager {
/**
* Schedule timeout management for a request.
* This is called by a request whenever {@link Request#setTimeout(long, TimeUnit)} is invoked;
* this may be called multiple times for the same {@link Request}.
*
* @param request the request whose timeout to schedule
*/
public void scheduleTimeout(Request request);
/**
* Unschedule timeout management for a previously scheduled request.
* This is called whenever a request is cancelled, and the purpose is to free up
* resources taken by the implementation of this associated with the request.
*
* This is only called once for a request, and only after at least one scheduleTimeout call.
*
* The default implementation of this does nothing.
*
* @param request the previously scheduled timeout
*/
default public void unscheduleTimeout(Request request) {
}
}