Mercurial > traipse_dev
diff plugins/cherrypy/_cpserver.py @ 0:4385a7d0efd1 grumpy-goblin
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
author | sirebral |
---|---|
date | Tue, 14 Jul 2009 16:41:58 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/cherrypy/_cpserver.py Tue Jul 14 16:41:58 2009 -0500 @@ -0,0 +1,94 @@ +""" +Copyright (c) 2004, CherryPy Team (team@cherrypy.org) +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the CherryPy Team nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" + +""" +Main CherryPy module: + - Parses config file + - Creates the HTTP server +""" + +import cpg, thread, _cputil, _cpconfig, _cphttpserver, time, _cpthreadinglocal + +def start(configFile = None, parsedConfigFile = None, configMap = {}, initOnly = 0): + """ + Main function. All it does is this: + - read/parse config file if any + - create response and request objects + - creates HTTP server based on configFile and configMap + - start HTTP server + + Input: There are 2 ways to pass config options: + - Let CherryPy parse a config file (configFile) + - Pass the options as a dictionary (configMap) + """ + + # cpg.configOption contains an EmptyClass instance with all the configuration option + _cpconfig.setDefaultConfigOption() + + # cpg.parsedConfigFile contains the ConfigParser instance with the parse config file + cpg.parsedConfigFile = None + + if configFile: + _cpconfig.parseConfigFile(configFile = configFile) + elif parsedConfigFile: + _cpconfig.parseConfigFile(parsedConfigFile = parsedConfigFile) + + if configMap: + for key, value in configMap.items(): + setattr(cpg.configOption, key, value) + + # Output config options + _cpconfig.outputConfigOptions() + + # Check the config options + # TODO + # _cpconfig.checkConfigOptions() + + # Create request and response object (the same objects will be used + # throughout the entire life of the webserver) + cpg.request = _cpthreadinglocal.local() + cpg.response = _cpthreadinglocal.local() + # Create threadData object as a thread-specific all-purpose storage + cpg.threadData = _cpthreadinglocal.local() + + # Initialize a few global variables + cpg._lastCacheFlushTime = time.time() + cpg._lastSessionCleanUpTime = time.time() + cpg._sessionMap = {} # Map of "cookie" -> ("session object", "expiration time") + + if not initOnly: + _cphttpserver.start() + +def stop(): + _cphttpserver.stop() + +# Set some special attributes for adding hooks +onStartServerList = [] +onStartThreadList = [] +onStopServerList = [] +onStopThreadList = []