package edu.harvard.iq.dataverse.engine;
import edu.harvard.iq.dataverse.engine.command.Command;
import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
/**
* Base interface for the Dataverse Engine - the entity responsible for
* executing {@link Command}s.
*
* @author michael
*/
public interface DataverseEngine {
/**
* Submits a command for immediate execution.
* @param <R> The command result's type.
* @param aCommand The command to execute
* @return The result of the command execution.
* @throws CommandException
*/
public <R> R submit( Command<R> aCommand ) throws CommandException;
}