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