Class Util
java.lang.Object
jdk.jshell.execution.Util
Miscellaneous utility methods for setting-up implementations of
ExecutionControl. Particularly implementations with remote
execution.- Since:
- 9
-
Method Summary
Modifier and TypeMethodDescriptionstatic voiddetectJdiExitEvent(VirtualMachine vm, Consumer<String> unbiddenExitHandler) Monitor the JDI event stream forVMDeathEventandVMDisconnectEvent.static voidforwardExecutionControl(ExecutionControl ec, ObjectInput in, ObjectOutput out) Forward commands from the input to the specifiedExecutionControlinstance, then responses back on the output.static voidforwardExecutionControlAndIO(ExecutionControl ec, InputStream inStream, OutputStream outStream, Map<String, Consumer<OutputStream>> outputStreamMap, Map<String, Consumer<InputStream>> inputStreamMap) Forward commands from the input to the specifiedExecutionControlinstance, then responses back on the output.static ExecutionControlremoteInputOutput(InputStream input, OutputStream output, Map<String, OutputStream> outputStreamMap, Map<String, InputStream> inputStreamMap, BiFunction<ObjectInput, ObjectOutput, ExecutionControl> factory) Creates an ExecutionControl for given packetized input and output.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.
-
Method Details
-
forwardExecutionControl
Forward commands from the input to the specifiedExecutionControlinstance, then responses back on the output.- Parameters:
ec- the direct instance ofExecutionControlto process commandsin- the command inputout- the command response output
-
forwardExecutionControlAndIO
public static void forwardExecutionControlAndIO(ExecutionControl ec, InputStream inStream, OutputStream outStream, Map<String, Consumer<OutputStream>> outputStreamMap, Map<String, Consumer<InputStream>> inputStreamMap) throws IOException Forward commands from the input to the specifiedExecutionControlinstance, then responses back on the output.- Parameters:
ec- the direct instance ofExecutionControlto process commandsinStream- the stream from which to create the command inputoutStream- the stream that will carry any specified auxiliary channels (likeSystem.outandSystem.err), and the command response output.outputStreamMap- a map between names of additional streams to carry and setters for the stream. Names starting with '$' are reserved for internal use.inputStreamMap- a map between names of additional streams to carry and setters for the stream. Names starting with '$' are reserved for internal use.- Throws:
IOException- if there are errors using the passed streams
-
remoteInputOutput
public static ExecutionControl remoteInputOutput(InputStream input, OutputStream output, Map<String, OutputStream> outputStreamMap, Map<String, InputStream> inputStreamMap, BiFunction<ObjectInput, ObjectOutput, ExecutionControl> factory) throws IOException Creates an ExecutionControl for given packetized input and output. The given InputStream is de-packetized, and content forwarded to ObjectInput and given OutputStreams. The ObjectOutput and values read from the given InputStream are packetized and sent to the given OutputStream.- Parameters:
input- the packetized input streamoutput- the packetized output streamoutputStreamMap- a map between stream names and the output streams to forward. Names starting with '$' are reserved for internal use.inputStreamMap- a map between stream names and the input streams to forward. Names starting with '$' are reserved for internal use.factory- to create the ExecutionControl from ObjectInput and ObjectOutput.- Returns:
- the created ExecutionControl
- Throws:
IOException- if setting up the streams raised an exception
-
detectJdiExitEvent
Monitor the JDI event stream forVMDeathEventandVMDisconnectEvent. If encountered, invokesunbiddenExitHandler.- Parameters:
vm- the virtual machine to checkunbiddenExitHandler- the handler, which will accept the exit information
-