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 ExecutionControl
ExecutionControl.ClassBytecodes, ExecutionControl.ClassInstallException, ExecutionControl.EngineTerminationException, ExecutionControl.ExecutionControlException, ExecutionControl.InternalException, ExecutionControl.NotImplementedException, ExecutionControl.ResolutionException, ExecutionControl.RunException, ExecutionControl.StoppedException, ExecutionControl.UserExceptionModifier and TypeInterfaceDescriptionstatic final classBundles class name with class bytecodes.static classA class install (load or redefine) encountered a problem.static classUnbidden execution engine termination has occurred.static classThe abstract base of allExecutionControlexceptions.static classAn internal problem has occurred.static classThe command is not implemented.static classAn exception indicating that aDeclarationSnippetwith unresolved references has been encountered.static classThe abstract base of of exceptions specific to running user code.static classAn exception indicating that anExecutionControl.invoke(java.lang.String, java.lang.String)(or theoretically aExecutionControl.varValue(java.lang.String, java.lang.String)) has been interrupted by aExecutionControl.stop().static classA 'normal' user exception occurred. -
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.Methods declared in class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitModifier and TypeMethodDescriptionprotected Objectclone()Answers a new instance of the same class as the receiver, whose slots have been filled in with the values in the slots of the receiver.booleanCompares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.protected voidfinalize()Deprecated, for removal: This API element is subject to removal in a future version.May cause performance issues, deadlocks and hangs.getClass()Answers the unique instance of java.lang.Class which represents the class of the receiver.inthashCode()Answers an integer hash code for the receiver.final voidnotify()Causes one thread which iswaiting on the receiver to be made ready to run.final voidCauses all threads which arewaiting on the receiver to be made ready to run.toString()Answers a string containing a concise, human-readable description of the receiver.final voidwait()Causes the thread which sent this message to be made not ready to run pending some change in the receiver (as indicated bynotifyornotifyAll).final voidwait(long time) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.final voidwait(long time, int frac) Causes the thread which sent this message to be made not ready to run either pending some change in the receiver (as indicated bynotifyornotifyAll) or the expiration of the timeout.
-
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
-