001 package toolbus.communication;
002
003 import aterm.ATerm;
004
005 /**
006 * IOHandlers facilitate the transfer of terms from and to the ToolBus and tools.
007 *
008 * @author Arnold Lankamp
009 */
010 public interface IIOHandler{
011
012 /**
013 * Sends a term to the remote location.
014 *
015 * @param operation
016 * The operation associated with the term we need to send.
017 * @param aTerm
018 * The term that needs to be send.
019 */
020 void send(byte operation, ATerm aTerm);
021
022 /**
023 * Receives a term from the remote location.
024 *
025 * @param operation
026 * The operation associated with the term we received.
027 * @param aTerm
028 * The term that was received.
029 */
030 void receive(byte operation, ATerm aTerm);
031
032 /**
033 * Requests the termination of this ioHandler.
034 */
035 void terminate();
036
037 /**
038 * Shuts down this ioHandler and it's associated datahandler. IMPORTANT: This method should not
039 * be called from outside the ioHandler. Manual invokation will lead to undefined behaviour.
040 */
041 void shutDown();
042
043 /**
044 * Notifies the I/O handler that an exception has occured so it can take the nessacary steps.
045 */
046 void exceptionOccured();
047 }