This patch allows for subclassing of ThreadedAppServer.
It updates bothThreadedAppServer.py, and the proposed
replacement of NewThreadedAppServer.py
An overview of how this is accomplished is as follows:
Launch.py is updated to allow specification of a module
which does not need to reside under WebKit. The
specified python module path can either be a module
(which must contain a function main) or can be a
reference to a function whch is used in place of main.
The function main is called with the commandline to
start the server.
Within ThreadedAppServer.py (and
NewThreadedAppServer.py) the function main() takes an
optional argument specifying the serverClass. The
serverClass defaults to the ThreadedAppServer defined
within the current module.
To use this, derive a subClass of ThreadedAppServer
adding or altering functionality as you wish.
Then declare a function such as main() which at least
must take the command line arguments. If you want to
parse these yourself, that's OK, but unless you are
adding functionality beyond what is provided in the
main from ThreadedAppServer, you can turn around and
call that main function, passing in your new class as
New method added include:
waitShutdown() wait until the shutDown completes.
Note that much of the functionality of run() was moved
into a run() method on the ThreadedAppServer. I also
chose not to pass arguments into mainloop() but rather
to make them properties on the object. This is because
alternate mainloop() implementations (ie:
NewThreadedAppServer) may take different arguments.
Matching the properties will be simpler and more
I should also note this includes a fix for the bug
630432 which fixed some monitor issues on NT. Although
this has not been tested on NT.
There is a TestServer.py file which tests this. I
didn't know exactly where to put it, I don't think it
belongs in WebKit, but perhaps in a WebKit/Tests. But
that doesn't exist.