The remote interface is established by attaching the remote and ECLiPSe processes. The attachment establishes two socket connections between the two processes:
More than one remote attachment can be established in an ECLiPSe process. Each attachment is independent, and is a remote peer, identified by its control connection. Each remote attachment has two sides: the ECLiPSe side, and the remote side.
At any one time, either the ECLiPSe or the remote side has control. When a side has control, it is able to send messages to the other side via the control connection. The side that does not have control waits for messages to arrive on the control connection. On the ECLiPSe side, execution is suspended while it does not have control. In general, once a control message is sent, the control is passed to the other side, and the side that sent the message waits for a reply message from the other side.
The ec_rpc mechanism is designed to be the main way for the remote side to interact with the ECLiPSe side. The remote side can send an ECLiPSe goal, in EXDR format to be executed by the ECLiPSe side. This can only be done while the remote side has control, and when the goal is issued, a message is sent via the control connection to the ECLiPSe side, and control is passed to the ECLiPSe side. Control is passed back to the remote side when ECLiPSe completes the execution of the goal.
After the attachment, extra I/O connections can be established between the two sides. This allows data to be transferred from one side to the other. These connections (referred to as peer queues) can be of two types: