Class Runner

java.lang.Object
java.lang.Thread
edu.wisc.ssec.mcidasv.jython.Runner
All Implemented Interfaces:
Runnable

public final class Runner extends Thread
This class represents a specialized Thread that creates and executes Commands. A BlockingQueue is used to maintain thread safety and to cause a Runner to wait when the queue is at capacity or has no Commands to execute.
  • Field Details

  • Constructor Details

    • Runner

      public Runner(Console console)
      Creates a new "console runner thread" for a given Console.
      Parameters:
      console - Console responsible for adding user input and displaying output. Cannot be null.
    • Runner

      public Runner(Console console, List<String> commands)
      Creates a new "console runner thread" for a given Console and supplies a List of initial "commands" to be executed.
      Parameters:
      console - Console responsible for adding user input and displaying output. Cannot be null.
      commands - Lines to be run right away. Cannot be null.
  • Method Details

    • setCallbackHandler

      Registers a new callback handler. Currently this only forwards the new handler to Interpreter.setCallbackHandler(ConsoleCallback).
      Parameters:
      newCallback - The callback handler to register.
    • copyLocals

      org.python.core.PyStringMap copyLocals()
      Fetches, copies, and returns the interpreter's local namespace.
      Returns:
      Copy of the interpreter's local namespace.
    • run

      public void run()
      Takes commands out of the queue and executes them. We get a lot of mileage out of BlockingQueue; it's thread-safe and will block if the queue is at capacity or empty.

      Please note that this method needs to be the first method that gets called after creating a Runner.

      Specified by:
      run in interface Runnable
      Overrides:
      run in class Thread
    • queueBatch

      public void queueBatch(String source, List<String> batch)
      Queues up a series of Jython statements. Currently each command is treated as though the current user just entered it; the command appears in the input along with whatever output the command generates.
      Parameters:
      source - Batched command source. Anything but null is acceptable.
      batch - The actual commands to execute.
    • queueLine

      public void queueLine(String line)
      Queues up a line of Jython for execution.
      Parameters:
      line - Text of the command.
    • queueObject

      public void queueObject(String name, Object object)
      Queues the addition of an object to interpreter's local namespace.
      Parameters:
      name - Object name as it will appear to interpreter.
      object - Object to put in interpreter's local namespace.
    • queueRemoval

      public void queueRemoval(String name)
      Queues the removal of an object from interpreter's local namespace.
      Parameters:
      name - Name of the object to be removed, as it appears to Jython.
      See Also:
    • queueFile

      public void queueFile(String name, String path)
      Queues up a Jython file to be run by interpreter.
      Parameters:
      name - __name__ attribute to use for loading path.
      path - The path to the Jython file.
    • queueCommand

      private void queueCommand(Command command)
      Queues up a command for execution.
      Parameters:
      command - Command to place in the execution queue.
    • toString

      public String toString()
      Overrides:
      toString in class Thread