|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.Thread
edu.wisc.ssec.mcidasv.jython.Runner
public class Runner
This class represents a specialized Thread
that creates and executes
Command
s. A BlockingQueue
is used to maintain thread safety
and to cause a Runner
to wait when the queue is at capacity or has
no Command
s to execute.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class java.lang.Thread |
---|
Thread.State, Thread.UncaughtExceptionHandler |
Field Summary | |
---|---|
private Console |
console
|
private Interpreter |
interpreter
The Jython interpreter that will actually run the queued commands. |
private boolean |
interrupted
Not in use yet. |
private static org.slf4j.Logger |
logger
|
private BlockingQueue<Command> |
queue
Queue of Command s awaiting execution. |
private static int |
QUEUE_CAPACITY
The maximum number of Command s that can be queued. |
private OutputStreamDemux |
STD_ERR
Acts like a global error stream that redirects data to whichever Console matches the current thread name. |
private OutputStreamDemux |
STD_OUT
Acts like a global output stream that redirects data to whichever Console matches the current thread name. |
private org.python.core.PySystemState |
systemState
|
Fields inherited from class java.lang.Thread |
---|
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
Constructor Summary | |
---|---|
Runner(Console console)
|
|
Runner(Console console,
List<String> commands)
|
Method Summary | |
---|---|
protected org.python.core.PyStringMap |
copyLocals()
Fetches, copies, and returns the interpreter 's local namespace. |
void |
queueBatch(String source,
List<String> batch)
Queues up a series of Jython statements. |
private void |
queueCommand(Command command)
Queues up a command for execution. |
void |
queueFile(String name,
String path)
Queues up a Jython file to be run by interpreter . |
void |
queueLine(String line)
Queues up a line of Jython for execution. |
void |
queueObject(String name,
Object object)
Queues the addition of an object to interpreter 's local
namespace. |
void |
queueRemoval(String name)
Queues the removal of an object from interpreter 's local
namespace. |
void |
run()
Takes commands out of the queue and executes them. |
protected void |
setCallbackHandler(ConsoleCallback newCallback)
Registers a new callback handler. |
String |
toString()
|
Methods inherited from class java.lang.Thread |
---|
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, yield |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private static final org.slf4j.Logger logger
private static final int QUEUE_CAPACITY
Command
s that can be queued.
private final OutputStreamDemux STD_OUT
Console
matches the current thread name.
private final OutputStreamDemux STD_ERR
Console
matches the current thread name.
private final BlockingQueue<Command> queue
Command
s awaiting execution.
private final Console console
private final org.python.core.PySystemState systemState
private final Interpreter interpreter
private boolean interrupted
Constructor Detail |
---|
public Runner(Console console)
console
- public Runner(Console console, List<String> commands)
console
- commands
- Method Detail |
---|
protected void setCallbackHandler(ConsoleCallback newCallback)
Interpreter.setCallbackHandler(ConsoleCallback)
.
newCallback
- The callback handler to register.protected org.python.core.PyStringMap copyLocals()
interpreter
's local namespace.
public void run()
Please note that this method needs to be the first method that
gets called after creating a Runner
.
run
in interface Runnable
run
in class Thread
public void queueBatch(String source, List<String> batch)
source
- Batched command source. Anything but null is acceptable.batch
- The actual commands to execute.public void queueLine(String line)
line
- Text of the command.public void queueObject(String name, Object object)
interpreter
's local
namespace.
name
- Object name as it will appear to interpreter
.object
- Object to put in interpreter
's local namespace.public void queueRemoval(String name)
interpreter
's local
namespace.
name
- Name of the object to be removed, as it appears to
Jython.queueObject(String, Object)
public void queueFile(String name, String path)
interpreter
.
name
- __name__
attribute to use for loading path
.path
- The path to the Jython file.private void queueCommand(Command command)
command
- Command to place in the execution queue.public String toString()
toString
in class Thread
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |