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>
@@ -34,8 +34,8 @@
34
34
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">setMax</a>(unsigned int max)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
35
35
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">setMaxPerApp</a>(unsigned int max)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
36
36
  </table></div>
37
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:30 2009 for Passenger by&nbsp;
37
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
38
38
  <a href="http://www.doxygen.org/index.html">
39
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
39
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
40
40
  </body>
41
41
  </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::ApplicationPool 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,18 +28,53 @@
28
28
  <h1>Passenger::ApplicationPool 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::ApplicationPool" --><code>#include &lt;<a class="el" href="ApplicationPool_8h-source.html">ApplicationPool.h</a>&gt;</code>
31
+ </h1><!-- doxytag: class="Passenger::ApplicationPool" -->A persistent pool of Applications.
32
+ <a href="#_details">More...</a>
33
+ <p>
34
+ <code>#include &lt;<a class="el" href="ApplicationPool_8h-source.html">ApplicationPool.h</a>&gt;</code>
32
35
  <p>
33
36
  <div class="dynheader">
34
37
  Inheritance diagram for Passenger::ApplicationPool:</div>
35
38
  <div class="dynsection">
36
39
  <p><center><img src="classPassenger_1_1ApplicationPool__inherit__graph.png" border="0" usemap="#Passenger_1_1ApplicationPool__inherit__map" alt="Inheritance graph"></center>
37
40
  <map name="Passenger_1_1ApplicationPool__inherit__map">
38
- <area shape="rect" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single&#45;process environments." alt="" coords="5,81,237,105"></map>
41
+ <area shape="rect" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single&#45;process environments." alt="" coords="5,80,251,107"></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_1ApplicationPool-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
45
+ <a href="classPassenger_1_1ApplicationPool-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
46
+ <tr><td></td></tr>
47
+ <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
48
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#c811d261345fcf579f049a2377b4b56b">connected</a> () const </td></tr>
49
+
50
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks whether this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object is still connected to the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server. <a href="#c811d261345fcf579f049a2377b4b56b"></a><br></td></tr>
51
+ <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_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67">get</a> (const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &amp;options)=0</td></tr>
52
+
53
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a new session with the application specified by <code><a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3" title="The root directory of the application to spawn.">PoolOptions.appRoot</a></code>. <a href="#0b206eb4eb2869423d75c042a0653c67"></a><br></td></tr>
54
+ <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5cc9a7f0c1e7acb9d5815d4420e25ea"></a><!-- doxytag: member="Passenger::ApplicationPool::get" ref="b5cc9a7f0c1e7acb9d5815d4420e25ea" args="(const string &amp;appRoot)" -->
55
+ 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_1ApplicationPool.html#b5cc9a7f0c1e7acb9d5815d4420e25ea">get</a> (const string &amp;appRoot)</td></tr>
56
+
57
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience shortcut for calling <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">get()</a> with default spawn options. <br></td></tr>
58
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">clear</a> ()=0</td></tr>
59
+
60
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear all application instances that are currently in the pool. <a href="#74db4d7a693d45b16320b2296a0c0997"></a><br></td></tr>
61
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">setMax</a> (unsigned int max)=0</td></tr>
62
+
63
+ <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="#0e0f21972ab130c9c0f90c2212328794"></a><br></td></tr>
64
+ <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_1ApplicationPool.html#06d1eae044d4d761ce77cf09049df8c8">getActive</a> () const =0</td></tr>
65
+
66
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of active applications in the pool. <a href="#06d1eae044d4d761ce77cf09049df8c8"></a><br></td></tr>
67
+ <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_1ApplicationPool.html#93b0277beb510855f85fee5de5c369bb">getCount</a> () const =0</td></tr>
68
+
69
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of active applications in the pool. <a href="#93b0277beb510855f85fee5de5c369bb"></a><br></td></tr>
70
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">setMaxPerApp</a> (unsigned int max)=0</td></tr>
71
+
72
+ <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="#b0437434c79b5444ac0faf768f1410e8"></a><br></td></tr>
73
+ <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_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">getSpawnServerPid</a> () const =0</td></tr>
74
+
75
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the process ID of the spawn server that is used. <a href="#d9149c3b434ef8e18fd15a77af1a6c2c"></a><br></td></tr>
76
+ </table>
77
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
43
78
  A persistent pool of Applications.
44
79
  <p>
45
80
  Spawning application instances, especially Ruby on Rails ones, is a very expensive operation. Despite best efforts to make the operation less expensive (see <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a>), it remains expensive compared to the cost of processing an HTTP request/response. So, in order to solve this, some sort of caching/pooling mechanism will be required. <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> provides this.<p>
@@ -72,39 +107,30 @@ Internally, <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4e
72
107
  <tr><td valign="top"></td><td valign="top"><em>l</em>&nbsp;</td><td>try to keep spawning to a minimum. Furthermore, if an application instance hasn't been used for a while, it will be automatically shutdown in order to save memory. Restart requests are honored: if an application has the file 'restart.txt' in its 'tmp' folder, then <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">get()</a> will shutdown existing instances of that application and spawn a new instance (this is useful when a new version of an application has been deployed). And finally, one can set a hard limit on the maximum number of applications instances that may be spawned (see <a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794" title="Set a hard limit on the number of application instances that this ApplicationPool...">ApplicationPool::setMax()</a>).</td></tr>
73
108
  </table>
74
109
  </dl>
75
- Note that <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> is just an interface (i.e. a pure virtual class). For concrete classes, see <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> and <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a>. The exact pooling algorithm depends on the implementation class. <table border="0" cellpadding="0" cellspacing="0">
76
- <tr><td></td></tr>
77
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
78
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#c811d261345fcf579f049a2377b4b56b">connected</a> () const </td></tr>
79
-
80
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks whether this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object is still connected to the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server. <a href="#c811d261345fcf579f049a2377b4b56b"></a><br></td></tr>
81
- <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_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67">get</a> (const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &amp;options)=0</td></tr>
82
-
83
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a new session with the application specified by <code><a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3" title="The root directory of the application to spawn.">PoolOptions.appRoot</a></code>. <a href="#0b206eb4eb2869423d75c042a0653c67"></a><br></td></tr>
84
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5cc9a7f0c1e7acb9d5815d4420e25ea"></a><!-- doxytag: member="Passenger::ApplicationPool::get" ref="b5cc9a7f0c1e7acb9d5815d4420e25ea" args="(const string &amp;appRoot)" -->
85
- 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_1ApplicationPool.html#b5cc9a7f0c1e7acb9d5815d4420e25ea">get</a> (const string &amp;appRoot)</td></tr>
86
-
87
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience shortcut for calling <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">get()</a> with default spawn options. <br></td></tr>
88
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">clear</a> ()=0</td></tr>
89
-
90
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear all application instances that are currently in the pool. <a href="#74db4d7a693d45b16320b2296a0c0997"></a><br></td></tr>
91
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">setMax</a> (unsigned int max)=0</td></tr>
92
-
93
- <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="#0e0f21972ab130c9c0f90c2212328794"></a><br></td></tr>
94
- <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_1ApplicationPool.html#06d1eae044d4d761ce77cf09049df8c8">getActive</a> () const =0</td></tr>
95
-
96
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of active applications in the pool. <a href="#06d1eae044d4d761ce77cf09049df8c8"></a><br></td></tr>
97
- <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_1ApplicationPool.html#93b0277beb510855f85fee5de5c369bb">getCount</a> () const =0</td></tr>
98
-
99
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of active applications in the pool. <a href="#93b0277beb510855f85fee5de5c369bb"></a><br></td></tr>
100
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">setMaxPerApp</a> (unsigned int max)=0</td></tr>
110
+ Note that <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> is just an interface (i.e. a pure virtual class). For concrete classes, see <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> and <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a>. The exact pooling algorithm depends on the implementation class. <hr><h2>Member Function Documentation</h2>
111
+ <a class="anchor" name="74db4d7a693d45b16320b2296a0c0997"></a><!-- doxytag: member="Passenger::ApplicationPool::clear" ref="74db4d7a693d45b16320b2296a0c0997" args="()=0" -->
112
+ <div class="memitem">
113
+ <div class="memproto">
114
+ <table class="memname">
115
+ <tr>
116
+ <td class="memname">virtual void Passenger::ApplicationPool::clear </td>
117
+ <td>(</td>
118
+ <td class="paramname"> </td>
119
+ <td>&nbsp;)&nbsp;</td>
120
+ <td><code> [pure virtual]</code></td>
121
+ </tr>
122
+ </table>
123
+ </div>
124
+ <div class="memdoc">
101
125
 
102
- <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="#b0437434c79b5444ac0faf768f1410e8"></a><br></td></tr>
103
- <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_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">getSpawnServerPid</a> () const =0</td></tr>
126
+ <p>
127
+ Clear all application instances that are currently in the pool.
128
+ <p>
129
+ This method is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
130
+ <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#bcf8faeb4f431ae07ea0e20270661d08">Passenger::StandardApplicationPool</a>.</p>
104
131
 
105
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the process ID of the spawn server that is used. <a href="#d9149c3b434ef8e18fd15a77af1a6c2c"></a><br></td></tr>
106
- </table>
107
- <hr><h2>Member Function Documentation</h2>
132
+ </div>
133
+ </div><p>
108
134
  <a class="anchor" name="c811d261345fcf579f049a2377b4b56b"></a><!-- doxytag: member="Passenger::ApplicationPool::connected" ref="c811d261345fcf579f049a2377b4b56b" args="() const " -->
109
135
  <div class="memitem">
110
136
  <div class="memproto">
@@ -114,7 +140,7 @@ virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b
114
140
  <td>(</td>
115
141
  <td class="paramname"> </td>
116
142
  <td>&nbsp;)&nbsp;</td>
117
- <td width="100%"> const<code> [inline, virtual]</code></td>
143
+ <td> const<code> [inline, virtual]</code></td>
118
144
  </tr>
119
145
  </table>
120
146
  </div>
@@ -137,7 +163,7 @@ This method is only meaningful for instances of type ApplicationPoolServer::Clie
137
163
  <td class="paramtype">const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &amp;&nbsp;</td>
138
164
  <td class="paramname"> <em>options</em> </td>
139
165
  <td>&nbsp;)&nbsp;</td>
140
- <td width="100%"><code> [pure virtual]</code></td>
166
+ <td><code> [pure virtual]</code></td>
141
167
  </tr>
142
168
  </table>
143
169
  </div>
@@ -168,97 +194,97 @@ Internally, this method may either spawn a new application instance, or use an e
168
194
 
169
195
  </div>
170
196
  </div><p>
171
- <a class="anchor" name="74db4d7a693d45b16320b2296a0c0997"></a><!-- doxytag: member="Passenger::ApplicationPool::clear" ref="74db4d7a693d45b16320b2296a0c0997" args="()=0" -->
197
+ <a class="anchor" name="06d1eae044d4d761ce77cf09049df8c8"></a><!-- doxytag: member="Passenger::ApplicationPool::getActive" ref="06d1eae044d4d761ce77cf09049df8c8" args="() const =0" -->
172
198
  <div class="memitem">
173
199
  <div class="memproto">
174
200
  <table class="memname">
175
201
  <tr>
176
- <td class="memname">virtual void Passenger::ApplicationPool::clear </td>
202
+ <td class="memname">virtual unsigned int Passenger::ApplicationPool::getActive </td>
177
203
  <td>(</td>
178
204
  <td class="paramname"> </td>
179
205
  <td>&nbsp;)&nbsp;</td>
180
- <td width="100%"><code> [pure virtual]</code></td>
206
+ <td> const<code> [pure virtual]</code></td>
181
207
  </tr>
182
208
  </table>
183
209
  </div>
184
210
  <div class="memdoc">
185
211
 
186
212
  <p>
187
- Clear all application instances that are currently in the pool.
213
+ Get the number of active applications in the pool.
188
214
  <p>
189
- This method is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
190
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#bcf8faeb4f431ae07ea0e20270661d08">Passenger::StandardApplicationPool</a>.</p>
215
+ 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.
216
+ <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#7773c4a3dfbd88eac72401d063831788">Passenger::StandardApplicationPool</a>.</p>
191
217
 
192
218
  </div>
193
219
  </div><p>
194
- <a class="anchor" name="0e0f21972ab130c9c0f90c2212328794"></a><!-- doxytag: member="Passenger::ApplicationPool::setMax" ref="0e0f21972ab130c9c0f90c2212328794" args="(unsigned int max)=0" -->
220
+ <a class="anchor" name="93b0277beb510855f85fee5de5c369bb"></a><!-- doxytag: member="Passenger::ApplicationPool::getCount" ref="93b0277beb510855f85fee5de5c369bb" args="() const =0" -->
195
221
  <div class="memitem">
196
222
  <div class="memproto">
197
223
  <table class="memname">
198
224
  <tr>
199
- <td class="memname">virtual void Passenger::ApplicationPool::setMax </td>
225
+ <td class="memname">virtual unsigned int Passenger::ApplicationPool::getCount </td>
200
226
  <td>(</td>
201
- <td class="paramtype">unsigned int&nbsp;</td>
202
- <td class="paramname"> <em>max</em> </td>
227
+ <td class="paramname"> </td>
203
228
  <td>&nbsp;)&nbsp;</td>
204
- <td width="100%"><code> [pure virtual]</code></td>
229
+ <td> const<code> [pure virtual]</code></td>
205
230
  </tr>
206
231
  </table>
207
232
  </div>
208
233
  <div class="memdoc">
209
234
 
210
235
  <p>
211
- 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.
236
+ Get the number of active applications in the pool.
212
237
  <p>
213
- The exact behavior depends on the used algorithm, and is not specified by these API docs.<p>
214
- It is allowed to set a limit lower than the current number of spawned applications.
215
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#04ef8c92da189520ad2022f4f82e9553">Passenger::StandardApplicationPool</a>.</p>
238
+ 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.
239
+ <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#cdbfe2b9ffacdab4438c879c2411bf02">Passenger::StandardApplicationPool</a>.</p>
216
240
 
217
241
  </div>
218
242
  </div><p>
219
- <a class="anchor" name="06d1eae044d4d761ce77cf09049df8c8"></a><!-- doxytag: member="Passenger::ApplicationPool::getActive" ref="06d1eae044d4d761ce77cf09049df8c8" args="() const =0" -->
243
+ <a class="anchor" name="d9149c3b434ef8e18fd15a77af1a6c2c"></a><!-- doxytag: member="Passenger::ApplicationPool::getSpawnServerPid" ref="d9149c3b434ef8e18fd15a77af1a6c2c" args="() const =0" -->
220
244
  <div class="memitem">
221
245
  <div class="memproto">
222
246
  <table class="memname">
223
247
  <tr>
224
- <td class="memname">virtual unsigned int Passenger::ApplicationPool::getActive </td>
248
+ <td class="memname">virtual pid_t Passenger::ApplicationPool::getSpawnServerPid </td>
225
249
  <td>(</td>
226
250
  <td class="paramname"> </td>
227
251
  <td>&nbsp;)&nbsp;</td>
228
- <td width="100%"> const<code> [pure virtual]</code></td>
252
+ <td> const<code> [pure virtual]</code></td>
229
253
  </tr>
230
254
  </table>
231
255
  </div>
232
256
  <div class="memdoc">
233
257
 
234
258
  <p>
235
- Get the number of active applications in the pool.
259
+ Get the process ID of the spawn server that is used.
236
260
  <p>
237
- 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.
238
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#7773c4a3dfbd88eac72401d063831788">Passenger::StandardApplicationPool</a>.</p>
261
+ 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.
262
+ <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#6955152d237920988d20297d2fff5660">Passenger::StandardApplicationPool</a>.</p>
239
263
 
240
264
  </div>
241
265
  </div><p>
242
- <a class="anchor" name="93b0277beb510855f85fee5de5c369bb"></a><!-- doxytag: member="Passenger::ApplicationPool::getCount" ref="93b0277beb510855f85fee5de5c369bb" args="() const =0" -->
266
+ <a class="anchor" name="0e0f21972ab130c9c0f90c2212328794"></a><!-- doxytag: member="Passenger::ApplicationPool::setMax" ref="0e0f21972ab130c9c0f90c2212328794" args="(unsigned int max)=0" -->
243
267
  <div class="memitem">
244
268
  <div class="memproto">
245
269
  <table class="memname">
246
270
  <tr>
247
- <td class="memname">virtual unsigned int Passenger::ApplicationPool::getCount </td>
271
+ <td class="memname">virtual void Passenger::ApplicationPool::setMax </td>
248
272
  <td>(</td>
249
- <td class="paramname"> </td>
273
+ <td class="paramtype">unsigned int&nbsp;</td>
274
+ <td class="paramname"> <em>max</em> </td>
250
275
  <td>&nbsp;)&nbsp;</td>
251
- <td width="100%"> const<code> [pure virtual]</code></td>
276
+ <td><code> [pure virtual]</code></td>
252
277
  </tr>
253
278
  </table>
254
279
  </div>
255
280
  <div class="memdoc">
256
281
 
257
282
  <p>
258
- Get the number of active applications in the pool.
283
+ 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.
259
284
  <p>
260
- 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.
261
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#cdbfe2b9ffacdab4438c879c2411bf02">Passenger::StandardApplicationPool</a>.</p>
285
+ The exact behavior depends on the used algorithm, and is not specified by these API docs.<p>
286
+ It is allowed to set a limit lower than the current number of spawned applications.
287
+ <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#04ef8c92da189520ad2022f4f82e9553">Passenger::StandardApplicationPool</a>.</p>
262
288
 
263
289
  </div>
264
290
  </div><p>
@@ -272,7 +298,7 @@ This method exposes an implementation detail of the underlying pooling algorithm
272
298
  <td class="paramtype">unsigned int&nbsp;</td>
273
299
  <td class="paramname"> <em>max</em> </td>
274
300
  <td>&nbsp;)&nbsp;</td>
275
- <td width="100%"><code> [pure virtual]</code></td>
301
+ <td><code> [pure virtual]</code></td>
276
302
  </tr>
277
303
  </table>
278
304
  </div>
@@ -285,36 +311,13 @@ The exact behavior depends on the used algorithm, and is not specified by these
285
311
  It is allowed to set a limit lower than the current number of spawned applications.
286
312
  <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#3bafcda8d880f70561ad8a9da16e26ef">Passenger::StandardApplicationPool</a>.</p>
287
313
 
288
- </div>
289
- </div><p>
290
- <a class="anchor" name="d9149c3b434ef8e18fd15a77af1a6c2c"></a><!-- doxytag: member="Passenger::ApplicationPool::getSpawnServerPid" ref="d9149c3b434ef8e18fd15a77af1a6c2c" args="() const =0" -->
291
- <div class="memitem">
292
- <div class="memproto">
293
- <table class="memname">
294
- <tr>
295
- <td class="memname">virtual pid_t Passenger::ApplicationPool::getSpawnServerPid </td>
296
- <td>(</td>
297
- <td class="paramname"> </td>
298
- <td>&nbsp;)&nbsp;</td>
299
- <td width="100%"> const<code> [pure virtual]</code></td>
300
- </tr>
301
- </table>
302
- </div>
303
- <div class="memdoc">
304
-
305
- <p>
306
- Get the process ID of the spawn server that is used.
307
- <p>
308
- 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.
309
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#6955152d237920988d20297d2fff5660">Passenger::StandardApplicationPool</a>.</p>
310
-
311
314
  </div>
312
315
  </div><p>
313
316
  <hr>The documentation for this class was generated from the following file:<ul>
314
317
  <li><a class="el" href="ApplicationPool_8h-source.html">ApplicationPool.h</a></ul>
315
318
  </div>
316
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:30 2009 for Passenger by&nbsp;
319
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
317
320
  <a href="http://www.doxygen.org/index.html">
318
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
321
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
319
322
  </body>
320
323
  </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>
@@ -28,8 +28,8 @@
28
28
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468">connect</a>()</td><td><a class="el" href="classPassenger_1_1ApplicationPoolServer.html">Passenger::ApplicationPoolServer</a></td><td><code> [inline]</code></td></tr>
29
29
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce">detach</a>()</td><td><a class="el" href="classPassenger_1_1ApplicationPoolServer.html">Passenger::ApplicationPoolServer</a></td><td><code> [inline]</code></td></tr>
30
30
  </table></div>
31
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:30 2009 for Passenger by&nbsp;
31
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
32
32
  <a href="http://www.doxygen.org/index.html">
33
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
33
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
34
34
  </body>
35
35
  </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::ApplicationPoolServer 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,11 +28,27 @@
28
28
  <h1>Passenger::ApplicationPoolServer 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::ApplicationPoolServer" --><code>#include &lt;<a class="el" href="ApplicationPoolServer_8h-source.html">ApplicationPoolServer.h</a>&gt;</code>
31
+ </h1><!-- doxytag: class="Passenger::ApplicationPoolServer" -->Multi-process usage support for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>.
32
+ <a href="#_details">More...</a>
33
+ <p>
34
+ <code>#include &lt;<a class="el" href="ApplicationPoolServer_8h-source.html">ApplicationPoolServer.h</a>&gt;</code>
32
35
  <p>
33
36
 
34
37
  <p>
35
- <a href="classPassenger_1_1ApplicationPoolServer-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
38
+ <a href="classPassenger_1_1ApplicationPoolServer-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
39
+ <tr><td></td></tr>
40
+ <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
41
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#2203db62a022579d569ceddff8ef6ca9">ApplicationPoolServer</a> (const string &amp;serverExecutable, 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>
42
+
43
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> object. <a href="#2203db62a022579d569ceddff8ef6ca9"></a><br></td></tr>
44
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">ApplicationPoolPtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468">connect</a> ()</td></tr>
45
+
46
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connects to the server and returns a usable <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object. <a href="#18f77057cc28e7924a8f4d1397aa0468"></a><br></td></tr>
47
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce">detach</a> ()</td></tr>
48
+
49
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Detach the server, thereby telling it that we don't want to connect to it anymore. <a href="#b13957e32ae8ca36ba85f2e6ffefd5ce"></a><br></td></tr>
50
+ </table>
51
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
36
52
  Multi-process usage support for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>.
37
53
  <p>
38
54
  <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> implements a client/server architecture for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>. This allows one to use <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> in a multi-process environment (unlike <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a>). The cache/pool data is stored in the server. Different processes can then access the pool through the server.<p>
@@ -73,20 +89,7 @@ Because of these problems, it was decided to split the <a class="el" href="class
73
89
  <h3>Anonymous server socket</h3>
74
90
  <p>
75
91
  Notice that <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> does do not use TCP sockets at all, or even named Unix sockets, despite being a server that can handle multiple clients! So <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> will expose no open ports or temporary Unix socket files. Only child processes are able to use the <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a>.<p>
76
- This is implemented through anonymous Unix sockets (<code>socketpair()</code>) and file descriptor passing. It allows one to emulate <code>accept()</code>. <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> is connected to the server executable through a Unix socket pair. <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468" title="Connects to the server and returns a usable ApplicationPool object.">connect()</a> sends a connect request to the server through that socket. The server will then create a new socket pair, and pass one of them back. This new socket pair represents the newly established connection. <table border="0" cellpadding="0" cellspacing="0">
77
- <tr><td></td></tr>
78
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
79
- <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#2203db62a022579d569ceddff8ef6ca9">ApplicationPoolServer</a> (const string &amp;serverExecutable, 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>
80
-
81
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> object. <a href="#2203db62a022579d569ceddff8ef6ca9"></a><br></td></tr>
82
- <tr><td class="memItemLeft" nowrap align="right" valign="top">ApplicationPoolPtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468">connect</a> ()</td></tr>
83
-
84
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connects to the server and returns a usable <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object. <a href="#18f77057cc28e7924a8f4d1397aa0468"></a><br></td></tr>
85
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce">detach</a> ()</td></tr>
86
-
87
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Detach the server, thereby telling it that we don't want to connect to it anymore. <a href="#b13957e32ae8ca36ba85f2e6ffefd5ce"></a><br></td></tr>
88
- </table>
89
- <hr><h2>Constructor &amp; Destructor Documentation</h2>
92
+ This is implemented through anonymous Unix sockets (<code>socketpair()</code>) and file descriptor passing. It allows one to emulate <code>accept()</code>. <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> is connected to the server executable through a Unix socket pair. <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468" title="Connects to the server and returns a usable ApplicationPool object.">connect()</a> sends a connect request to the server through that socket. The server will then create a new socket pair, and pass one of them back. This new socket pair represents the newly established connection. <hr><h2>Constructor &amp; Destructor Documentation</h2>
90
93
  <a class="anchor" name="2203db62a022579d569ceddff8ef6ca9"></a><!-- doxytag: member="Passenger::ApplicationPoolServer::ApplicationPoolServer" ref="2203db62a022579d569ceddff8ef6ca9" args="(const string &amp;serverExecutable, const string &amp;spawnServerCommand, const string &amp;logFile=&quot;&quot;, const string &amp;rubyCommand=&quot;ruby&quot;, const string &amp;user=&quot;&quot;)" -->
91
94
  <div class="memitem">
92
95
  <div class="memproto">
@@ -124,7 +127,7 @@ This is implemented through anonymous Unix sockets (<code>socketpair()</code>) a
124
127
  <tr>
125
128
  <td></td>
126
129
  <td>)</td>
127
- <td></td><td></td><td width="100%"><code> [inline]</code></td>
130
+ <td></td><td></td><td><code> [inline]</code></td>
128
131
  </tr>
129
132
  </table>
130
133
  </div>
@@ -161,7 +164,7 @@ Create a new <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" t
161
164
  <td>(</td>
162
165
  <td class="paramname"> </td>
163
166
  <td>&nbsp;)&nbsp;</td>
164
- <td width="100%"><code> [inline]</code></td>
167
+ <td><code> [inline]</code></td>
165
168
  </tr>
166
169
  </table>
167
170
  </div>
@@ -200,7 +203,7 @@ Instead, one should call <a class="el" href="classPassenger_1_1ApplicationPoolSe
200
203
  <td>(</td>
201
204
  <td class="paramname"> </td>
202
205
  <td>&nbsp;)&nbsp;</td>
203
- <td width="100%"><code> [inline]</code></td>
206
+ <td><code> [inline]</code></td>
204
207
  </tr>
205
208
  </table>
206
209
  </div>
@@ -217,8 +220,8 @@ This method may only be called once. The <a class="el" href="classPassenger_1_1A
217
220
  <hr>The documentation for this class was generated from the following file:<ul>
218
221
  <li><a class="el" href="ApplicationPoolServer_8h-source.html">ApplicationPoolServer.h</a></ul>
219
222
  </div>
220
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Mar 31 14:00:30 2009 for Passenger by&nbsp;
223
+ <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
221
224
  <a href="http://www.doxygen.org/index.html">
222
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
225
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
223
226
  </body>
224
227
  </html>