php.java.script
Class CGIRunner

java.lang.Object
  extended by java.lang.Thread
      extended by php.java.script.CGIRunner
All Implemented Interfaces:
java.lang.Runnable
Direct Known Subclasses:
HttpProxy

abstract class CGIRunner
extends java.lang.Thread

This class can be used to run a PHP CGI binary. Used only when running local php scripts. To allocate and invoke remote scripts please use a HttpProxy and a URLReader instead.

Author:
jostb
See Also:
HttpServer, URLReader, HttpProxy

Nested Class Summary
protected  class CGIRunner.Lock
           
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
protected  java.util.Map env
           
protected  java.io.OutputStream err
           
protected  Util.HeaderParser headerParser
           
protected  java.io.OutputStream out
           
protected  java.io.Reader reader
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
protected CGIRunner(java.lang.String name, java.io.Reader reader, java.util.Map env, java.io.OutputStream out, java.io.OutputStream err, Util.HeaderParser headerParser, ResultProxy resultProxy)
           
 
Method Summary
 void call(PhpProcedureProxy script)
          The PHP script must call this function with the current continuation as an argument.
protected  void doRun()
           
 PhpProcedureProxy getPhpScript()
          One must call this function if one is interested in the php continuation.
 void release()
          This function must be called to release the allocated php continuation.
 void run()
           
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, 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, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

env

protected java.util.Map env

out

protected java.io.OutputStream out

err

protected java.io.OutputStream err

reader

protected java.io.Reader reader

headerParser

protected Util.HeaderParser headerParser
Constructor Detail

CGIRunner

protected CGIRunner(java.lang.String name,
                    java.io.Reader reader,
                    java.util.Map env,
                    java.io.OutputStream out,
                    java.io.OutputStream err,
                    Util.HeaderParser headerParser,
                    ResultProxy resultProxy)
Method Detail

run

public void run()
Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

doRun

protected void doRun()
              throws java.io.IOException,
                     Util.Process.PhpException
Throws:
java.io.IOException
Util.Process.PhpException

call

public void call(PhpProcedureProxy script)
          throws java.lang.InterruptedException
The PHP script must call this function with the current continuation as an argument.

Example:

java_context()->call(java_closure());

Parameters:
script - - The php continuation
Throws:
java.lang.InterruptedException

getPhpScript

public PhpProcedureProxy getPhpScript()
                               throws java.lang.Exception
One must call this function if one is interested in the php continuation.

Returns:
The php continuation.
Throws:
java.lang.Exception

release

public void release()
             throws java.lang.InterruptedException
This function must be called to release the allocated php continuation. Note that simply calling this method does not guarantee that the script is finished, as the ContextRunner may still produce output. Use contextFactory.waitFor() to wait for the script to terminate.

Throws:
java.lang.InterruptedException