package rocks.inspectit.server.diagnosis.engine;
import java.util.Map;
/**
* This is the core interface of the diagnosis engine.
*
* @param <I>
* The input type to be analyzed.
* @author Claudio Waldvogel, Alexander Wert
*/
public interface IDiagnosisEngine<I> {
/**
* Starts analyzing the given input.
*
* @param input
* Any kind of object to be analyzed.
* @throws DiagnosisEngineException
* Throws this type of exception if an failure occurs during diagnosis.
*/
void analyze(I input) throws DiagnosisEngineException;
/**
* Starts analyzing the given input with additional session specific variables.
*
* @param input
* Any kind of object to be analyzed.
* @param variables
* Variables to be available while processing the input.
* @throws DiagnosisEngineException
* Throws this type of exception if an failure occurs during diagnosis.
*/
void analyze(I input, Map<String, ?> variables) throws DiagnosisEngineException;
/**
* Stops the engine and performs housekeeping.
*
* @param awaitShutdown
* The flat to indicate if method will block until shutdown is complete.
*/
void shutdown(boolean awaitShutdown);
}