StreamingExecutionControl (Java SE 25 & JDK 25)
Description: declaration: module: jdk.jshell, package: jdk.jshell.execution, class: StreamingExecutionControl
Keywords: jdk.jshell.execution.StreamingExecutionControl class

# Class StreamingExecutionControl

java.lang.Object
jdk.jshell.execution.StreamingExecutionControl

All Implemented Interfaces:
  `AutoCloseable, ExecutionControl`

Direct Known Subclasses:
  `JdiExecutionControl`

public class StreamingExecutionControl extends Object implements ExecutionControl
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.UserException`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StreamingExecutionControl(ObjectOutput out, ObjectInput in)`
  Creates an instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addToClasspath(String path)`
  Adds the path to the execution class path.
  `void`
  `close()`
  Closes the execution engine.
  `Object`
  `extensionCommand(String command, Object arg)`
  Run a non-standard command (or a standard command from a newer version).
  `String`
  `invoke(String classname, String methodname)`
  Invokes an executable Snippet by calling a method on the specified wrapper class.
  `void`
  `load(ExecutionControl.ClassBytecodes[] cbcs)`
  Attempts to load new classes.
  `void`
  `redefine(ExecutionControl.ClassBytecodes[] cbcs)`
  Attempts to redefine previously loaded classes.
  `void`
  `stop()`
  Interrupts a running invoke.
  `String`
  `varValue(String classname, String varname)`
  Returns the value of a variable.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### StreamingExecutionControl

    public StreamingExecutionControl(ObjectOutput out, ObjectInput in)
    Creates an instance.
    Parameters:
      `out` - the output for commands
      `in` - 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: `ExecutionControl`
    Attempts to load new classes.
    Specified by:
      `load` in interface `ExecutionControl`
    Parameters:
      `cbcs` - the class name and bytecodes to load
    Throws:
      `ExecutionControl.ClassInstallException` - exception occurred loading the classes, some or all were not loaded
      `ExecutionControl.NotImplementedException` - if not implemented
      `ExecutionControl.EngineTerminationException` - the execution engine has terminated

  - ### redefine

    public void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
    Description copied from interface: `ExecutionControl`
    Attempts to redefine previously loaded classes.
    Specified by:
      `redefine` in interface `ExecutionControl`
    Parameters:
      `cbcs` - the class name and bytecodes to redefine
    Throws:
      `ExecutionControl.ClassInstallException` - exception occurred redefining the classes, some or all were not redefined
      `ExecutionControl.NotImplementedException` - if not implemented
      `ExecutionControl.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: `ExecutionControl`
    Invokes an executable Snippet by calling a method on the specified wrapper class. The method must have no arguments and return String.
    Specified by:
      `invoke` in interface `ExecutionControl`
    Parameters:
      `classname` - the class whose method should be invoked
      `methodname` - 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 exception
      `ExecutionControl.ResolutionException` - the invoke attempted to directly or indirectly invoke an unresolved snippet
      `ExecutionControl.StoppedException` - if the `invoke()` was canceled by `ExecutionControl.stop()`
      `ExecutionControl.EngineTerminationException` - the execution engine has terminated
      `ExecutionControl.InternalException` - an internal problem occurred
      `ExecutionControl.RunException`

  - ### varValue

    public String varValue(String classname, String varname) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
    Description copied from interface: `ExecutionControl`
    Returns the value of a variable.
    Specified by:
      `varValue` in interface `ExecutionControl`
    Parameters:
      `classname` - the name of the wrapper class of the variable
      `varname` - the name of the variable
    Returns:
      the value of the variable
    Throws:
      `ExecutionControl.UserException` - formatting the value raised a user exception
      `ExecutionControl.ResolutionException` - formatting the value attempted to directly or indirectly invoke an unresolved snippet
      `ExecutionControl.StoppedException` - if the formatting the value was canceled by `ExecutionControl.stop()`
      `ExecutionControl.EngineTerminationException` - the execution engine has terminated
      `ExecutionControl.InternalException` - an internal problem occurred
      `ExecutionControl.RunException`

  - ### addToClasspath

    public void addToClasspath(String path) throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
    Description copied from interface: `ExecutionControl`
    Adds the path to the execution class path.
    Specified by:
      `addToClasspath` in interface `ExecutionControl`
    Parameters:
      `path` - the path to add
    Throws:
      `ExecutionControl.EngineTerminationException` - the execution engine has terminated
      `ExecutionControl.InternalException` - an internal problem occurred

  - ### stop

    public void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
    Description copied from interface: `ExecutionControl`
    Interrupts a running invoke.
    Specified by:
      `stop` in interface `ExecutionControl`
    Throws:
      `ExecutionControl.EngineTerminationException` - the execution engine has terminated
      `ExecutionControl.InternalException` - an internal problem occurred

  - ### extensionCommand

    public Object extensionCommand(String command, Object arg) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
    Description copied from interface: `ExecutionControl`
    Run a non-standard command (or a standard command from a newer version).
    Specified by:
      `extensionCommand` in interface `ExecutionControl`
    Parameters:
      `command` - the non-standard command
      `arg` - the commands argument
    Returns:
      the commands return value
    Throws:
      `ExecutionControl.UserException` - the command raised a user exception
      `ExecutionControl.ResolutionException` - the command attempted to directly or indirectly invoke an unresolved snippet
      `ExecutionControl.StoppedException` - if the command was canceled by `ExecutionControl.stop()`
      `ExecutionControl.EngineTerminationException` - the execution engine has terminated
      `ExecutionControl.NotImplementedException` - if not implemented
      `ExecutionControl.InternalException` - an internal problem occurred
      `ExecutionControl.RunException`

  - ### close

    public void close()
    Closes the execution engine. Send an exit command to the remote agent.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `ExecutionControl`