Class RemoteExecutionControl
java.lang.Object
jdk.jshell.execution.DirectExecutionControl
jdk.jshell.execution.RemoteExecutionControl
- All Implemented Interfaces:
AutoCloseable, 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 ExecutionControl
ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserException -
Constructor Summary
ConstructorsConstructorDescriptionCreate an instance using the default class loading.RemoteExecutionControl(LoaderDelegate loaderDelegate) Creates an instance, delegating loader operations to the specified delegate. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidMarks entry into user code.static voidLaunch the agent, connecting to the JShell-core over the socket specified in the command-line argument.voidRedefine processing on the remote end is only to register the redefined classesReturns the value of a variable.Methods declared in class DirectExecutionControl
addToClasspath, classesRedefined, clientCodeLeave, close, extensionCommand, findClass, invoke, invoke, load, stop, throwConvertedInvocationException, throwConvertedOtherException, valueString
-
Constructor Details
-
RemoteExecutionControl
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
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:
redefinein interfaceExecutionControl- Parameters:
cbcs- the class name and bytecodes to redefine- Throws:
ExecutionControl.ClassInstallException- exception occurred redefining the classes, some or all were not redefinedExecutionControl.NotImplementedException- if not implementedExecutionControl.EngineTerminationException- the execution engine has terminated
-
varValue
public String varValue(String className, String varName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException Description copied from interface:ExecutionControlReturns the value of a variable.- Specified by:
varValuein interfaceExecutionControl- Overrides:
varValuein classDirectExecutionControl- Parameters:
className- the name of the wrapper class of the variablevarName- the name of the variable- Returns:
- the value of the variable
- Throws:
ExecutionControl.UserException- formatting the value raised a user exceptionExecutionControl.ResolutionException- formatting the value attempted to directly or indirectly invoke an unresolved snippetExecutionControl.StoppedException- if the formatting the value was canceled byExecutionControl.stop()ExecutionControl.EngineTerminationException- the execution engine has terminatedExecutionControl.InternalException- an internal problem occurredExecutionControl.RunException
-
clientCodeEnter
protected void clientCodeEnter()Description copied from class:DirectExecutionControlMarks entry into user code.- Overrides:
clientCodeEnterin classDirectExecutionControl
-