Mercurial > traipse_dev
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4385a7d0efd1 |
---|---|
1 """ | |
2 Copyright (c) 2004, CherryPy Team (team@cherrypy.org) | |
3 All rights reserved. | |
4 | |
5 Redistribution and use in source and binary forms, with or without modification, | |
6 are permitted provided that the following conditions are met: | |
7 | |
8 * Redistributions of source code must retain the above copyright notice, | |
9 this list of conditions and the following disclaimer. | |
10 * Redistributions in binary form must reproduce the above copyright notice, | |
11 this list of conditions and the following disclaimer in the documentation | |
12 and/or other materials provided with the distribution. | |
13 * Neither the name of the CherryPy Team nor the names of its contributors | |
14 may be used to endorse or promote products derived from this software | |
15 without specific prior written permission. | |
16 | |
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |
18 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
20 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE | |
21 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
22 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |
23 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
24 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |
25 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
26 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
27 """ | |
28 | |
29 """ | |
30 Main CherryPy module: | |
31 - Parses config file | |
32 - Creates the HTTP server | |
33 """ | |
34 | |
35 import cpg, thread, _cputil, _cpconfig, _cphttpserver, time, _cpthreadinglocal | |
36 | |
37 def start(configFile = None, parsedConfigFile = None, configMap = {}, initOnly = 0): | |
38 """ | |
39 Main function. All it does is this: | |
40 - read/parse config file if any | |
41 - create response and request objects | |
42 - creates HTTP server based on configFile and configMap | |
43 - start HTTP server | |
44 | |
45 Input: There are 2 ways to pass config options: | |
46 - Let CherryPy parse a config file (configFile) | |
47 - Pass the options as a dictionary (configMap) | |
48 """ | |
49 | |
50 # cpg.configOption contains an EmptyClass instance with all the configuration option | |
51 _cpconfig.setDefaultConfigOption() | |
52 | |
53 # cpg.parsedConfigFile contains the ConfigParser instance with the parse config file | |
54 cpg.parsedConfigFile = None | |
55 | |
56 if configFile: | |
57 _cpconfig.parseConfigFile(configFile = configFile) | |
58 elif parsedConfigFile: | |
59 _cpconfig.parseConfigFile(parsedConfigFile = parsedConfigFile) | |
60 | |
61 if configMap: | |
62 for key, value in configMap.items(): | |
63 setattr(cpg.configOption, key, value) | |
64 | |
65 # Output config options | |
66 _cpconfig.outputConfigOptions() | |
67 | |
68 # Check the config options | |
69 # TODO | |
70 # _cpconfig.checkConfigOptions() | |
71 | |
72 # Create request and response object (the same objects will be used | |
73 # throughout the entire life of the webserver) | |
74 cpg.request = _cpthreadinglocal.local() | |
75 cpg.response = _cpthreadinglocal.local() | |
76 # Create threadData object as a thread-specific all-purpose storage | |
77 cpg.threadData = _cpthreadinglocal.local() | |
78 | |
79 # Initialize a few global variables | |
80 cpg._lastCacheFlushTime = time.time() | |
81 cpg._lastSessionCleanUpTime = time.time() | |
82 cpg._sessionMap = {} # Map of "cookie" -> ("session object", "expiration time") | |
83 | |
84 if not initOnly: | |
85 _cphttpserver.start() | |
86 | |
87 def stop(): | |
88 _cphttpserver.stop() | |
89 | |
90 # Set some special attributes for adding hooks | |
91 onStartServerList = [] | |
92 onStartThreadList = [] | |
93 onStopServerList = [] | |
94 onStopThreadList = [] |