package jadex.bridge;
import jadex.commons.IFuture;
import jadex.commons.IRemotable;
import jadex.commons.service.IServiceProvider;
/**
* The interface for accessing components from the outside.
* To be specialized for concrete component types.
*/
public interface IExternalAccess extends IRemotable
{
//-------- cache --------
/**
* Get the model of the component.
* @return The model.
*/
public IModelInfo getModel();
/**
* Get the parent (if any).
* @return The parent.
*/
public IComponentIdentifier getParent();
/**
* Get the id of the component.
* @return The component id.
*/
public IComponentIdentifier getComponentIdentifier();
/**
* Get the service provider.
* @return The service provider.
*/
public IServiceProvider getServiceProvider();
/**
* Schedule a step of the agent.
* May safely be called from external threads.
* @param step Code to be executed as a step of the agent.
* @return The result of the step.
*/
public IFuture scheduleStep(IComponentStep step);
//-------- normal --------
/**
* Get the children (if any).
* @return The children.
*/
public IFuture getChildren();
/**
* Kill the component.
*/
public IFuture killComponent();
//-------- exclude --------
// todo: do we want this? should getArg() deliver only args supplied from
// outside or also values that are default/initial values in the model.
// problem: this would require to store the arguments for the whole lifetime of the component.
/**
* Get argument value.
* @param name The argument name.
* @return The argument value.
* /
public Object getArgumentValue(String name);*/
}