RemoteExecutionControl (Java SE 13 & JDK 13 )
Description: declaration: module: jdk.jshell, package: jdk.jshell.execution, class: RemoteExecutionControl
Keywords: jdk.jshell.execution.RemoteExecutionControl class

Module jdk.jshell
Package jdk.jshell.execution

# Class RemoteExecutionControl

java.lang.Object
jdk.jshell.execution.DirectExecutionControl
jdk.jshell.execution.RemoteExecutionControl

All Implemented Interfaces:
  `AutoCloseable`, `ExecutionControl`

    public class RemoteExecutionControl
    extends DirectExecutionControl
    implements ExecutionControl

The remote agent runs in the execution process (separate from the main JShell process). This agent loads code over a socket from the main JShell process, executes the code, and other misc, Specialization of `DirectExecutionControl` which adds stop support controlled by an external process. Designed to work with `JdiDefaultExecutionControl`.

Since:
  9

- ## Nested Class Summary

  ## Nested classes/interfaces declared in interface jdk.jshell.spi.ExecutionControl

  `ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserException`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `RemoteExecutionControl()` | Create an instance using the default class loading.
  `RemoteExecutionControl​(LoaderDelegate loaderDelegate)` | Creates an instance, delegating loader operations to the specified delegate.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `static void` | `main​(String[] args)` | Launch the agent, connecting to the JShell-core over the socket specified in the command-line argument.
  `void` | `redefine​(ExecutionControl.ClassBytecodes[] cbcs)` | Redefine processing on the remote end is only to register the redefined classes

  ### Methods declared in class jdk.jshell.execution.DirectExecutionControl

  `classesRedefined, clientCodeEnter, clientCodeLeave, findClass, invoke, stop, throwConvertedInvocationException, throwConvertedOtherException, valueString`

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods declared in interface jdk.jshell.spi.ExecutionControl

  `addToClasspath, close, extensionCommand, invoke, load, stop, varValue`

- ## Constructor Details

  - ### RemoteExecutionControl

    public RemoteExecutionControl​(LoaderDelegate loaderDelegate)
    Creates an instance, delegating loader operations to the specified delegate.
    Parameters:
      `loaderDelegate` - the delegate to handle loading classes

  - ### RemoteExecutionControl

    public RemoteExecutionControl()
    Create an instance using the default class loading.

- ## Method Details

  - ### main

    public static void main​(String[] args) throws Exception
    Launch the agent, connecting to the JShell-core over the socket specified in the command-line argument.
    Parameters:
      `args` - standard command-line arguments, expectation is the socket number is the only argument
    Throws:
      `Exception` - any unexpected exception

  - ### redefine

    public void redefine​(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
    Redefine processing on the remote end is only to register the redefined classes
    Specified by:
      `redefine` in interface `ExecutionControl`
    Parameters:
      `cbcs` - the class name and bytecodes to redefine
    Throws:
      `ExecutionControl.ClassInstallException` - exception occurred redefining the classes, some or all were not redefined
      `ExecutionControl.NotImplementedException` - if not implemented
      `ExecutionControl.EngineTerminationException` - the execution engine has terminated