package com.intrbiz.bergamot.watcher.engine;
import java.util.function.Consumer;
import com.intrbiz.bergamot.config.ExecutorCfg;
import com.intrbiz.bergamot.model.message.event.check.CheckEvent;
import com.intrbiz.bergamot.model.message.event.watcher.RegisterCheck;
import com.intrbiz.bergamot.model.message.event.watcher.UnregisterCheck;
import com.intrbiz.bergamot.model.message.result.ResultMO;
import com.intrbiz.configuration.Configurable;
/**
* Listeners setup the listening services for a particular type of trap
*/
public interface Executor<T extends Engine> extends Configurable<ExecutorCfg>
{
T getEngine();
void setEngine(T engine);
boolean accept(CheckEvent check);
void register(RegisterCheck check, Consumer<ResultMO> resultConsumer);
void unregister(UnregisterCheck check);
void start() throws Exception;
}