package si.ijs.acs.objectexplorer.engine;
/**
* This callback interface is implemented by the GUI.
* Through its methods, the engine notifies GUI
* when the new responses to asynchronous commands have
* arrived. A message containing a remote response data
* structure is sent every time a call is received from the
* server side. The GUI should process these notifications
* by displaying them as results of the <code>Invocation</code>
* instance requests. <b>Since the callback cannot determine
* which remote call originated it, the GUI must instantiate a
* new instance of the callback for each asynchronous remote call.</b>
*/
public interface RemoteResponseCallback {
/**
* A message identifying the destruction of the remote process
* that delivers the responses for the given invocation.
* This message is delivered, if: 1. server single-sidedly
* closes the data delivery and reports this to the client, 2.
* if the client destroys the data delivery and server does ACK,
* 3. if server does not support ACKs, the engine must send this
* when it determines that the data delivery is broken or timeouts.
*
*/
void invocationDestroyed();
/**
* Delivers the data structure that parametrizes
* received notification from the server side.
*
* @param response the data structure containing
* details about the call from the server side
*/
void responseReceived(RemoteResponse response);
}