Class RemoteEclipse

  • All Implemented Interfaces:
    EclipseConnection

    public class RemoteEclipse
    extends EclipseConnectionImpl
    implements EclipseConnection
    Remote connection to an existing ECLiPSe process. The connection may be made over a TCP/IP network to an ECLiPSe which has been primed using the remote_connect/3 or the remote_connect_setup/3 builtin predicates. As well as the functionality provided by the EclipseConnection interface, RemoteEclipse also allows for execution control to be transferred explicity over to ECLiPSe with the resume() method.

    The connection is terminated from the Java side using either the disconnect() method (when Java has execution control) or unilateralDisconnect() (when ECLiPSe has execution control). If the builtin predicate remote_disconnect/1 is executed on the ECLiPSe side, the effect on the Java side are similar to the effects of disconnect().

    • Field Detail

    • Constructor Detail

      • RemoteEclipse

        public RemoteEclipse​(java.net.InetAddress remoteEclipseHost,
                             int remoteEclipsePort,
                             java.lang.String passwd)
                      throws java.io.IOException
        Make a connection to an existing ECLiPSe process. The ECLiPSe process must be on a server machine which is reachable on a TCP/IP network. ECLiPSe must be primed using remote_connect_setup/3. The builtin predicate remote_connect_accept/6 should then be used to complete the connection. The connection details (IP address, port number, password) are specified as parameters and must match those specified/returned as arguments in the execution of remote_connect_setup/3 and remote_connect_accept/6.
        Throws:
        java.io.IOException - if the connection could not be made, or times out within DEFAULT_TIMEOUT_MILLIS milliseconds.
      • RemoteEclipse

        public RemoteEclipse​(java.net.InetAddress remoteEclipseHost,
                             int remoteEclipsePort)
                      throws java.io.IOException
        Make a connection to an existing ECLiPSe process. The ECLiPSe process must be on a server machine which is reachable on a TCP/IP network. ECLiPSe must be primed using remote_connect/3. The connection details (IP address, port number) are specified as parameters and must match those specified/returned as arguments in the execution of remote_connect/3. If remote_connect_setup/3. was used to prime ECLiPSe for the remote connection, this constructor will fail as it does not use a password.
        Throws:
        java.io.IOException - if the connection could not be made, or times out within DEFAULT_TIMEOUT_MILLIS milliseconds.
      • RemoteEclipse

        public RemoteEclipse​(java.net.InetAddress remoteEclipseHost,
                             int remoteEclipsePort,
                             int timeoutMillis)
                      throws java.io.IOException
        Make a connection to an existing ECLiPSe process. The ECLiPSe process must be on a server machine which is reachable on a TCP/IP network. ECLiPSe must be primed using remote_connect/3. The connection details (IP address, port number) are specified as parameters and must match those specified/returned as arguments in the execution of remote_connect/3. If remote_connect_setup/3. was used to prime ECLiPSe for the remote connection, this constructor will fail as it does not use a password.
        Parameters:
        timeoutMillis - number of milliseconds to wait for the initial connection to be established before throwing an exception. Set timeoutMillis to 0 to wait indefinitely for the connection.
        Throws:
        java.io.IOException - if the connection could not be made, or times out within timeoutMillis milliseconds.
      • RemoteEclipse

        public RemoteEclipse​(java.net.InetAddress remoteEclipseHost,
                             int remoteEclipsePort,
                             java.lang.String passwd,
                             int timeoutMillis)
                      throws java.io.IOException
        Make a connection to an existing ECLiPSe process. The ECLiPSe process must be on a server machine which is reachable on a TCP/IP network. ECLiPSe must be primed using remote_connect_setup/3. The builtin predicate remote_connect_accept/6 should then be used to complete the connection. The connection details (IP address, port number, password) are specified as parameters and must match those specified/returned as arguments in the execution of remote_connect_setup/3 and remote_connect_accept/6.
        Parameters:
        timeoutMillis - number of milliseconds to wait for the initial connection to be established before throwing an exception. Set timeoutMillis to 0 to wait indefinitely for the connection.
        Throws:
        java.io.IOException - if the connection could not be made, or times out within timeoutMillis milliseconds.
    • Method Detail

      • unilateralDisconnect

        public void unilateralDisconnect()
                                  throws EclipseTerminatedException
        Terminate the connection with ECLiPSe unilaterally. This method should be invoked in unforseen circumstances when the connection should be terminated while ECLiPSe has execution control. After unilateralDisconnect has been invoked, public methods invoked on this RemoteEclipse will throw EclipseTerminatedExceptions.
        Throws:
        EclipseTerminatedException - if the connection has already been terminated.
      • disconnect

        public void disconnect()
                        throws java.io.IOException
        Terminate the remote connection to ECLiPSe. This should be invoked while Java has control. If ECLiPSe has control then use unlateralDisconnect instead. After disconnect has been invoked, public methods invoked on this RemoteEclipse will throw EclipseTerminatedExceptions.
        Throws:
        EclipseTerminatedException - if the connection has already been terminated.
        java.io.IOException - if there was a problem communicating with ECLiPSe during disconnection.
      • resume

        public void resume()
                    throws java.io.IOException
        Explicitly transfer execution control to ECLiPSe. ECLiPSe will resume execution immediately after the last goal which transferred control to Java (normally remote_connect/3 or remote_connect_setup/3). This method should not be invoked while control has been transferred to Java using a QueueListener. An invocation of resume() should normally be paired with an execution of the builtin predicate remote_yield/1, which can return execution control to Java.
        Throws:
        EclipseTerminatedException - if the connection to ECLiPSe has been terminated.
        java.io.IOException - if there was a problem communicating with ECLiPSe.