package jadex.bdi.runtime;
import jadex.bridge.IComponentIdentifier;
import jadex.commons.IFuture;
/**
* Interface for an event base.
*/
public interface IEventbase extends IElement
{
//-------- attributes --------
/**
* Send a message after some delay.
* @param me The message event.
* @return The filter to wait for an answer.
*/
public IFuture sendMessage(IMessageEvent me);
/**
* Dispatch an event.
* @param event The event.
*/
public void dispatchInternalEvent(IInternalEvent event);
/**
* Create a new message event.
* @return The new message event.
*/
public IMessageEvent createMessageEvent(String type);
/**
* Create a reply to a message event.
* @param event The received message event.
* @param msgeventtype The reply message event type.
* @return The reply event.
*/
public IMessageEvent createReply(IMessageEvent event, String msgeventtype);
/**
* Create a new intenal event.
* @return The new intenal event.
*/
public IInternalEvent createInternalEvent(String type);
/**
* Create a legacy internal event (not explicitly defined in ADF).
* @return The new internal event.
* @deprecated Convenience method for easy conversion to the new Jadex version.
* Will be removed in later releases.
* /
public IInternalEvent createInternalEvent(String type, Object content);*/
/**
* Register a new event model.
* @param mevent The event model.
*/
// public void registerEvent(IMEvent mevent);
/**
* Register a new event reference model.
* @param meventref The event reference model.
*/
// public void registerEventReference(IMEventReference meventref);
/**
* Deregister an event model.
* @param mevent The event model.
*/
// public void deregisterEvent(IMEvent mevent);
/**
* Deregister an event reference model.
* @param meventref The event reference model.
*/
// public void deregisterEventReference(IMEventReference meventref);
/**
* Register a conversation or reply_with to be able
* to send back answers to the source capability.
* @param msgevent The message event.
* todo: indexing for msgevents for speed.
*/
public void registerMessageEvent(IMessageEvent mevent);
/**
* Remove a registered message event.
* @param msgevent The message event.
*/
public void deregisterMessageEvent(IMessageEvent mevent);
/**
* Create component identifier.
* @param name The name.
* @param local True for local name.
* @param addresses The addresses.
* @return The new component identifier.
*/
public IComponentIdentifier createComponentIdentifier(String name);
/**
* Create component identifier.
* @param name The name.
* @param local True for local name.
* @param addresses The addresses.
* @return The new component identifier.
*/
public IComponentIdentifier createComponentIdentifier(String name, boolean local);
/**
* Create component identifier.
* @param name The name.
* @param local True for local name.
* @param addresses The addresses.
* @return The new component identifier.
*/
public IComponentIdentifier createComponentIdentifier(String name, boolean local, String[] addresses);
//-------- listeners --------
/**
* Add a internal event listener.
* @param type The internal event type.
* @param listener The internal event listener.
* @param async True, if the notification should be done on a separate thread.
*/
public void addInternalEventListener(String type, IInternalEventListener listener);
/**
* Remove a internal event listener.
* @param type The internal event type.
* @param listener The internal event listener.
*/
public void removeInternalEventListener(String type, IInternalEventListener listener);
/**
* Add a message event listener.
* @param type The message event type.
* @param listener The message event listener.
* @param async True, if the notification should be done on a separate thread.
*/
public void addMessageEventListener(String type, IMessageEventListener listener);
/**
* Remove a message event listener.
* @param type The message event type.
* @param listener The message event listener.
*/
public void removeMessageEventListener(String type, IMessageEventListener listener);
}