passenger 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (275) hide show
  1. data/Rakefile +8 -5
  2. data/bin/passenger-install-apache2-module +6 -1
  3. data/doc/ApplicationPool algorithm.txt +23 -5
  4. data/doc/Architectural overview.html +778 -0
  5. data/doc/Security of user switching support.html +1 -1
  6. data/doc/Users guide.html +113 -31
  7. data/doc/Users guide.txt +104 -10
  8. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +683 -0
  9. data/doc/cxxapi/ApplicationPool_8h-source.html +224 -0
  10. data/doc/cxxapi/Application_8h-source.html +448 -0
  11. data/doc/cxxapi/Bucket_8h-source.html +61 -0
  12. data/doc/cxxapi/Configuration_8h-source.html +195 -0
  13. data/doc/cxxapi/DummySpawnManager_8h-source.html +126 -0
  14. data/doc/cxxapi/Exceptions_8h-source.html +244 -0
  15. data/doc/cxxapi/Hooks_8h-source.html +63 -0
  16. data/doc/cxxapi/Logging_8h-source.html +136 -0
  17. data/doc/cxxapi/MessageChannel_8h-source.html +524 -0
  18. data/doc/cxxapi/SpawnManager_8h-source.html +593 -0
  19. data/doc/cxxapi/StandardApplicationPool_8h-source.html +732 -0
  20. data/doc/cxxapi/System_8h-source.html +251 -0
  21. data/doc/cxxapi/Utils_8h-source.html +283 -0
  22. data/doc/cxxapi/annotated.html +59 -0
  23. data/doc/cxxapi/classClient-members.html +35 -0
  24. data/doc/cxxapi/classClient.html +117 -0
  25. data/doc/cxxapi/classDirectoryMapper-members.html +38 -0
  26. data/doc/cxxapi/classDirectoryMapper.html +203 -0
  27. data/doc/cxxapi/classHooks-members.html +33 -0
  28. data/doc/cxxapi/classHooks.html +43 -0
  29. data/doc/cxxapi/classPassenger_1_1Application-members.html +38 -0
  30. data/doc/cxxapi/classPassenger_1_1Application.html +229 -0
  31. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +41 -0
  32. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +359 -0
  33. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +36 -0
  34. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +225 -0
  35. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map +1 -0
  36. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5 +1 -0
  37. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  38. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +43 -0
  39. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +329 -0
  40. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +33 -0
  41. data/doc/cxxapi/classPassenger_1_1BusyException.html +47 -0
  42. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +33 -0
  43. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +44 -0
  44. data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +33 -0
  45. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +51 -0
  46. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +33 -0
  47. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +51 -0
  48. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +1 -0
  49. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +1 -0
  50. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  51. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +38 -0
  52. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +61 -0
  53. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map +1 -0
  54. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5 +1 -0
  55. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  56. data/doc/cxxapi/classPassenger_1_1IOException-members.html +33 -0
  57. data/doc/cxxapi/classPassenger_1_1IOException.html +54 -0
  58. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +1 -0
  59. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -0
  60. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  61. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +47 -0
  62. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +591 -0
  63. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +35 -0
  64. data/doc/cxxapi/classPassenger_1_1SpawnException.html +77 -0
  65. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +37 -0
  66. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +255 -0
  67. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +43 -0
  68. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +400 -0
  69. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map +1 -0
  70. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5 +1 -0
  71. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  72. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +37 -0
  73. data/doc/cxxapi/classPassenger_1_1SystemException.html +154 -0
  74. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +1 -0
  75. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +1 -0
  76. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  77. data/doc/cxxapi/classPassenger_1_1TempFile-members.html +36 -0
  78. data/doc/cxxapi/classPassenger_1_1TempFile.html +128 -0
  79. data/doc/cxxapi/classPassenger_1_1Thread-members.html +35 -0
  80. data/doc/cxxapi/classPassenger_1_1Thread.html +100 -0
  81. data/doc/cxxapi/classboost_1_1this__thread_1_1disable__syscall__interruption-members.html +33 -0
  82. data/doc/cxxapi/classboost_1_1this__thread_1_1disable__syscall__interruption.html +46 -0
  83. data/doc/cxxapi/classboost_1_1this__thread_1_1enable__syscall__interruption-members.html +33 -0
  84. data/doc/cxxapi/classboost_1_1this__thread_1_1enable__syscall__interruption.html +44 -0
  85. data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption-members.html +33 -0
  86. data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption.html +44 -0
  87. data/doc/cxxapi/definitions_8h-source.html +28 -0
  88. data/doc/cxxapi/doxygen.css +433 -0
  89. data/doc/cxxapi/doxygen.png +0 -0
  90. data/doc/cxxapi/files.html +42 -0
  91. data/doc/cxxapi/ftv2blank.png +0 -0
  92. data/doc/cxxapi/ftv2doc.png +0 -0
  93. data/doc/cxxapi/ftv2folderclosed.png +0 -0
  94. data/doc/cxxapi/ftv2folderopen.png +0 -0
  95. data/doc/cxxapi/ftv2lastnode.png +0 -0
  96. data/doc/cxxapi/ftv2link.png +0 -0
  97. data/doc/cxxapi/ftv2mlastnode.png +0 -0
  98. data/doc/cxxapi/ftv2mnode.png +0 -0
  99. data/doc/cxxapi/ftv2node.png +0 -0
  100. data/doc/cxxapi/ftv2plastnode.png +0 -0
  101. data/doc/cxxapi/ftv2pnode.png +0 -0
  102. data/doc/cxxapi/ftv2vertline.png +0 -0
  103. data/doc/cxxapi/functions.html +215 -0
  104. data/doc/cxxapi/functions_func.html +210 -0
  105. data/doc/cxxapi/functions_type.html +46 -0
  106. data/doc/cxxapi/functions_vars.html +48 -0
  107. data/doc/cxxapi/graph_legend.dot +22 -0
  108. data/doc/cxxapi/graph_legend.html +87 -0
  109. data/doc/cxxapi/graph_legend.png +0 -0
  110. data/doc/cxxapi/group__Configuration.html +236 -0
  111. data/doc/cxxapi/group__Configuration.png +0 -0
  112. data/doc/cxxapi/group__Core.html +51 -0
  113. data/doc/cxxapi/group__Core.png +0 -0
  114. data/doc/cxxapi/group__Exceptions.html +43 -0
  115. data/doc/cxxapi/group__Hooks.html +46 -0
  116. data/doc/cxxapi/group__Hooks.png +0 -0
  117. data/doc/cxxapi/group__Support.html +406 -0
  118. data/doc/cxxapi/hierarchy.html +67 -0
  119. data/doc/cxxapi/index.html +11 -0
  120. data/doc/cxxapi/inherit__graph__0.map +1 -0
  121. data/doc/cxxapi/inherit__graph__0.md5 +1 -0
  122. data/doc/cxxapi/inherit__graph__0.png +0 -0
  123. data/doc/cxxapi/inherit__graph__1.map +1 -0
  124. data/doc/cxxapi/inherit__graph__1.md5 +1 -0
  125. data/doc/cxxapi/inherit__graph__1.png +0 -0
  126. data/doc/cxxapi/inherit__graph__10.map +1 -0
  127. data/doc/cxxapi/inherit__graph__10.md5 +1 -0
  128. data/doc/cxxapi/inherit__graph__10.png +0 -0
  129. data/doc/cxxapi/inherit__graph__11.map +1 -0
  130. data/doc/cxxapi/inherit__graph__11.md5 +1 -0
  131. data/doc/cxxapi/inherit__graph__11.png +0 -0
  132. data/doc/cxxapi/inherit__graph__12.map +1 -0
  133. data/doc/cxxapi/inherit__graph__12.md5 +1 -0
  134. data/doc/cxxapi/inherit__graph__12.png +0 -0
  135. data/doc/cxxapi/inherit__graph__13.map +1 -0
  136. data/doc/cxxapi/inherit__graph__13.md5 +1 -0
  137. data/doc/cxxapi/inherit__graph__13.png +0 -0
  138. data/doc/cxxapi/inherit__graph__14.map +2 -0
  139. data/doc/cxxapi/inherit__graph__14.md5 +1 -0
  140. data/doc/cxxapi/inherit__graph__14.png +0 -0
  141. data/doc/cxxapi/inherit__graph__15.map +1 -0
  142. data/doc/cxxapi/inherit__graph__15.md5 +1 -0
  143. data/doc/cxxapi/inherit__graph__15.png +0 -0
  144. data/doc/cxxapi/inherit__graph__16.map +1 -0
  145. data/doc/cxxapi/inherit__graph__16.md5 +1 -0
  146. data/doc/cxxapi/inherit__graph__16.png +0 -0
  147. data/doc/cxxapi/inherit__graph__17.map +1 -0
  148. data/doc/cxxapi/inherit__graph__17.md5 +1 -0
  149. data/doc/cxxapi/inherit__graph__17.png +0 -0
  150. data/doc/cxxapi/inherit__graph__18.map +1 -0
  151. data/doc/cxxapi/inherit__graph__18.md5 +1 -0
  152. data/doc/cxxapi/inherit__graph__18.png +0 -0
  153. data/doc/cxxapi/inherit__graph__19.map +2 -0
  154. data/doc/cxxapi/inherit__graph__19.md5 +1 -0
  155. data/doc/cxxapi/inherit__graph__19.png +0 -0
  156. data/doc/cxxapi/inherit__graph__2.map +1 -0
  157. data/doc/cxxapi/inherit__graph__2.md5 +1 -0
  158. data/doc/cxxapi/inherit__graph__2.png +0 -0
  159. data/doc/cxxapi/inherit__graph__20.map +1 -0
  160. data/doc/cxxapi/inherit__graph__20.md5 +1 -0
  161. data/doc/cxxapi/inherit__graph__20.png +0 -0
  162. data/doc/cxxapi/inherit__graph__21.map +1 -0
  163. data/doc/cxxapi/inherit__graph__21.md5 +1 -0
  164. data/doc/cxxapi/inherit__graph__21.png +0 -0
  165. data/doc/cxxapi/inherit__graph__3.map +1 -0
  166. data/doc/cxxapi/inherit__graph__3.md5 +1 -0
  167. data/doc/cxxapi/inherit__graph__3.png +0 -0
  168. data/doc/cxxapi/inherit__graph__4.map +1 -0
  169. data/doc/cxxapi/inherit__graph__4.md5 +1 -0
  170. data/doc/cxxapi/inherit__graph__4.png +0 -0
  171. data/doc/cxxapi/inherit__graph__5.map +1 -0
  172. data/doc/cxxapi/inherit__graph__5.md5 +1 -0
  173. data/doc/cxxapi/inherit__graph__5.png +0 -0
  174. data/doc/cxxapi/inherit__graph__6.map +1 -0
  175. data/doc/cxxapi/inherit__graph__6.md5 +1 -0
  176. data/doc/cxxapi/inherit__graph__6.png +0 -0
  177. data/doc/cxxapi/inherit__graph__7.map +1 -0
  178. data/doc/cxxapi/inherit__graph__7.md5 +1 -0
  179. data/doc/cxxapi/inherit__graph__7.png +0 -0
  180. data/doc/cxxapi/inherit__graph__8.map +1 -0
  181. data/doc/cxxapi/inherit__graph__8.md5 +1 -0
  182. data/doc/cxxapi/inherit__graph__8.png +0 -0
  183. data/doc/cxxapi/inherit__graph__9.map +2 -0
  184. data/doc/cxxapi/inherit__graph__9.md5 +1 -0
  185. data/doc/cxxapi/inherit__graph__9.png +0 -0
  186. data/doc/cxxapi/inherits.html +102 -0
  187. data/doc/cxxapi/main.html +27 -0
  188. data/doc/cxxapi/modules.html +34 -0
  189. data/doc/cxxapi/namespacePassenger.html +208 -0
  190. data/doc/cxxapi/namespacePassenger_1_1InterruptableCalls.html +43 -0
  191. data/doc/cxxapi/namespacemembers.html +70 -0
  192. data/doc/cxxapi/namespacemembers_func.html +66 -0
  193. data/doc/cxxapi/namespacemembers_type.html +46 -0
  194. data/doc/cxxapi/namespaces.html +35 -0
  195. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +33 -0
  196. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +49 -0
  197. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +33 -0
  198. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +49 -0
  199. data/doc/cxxapi/tab_b.gif +0 -0
  200. data/doc/cxxapi/tab_l.gif +0 -0
  201. data/doc/cxxapi/tab_r.gif +0 -0
  202. data/doc/cxxapi/tabs.css +102 -0
  203. data/doc/cxxapi/tree.html +167 -0
  204. data/doc/rdoc/classes/ConditionVariable.html +160 -0
  205. data/doc/rdoc/classes/Exception.html +120 -0
  206. data/doc/rdoc/classes/GC.html +113 -0
  207. data/doc/rdoc/classes/IO.html +150 -0
  208. data/doc/rdoc/classes/Passenger.html +136 -0
  209. data/doc/rdoc/classes/Passenger/AbstractRequestHandler.html +402 -0
  210. data/doc/rdoc/classes/Passenger/AbstractServer.html +649 -0
  211. data/doc/rdoc/classes/Passenger/AbstractServer/ServerAlreadyStarted.html +97 -0
  212. data/doc/rdoc/classes/Passenger/AbstractServer/ServerError.html +96 -0
  213. data/doc/rdoc/classes/Passenger/AbstractServer/ServerNotStarted.html +97 -0
  214. data/doc/rdoc/classes/Passenger/AbstractServer/UnknownMessage.html +96 -0
  215. data/doc/rdoc/classes/Passenger/AppInitError.html +137 -0
  216. data/doc/rdoc/classes/Passenger/Application.html +298 -0
  217. data/doc/rdoc/classes/Passenger/ConsoleTextTemplate.html +172 -0
  218. data/doc/rdoc/classes/Passenger/FrameworkInitError.html +143 -0
  219. data/doc/rdoc/classes/Passenger/HTMLTemplate.html +175 -0
  220. data/doc/rdoc/classes/Passenger/InitializationError.html +141 -0
  221. data/doc/rdoc/classes/Passenger/MessageChannel.html +488 -0
  222. data/doc/rdoc/classes/Passenger/NativeSupport.html +320 -0
  223. data/doc/rdoc/classes/Passenger/SpawnManager.html +375 -0
  224. data/doc/rdoc/classes/Passenger/UnknownError.html +125 -0
  225. data/doc/rdoc/classes/Passenger/Utils.html +578 -0
  226. data/doc/rdoc/classes/Passenger/VersionNotFound.html +140 -0
  227. data/doc/rdoc/classes/PlatformInfo.html +302 -0
  228. data/doc/rdoc/classes/RakeExtensions.html +197 -0
  229. data/doc/rdoc/created.rid +1 -0
  230. data/doc/rdoc/files/DEVELOPERS_TXT.html +230 -0
  231. data/doc/rdoc/files/README.html +150 -0
  232. data/doc/rdoc/files/ext/passenger/native_support_c.html +92 -0
  233. data/doc/rdoc/files/lib/passenger/abstract_request_handler_rb.html +126 -0
  234. data/doc/rdoc/files/lib/passenger/abstract_server_rb.html +127 -0
  235. data/doc/rdoc/files/lib/passenger/application_rb.html +123 -0
  236. data/doc/rdoc/files/lib/passenger/console_text_template_rb.html +122 -0
  237. data/doc/rdoc/files/lib/passenger/constants_rb.html +114 -0
  238. data/doc/rdoc/files/lib/passenger/dependencies_rb.html +130 -0
  239. data/doc/rdoc/files/lib/passenger/exceptions_rb.html +118 -0
  240. data/doc/rdoc/files/lib/passenger/html_template_rb.html +122 -0
  241. data/doc/rdoc/files/lib/passenger/message_channel_rb.html +118 -0
  242. data/doc/rdoc/files/lib/passenger/platform_info_rb.html +122 -0
  243. data/doc/rdoc/files/lib/passenger/simple_benchmarking_rb.html +118 -0
  244. data/doc/rdoc/files/lib/passenger/spawn_manager_rb.html +139 -0
  245. data/doc/rdoc/files/lib/passenger/utils_rb.html +130 -0
  246. data/doc/rdoc/files/lib/rake/extensions_rb.html +122 -0
  247. data/doc/rdoc/fr_class_index.html +71 -0
  248. data/doc/rdoc/fr_file_index.html +63 -0
  249. data/doc/rdoc/fr_method_index.html +120 -0
  250. data/doc/rdoc/index.html +26 -0
  251. data/doc/rdoc/rdoc-style.css +187 -0
  252. data/ext/apache2/ApplicationPool.h +12 -0
  253. data/ext/apache2/ApplicationPoolServer.h +6 -0
  254. data/ext/apache2/ApplicationPoolServerExecutable.cpp +6 -0
  255. data/ext/apache2/Bucket.cpp +63 -69
  256. data/ext/apache2/Bucket.h +2 -0
  257. data/ext/apache2/Configuration.cpp +24 -0
  258. data/ext/apache2/Configuration.h +16 -1
  259. data/ext/apache2/Hooks.cpp +5 -3
  260. data/ext/apache2/StandardApplicationPool.h +30 -11
  261. data/lib/passenger/abstract_request_handler.rb +3 -0
  262. data/lib/passenger/abstract_server.rb +3 -3
  263. data/lib/passenger/application.rb +4 -2
  264. data/lib/passenger/dependencies.rb +10 -1
  265. data/lib/passenger/platform_info.rb +40 -1
  266. data/lib/passenger/rack/request_handler.rb +4 -2
  267. data/lib/passenger/railz/application_spawner.rb +7 -1
  268. data/lib/passenger/utils.rb +6 -8
  269. data/lib/rake/gempackagetask.rb +0 -6
  270. data/lib/rake/rdoctask.rb +84 -23
  271. data/test/ApplicationPoolTest.cpp +36 -0
  272. data/test/ruby/rails/minimal_spawner_spec.rb +8 -0
  273. data/test/ruby/utils_spec.rb +33 -0
  274. data/test/stub/rails_apps/foobar/config/environments/production.rb +0 -1
  275. metadata +262 -5
@@ -0,0 +1,400 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Passenger::StandardApplicationPool Class Reference</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ <link href="tabs.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.5 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
+ <li><a href="files.html"><span>Files</span></a></li>
16
+ </ul>
17
+ </div>
18
+ <div class="tabs">
19
+ <ul>
20
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
21
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
22
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
+ </ul>
24
+ </div>
25
+ <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1StandardApplicationPool.html">StandardApplicationPool</a>
26
+ </div>
27
+ </div>
28
+ <div class="contents">
29
+ <h1>Passenger::StandardApplicationPool Class Reference<br>
30
+ <small>
31
+ [<a class="el" href="group__Support.html">Apache-independent support classes and function</a>]</small>
32
+ </h1><!-- doxytag: class="Passenger::StandardApplicationPool" --><!-- doxytag: inherits="Passenger::ApplicationPool" --><code>#include &lt;<a class="el" href="StandardApplicationPool_8h-source.html">StandardApplicationPool.h</a>&gt;</code>
33
+ <p>
34
+ <div class="dynheader">
35
+ Inheritance diagram for Passenger::StandardApplicationPool:</div>
36
+ <div class="dynsection">
37
+ <p><center><img src="classPassenger_1_1StandardApplicationPool__inherit__graph.png" border="0" usemap="#Passenger_1_1StandardApplicationPool__inherit__map" alt="Inheritance graph"></center>
38
+ <map name="Passenger_1_1StandardApplicationPool__inherit__map">
39
+ <area shape="rect" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications." alt="" coords="31,7,212,31"></map>
40
+ <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center></div>
41
+
42
+ <p>
43
+ <a href="classPassenger_1_1StandardApplicationPool-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
44
+ A standard implementation of <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> for single-process environments.
45
+ <p>
46
+ The environment may or may not be multithreaded - <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> is completely thread-safe. Apache with the threading MPM is an example of a multithreaded single-process environment.<p>
47
+ This class is unusable in multi-process environments such as Apache with the prefork MPM. The reasons are as follows:<ul>
48
+ <li><a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> uses threads internally. Because threads disappear after a fork(), a <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> object will become unusable after a fork().</li><li><a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> stores its internal cache on the heap. Different processes cannot share their heaps, so they will not be able to access each others' pool cache.</li><li><a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> has a connection to the spawn server. If there are multiple processes, and they all use the spawn servers's connection at the same time without some sort of synchronization, then bad things will happen.</li></ul>
49
+ <p>
50
+ (Of course, <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> <em>is</em> usable if each process creates its own <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> object, but that would defeat the point of having a shared pool.)<p>
51
+ For multi-process environments, one should use <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> instead. <table border="0" cellpadding="0" cellspacing="0">
52
+ <tr><td></td></tr>
53
+ <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
54
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#f175704fc477f37ba1d387be09fa2e6b">StandardApplicationPool</a> (const string &amp;spawnServerCommand, const string &amp;logFile=&quot;&quot;, const string &amp;rubyCommand=&quot;ruby&quot;, const string &amp;user=&quot;&quot;)</td></tr>
55
+
56
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> object. <a href="#f175704fc477f37ba1d387be09fa2e6b"></a><br></td></tr>
57
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Application::SessionPtr</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#0dcdd88c39d7f1a1d667e24c3cb9b243">get</a> (const string &amp;appRoot, bool lowerPrivilege=true, const string &amp;lowestUser=&quot;nobody&quot;, const string &amp;environment=&quot;production&quot;, const string &amp;spawnMethod=&quot;smart&quot;, const string &amp;appType=&quot;rails&quot;)</td></tr>
58
+
59
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a new session with the application specified by <code>appRoot</code>. <a href="#0dcdd88c39d7f1a1d667e24c3cb9b243"></a><br></td></tr>
60
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#bcf8faeb4f431ae07ea0e20270661d08">clear</a> ()</td></tr>
61
+
62
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear all application instances that are currently in the pool. <a href="#bcf8faeb4f431ae07ea0e20270661d08"></a><br></td></tr>
63
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#04ef8c92da189520ad2022f4f82e9553">setMax</a> (unsigned int max)</td></tr>
64
+
65
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a hard limit on the number of application instances that this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> may spawn. <a href="#04ef8c92da189520ad2022f4f82e9553"></a><br></td></tr>
66
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#7773c4a3dfbd88eac72401d063831788">getActive</a> () const </td></tr>
67
+
68
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of active applications in the pool. <a href="#7773c4a3dfbd88eac72401d063831788"></a><br></td></tr>
69
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#cdbfe2b9ffacdab4438c879c2411bf02">getCount</a> () const </td></tr>
70
+
71
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of active applications in the pool. <a href="#cdbfe2b9ffacdab4438c879c2411bf02"></a><br></td></tr>
72
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#3bafcda8d880f70561ad8a9da16e26ef">setMaxPerApp</a> (unsigned int maxPerApp)</td></tr>
73
+
74
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a hard limit on the number of application instances that a single application may spawn in this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>. <a href="#3bafcda8d880f70561ad8a9da16e26ef"></a><br></td></tr>
75
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#e9c699b56f3a755ab10269c7fe585c2d">setUseGlobalQueue</a> (bool value)</td></tr>
76
+
77
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets whether to use a global queue instead of a per-backend process queue. <a href="#e9c699b56f3a755ab10269c7fe585c2d"></a><br></td></tr>
78
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#6955152d237920988d20297d2fff5660">getSpawnServerPid</a> () const </td></tr>
79
+
80
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the process ID of the spawn server that is used. <a href="#6955152d237920988d20297d2fff5660"></a><br></td></tr>
81
+ <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="22b4149ca8256c3042fc342e681b0383"></a><!-- doxytag: member="Passenger::StandardApplicationPool::toString" ref="22b4149ca8256c3042fc342e681b0383" args="(bool lockMutex=true) const " -->
82
+ virtual string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardApplicationPool.html#22b4149ca8256c3042fc342e681b0383">toString</a> (bool lockMutex=true) const </td></tr>
83
+
84
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a textual description of the internal state of the application pool. <br></td></tr>
85
+ </table>
86
+ <hr><h2>Constructor &amp; Destructor Documentation</h2>
87
+ <a class="anchor" name="f175704fc477f37ba1d387be09fa2e6b"></a><!-- doxytag: member="Passenger::StandardApplicationPool::StandardApplicationPool" ref="f175704fc477f37ba1d387be09fa2e6b" args="(const string &amp;spawnServerCommand, const string &amp;logFile=&quot;&quot;, const string &amp;rubyCommand=&quot;ruby&quot;, const string &amp;user=&quot;&quot;)" -->
88
+ <div class="memitem">
89
+ <div class="memproto">
90
+ <table class="memname">
91
+ <tr>
92
+ <td class="memname">Passenger::StandardApplicationPool::StandardApplicationPool </td>
93
+ <td>(</td>
94
+ <td class="paramtype">const string &amp;&nbsp;</td>
95
+ <td class="paramname"> <em>spawnServerCommand</em>, </td>
96
+ </tr>
97
+ <tr>
98
+ <td class="paramkey"></td>
99
+ <td></td>
100
+ <td class="paramtype">const string &amp;&nbsp;</td>
101
+ <td class="paramname"> <em>logFile</em> = <code>&quot;&quot;</code>, </td>
102
+ </tr>
103
+ <tr>
104
+ <td class="paramkey"></td>
105
+ <td></td>
106
+ <td class="paramtype">const string &amp;&nbsp;</td>
107
+ <td class="paramname"> <em>rubyCommand</em> = <code>&quot;ruby&quot;</code>, </td>
108
+ </tr>
109
+ <tr>
110
+ <td class="paramkey"></td>
111
+ <td></td>
112
+ <td class="paramtype">const string &amp;&nbsp;</td>
113
+ <td class="paramname"> <em>user</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
114
+ </tr>
115
+ <tr>
116
+ <td></td>
117
+ <td>)</td>
118
+ <td></td><td></td><td width="100%"><code> [inline]</code></td>
119
+ </tr>
120
+ </table>
121
+ </div>
122
+ <div class="memdoc">
123
+
124
+ <p>
125
+ Create a new <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> object.
126
+ <p>
127
+ <dl compact><dt><b>Parameters:</b></dt><dd>
128
+ <table border="0" cellspacing="2" cellpadding="0">
129
+ <tr><td valign="top"></td><td valign="top"><em>spawnServerCommand</em>&nbsp;</td><td>The filename of the spawn server to use. </td></tr>
130
+ <tr><td valign="top"></td><td valign="top"><em>logFile</em>&nbsp;</td><td>Specify a log file that the spawn server should use. Messages on its standard output and standard error channels will be written to this log file. If an empty string is specified, no log file will be used, and the spawn server will use the same standard output/error channels as the current process. </td></tr>
131
+ <tr><td valign="top"></td><td valign="top"><em>rubyCommand</em>&nbsp;</td><td>The Ruby interpreter's command. </td></tr>
132
+ <tr><td valign="top"></td><td valign="top"><em>user</em>&nbsp;</td><td>The user that the spawn manager should run as. This parameter only has effect if the current process is running as root. If the empty string is given, or if the <code>user</code> is not a valid username, then the spawn manager will be run as the current user. </td></tr>
133
+ <tr><td valign="top"></td><td valign="top"><em>rubyCommand</em>&nbsp;</td><td>The Ruby interpreter's command. </td></tr>
134
+ </table>
135
+ </dl>
136
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
137
+ <table border="0" cellspacing="2" cellpadding="0">
138
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while trying to setup the spawn server. </td></tr>
139
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a></em>&nbsp;</td><td>The specified log file could not be opened. </td></tr>
140
+ </table>
141
+ </dl>
142
+
143
+ </div>
144
+ </div><p>
145
+ <hr><h2>Member Function Documentation</h2>
146
+ <a class="anchor" name="0dcdd88c39d7f1a1d667e24c3cb9b243"></a><!-- doxytag: member="Passenger::StandardApplicationPool::get" ref="0dcdd88c39d7f1a1d667e24c3cb9b243" args="(const string &amp;appRoot, bool lowerPrivilege=true, const string &amp;lowestUser=&quot;nobody&quot;, const string &amp;environment=&quot;production&quot;, const string &amp;spawnMethod=&quot;smart&quot;, const string &amp;appType=&quot;rails&quot;)" -->
147
+ <div class="memitem">
148
+ <div class="memproto">
149
+ <table class="memname">
150
+ <tr>
151
+ <td class="memname">virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Application::SessionPtr</a> Passenger::StandardApplicationPool::get </td>
152
+ <td>(</td>
153
+ <td class="paramtype">const string &amp;&nbsp;</td>
154
+ <td class="paramname"> <em>appRoot</em>, </td>
155
+ </tr>
156
+ <tr>
157
+ <td class="paramkey"></td>
158
+ <td></td>
159
+ <td class="paramtype">bool&nbsp;</td>
160
+ <td class="paramname"> <em>lowerPrivilege</em> = <code>true</code>, </td>
161
+ </tr>
162
+ <tr>
163
+ <td class="paramkey"></td>
164
+ <td></td>
165
+ <td class="paramtype">const string &amp;&nbsp;</td>
166
+ <td class="paramname"> <em>lowestUser</em> = <code>&quot;nobody&quot;</code>, </td>
167
+ </tr>
168
+ <tr>
169
+ <td class="paramkey"></td>
170
+ <td></td>
171
+ <td class="paramtype">const string &amp;&nbsp;</td>
172
+ <td class="paramname"> <em>environment</em> = <code>&quot;production&quot;</code>, </td>
173
+ </tr>
174
+ <tr>
175
+ <td class="paramkey"></td>
176
+ <td></td>
177
+ <td class="paramtype">const string &amp;&nbsp;</td>
178
+ <td class="paramname"> <em>spawnMethod</em> = <code>&quot;smart&quot;</code>, </td>
179
+ </tr>
180
+ <tr>
181
+ <td class="paramkey"></td>
182
+ <td></td>
183
+ <td class="paramtype">const string &amp;&nbsp;</td>
184
+ <td class="paramname"> <em>appType</em> = <code>&quot;rails&quot;</code></td><td>&nbsp;</td>
185
+ </tr>
186
+ <tr>
187
+ <td></td>
188
+ <td>)</td>
189
+ <td></td><td></td><td width="100%"><code> [inline, virtual]</code></td>
190
+ </tr>
191
+ </table>
192
+ </div>
193
+ <div class="memdoc">
194
+
195
+ <p>
196
+ Open a new session with the application specified by <code>appRoot</code>.
197
+ <p>
198
+ See the class description for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>, as well as <a class="el" href="classPassenger_1_1Application.html#34636f796ff3924ad5ec142aaa581379" title="Connect to this application instance with the purpose of sending a request to the...">Application::connect()</a>, on how to use the returned session object.<p>
199
+ Internally, this method may either spawn a new application instance, or use an existing one.<p>
200
+ If <code>lowerPrivilege</code> is true, then any newly spawned application instances will have lower privileges. See <a class="el" href="classPassenger_1_1SpawnManager.html#fdefbbbad39833912ae7f9f106083099" title="Construct a new SpawnManager.">SpawnManager::SpawnManager()</a>'s description of <code>lowerPrivilege</code> and <code>lowestUser</code> for details.<p>
201
+ <dl compact><dt><b>Parameters:</b></dt><dd>
202
+ <table border="0" cellspacing="2" cellpadding="0">
203
+ <tr><td valign="top"></td><td valign="top"><em>appRoot</em>&nbsp;</td><td>The application root of a RoR application, i.e. the folder that contains 'app/', 'public/', 'config/', etc. This must be a valid directory, but does not have to be an absolute path. </td></tr>
204
+ <tr><td valign="top"></td><td valign="top"><em>lowerPrivilege</em>&nbsp;</td><td>Whether to lower the application's privileges. </td></tr>
205
+ <tr><td valign="top"></td><td valign="top"><em>lowestUser</em>&nbsp;</td><td>The user to fallback to if lowering privilege fails. </td></tr>
206
+ <tr><td valign="top"></td><td valign="top"><em>environment</em>&nbsp;</td><td>The RAILS_ENV/RACK_ENV environment that should be used. May not be empty. </td></tr>
207
+ <tr><td valign="top"></td><td valign="top"><em>spawnMethod</em>&nbsp;</td><td>The spawn method to use. Either "smart" or "conservative". See the Ruby class <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> for details. </td></tr>
208
+ <tr><td valign="top"></td><td valign="top"><em>appType</em>&nbsp;</td><td>The application type. Either "rails" or "rack". </td></tr>
209
+ </table>
210
+ </dl>
211
+ <dl class="return" compact><dt><b>Returns:</b></dt><dd>A session object. </dd></dl>
212
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
213
+ <table border="0" cellspacing="2" cellpadding="0">
214
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SpawnException.html" title="Thrown when SpawnManager or ApplicationPool fails to spawn an application instance...">SpawnException</a></em>&nbsp;</td><td>An attempt was made to spawn a new application instance, but that attempt failed. </td></tr>
215
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1BusyException.html" title="The application pool is too busy and cannot fulfill a get() request.">BusyException</a></em>&nbsp;</td><td>The application pool is too busy right now, and cannot satisfy the request. One should either abort, or try again later. </td></tr>
216
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a></em>&nbsp;</td><td>Something else went wrong. </td></tr>
217
+ <tr><td valign="top"></td><td valign="top"><em>thread_interrupted</em>&nbsp;</td><td></td></tr>
218
+ </table>
219
+ </dl>
220
+ <dl class="note" compact><dt><b>Note:</b></dt><dd>Applications are uniquely identified with the application root string. So although <code>appRoot</code> does not have to be absolute, it should be. If one calls <code>get("/home/foo")</code> and <code>get("/home/../home/foo")</code>, then <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> will think they're 2 different applications, and thus will spawn 2 application instances. </dd></dl>
221
+
222
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#9f486e1c0a4187f7fdb95d1382a85282">Passenger::ApplicationPool</a>.</p>
223
+
224
+ </div>
225
+ </div><p>
226
+ <a class="anchor" name="bcf8faeb4f431ae07ea0e20270661d08"></a><!-- doxytag: member="Passenger::StandardApplicationPool::clear" ref="bcf8faeb4f431ae07ea0e20270661d08" args="()" -->
227
+ <div class="memitem">
228
+ <div class="memproto">
229
+ <table class="memname">
230
+ <tr>
231
+ <td class="memname">virtual void Passenger::StandardApplicationPool::clear </td>
232
+ <td>(</td>
233
+ <td class="paramname"> </td>
234
+ <td>&nbsp;)&nbsp;</td>
235
+ <td width="100%"><code> [inline, virtual]</code></td>
236
+ </tr>
237
+ </table>
238
+ </div>
239
+ <div class="memdoc">
240
+
241
+ <p>
242
+ Clear all application instances that are currently in the pool.
243
+ <p>
244
+ This method is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
245
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">Passenger::ApplicationPool</a>.</p>
246
+
247
+ </div>
248
+ </div><p>
249
+ <a class="anchor" name="04ef8c92da189520ad2022f4f82e9553"></a><!-- doxytag: member="Passenger::StandardApplicationPool::setMax" ref="04ef8c92da189520ad2022f4f82e9553" args="(unsigned int max)" -->
250
+ <div class="memitem">
251
+ <div class="memproto">
252
+ <table class="memname">
253
+ <tr>
254
+ <td class="memname">virtual void Passenger::StandardApplicationPool::setMax </td>
255
+ <td>(</td>
256
+ <td class="paramtype">unsigned int&nbsp;</td>
257
+ <td class="paramname"> <em>max</em> </td>
258
+ <td>&nbsp;)&nbsp;</td>
259
+ <td width="100%"><code> [inline, virtual]</code></td>
260
+ </tr>
261
+ </table>
262
+ </div>
263
+ <div class="memdoc">
264
+
265
+ <p>
266
+ Set a hard limit on the number of application instances that this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> may spawn.
267
+ <p>
268
+ The exact behavior depends on the used algorithm, and is not specified by these API docs.<p>
269
+ It is allowed to set a limit lower than the current number of spawned applications.
270
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">Passenger::ApplicationPool</a>.</p>
271
+
272
+ </div>
273
+ </div><p>
274
+ <a class="anchor" name="7773c4a3dfbd88eac72401d063831788"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getActive" ref="7773c4a3dfbd88eac72401d063831788" args="() const " -->
275
+ <div class="memitem">
276
+ <div class="memproto">
277
+ <table class="memname">
278
+ <tr>
279
+ <td class="memname">virtual unsigned int Passenger::StandardApplicationPool::getActive </td>
280
+ <td>(</td>
281
+ <td class="paramname"> </td>
282
+ <td>&nbsp;)&nbsp;</td>
283
+ <td width="100%"> const<code> [inline, virtual]</code></td>
284
+ </tr>
285
+ </table>
286
+ </div>
287
+ <div class="memdoc">
288
+
289
+ <p>
290
+ Get the number of active applications in the pool.
291
+ <p>
292
+ This method exposes an implementation detail of the underlying pooling algorithm. It is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
293
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#06d1eae044d4d761ce77cf09049df8c8">Passenger::ApplicationPool</a>.</p>
294
+
295
+ </div>
296
+ </div><p>
297
+ <a class="anchor" name="cdbfe2b9ffacdab4438c879c2411bf02"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getCount" ref="cdbfe2b9ffacdab4438c879c2411bf02" args="() const " -->
298
+ <div class="memitem">
299
+ <div class="memproto">
300
+ <table class="memname">
301
+ <tr>
302
+ <td class="memname">virtual unsigned int Passenger::StandardApplicationPool::getCount </td>
303
+ <td>(</td>
304
+ <td class="paramname"> </td>
305
+ <td>&nbsp;)&nbsp;</td>
306
+ <td width="100%"> const<code> [inline, virtual]</code></td>
307
+ </tr>
308
+ </table>
309
+ </div>
310
+ <div class="memdoc">
311
+
312
+ <p>
313
+ Get the number of active applications in the pool.
314
+ <p>
315
+ This method exposes an implementation detail of the underlying pooling algorithm. It is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
316
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#93b0277beb510855f85fee5de5c369bb">Passenger::ApplicationPool</a>.</p>
317
+
318
+ </div>
319
+ </div><p>
320
+ <a class="anchor" name="3bafcda8d880f70561ad8a9da16e26ef"></a><!-- doxytag: member="Passenger::StandardApplicationPool::setMaxPerApp" ref="3bafcda8d880f70561ad8a9da16e26ef" args="(unsigned int maxPerApp)" -->
321
+ <div class="memitem">
322
+ <div class="memproto">
323
+ <table class="memname">
324
+ <tr>
325
+ <td class="memname">virtual void Passenger::StandardApplicationPool::setMaxPerApp </td>
326
+ <td>(</td>
327
+ <td class="paramtype">unsigned int&nbsp;</td>
328
+ <td class="paramname"> <em>max</em> </td>
329
+ <td>&nbsp;)&nbsp;</td>
330
+ <td width="100%"><code> [inline, virtual]</code></td>
331
+ </tr>
332
+ </table>
333
+ </div>
334
+ <div class="memdoc">
335
+
336
+ <p>
337
+ Set a hard limit on the number of application instances that a single application may spawn in this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>.
338
+ <p>
339
+ The exact behavior depends on the used algorithm, and is not specified by these API docs.<p>
340
+ It is allowed to set a limit lower than the current number of spawned applications.
341
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">Passenger::ApplicationPool</a>.</p>
342
+
343
+ </div>
344
+ </div><p>
345
+ <a class="anchor" name="e9c699b56f3a755ab10269c7fe585c2d"></a><!-- doxytag: member="Passenger::StandardApplicationPool::setUseGlobalQueue" ref="e9c699b56f3a755ab10269c7fe585c2d" args="(bool value)" -->
346
+ <div class="memitem">
347
+ <div class="memproto">
348
+ <table class="memname">
349
+ <tr>
350
+ <td class="memname">virtual void Passenger::StandardApplicationPool::setUseGlobalQueue </td>
351
+ <td>(</td>
352
+ <td class="paramtype">bool&nbsp;</td>
353
+ <td class="paramname"> <em>value</em> </td>
354
+ <td>&nbsp;)&nbsp;</td>
355
+ <td width="100%"><code> [inline, virtual]</code></td>
356
+ </tr>
357
+ </table>
358
+ </div>
359
+ <div class="memdoc">
360
+
361
+ <p>
362
+ Sets whether to use a global queue instead of a per-backend process queue.
363
+ <p>
364
+ If enabled, when all backend processes are active, <a class="el" href="classPassenger_1_1StandardApplicationPool.html#0dcdd88c39d7f1a1d667e24c3cb9b243" title="Open a new session with the application specified by appRoot.">get()</a> will wait until there's at least one backend process that's idle, instead of queuing the request into a random process's private queue. This is especially useful if a website has one or more long-running requests.<p>
365
+ Defaults to false.
366
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#b5faf64421313e1387c187f80b95d0e7">Passenger::ApplicationPool</a>.</p>
367
+
368
+ </div>
369
+ </div><p>
370
+ <a class="anchor" name="6955152d237920988d20297d2fff5660"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getSpawnServerPid" ref="6955152d237920988d20297d2fff5660" args="() const " -->
371
+ <div class="memitem">
372
+ <div class="memproto">
373
+ <table class="memname">
374
+ <tr>
375
+ <td class="memname">virtual pid_t Passenger::StandardApplicationPool::getSpawnServerPid </td>
376
+ <td>(</td>
377
+ <td class="paramname"> </td>
378
+ <td>&nbsp;)&nbsp;</td>
379
+ <td width="100%"> const<code> [inline, virtual]</code></td>
380
+ </tr>
381
+ </table>
382
+ </div>
383
+ <div class="memdoc">
384
+
385
+ <p>
386
+ Get the process ID of the spawn server that is used.
387
+ <p>
388
+ This method exposes an implementation detail. It is used by unit tests to verify that the implementation is correct, and thus should not be used directly.
389
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">Passenger::ApplicationPool</a>.</p>
390
+
391
+ </div>
392
+ </div><p>
393
+ <hr>The documentation for this class was generated from the following file:<ul>
394
+ <li><a class="el" href="StandardApplicationPool_8h-source.html">StandardApplicationPool.h</a></ul>
395
+ </div>
396
+ <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 1 14:27:23 2008 for Passenger by&nbsp;
397
+ <a href="http://www.doxygen.org/index.html">
398
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
399
+ </body>
400
+ </html>
@@ -0,0 +1 @@
1
+ <area shape="rect" href="$classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications." alt="" coords="31,7,212,31">
@@ -0,0 +1 @@
1
+ e431fb50318d36446bdc49d6dbeda644
@@ -0,0 +1,37 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Member List</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ <link href="tabs.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.5 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
+ <li><a href="files.html"><span>Files</span></a></li>
16
+ </ul>
17
+ </div>
18
+ <div class="tabs">
19
+ <ul>
20
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
21
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
22
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
+ </ul>
24
+ </div>
25
+ </div>
26
+ <div class="contents">
27
+ <h1>Passenger::SystemException Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a>, including all inherited members.<p><table>
28
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1SystemException.html#84fa2ab4f5b7b96704734fcdfdaa0269">brief</a>() const </td><td><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td><code> [inline]</code></td></tr>
29
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1SystemException.html#ee7a6672bf79b72a4c3ee70c57d6a47c">code</a>() const </td><td><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td><code> [inline]</code></td></tr>
30
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1SystemException.html#0ef41d755fea2c9b1db2252e7c418dc8">sys</a>() const </td><td><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td><code> [inline]</code></td></tr>
31
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1SystemException.html#4ee42f81106408c91726a62287e8471c">SystemException</a>(const string &amp;message, int errorCode)</td><td><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td><code> [inline]</code></td></tr>
32
+ </table></div>
33
+ <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 1 14:27:23 2008 for Passenger by&nbsp;
34
+ <a href="http://www.doxygen.org/index.html">
35
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
36
+ </body>
37
+ </html>
@@ -0,0 +1,154 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Passenger::SystemException Class Reference</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ <link href="tabs.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.5 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
+ <li><a href="files.html"><span>Files</span></a></li>
16
+ </ul>
17
+ </div>
18
+ <div class="tabs">
19
+ <ul>
20
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
21
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
22
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
+ </ul>
24
+ </div>
25
+ <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1SystemException.html">SystemException</a>
26
+ </div>
27
+ </div>
28
+ <div class="contents">
29
+ <h1>Passenger::SystemException Class Reference<br>
30
+ <small>
31
+ [<a class="el" href="group__Exceptions.html">Exceptions</a>]</small>
32
+ </h1><!-- doxytag: class="Passenger::SystemException" --><code>#include &lt;<a class="el" href="Exceptions_8h-source.html">Exceptions.h</a>&gt;</code>
33
+ <p>
34
+ <div class="dynheader">
35
+ Inheritance diagram for Passenger::SystemException:</div>
36
+ <div class="dynsection">
37
+ <p><center><img src="classPassenger_1_1SystemException__inherit__graph.png" border="0" usemap="#Passenger_1_1SystemException__inherit__map" alt="Inheritance graph"></center>
38
+ <map name="Passenger_1_1SystemException__inherit__map">
39
+ <area shape="rect" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system." alt="" coords="5,81,221,105"></map>
40
+ <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center></div>
41
+
42
+ <p>
43
+ <a href="classPassenger_1_1SystemException-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
44
+ Represents an error returned by a system call or a standard library call.
45
+ <p>
46
+ Use the <a class="el" href="classPassenger_1_1SystemException.html#ee7a6672bf79b72a4c3ee70c57d6a47c" title="The value of errno at the time the error occured.">code()</a> method to find out the value of <code>errno</code> at the time the error occured. <table border="0" cellpadding="0" cellspacing="0">
47
+ <tr><td></td></tr>
48
+ <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
49
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SystemException.html#4ee42f81106408c91726a62287e8471c">SystemException</a> (const string &amp;message, int errorCode)</td></tr>
50
+
51
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a>. <a href="#4ee42f81106408c91726a62287e8471c"></a><br></td></tr>
52
+ <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ee7a6672bf79b72a4c3ee70c57d6a47c"></a><!-- doxytag: member="Passenger::SystemException::code" ref="ee7a6672bf79b72a4c3ee70c57d6a47c" args="() const " -->
53
+ int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SystemException.html#ee7a6672bf79b72a4c3ee70c57d6a47c">code</a> () const throw ()</td></tr>
54
+
55
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The value of <code>errno</code> at the time the error occured. <br></td></tr>
56
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SystemException.html#84fa2ab4f5b7b96704734fcdfdaa0269">brief</a> () const throw ()</td></tr>
57
+
58
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a brief version of the exception message. <a href="#84fa2ab4f5b7b96704734fcdfdaa0269"></a><br></td></tr>
59
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SystemException.html#0ef41d755fea2c9b1db2252e7c418dc8">sys</a> () const throw ()</td></tr>
60
+
61
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the system's error message. <a href="#0ef41d755fea2c9b1db2252e7c418dc8"></a><br></td></tr>
62
+ </table>
63
+ <hr><h2>Constructor &amp; Destructor Documentation</h2>
64
+ <a class="anchor" name="4ee42f81106408c91726a62287e8471c"></a><!-- doxytag: member="Passenger::SystemException::SystemException" ref="4ee42f81106408c91726a62287e8471c" args="(const string &amp;message, int errorCode)" -->
65
+ <div class="memitem">
66
+ <div class="memproto">
67
+ <table class="memname">
68
+ <tr>
69
+ <td class="memname">Passenger::SystemException::SystemException </td>
70
+ <td>(</td>
71
+ <td class="paramtype">const string &amp;&nbsp;</td>
72
+ <td class="paramname"> <em>message</em>, </td>
73
+ </tr>
74
+ <tr>
75
+ <td class="paramkey"></td>
76
+ <td></td>
77
+ <td class="paramtype">int&nbsp;</td>
78
+ <td class="paramname"> <em>errorCode</em></td><td>&nbsp;</td>
79
+ </tr>
80
+ <tr>
81
+ <td></td>
82
+ <td>)</td>
83
+ <td></td><td></td><td width="100%"><code> [inline]</code></td>
84
+ </tr>
85
+ </table>
86
+ </div>
87
+ <div class="memdoc">
88
+
89
+ <p>
90
+ Create a new <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a>.
91
+ <p>
92
+ <dl compact><dt><b>Parameters:</b></dt><dd>
93
+ <table border="0" cellspacing="2" cellpadding="0">
94
+ <tr><td valign="top"></td><td valign="top"><em>message</em>&nbsp;</td><td>A message describing the error. </td></tr>
95
+ <tr><td valign="top"></td><td valign="top"><em>errorCode</em>&nbsp;</td><td>The error code, i.e. the value of errno right after the error occured. </td></tr>
96
+ </table>
97
+ </dl>
98
+ <dl class="note" compact><dt><b>Note:</b></dt><dd>A system description of the error will be appended to the given message. For example, if <code>errorCode</code> is <code>EBADF</code>, and <code>message</code> is <em>"Something happened"</em>, then what() will return <em>"Something happened: Bad file descriptor (10)"</em> (if 10 is the number for EBADF). </dd></dl>
99
+ <dl class="post" compact><dt><b>Postcondition:</b></dt><dd><a class="el" href="classPassenger_1_1SystemException.html#ee7a6672bf79b72a4c3ee70c57d6a47c" title="The value of errno at the time the error occured.">code()</a> == errorCode <p>
100
+ <a class="el" href="classPassenger_1_1SystemException.html#84fa2ab4f5b7b96704734fcdfdaa0269" title="Returns a brief version of the exception message.">brief()</a> == message </dd></dl>
101
+
102
+ </div>
103
+ </div><p>
104
+ <hr><h2>Member Function Documentation</h2>
105
+ <a class="anchor" name="84fa2ab4f5b7b96704734fcdfdaa0269"></a><!-- doxytag: member="Passenger::SystemException::brief" ref="84fa2ab4f5b7b96704734fcdfdaa0269" args="() const " -->
106
+ <div class="memitem">
107
+ <div class="memproto">
108
+ <table class="memname">
109
+ <tr>
110
+ <td class="memname">string Passenger::SystemException::brief </td>
111
+ <td>(</td>
112
+ <td class="paramname"> </td>
113
+ <td>&nbsp;)&nbsp;</td>
114
+ <td width="100%"> const throw ()<code> [inline]</code></td>
115
+ </tr>
116
+ </table>
117
+ </div>
118
+ <div class="memdoc">
119
+
120
+ <p>
121
+ Returns a brief version of the exception message.
122
+ <p>
123
+ This message does not include the system error description, and is equivalent to the value of the <code>message</code> parameter as passed to the constructor.
124
+ </div>
125
+ </div><p>
126
+ <a class="anchor" name="0ef41d755fea2c9b1db2252e7c418dc8"></a><!-- doxytag: member="Passenger::SystemException::sys" ref="0ef41d755fea2c9b1db2252e7c418dc8" args="() const " -->
127
+ <div class="memitem">
128
+ <div class="memproto">
129
+ <table class="memname">
130
+ <tr>
131
+ <td class="memname">string Passenger::SystemException::sys </td>
132
+ <td>(</td>
133
+ <td class="paramname"> </td>
134
+ <td>&nbsp;)&nbsp;</td>
135
+ <td width="100%"> const throw ()<code> [inline]</code></td>
136
+ </tr>
137
+ </table>
138
+ </div>
139
+ <div class="memdoc">
140
+
141
+ <p>
142
+ Returns the system's error message.
143
+ <p>
144
+ This message contains both the content of <code>strerror(errno)</code> and the errno number itself.
145
+ </div>
146
+ </div><p>
147
+ <hr>The documentation for this class was generated from the following file:<ul>
148
+ <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
149
+ </div>
150
+ <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 1 14:27:23 2008 for Passenger by&nbsp;
151
+ <a href="http://www.doxygen.org/index.html">
152
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
153
+ </body>
154
+ </html>