package com.intrbiz.bergamot.worker.engine;
import java.util.Collection;
import java.util.UUID;
import com.intrbiz.bergamot.config.EngineCfg;
import com.intrbiz.bergamot.model.message.check.ExecuteCheck;
import com.intrbiz.bergamot.model.message.reading.ReadingParcelMO;
import com.intrbiz.bergamot.model.message.result.ResultMO;
import com.intrbiz.bergamot.queue.key.ReadingKey;
import com.intrbiz.bergamot.queue.key.ResultKey;
import com.intrbiz.bergamot.worker.Worker;
import com.intrbiz.configuration.Configurable;
public interface Engine extends Configurable<EngineCfg>
{
public Collection<Executor<?>> getExecutors();
String getName();
Worker getWorker();
void setWorker(Worker worker);
void execute(ExecuteCheck task);
boolean isAgentRouted();
/**
* Publish a result out of band
*/
void publishResult(ResultKey key, ResultMO resultMO);
/**
* Publish a reading
* @param key - the routing information
* @param readingParcelMO - the parcel of readings to send
*/
public void publishReading(ReadingKey key, ReadingParcelMO readingParcelMO);
void bindAgent(UUID agentId);
void unbindAgent(UUID agentId);
void start() throws Exception;
}