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 void
detectJdiExitEvent
(VirtualMachine vm, Consumer<String> unbiddenExitHandler) Monitor the JDI event stream forVMDeathEvent
andVMDisconnectEvent
.static void
forwardExecutionControl
(ExecutionControl ec, ObjectInput in, ObjectOutput out) Forward commands from the input to the specifiedExecutionControl
instance, then responses back on the output.static void
forwardExecutionControlAndIO
(ExecutionControl ec, InputStream inStream, OutputStream outStream, Map<String, Consumer<OutputStream>> outputStreamMap, Map<String, Consumer<InputStream>> inputStreamMap) Forward commands from the input to the specifiedExecutionControl
instance, then responses back on the output.static ExecutionControl
remoteInputOutput
(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, wait
Modifier and TypeMethodDescriptionprotected Object
clone()
Creates and returns a copy of this object.boolean
Indicates whether some other object is "equal to" this one.protected void
finalize()
Deprecated, for removal: This API element is subject to removal in a future version.Finalization is deprecated and subject to removal in a future release.final Class
<?> getClass()
Returns the runtime class of thisObject
.int
hashCode()
Returns a hash code value for this object.final void
notify()
Wakes up a single thread that is waiting on this object's monitor.final void
Wakes up all threads that are waiting on this object's monitor.toString()
Returns a string representation of the object.final void
wait()
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.final void
wait
(long timeoutMillis) Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.final void
wait
(long timeoutMillis, int nanos) Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
-
Method Details
-
forwardExecutionControl
Forward commands from the input to the specifiedExecutionControl
instance, then responses back on the output.- Parameters:
ec
- the direct instance ofExecutionControl
to 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 specifiedExecutionControl
instance, then responses back on the output.- Parameters:
ec
- the direct instance ofExecutionControl
to process commandsinStream
- the stream from which to create the command inputoutStream
- the stream that will carry any specified auxiliary channels (likeSystem.out
andSystem.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 forVMDeathEvent
andVMDisconnectEvent
. If encountered, invokesunbiddenExitHandler
.- Parameters:
vm
- the virtual machine to checkunbiddenExitHandler
- the handler, which will accept the exit information
-