Class StreamingExecutionControl
java.lang.Object
jdk.jshell.execution.StreamingExecutionControl
- All Implemented Interfaces:
AutoCloseable,ExecutionControl
- Direct Known Subclasses:
JdiExecutionControl
An implementation of the
ExecutionControl
execution engine SPI which streams requests to a remote agent where
execution takes place.- 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
ConstructorsConstructorDescriptionCreates an instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddToClasspath(String path) Adds the path to the execution class path.voidclose()Closes the execution engine.extensionCommand(String command, Object arg) Run a non-standard command (or a standard command from a newer version).Invokes an executable Snippet by calling a method on the specified wrapper class.voidload(ExecutionControl.ClassBytecodes[] cbcs) Attempts to load new classes.voidAttempts to redefine previously loaded classes.voidstop()Interrupts a running invoke.Returns the value of a variable.
-
Constructor Details
-
StreamingExecutionControl
Creates an instance.- Parameters:
out- the output for commandsin- the input for command responses
-
-
Method Details
-
load
public void load(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException Description copied from interface:ExecutionControlAttempts to load new classes.- Specified by:
loadin interfaceExecutionControl- Parameters:
cbcs- the class name and bytecodes to load- Throws:
ExecutionControl.ClassInstallException- exception occurred loading the classes, some or all were not loadedExecutionControl.NotImplementedException- if not implementedExecutionControl.EngineTerminationException- the execution engine has terminated
-
redefine
public void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException Description copied from interface:ExecutionControlAttempts to redefine previously loaded 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
-
invoke
public String invoke(String classname, String methodname) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException Description copied from interface:ExecutionControlInvokes an executable Snippet by calling a method on the specified wrapper class. The method must have no arguments and return String.- Specified by:
invokein interfaceExecutionControl- Parameters:
classname- the class whose method should be invokedmethodname- the name of method to invoke- Returns:
- the result of the execution or null if no result
- Throws:
ExecutionControl.UserException- the invoke raised a user exceptionExecutionControl.ResolutionException- the invoke attempted to directly or indirectly invoke an unresolved snippetExecutionControl.StoppedException- if theinvoke()was canceled byExecutionControl.stop()ExecutionControl.EngineTerminationException- the execution engine has terminatedExecutionControl.InternalException- an internal problem occurredExecutionControl.RunException
-
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- 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
-
addToClasspath
public void addToClasspath(String path) throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException Description copied from interface:ExecutionControlAdds the path to the execution class path.- Specified by:
addToClasspathin interfaceExecutionControl- Parameters:
path- the path to add- Throws:
ExecutionControl.EngineTerminationException- the execution engine has terminatedExecutionControl.InternalException- an internal problem occurred
-
stop
public void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalExceptionDescription copied from interface:ExecutionControlInterrupts a running invoke.- Specified by:
stopin interfaceExecutionControl- Throws:
ExecutionControl.EngineTerminationException- the execution engine has terminatedExecutionControl.InternalException- an internal problem occurred
-
extensionCommand
public Object extensionCommand(String command, Object arg) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException Description copied from interface:ExecutionControlRun a non-standard command (or a standard command from a newer version).- Specified by:
extensionCommandin interfaceExecutionControl- Parameters:
command- the non-standard commandarg- the commands argument- Returns:
- the commands return value
- Throws:
ExecutionControl.UserException- the command raised a user exceptionExecutionControl.ResolutionException- the command attempted to directly or indirectly invoke an unresolved snippetExecutionControl.StoppedException- if the command was canceled byExecutionControl.stop()ExecutionControl.EngineTerminationException- the execution engine has terminatedExecutionControl.NotImplementedException- if not implementedExecutionControl.InternalException- an internal problem occurredExecutionControl.RunException
-
close
public void close()Closes the execution engine. Send an exit command to the remote agent.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceExecutionControl
-