passenger 2.1.3 → 2.2.0

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 (398) hide show
  1. data/DEVELOPERS.TXT +2 -0
  2. data/INSTALL +3 -1
  3. data/LICENSE +19 -355
  4. data/NEWS +3 -0
  5. data/README +11 -4
  6. data/Rakefile +435 -236
  7. data/bin/passenger-config +20 -14
  8. data/bin/passenger-install-apache2-module +67 -201
  9. data/bin/passenger-install-nginx-module +477 -0
  10. data/bin/passenger-make-enterprisey +17 -12
  11. data/bin/passenger-memory-stats +33 -23
  12. data/bin/passenger-spawn-server +17 -12
  13. data/bin/passenger-status +18 -13
  14. data/bin/passenger-stress-test +17 -12
  15. data/doc/{Users guide.html → Users guide Apache.html } +79 -61
  16. data/doc/{Users guide.txt → Users guide Apache.txt } +43 -939
  17. data/doc/Users guide Nginx.html +2276 -0
  18. data/doc/Users guide Nginx.txt +776 -0
  19. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +9 -4
  20. data/doc/cxxapi/ApplicationPool_8h-source.html +9 -4
  21. data/doc/cxxapi/Application_8h-source.html +26 -21
  22. data/doc/cxxapi/Bucket_8h-source.html +54 -44
  23. data/doc/cxxapi/CachedFileStat_8h-source.html +9 -4
  24. data/doc/cxxapi/Configuration_8h-source.html +357 -339
  25. data/doc/cxxapi/DirectoryMapper_8h-source.html +294 -280
  26. data/doc/cxxapi/DummySpawnManager_8h-source.html +9 -4
  27. data/doc/cxxapi/Exceptions_8h-source.html +9 -4
  28. data/doc/cxxapi/FileChecker_8h-source.html +9 -4
  29. data/doc/cxxapi/Hooks_8h-source.html +50 -40
  30. data/doc/cxxapi/Logging_8h-source.html +9 -4
  31. data/doc/cxxapi/MessageChannel_8h-source.html +20 -15
  32. data/doc/cxxapi/PoolOptions_8h-source.html +10 -5
  33. data/doc/cxxapi/SpawnManager_8h-source.html +9 -4
  34. data/doc/cxxapi/StandardApplicationPool_8h-source.html +10 -5
  35. data/doc/cxxapi/SystemTime_8h-source.html +9 -4
  36. data/doc/cxxapi/Utils_8h-source.html +242 -214
  37. data/doc/cxxapi/annotated.html +4 -28
  38. data/doc/cxxapi/classClient-members.html +4 -4
  39. data/doc/cxxapi/classClient.html +14 -11
  40. data/doc/cxxapi/classHooks-members.html +4 -5
  41. data/doc/cxxapi/classHooks.html +26 -24
  42. data/doc/cxxapi/classPassenger_1_1Application-members.html +4 -4
  43. data/doc/cxxapi/classPassenger_1_1Application.html +40 -37
  44. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
  45. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +95 -92
  46. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +4 -4
  47. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +26 -23
  48. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map +1 -1
  49. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5 +1 -1
  50. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  51. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +17 -17
  52. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +139 -136
  53. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +4 -4
  54. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +13 -10
  55. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +4 -4
  56. data/doc/cxxapi/classPassenger_1_1BusyException.html +11 -8
  57. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +4 -4
  58. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +11 -8
  59. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +4 -5
  60. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +45 -43
  61. data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +4 -4
  62. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +13 -10
  63. data/doc/cxxapi/classPassenger_1_1FileChecker-members.html +4 -4
  64. data/doc/cxxapi/classPassenger_1_1FileChecker.html +22 -19
  65. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +4 -4
  66. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +12 -9
  67. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +1 -1
  68. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +1 -1
  69. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  70. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +4 -4
  71. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +14 -11
  72. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map +1 -1
  73. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5 +1 -1
  74. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  75. data/doc/cxxapi/classPassenger_1_1IOException-members.html +4 -4
  76. data/doc/cxxapi/classPassenger_1_1IOException.html +12 -9
  77. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +1 -1
  78. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -1
  79. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  80. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +4 -4
  81. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +228 -225
  82. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +4 -4
  83. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +11 -8
  84. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +4 -4
  85. data/doc/cxxapi/classPassenger_1_1SpawnException.html +14 -11
  86. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +4 -4
  87. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +50 -47
  88. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +4 -4
  89. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +73 -70
  90. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map +1 -1
  91. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5 +1 -1
  92. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  93. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +4 -4
  94. data/doc/cxxapi/classPassenger_1_1SystemException.html +17 -14
  95. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +1 -1
  96. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +1 -1
  97. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  98. data/doc/cxxapi/classPassenger_1_1SystemTime-members.html +4 -4
  99. data/doc/cxxapi/classPassenger_1_1SystemTime.html +14 -11
  100. data/doc/cxxapi/classes.html +35 -0
  101. data/doc/cxxapi/definitions_8h-source.html +9 -4
  102. data/doc/cxxapi/doxygen.css +311 -303
  103. data/doc/cxxapi/files.html +9 -18
  104. data/doc/cxxapi/functions.html +5 -224
  105. data/doc/cxxapi/functions_func.html +5 -185
  106. data/doc/cxxapi/functions_type.html +4 -4
  107. data/doc/cxxapi/functions_vars.html +4 -4
  108. data/doc/cxxapi/graph_legend.dot +19 -19
  109. data/doc/cxxapi/graph_legend.html +5 -5
  110. data/doc/cxxapi/graph_legend.png +0 -0
  111. data/doc/cxxapi/group__Configuration.html +11 -13
  112. data/doc/cxxapi/group__Configuration.png +0 -0
  113. data/doc/cxxapi/group__Core.html +10 -12
  114. data/doc/cxxapi/group__Core.png +0 -0
  115. data/doc/cxxapi/group__Exceptions.html +5 -7
  116. data/doc/cxxapi/group__Hooks.html +5 -7
  117. data/doc/cxxapi/group__Hooks.png +0 -0
  118. data/doc/cxxapi/group__Support.html +5 -624
  119. data/doc/cxxapi/hierarchy.html +6 -6
  120. data/doc/cxxapi/inherit__graph__0.map +1 -1
  121. data/doc/cxxapi/inherit__graph__0.md5 +1 -1
  122. data/doc/cxxapi/inherit__graph__0.png +0 -0
  123. data/doc/cxxapi/inherit__graph__1.map +1 -1
  124. data/doc/cxxapi/inherit__graph__1.md5 +1 -1
  125. data/doc/cxxapi/inherit__graph__1.png +0 -0
  126. data/doc/cxxapi/inherit__graph__10.map +1 -1
  127. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  128. data/doc/cxxapi/inherit__graph__10.png +0 -0
  129. data/doc/cxxapi/inherit__graph__11.map +1 -1
  130. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  131. data/doc/cxxapi/inherit__graph__11.png +0 -0
  132. data/doc/cxxapi/inherit__graph__12.map +1 -1
  133. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  134. data/doc/cxxapi/inherit__graph__12.png +0 -0
  135. data/doc/cxxapi/inherit__graph__13.map +1 -2
  136. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  137. data/doc/cxxapi/inherit__graph__13.png +0 -0
  138. data/doc/cxxapi/inherit__graph__14.map +2 -1
  139. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  140. data/doc/cxxapi/inherit__graph__14.png +0 -0
  141. data/doc/cxxapi/inherit__graph__15.map +1 -1
  142. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  143. data/doc/cxxapi/inherit__graph__15.png +0 -0
  144. data/doc/cxxapi/inherit__graph__16.map +1 -1
  145. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  146. data/doc/cxxapi/inherit__graph__16.png +0 -0
  147. data/doc/cxxapi/inherit__graph__17.map +1 -1
  148. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  149. data/doc/cxxapi/inherit__graph__17.png +0 -0
  150. data/doc/cxxapi/inherit__graph__18.map +1 -1
  151. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  152. data/doc/cxxapi/inherit__graph__18.png +0 -0
  153. data/doc/cxxapi/inherit__graph__19.map +1 -1
  154. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  155. data/doc/cxxapi/inherit__graph__19.png +0 -0
  156. data/doc/cxxapi/inherit__graph__2.map +1 -1
  157. data/doc/cxxapi/inherit__graph__2.md5 +1 -1
  158. data/doc/cxxapi/inherit__graph__2.png +0 -0
  159. data/doc/cxxapi/inherit__graph__20.map +2 -2
  160. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  161. data/doc/cxxapi/inherit__graph__20.png +0 -0
  162. data/doc/cxxapi/inherit__graph__21.map +1 -1
  163. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  164. data/doc/cxxapi/inherit__graph__21.png +0 -0
  165. data/doc/cxxapi/inherit__graph__3.map +1 -1
  166. data/doc/cxxapi/inherit__graph__3.md5 +1 -1
  167. data/doc/cxxapi/inherit__graph__3.png +0 -0
  168. data/doc/cxxapi/inherit__graph__4.map +1 -1
  169. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  170. data/doc/cxxapi/inherit__graph__4.png +0 -0
  171. data/doc/cxxapi/inherit__graph__5.map +1 -2
  172. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  173. data/doc/cxxapi/inherit__graph__5.png +0 -0
  174. data/doc/cxxapi/inherit__graph__6.map +2 -1
  175. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  176. data/doc/cxxapi/inherit__graph__6.png +0 -0
  177. data/doc/cxxapi/inherit__graph__7.map +1 -1
  178. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  179. data/doc/cxxapi/inherit__graph__7.png +0 -0
  180. data/doc/cxxapi/inherit__graph__8.map +1 -1
  181. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  182. data/doc/cxxapi/inherit__graph__8.png +0 -0
  183. data/doc/cxxapi/inherit__graph__9.map +1 -1
  184. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  185. data/doc/cxxapi/inherit__graph__9.png +0 -0
  186. data/doc/cxxapi/inherits.html +41 -41
  187. data/doc/cxxapi/main.html +4 -4
  188. data/doc/cxxapi/modules.html +4 -5
  189. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +4 -4
  190. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +13 -10
  191. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +5 -5
  192. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +16 -13
  193. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +4 -4
  194. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +63 -60
  195. data/doc/cxxapi/tabs.css +5 -2
  196. data/doc/cxxapi/tree.html +7 -81
  197. data/doc/rdoc/classes/ConditionVariable.html +59 -59
  198. data/doc/rdoc/classes/Exception.html +11 -11
  199. data/doc/rdoc/classes/GC.html +4 -4
  200. data/doc/rdoc/classes/IO.html +14 -14
  201. data/doc/rdoc/classes/PhusionPassenger.html +75 -20
  202. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +153 -0
  203. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +125 -130
  204. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +236 -236
  205. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +213 -213
  206. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +28 -28
  207. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +91 -75
  208. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +10 -10
  209. data/doc/rdoc/classes/PhusionPassenger/Application.html +64 -64
  210. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +34 -34
  211. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +13 -13
  212. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +30 -30
  213. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +10 -10
  214. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +136 -136
  215. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +24 -24
  216. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +42 -42
  217. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +55 -53
  218. data/doc/rdoc/classes/PhusionPassenger/Railz.html +1 -1
  219. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +25 -30
  220. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +23 -23
  221. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +116 -117
  222. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +22 -22
  223. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +118 -124
  224. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +10 -10
  225. data/doc/rdoc/classes/PhusionPassenger/Utils.html +354 -354
  226. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +9 -9
  227. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +37 -37
  228. data/doc/rdoc/classes/PlatformInfo.html +282 -261
  229. data/doc/rdoc/classes/RakeExtensions.html +7 -7
  230. data/doc/rdoc/classes/Signal.html +26 -26
  231. data/doc/rdoc/created.rid +1 -1
  232. data/doc/rdoc/files/DEVELOPERS_TXT.html +6 -1
  233. data/doc/rdoc/files/README.html +15 -6
  234. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +1 -1
  235. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +129 -0
  236. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +20 -13
  237. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +19 -13
  238. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +19 -13
  239. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +31 -1
  240. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +31 -1
  241. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +19 -13
  242. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +19 -13
  243. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +21 -12
  244. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +19 -13
  245. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +19 -13
  246. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +19 -13
  247. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +19 -13
  248. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +19 -13
  249. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  250. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +19 -13
  251. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +22 -12
  252. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +21 -12
  253. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +19 -13
  254. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +1 -1
  255. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +19 -13
  256. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +21 -12
  257. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +19 -13
  258. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +19 -13
  259. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +27 -21
  260. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +21 -12
  261. data/doc/rdoc/files/misc/rake/extensions_rb.html +21 -12
  262. data/doc/rdoc/fr_class_index.html +1 -0
  263. data/doc/rdoc/fr_file_index.html +2 -0
  264. data/doc/rdoc/fr_method_index.html +116 -112
  265. data/doc/users_guide_snippets/analysis_and_system_maintenance_tools.txt +144 -0
  266. data/doc/users_guide_snippets/appendix_a_about.txt +13 -0
  267. data/doc/users_guide_snippets/appendix_b_terminology.txt +63 -0
  268. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +304 -0
  269. data/doc/users_guide_snippets/global_queueing_explained.txt +78 -0
  270. data/doc/users_guide_snippets/rackup_specifications.txt +75 -0
  271. data/doc/users_guide_snippets/rails_spawn_method.txt +48 -0
  272. data/doc/users_guide_snippets/tips.txt +173 -0
  273. data/ext/apache2/Bucket.cpp +17 -12
  274. data/ext/apache2/Bucket.h +17 -12
  275. data/ext/apache2/Configuration.cpp +17 -12
  276. data/ext/apache2/Configuration.h +27 -14
  277. data/ext/apache2/DirectoryMapper.h +21 -12
  278. data/ext/apache2/Hooks.cpp +67 -21
  279. data/ext/apache2/Hooks.h +17 -12
  280. data/ext/apache2/mod_passenger.c +17 -12
  281. data/ext/{apache2 → common}/Application.h +19 -14
  282. data/ext/{apache2 → common}/ApplicationPool.h +17 -12
  283. data/ext/{apache2 → common}/ApplicationPoolServer.h +18 -72
  284. data/ext/{apache2 → common}/ApplicationPoolServerExecutable.cpp +45 -104
  285. data/ext/common/ApplicationPoolStatusReporter.h +212 -0
  286. data/ext/{apache2 → common}/CachedFileStat.cpp +17 -12
  287. data/ext/{apache2 → common}/CachedFileStat.h +17 -12
  288. data/ext/{apache2 → common}/DummySpawnManager.h +17 -12
  289. data/ext/{apache2 → common}/Exceptions.h +17 -12
  290. data/ext/{apache2 → common}/FileChecker.h +17 -12
  291. data/ext/common/Logging.cpp +65 -0
  292. data/ext/{apache2 → common}/Logging.h +17 -12
  293. data/ext/{apache2 → common}/MessageChannel.h +17 -12
  294. data/ext/{apache2 → common}/PoolOptions.h +17 -12
  295. data/ext/{apache2 → common}/SpawnManager.h +17 -12
  296. data/ext/{apache2 → common}/StandardApplicationPool.h +17 -12
  297. data/ext/common/StaticString.h +147 -0
  298. data/ext/common/SystemTime.cpp +33 -0
  299. data/ext/{apache2 → common}/SystemTime.h +17 -12
  300. data/ext/{apache2 → common}/Utils.cpp +69 -12
  301. data/ext/{apache2 → common}/Utils.h +41 -12
  302. data/ext/nginx/Configuration.c +1091 -0
  303. data/ext/nginx/Configuration.h +71 -0
  304. data/ext/nginx/ContentHandler.c +1154 -0
  305. data/ext/nginx/ContentHandler.h +64 -0
  306. data/ext/nginx/HelperServer.cpp +857 -0
  307. data/ext/nginx/HttpStatusExtractor.h +161 -0
  308. data/ext/nginx/ScgiRequestParser.h +317 -0
  309. data/ext/nginx/StaticContentHandler.c +222 -0
  310. data/ext/nginx/StaticContentHandler.h +37 -0
  311. data/ext/nginx/config +41 -0
  312. data/ext/nginx/ngx_http_passenger_module.c +572 -0
  313. data/ext/nginx/ngx_http_passenger_module.h +72 -0
  314. data/ext/oxt/backtrace.cpp +8 -1
  315. data/ext/oxt/system_calls.cpp +40 -0
  316. data/ext/oxt/system_calls.hpp +14 -7
  317. data/ext/phusion_passenger/extconf.rb +17 -12
  318. data/ext/phusion_passenger/native_support.c +19 -12
  319. data/lib/phusion_passenger/abstract_installer.rb +196 -0
  320. data/lib/phusion_passenger/abstract_request_handler.rb +19 -24
  321. data/lib/phusion_passenger/abstract_server.rb +17 -12
  322. data/lib/phusion_passenger/abstract_server_collection.rb +17 -12
  323. data/lib/phusion_passenger/admin_tools.rb +23 -0
  324. data/lib/phusion_passenger/admin_tools/control_process.rb +39 -13
  325. data/lib/phusion_passenger/application.rb +17 -12
  326. data/lib/phusion_passenger/console_text_template.rb +17 -12
  327. data/lib/phusion_passenger/constants.rb +22 -11
  328. data/lib/phusion_passenger/dependencies.rb +47 -12
  329. data/lib/phusion_passenger/events.rb +17 -12
  330. data/lib/phusion_passenger/exceptions.rb +17 -12
  331. data/lib/phusion_passenger/html_template.rb +17 -12
  332. data/lib/phusion_passenger/message_channel.rb +17 -12
  333. data/lib/phusion_passenger/packaging.rb +39 -0
  334. data/lib/phusion_passenger/platform_info.rb +48 -22
  335. data/lib/phusion_passenger/rack/application_spawner.rb +22 -11
  336. data/lib/phusion_passenger/rack/request_handler.rb +21 -12
  337. data/lib/phusion_passenger/railz/application_spawner.rb +23 -23
  338. data/lib/phusion_passenger/railz/framework_spawner.rb +18 -14
  339. data/lib/phusion_passenger/railz/request_handler.rb +18 -11
  340. data/lib/phusion_passenger/simple_benchmarking.rb +17 -12
  341. data/lib/phusion_passenger/spawn_manager.rb +17 -20
  342. data/lib/phusion_passenger/templates/{apache_must_be_compiled_with_compatible_mpm.txt.erb → apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb} +0 -0
  343. data/lib/phusion_passenger/templates/{apache2_config_snippets.txt.erb → apache2/config_snippets.txt.erb} +0 -0
  344. data/lib/phusion_passenger/templates/{deployment_example.txt.erb → apache2/deployment_example.txt.erb} +0 -0
  345. data/lib/phusion_passenger/templates/{no_write_permission_to_passenger_root.txt.erb → apache2/no_write_permission_to_passenger_root.txt.erb} +0 -0
  346. data/lib/phusion_passenger/templates/{possible_solutions_for_compilation_and_installation_problems.txt.erb → apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb} +0 -0
  347. data/lib/phusion_passenger/templates/{run_installer_as_root.txt.erb → apache2/run_installer_as_root.txt.erb} +0 -0
  348. data/lib/phusion_passenger/templates/{welcome.txt.erb → apache2/welcome.txt.erb} +0 -0
  349. data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
  350. data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
  351. data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
  352. data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
  353. data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
  354. data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
  355. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
  356. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
  357. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  358. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
  359. data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
  360. data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
  361. data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
  362. data/lib/phusion_passenger/utils.rb +20 -15
  363. data/lib/phusion_passenger/wsgi/application_spawner.rb +18 -11
  364. data/lib/phusion_passenger/wsgi/request_handler.py +23 -0
  365. data/misc/copy_boost_headers.rb +23 -0
  366. data/misc/find_owner_pipe_leaks.rb +18 -11
  367. data/misc/rake/cplusplus.rb +18 -11
  368. data/misc/rake/extensions.rb +21 -14
  369. data/misc/render_error_pages.rb +18 -11
  370. data/test/ApplicationPoolServerTest.cpp +1 -3
  371. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +1 -1
  372. data/test/CxxTestMain.cpp +19 -3
  373. data/test/HttpStatusExtractorTest.cpp +181 -0
  374. data/test/ScgiRequestParserTest.cpp +337 -0
  375. data/test/StaticStringTest.cpp +51 -0
  376. data/test/UtilsTest.cpp +32 -0
  377. data/test/config.yml.example +5 -0
  378. data/test/{integration_tests.rb → integration_tests/apache2_tests.rb} +7 -299
  379. data/test/integration_tests/hello_world_rack_spec.rb +36 -0
  380. data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
  381. data/test/integration_tests/mycook_spec.rb +192 -0
  382. data/test/integration_tests/nginx_tests.rb +98 -0
  383. data/test/ruby/rack/application_spawner_spec.rb +40 -0
  384. data/test/stub/nginx/koi-utf +109 -0
  385. data/test/stub/nginx/koi-win +103 -0
  386. data/test/stub/nginx/mime.types +70 -0
  387. data/test/stub/nginx/nginx.conf.erb +57 -0
  388. data/test/stub/nginx/win-utf +126 -0
  389. data/test/stub/rails_apps/mycook/app/controllers/uploads_controller.rb +4 -0
  390. data/test/stub/rails_apps/mycook/config/routes.rb +1 -1
  391. data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
  392. data/test/support/Support.h +40 -0
  393. data/test/support/nginx_controller.rb +98 -0
  394. data/test/support/test_helper.rb +79 -0
  395. metadata +1091 -1028
  396. data/benchmark/DummyRequestHandler.cpp +0 -101
  397. data/ext/apache2/Logging.cpp +0 -60
  398. data/ext/apache2/SystemTime.cpp +0 -28
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Member List</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -25,8 +25,8 @@
25
25
  <div class="contents">
26
26
  <h1>Passenger::RuntimeException Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1RuntimeException.html">Passenger::RuntimeException</a>, including all inherited members.<p><table>
27
27
  </table></div>
28
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
29
29
  <a href="http://www.doxygen.org/index.html">
30
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
30
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
31
31
  </body>
32
32
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Passenger::RuntimeException Class Reference</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -28,19 +28,22 @@
28
28
  <h1>Passenger::RuntimeException Class Reference<br>
29
29
  <small>
30
30
  [<a class="el" href="group__Exceptions.html">Exceptions</a>]</small>
31
- </h1><!-- doxytag: class="Passenger::RuntimeException" --><code>#include &lt;<a class="el" href="Exceptions_8h-source.html">Exceptions.h</a>&gt;</code>
31
+ </h1><!-- doxytag: class="Passenger::RuntimeException" -->A generic runtime exception.
32
+ <a href="#_details">More...</a>
33
+ <p>
34
+ <code>#include &lt;<a class="el" href="Exceptions_8h-source.html">Exceptions.h</a>&gt;</code>
32
35
  <p>
33
36
 
34
37
  <p>
35
- <a href="classPassenger_1_1RuntimeException-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
36
- A generic runtime exception. <table border="0" cellpadding="0" cellspacing="0">
38
+ <a href="classPassenger_1_1RuntimeException-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
37
39
  <tr><td></td></tr>
38
40
  </table>
39
- <hr>The documentation for this class was generated from the following file:<ul>
41
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
42
+ A generic runtime exception. <hr>The documentation for this class was generated from the following file:<ul>
40
43
  <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
41
44
  </div>
42
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
45
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
43
46
  <a href="http://www.doxygen.org/index.html">
44
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
47
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
45
48
  </body>
46
49
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Member List</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -27,8 +27,8 @@
27
27
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1SpawnException.html#6f675a37edd7070875d0744e7dd010a1">getErrorPage</a>() const </td><td><a class="el" href="classPassenger_1_1SpawnException.html">Passenger::SpawnException</a></td><td><code> [inline]</code></td></tr>
28
28
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1SpawnException.html#e65dc272e183fd9e5637a4091cc6bbf4">hasErrorPage</a>() const </td><td><a class="el" href="classPassenger_1_1SpawnException.html">Passenger::SpawnException</a></td><td><code> [inline]</code></td></tr>
29
29
  </table></div>
30
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
30
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
31
31
  <a href="http://www.doxygen.org/index.html">
32
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
32
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
33
33
  </body>
34
34
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Passenger::SpawnException Class Reference</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -25,14 +25,14 @@
25
25
  </div>
26
26
  </div>
27
27
  <div class="contents">
28
- <h1>Passenger::SpawnException Class Reference</h1><!-- doxytag: class="Passenger::SpawnException" --><code>#include &lt;<a class="el" href="Exceptions_8h-source.html">Exceptions.h</a>&gt;</code>
28
+ <h1>Passenger::SpawnException Class Reference</h1><!-- doxytag: class="Passenger::SpawnException" -->Thrown when <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> or <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> fails to spawn an application instance.
29
+ <a href="#_details">More...</a>
29
30
  <p>
30
-
31
+ <code>#include &lt;<a class="el" href="Exceptions_8h-source.html">Exceptions.h</a>&gt;</code>
31
32
  <p>
32
- <a href="classPassenger_1_1SpawnException-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
33
- Thrown when <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> or <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> fails to spawn an application instance.
33
+
34
34
  <p>
35
- The exception may contain an error page, which is a user-friendly HTML page with details about the error. <table border="0" cellpadding="0" cellspacing="0">
35
+ <a href="classPassenger_1_1SpawnException-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
36
36
  <tr><td></td></tr>
37
37
  <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
38
38
  <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e65dc272e183fd9e5637a4091cc6bbf4"></a><!-- doxytag: member="Passenger::SpawnException::hasErrorPage" ref="e65dc272e183fd9e5637a4091cc6bbf4" args="() const " -->
@@ -43,7 +43,10 @@ bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
43
43
 
44
44
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the error page content. <a href="#6f675a37edd7070875d0744e7dd010a1"></a><br></td></tr>
45
45
  </table>
46
- <hr><h2>Member Function Documentation</h2>
46
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
47
+ Thrown when <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> or <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> fails to spawn an application instance.
48
+ <p>
49
+ The exception may contain an error page, which is a user-friendly HTML page with details about the error. <hr><h2>Member Function Documentation</h2>
47
50
  <a class="anchor" name="6f675a37edd7070875d0744e7dd010a1"></a><!-- doxytag: member="Passenger::SpawnException::getErrorPage" ref="6f675a37edd7070875d0744e7dd010a1" args="() const " -->
48
51
  <div class="memitem">
49
52
  <div class="memproto">
@@ -53,7 +56,7 @@ bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="clas
53
56
  <td>(</td>
54
57
  <td class="paramname"> </td>
55
58
  <td>&nbsp;)&nbsp;</td>
56
- <td width="100%"> const<code> [inline]</code></td>
59
+ <td> const<code> [inline]</code></td>
57
60
  </tr>
58
61
  </table>
59
62
  </div>
@@ -69,8 +72,8 @@ Return the error page content.
69
72
  <hr>The documentation for this class was generated from the following file:<ul>
70
73
  <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
71
74
  </div>
72
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
75
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
73
76
  <a href="http://www.doxygen.org/index.html">
74
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
77
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
75
78
  </body>
76
79
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Member List</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -29,8 +29,8 @@
29
29
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64">spawn</a>(const PoolOptions &amp;PoolOptions)</td><td><a class="el" href="classPassenger_1_1SpawnManager.html">Passenger::SpawnManager</a></td><td><code> [inline]</code></td></tr>
30
30
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1SpawnManager.html#fdefbbbad39833912ae7f9f106083099">SpawnManager</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><td><a class="el" href="classPassenger_1_1SpawnManager.html">Passenger::SpawnManager</a></td><td><code> [inline]</code></td></tr>
31
31
  </table></div>
32
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
32
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
33
33
  <a href="http://www.doxygen.org/index.html">
34
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
34
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
35
35
  </body>
36
36
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Passenger::SpawnManager Class Reference</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -28,22 +28,14 @@
28
28
  <h1>Passenger::SpawnManager Class Reference<br>
29
29
  <small>
30
30
  [<a class="el" href="group__Support.html">Apache-independent support classes and function</a>]</small>
31
- </h1><!-- doxytag: class="Passenger::SpawnManager" --><code>#include &lt;<a class="el" href="SpawnManager_8h-source.html">SpawnManager.h</a>&gt;</code>
31
+ </h1><!-- doxytag: class="Passenger::SpawnManager" -->Spawning of Ruby on Rails/Rack application instances.
32
+ <a href="#_details">More...</a>
32
33
  <p>
33
-
34
- <p>
35
- <a href="classPassenger_1_1SpawnManager-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
36
- Spawning of Ruby on Rails/Rack application instances.
34
+ <code>#include &lt;<a class="el" href="SpawnManager_8h-source.html">SpawnManager.h</a>&gt;</code>
37
35
  <p>
38
- This class is responsible for spawning new instances of Ruby on Rails or Rack applications. Use the <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">spawn()</a> method to do so.<p>
39
- <dl class="note" compact><dt><b>Note:</b></dt><dd>This class is fully thread-safe.</dd></dl>
40
- <h2>Implementation details</h2>
36
+
41
37
  <p>
42
- Internally, this class makes use of a spawn server, which is written in Ruby. This server is automatically started when a <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> instance is created, and automatically shutdown when that instance is destroyed. The existance of the spawn server is almost totally transparent to users of this class. Spawn requests are sent to the server, and details about the spawned process is returned.<p>
43
- If the spawn server dies during the middle of an operation, it will be restarted. See <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">spawn()</a> for full details.<p>
44
- The communication channel with the server is anonymous, i.e. no other processes can access the communication channel, so communication is guaranteed to be safe (unless, of course, if the spawn server itself is a trojan).<p>
45
- The server will try to keep the spawning time as small as possible, by keeping corresponding Ruby on Rails frameworks and application code in memory. So the second time an instance of the same application is spawned, the spawn time is significantly lower than the first time. Nevertheless, spawning is a relatively expensive operation (compared to the processing of a typical HTTP request/response), and so should be avoided whenever possible.<p>
46
- See the documentation of the spawn server for full implementation details. <table border="0" cellpadding="0" cellspacing="0">
38
+ <a href="classPassenger_1_1SpawnManager-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
47
39
  <tr><td></td></tr>
48
40
  <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
49
41
  <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SpawnManager.html#fdefbbbad39833912ae7f9f106083099">SpawnManager</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>
@@ -59,7 +51,18 @@ See the documentation of the spawn server for full implementation details. <tabl
59
51
 
60
52
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the Process ID of the spawn server. <a href="#1f77e2e7e6cb464028c13a29f983ad8e"></a><br></td></tr>
61
53
  </table>
62
- <hr><h2>Constructor &amp; Destructor Documentation</h2>
54
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
55
+ Spawning of Ruby on Rails/Rack application instances.
56
+ <p>
57
+ This class is responsible for spawning new instances of Ruby on Rails or Rack applications. Use the <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">spawn()</a> method to do so.<p>
58
+ <dl class="note" compact><dt><b>Note:</b></dt><dd>This class is fully thread-safe.</dd></dl>
59
+ <h2>Implementation details</h2>
60
+ <p>
61
+ Internally, this class makes use of a spawn server, which is written in Ruby. This server is automatically started when a <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> instance is created, and automatically shutdown when that instance is destroyed. The existance of the spawn server is almost totally transparent to users of this class. Spawn requests are sent to the server, and details about the spawned process is returned.<p>
62
+ If the spawn server dies during the middle of an operation, it will be restarted. See <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">spawn()</a> for full details.<p>
63
+ The communication channel with the server is anonymous, i.e. no other processes can access the communication channel, so communication is guaranteed to be safe (unless, of course, if the spawn server itself is a trojan).<p>
64
+ The server will try to keep the spawning time as small as possible, by keeping corresponding Ruby on Rails frameworks and application code in memory. So the second time an instance of the same application is spawned, the spawn time is significantly lower than the first time. Nevertheless, spawning is a relatively expensive operation (compared to the processing of a typical HTTP request/response), and so should be avoided whenever possible.<p>
65
+ See the documentation of the spawn server for full implementation details. <hr><h2>Constructor &amp; Destructor Documentation</h2>
63
66
  <a class="anchor" name="fdefbbbad39833912ae7f9f106083099"></a><!-- doxytag: member="Passenger::SpawnManager::SpawnManager" ref="fdefbbbad39833912ae7f9f106083099" args="(const string &amp;spawnServerCommand, const string &amp;logFile=&quot;&quot;, const string &amp;rubyCommand=&quot;ruby&quot;, const string &amp;user=&quot;&quot;)" -->
64
67
  <div class="memitem">
65
68
  <div class="memproto">
@@ -91,7 +94,7 @@ See the documentation of the spawn server for full implementation details. <tabl
91
94
  <tr>
92
95
  <td></td>
93
96
  <td>)</td>
94
- <td></td><td></td><td width="100%"><code> [inline]</code></td>
97
+ <td></td><td></td><td><code> [inline]</code></td>
95
98
  </tr>
96
99
  </table>
97
100
  </div>
@@ -118,40 +121,25 @@ Construct a new <a class="el" href="classPassenger_1_1SpawnManager.html" title="
118
121
  </div>
119
122
  </div><p>
120
123
  <hr><h2>Member Function Documentation</h2>
121
- <a class="anchor" name="af035d564cc4e6683508939c9d6dbb64"></a><!-- doxytag: member="Passenger::SpawnManager::spawn" ref="af035d564cc4e6683508939c9d6dbb64" args="(const PoolOptions &amp;PoolOptions)" -->
124
+ <a class="anchor" name="1f77e2e7e6cb464028c13a29f983ad8e"></a><!-- doxytag: member="Passenger::SpawnManager::getServerPid" ref="1f77e2e7e6cb464028c13a29f983ad8e" args="() const " -->
122
125
  <div class="memitem">
123
126
  <div class="memproto">
124
127
  <table class="memname">
125
128
  <tr>
126
- <td class="memname">ApplicationPtr Passenger::SpawnManager::spawn </td>
129
+ <td class="memname">pid_t Passenger::SpawnManager::getServerPid </td>
127
130
  <td>(</td>
128
- <td class="paramtype">const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &amp;&nbsp;</td>
129
- <td class="paramname"> <em>PoolOptions</em> </td>
131
+ <td class="paramname"> </td>
130
132
  <td>&nbsp;)&nbsp;</td>
131
- <td width="100%"><code> [inline]</code></td>
133
+ <td> const<code> [inline]</code></td>
132
134
  </tr>
133
135
  </table>
134
136
  </div>
135
137
  <div class="memdoc">
136
138
 
137
139
  <p>
138
- Spawn a new instance of an application.
140
+ Get the Process ID of the spawn server.
139
141
  <p>
140
- Spawning details are to be passed via the <code><a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a></code> parameter.<p>
141
- If the spawn server died during the spawning process, then the server will be automatically restarted, and another spawn attempt will be made. If restarting the server fails, or if the second spawn attempt fails, then an exception will be thrown.<p>
142
- <dl compact><dt><b>Parameters:</b></dt><dd>
143
- <table border="0" cellspacing="2" cellpadding="0">
144
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a></em>&nbsp;</td><td>An object containing the details for this spawn operation, such as which application to spawn. See <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> for details. </td></tr>
145
- </table>
146
- </dl>
147
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>A smart pointer to an <a class="el" href="classPassenger_1_1Application.html" title="Represents a single Ruby on Rails or Rack application instance.">Application</a> object, which represents the application instance that has been spawned. Use this object to communicate with the spawned application. </dd></dl>
148
- <dl compact><dt><b>Exceptions:</b></dt><dd>
149
- <table border="0" cellspacing="2" cellpadding="0">
150
- <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>Something went wrong. </td></tr>
151
- <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
152
- </table>
153
- </dl>
154
-
142
+ This method is used in the unit tests and should not be used directly.
155
143
  </div>
156
144
  </div><p>
157
145
  <a class="anchor" name="2e85c43042b9556ca2fd74b8d28956ce"></a><!-- doxytag: member="Passenger::SpawnManager::reload" ref="2e85c43042b9556ca2fd74b8d28956ce" args="(const string &amp;appRoot)" -->
@@ -164,7 +152,7 @@ If the spawn server died during the spawning process, then the server will be au
164
152
  <td class="paramtype">const string &amp;&nbsp;</td>
165
153
  <td class="paramname"> <em>appRoot</em> </td>
166
154
  <td>&nbsp;)&nbsp;</td>
167
- <td width="100%"><code> [inline]</code></td>
155
+ <td><code> [inline]</code></td>
168
156
  </tr>
169
157
  </table>
170
158
  </div>
@@ -183,32 +171,47 @@ Remove the cached application instances at the given application root.
183
171
 
184
172
  </div>
185
173
  </div><p>
186
- <a class="anchor" name="1f77e2e7e6cb464028c13a29f983ad8e"></a><!-- doxytag: member="Passenger::SpawnManager::getServerPid" ref="1f77e2e7e6cb464028c13a29f983ad8e" args="() const " -->
174
+ <a class="anchor" name="af035d564cc4e6683508939c9d6dbb64"></a><!-- doxytag: member="Passenger::SpawnManager::spawn" ref="af035d564cc4e6683508939c9d6dbb64" args="(const PoolOptions &amp;PoolOptions)" -->
187
175
  <div class="memitem">
188
176
  <div class="memproto">
189
177
  <table class="memname">
190
178
  <tr>
191
- <td class="memname">pid_t Passenger::SpawnManager::getServerPid </td>
179
+ <td class="memname">ApplicationPtr Passenger::SpawnManager::spawn </td>
192
180
  <td>(</td>
193
- <td class="paramname"> </td>
181
+ <td class="paramtype">const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &amp;&nbsp;</td>
182
+ <td class="paramname"> <em>PoolOptions</em> </td>
194
183
  <td>&nbsp;)&nbsp;</td>
195
- <td width="100%"> const<code> [inline]</code></td>
184
+ <td><code> [inline]</code></td>
196
185
  </tr>
197
186
  </table>
198
187
  </div>
199
188
  <div class="memdoc">
200
189
 
201
190
  <p>
202
- Get the Process ID of the spawn server.
191
+ Spawn a new instance of an application.
203
192
  <p>
204
- This method is used in the unit tests and should not be used directly.
193
+ Spawning details are to be passed via the <code><a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a></code> parameter.<p>
194
+ If the spawn server died during the spawning process, then the server will be automatically restarted, and another spawn attempt will be made. If restarting the server fails, or if the second spawn attempt fails, then an exception will be thrown.<p>
195
+ <dl compact><dt><b>Parameters:</b></dt><dd>
196
+ <table border="0" cellspacing="2" cellpadding="0">
197
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a></em>&nbsp;</td><td>An object containing the details for this spawn operation, such as which application to spawn. See <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> for details. </td></tr>
198
+ </table>
199
+ </dl>
200
+ <dl class="return" compact><dt><b>Returns:</b></dt><dd>A smart pointer to an <a class="el" href="classPassenger_1_1Application.html" title="Represents a single Ruby on Rails or Rack application instance.">Application</a> object, which represents the application instance that has been spawned. Use this object to communicate with the spawned application. </dd></dl>
201
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
202
+ <table border="0" cellspacing="2" cellpadding="0">
203
+ <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>Something went wrong. </td></tr>
204
+ <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
205
+ </table>
206
+ </dl>
207
+
205
208
  </div>
206
209
  </div><p>
207
210
  <hr>The documentation for this class was generated from the following file:<ul>
208
211
  <li><a class="el" href="SpawnManager_8h-source.html">SpawnManager.h</a></ul>
209
212
  </div>
210
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
213
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
211
214
  <a href="http://www.doxygen.org/index.html">
212
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
215
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
213
216
  </body>
214
217
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Member List</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -37,8 +37,8 @@
37
37
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1StandardApplicationPool.html#22b4149ca8256c3042fc342e681b0383">toString</a>(bool lockMutex=true) const </td><td><a class="el" href="classPassenger_1_1StandardApplicationPool.html">Passenger::StandardApplicationPool</a></td><td><code> [inline, virtual]</code></td></tr>
38
38
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1StandardApplicationPool.html#d153c41a1d0aca91d17cf36ed6fdda19">toXml</a>() const </td><td><a class="el" href="classPassenger_1_1StandardApplicationPool.html">Passenger::StandardApplicationPool</a></td><td><code> [inline, virtual]</code></td></tr>
39
39
  </table></div>
40
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
40
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
41
41
  <a href="http://www.doxygen.org/index.html">
42
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
42
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
43
43
  </body>
44
44
  </html>
@@ -1,10 +1,10 @@
1
1
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
2
  <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
  <title>Passenger: Passenger::StandardApplicationPool Class Reference</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
4
  <link href="tabs.css" rel="stylesheet" type="text/css">
5
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
6
6
  </head><body>
7
- <!-- Generated by Doxygen 1.5.5 -->
7
+ <!-- Generated by Doxygen 1.5.8 -->
8
8
  <div class="navigation" id="top">
9
9
  <div class="tabs">
10
10
  <ul>
@@ -28,26 +28,21 @@
28
28
  <h1>Passenger::StandardApplicationPool Class Reference<br>
29
29
  <small>
30
30
  [<a class="el" href="group__Support.html">Apache-independent support classes and function</a>]</small>
31
- </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>
31
+ </h1><!-- doxytag: class="Passenger::StandardApplicationPool" --><!-- doxytag: inherits="Passenger::ApplicationPool" -->A standard implementation of <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> for single-process environments.
32
+ <a href="#_details">More...</a>
33
+ <p>
34
+ <code>#include &lt;<a class="el" href="StandardApplicationPool_8h-source.html">StandardApplicationPool.h</a>&gt;</code>
32
35
  <p>
33
36
  <div class="dynheader">
34
37
  Inheritance diagram for Passenger::StandardApplicationPool:</div>
35
38
  <div class="dynsection">
36
39
  <p><center><img src="classPassenger_1_1StandardApplicationPool__inherit__graph.png" border="0" usemap="#Passenger_1_1StandardApplicationPool__inherit__map" alt="Inheritance graph"></center>
37
40
  <map name="Passenger_1_1StandardApplicationPool__inherit__map">
38
- <area shape="rect" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications." alt="" coords="31,7,212,31"></map>
41
+ <area shape="rect" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications." alt="" coords="33,5,223,32"></map>
39
42
  <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center></div>
40
43
 
41
44
  <p>
42
- <a href="classPassenger_1_1StandardApplicationPool-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
43
- A standard implementation of <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> for single-process environments.
44
- <p>
45
- 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>
46
- This class is unusable in multi-process environments such as Apache with the prefork MPM. The reasons are as follows:<ul>
47
- <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>
48
- <p>
49
- (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>
50
- 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">
45
+ <a href="classPassenger_1_1StandardApplicationPool-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
51
46
  <tr><td></td></tr>
52
47
  <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
53
48
  <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>
@@ -87,7 +82,15 @@ virtual string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el"
87
82
 
88
83
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns an XML description of the internal state of the application pool. <br></td></tr>
89
84
  </table>
90
- <hr><h2>Constructor &amp; Destructor Documentation</h2>
85
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
86
+ A standard implementation of <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> for single-process environments.
87
+ <p>
88
+ 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>
89
+ This class is unusable in multi-process environments such as Apache with the prefork MPM. The reasons are as follows:<ul>
90
+ <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>
91
+ <p>
92
+ (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>
93
+ 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. <hr><h2>Constructor &amp; Destructor Documentation</h2>
91
94
  <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;)" -->
92
95
  <div class="memitem">
93
96
  <div class="memproto">
@@ -119,7 +122,7 @@ virtual string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el"
119
122
  <tr>
120
123
  <td></td>
121
124
  <td>)</td>
122
- <td></td><td></td><td width="100%"><code> [inline]</code></td>
125
+ <td></td><td></td><td><code> [inline]</code></td>
123
126
  </tr>
124
127
  </table>
125
128
  </div>
@@ -146,6 +149,29 @@ Create a new <a class="el" href="classPassenger_1_1StandardApplicationPool.html"
146
149
  </div>
147
150
  </div><p>
148
151
  <hr><h2>Member Function Documentation</h2>
152
+ <a class="anchor" name="bcf8faeb4f431ae07ea0e20270661d08"></a><!-- doxytag: member="Passenger::StandardApplicationPool::clear" ref="bcf8faeb4f431ae07ea0e20270661d08" args="()" -->
153
+ <div class="memitem">
154
+ <div class="memproto">
155
+ <table class="memname">
156
+ <tr>
157
+ <td class="memname">virtual void Passenger::StandardApplicationPool::clear </td>
158
+ <td>(</td>
159
+ <td class="paramname"> </td>
160
+ <td>&nbsp;)&nbsp;</td>
161
+ <td><code> [inline, virtual]</code></td>
162
+ </tr>
163
+ </table>
164
+ </div>
165
+ <div class="memdoc">
166
+
167
+ <p>
168
+ Clear all application instances that are currently in the pool.
169
+ <p>
170
+ This method is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
171
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">Passenger::ApplicationPool</a>.</p>
172
+
173
+ </div>
174
+ </div><p>
149
175
  <a class="anchor" name="ffc8f3ef8b1d925d203794d191d7fef4"></a><!-- doxytag: member="Passenger::StandardApplicationPool::get" ref="ffc8f3ef8b1d925d203794d191d7fef4" args="(const PoolOptions &amp;options)" -->
150
176
  <div class="memitem">
151
177
  <div class="memproto">
@@ -156,7 +182,7 @@ Create a new <a class="el" href="classPassenger_1_1StandardApplicationPool.html"
156
182
  <td class="paramtype">const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &amp;&nbsp;</td>
157
183
  <td class="paramname"> <em>options</em> </td>
158
184
  <td>&nbsp;)&nbsp;</td>
159
- <td width="100%"><code> [inline, virtual]</code></td>
185
+ <td><code> [inline, virtual]</code></td>
160
186
  </tr>
161
187
  </table>
162
188
  </div>
@@ -187,97 +213,97 @@ Internally, this method may either spawn a new application instance, or use an e
187
213
 
188
214
  </div>
189
215
  </div><p>
190
- <a class="anchor" name="bcf8faeb4f431ae07ea0e20270661d08"></a><!-- doxytag: member="Passenger::StandardApplicationPool::clear" ref="bcf8faeb4f431ae07ea0e20270661d08" args="()" -->
216
+ <a class="anchor" name="7773c4a3dfbd88eac72401d063831788"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getActive" ref="7773c4a3dfbd88eac72401d063831788" args="() const " -->
191
217
  <div class="memitem">
192
218
  <div class="memproto">
193
219
  <table class="memname">
194
220
  <tr>
195
- <td class="memname">virtual void Passenger::StandardApplicationPool::clear </td>
221
+ <td class="memname">virtual unsigned int Passenger::StandardApplicationPool::getActive </td>
196
222
  <td>(</td>
197
223
  <td class="paramname"> </td>
198
224
  <td>&nbsp;)&nbsp;</td>
199
- <td width="100%"><code> [inline, virtual]</code></td>
225
+ <td> const<code> [inline, virtual]</code></td>
200
226
  </tr>
201
227
  </table>
202
228
  </div>
203
229
  <div class="memdoc">
204
230
 
205
231
  <p>
206
- Clear all application instances that are currently in the pool.
232
+ Get the number of active applications in the pool.
207
233
  <p>
208
- This method is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
209
- <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">Passenger::ApplicationPool</a>.</p>
234
+ 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.
235
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#06d1eae044d4d761ce77cf09049df8c8">Passenger::ApplicationPool</a>.</p>
210
236
 
211
237
  </div>
212
238
  </div><p>
213
- <a class="anchor" name="04ef8c92da189520ad2022f4f82e9553"></a><!-- doxytag: member="Passenger::StandardApplicationPool::setMax" ref="04ef8c92da189520ad2022f4f82e9553" args="(unsigned int max)" -->
239
+ <a class="anchor" name="cdbfe2b9ffacdab4438c879c2411bf02"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getCount" ref="cdbfe2b9ffacdab4438c879c2411bf02" args="() const " -->
214
240
  <div class="memitem">
215
241
  <div class="memproto">
216
242
  <table class="memname">
217
243
  <tr>
218
- <td class="memname">virtual void Passenger::StandardApplicationPool::setMax </td>
244
+ <td class="memname">virtual unsigned int Passenger::StandardApplicationPool::getCount </td>
219
245
  <td>(</td>
220
- <td class="paramtype">unsigned int&nbsp;</td>
221
- <td class="paramname"> <em>max</em> </td>
246
+ <td class="paramname"> </td>
222
247
  <td>&nbsp;)&nbsp;</td>
223
- <td width="100%"><code> [inline, virtual]</code></td>
248
+ <td> const<code> [inline, virtual]</code></td>
224
249
  </tr>
225
250
  </table>
226
251
  </div>
227
252
  <div class="memdoc">
228
253
 
229
254
  <p>
230
- 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.
255
+ Get the number of active applications in the pool.
231
256
  <p>
232
- The exact behavior depends on the used algorithm, and is not specified by these API docs.<p>
233
- It is allowed to set a limit lower than the current number of spawned applications.
234
- <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">Passenger::ApplicationPool</a>.</p>
257
+ 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.
258
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#93b0277beb510855f85fee5de5c369bb">Passenger::ApplicationPool</a>.</p>
235
259
 
236
260
  </div>
237
261
  </div><p>
238
- <a class="anchor" name="7773c4a3dfbd88eac72401d063831788"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getActive" ref="7773c4a3dfbd88eac72401d063831788" args="() const " -->
262
+ <a class="anchor" name="6955152d237920988d20297d2fff5660"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getSpawnServerPid" ref="6955152d237920988d20297d2fff5660" args="() const " -->
239
263
  <div class="memitem">
240
264
  <div class="memproto">
241
265
  <table class="memname">
242
266
  <tr>
243
- <td class="memname">virtual unsigned int Passenger::StandardApplicationPool::getActive </td>
267
+ <td class="memname">virtual pid_t Passenger::StandardApplicationPool::getSpawnServerPid </td>
244
268
  <td>(</td>
245
269
  <td class="paramname"> </td>
246
270
  <td>&nbsp;)&nbsp;</td>
247
- <td width="100%"> const<code> [inline, virtual]</code></td>
271
+ <td> const<code> [inline, virtual]</code></td>
248
272
  </tr>
249
273
  </table>
250
274
  </div>
251
275
  <div class="memdoc">
252
276
 
253
277
  <p>
254
- Get the number of active applications in the pool.
278
+ Get the process ID of the spawn server that is used.
255
279
  <p>
256
- 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.
257
- <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#06d1eae044d4d761ce77cf09049df8c8">Passenger::ApplicationPool</a>.</p>
280
+ 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.
281
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">Passenger::ApplicationPool</a>.</p>
258
282
 
259
283
  </div>
260
284
  </div><p>
261
- <a class="anchor" name="cdbfe2b9ffacdab4438c879c2411bf02"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getCount" ref="cdbfe2b9ffacdab4438c879c2411bf02" args="() const " -->
285
+ <a class="anchor" name="04ef8c92da189520ad2022f4f82e9553"></a><!-- doxytag: member="Passenger::StandardApplicationPool::setMax" ref="04ef8c92da189520ad2022f4f82e9553" args="(unsigned int max)" -->
262
286
  <div class="memitem">
263
287
  <div class="memproto">
264
288
  <table class="memname">
265
289
  <tr>
266
- <td class="memname">virtual unsigned int Passenger::StandardApplicationPool::getCount </td>
290
+ <td class="memname">virtual void Passenger::StandardApplicationPool::setMax </td>
267
291
  <td>(</td>
268
- <td class="paramname"> </td>
292
+ <td class="paramtype">unsigned int&nbsp;</td>
293
+ <td class="paramname"> <em>max</em> </td>
269
294
  <td>&nbsp;)&nbsp;</td>
270
- <td width="100%"> const<code> [inline, virtual]</code></td>
295
+ <td><code> [inline, virtual]</code></td>
271
296
  </tr>
272
297
  </table>
273
298
  </div>
274
299
  <div class="memdoc">
275
300
 
276
301
  <p>
277
- Get the number of active applications in the pool.
302
+ 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.
278
303
  <p>
279
- 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.
280
- <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#93b0277beb510855f85fee5de5c369bb">Passenger::ApplicationPool</a>.</p>
304
+ The exact behavior depends on the used algorithm, and is not specified by these API docs.<p>
305
+ It is allowed to set a limit lower than the current number of spawned applications.
306
+ <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">Passenger::ApplicationPool</a>.</p>
281
307
 
282
308
  </div>
283
309
  </div><p>
@@ -291,7 +317,7 @@ This method exposes an implementation detail of the underlying pooling algorithm
291
317
  <td class="paramtype">unsigned int&nbsp;</td>
292
318
  <td class="paramname"> <em>max</em> </td>
293
319
  <td>&nbsp;)&nbsp;</td>
294
- <td width="100%"><code> [inline, virtual]</code></td>
320
+ <td><code> [inline, virtual]</code></td>
295
321
  </tr>
296
322
  </table>
297
323
  </div>
@@ -304,36 +330,13 @@ The exact behavior depends on the used algorithm, and is not specified by these
304
330
  It is allowed to set a limit lower than the current number of spawned applications.
305
331
  <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">Passenger::ApplicationPool</a>.</p>
306
332
 
307
- </div>
308
- </div><p>
309
- <a class="anchor" name="6955152d237920988d20297d2fff5660"></a><!-- doxytag: member="Passenger::StandardApplicationPool::getSpawnServerPid" ref="6955152d237920988d20297d2fff5660" args="() const " -->
310
- <div class="memitem">
311
- <div class="memproto">
312
- <table class="memname">
313
- <tr>
314
- <td class="memname">virtual pid_t Passenger::StandardApplicationPool::getSpawnServerPid </td>
315
- <td>(</td>
316
- <td class="paramname"> </td>
317
- <td>&nbsp;)&nbsp;</td>
318
- <td width="100%"> const<code> [inline, virtual]</code></td>
319
- </tr>
320
- </table>
321
- </div>
322
- <div class="memdoc">
323
-
324
- <p>
325
- Get the process ID of the spawn server that is used.
326
- <p>
327
- 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.
328
- <p>Implements <a class="el" href="classPassenger_1_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">Passenger::ApplicationPool</a>.</p>
329
-
330
333
  </div>
331
334
  </div><p>
332
335
  <hr>The documentation for this class was generated from the following file:<ul>
333
336
  <li><a class="el" href="StandardApplicationPool_8h-source.html">StandardApplicationPool.h</a></ul>
334
337
  </div>
335
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:31 2009 for Passenger by&nbsp;
338
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
336
339
  <a href="http://www.doxygen.org/index.html">
337
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
340
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
338
341
  </body>
339
342
  </html>