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
@@ -78,7 +78,7 @@ Object
78
78
  <div class="description"><p>
79
79
  This class maintains a collection of <a
80
80
  href="AbstractServer.html">AbstractServer</a> objects. One can add <a
81
- href="AbstractServerCollection.html#M000091">new</a> <a
81
+ href="AbstractServerCollection.html#M000093">new</a> <a
82
82
  href="AbstractServer.html">AbstractServer</a> objects, or look up existing
83
83
  ones via a key. <a
84
84
  href="AbstractServerCollection.html">AbstractServerCollection</a> also
@@ -106,18 +106,18 @@ followed.
106
106
 
107
107
  <div class="sectiontitle">Methods</div>
108
108
  <ul>
109
- <li><a href="#M000098">check_idle_servers!</a></li>
110
- <li><a href="#M000102">cleanup</a></li>
111
- <li><a href="#M000101">clear</a></li>
112
- <li><a href="#M000096">delete</a></li>
113
- <li><a href="#M000099">each</a></li>
114
- <li><a href="#M000100">each_pair</a></li>
115
- <li><a href="#M000095">empty?</a></li>
116
- <li><a href="#M000094">has_key?</a></li>
117
- <li><a href="#M000093">lookup_or_add</a></li>
118
- <li><a href="#M000091">new</a></li>
119
- <li><a href="#M000097">register_activity</a></li>
120
- <li><a href="#M000092">synchronize</a></li>
109
+ <li><a href="#M000100">check_idle_servers!</a></li>
110
+ <li><a href="#M000104">cleanup</a></li>
111
+ <li><a href="#M000103">clear</a></li>
112
+ <li><a href="#M000098">delete</a></li>
113
+ <li><a href="#M000101">each</a></li>
114
+ <li><a href="#M000102">each_pair</a></li>
115
+ <li><a href="#M000097">empty?</a></li>
116
+ <li><a href="#M000096">has_key?</a></li>
117
+ <li><a href="#M000095">lookup_or_add</a></li>
118
+ <li><a href="#M000093">new</a></li>
119
+ <li><a href="#M000099">register_activity</a></li>
120
+ <li><a href="#M000094">synchronize</a></li>
121
121
  </ul>
122
122
 
123
123
  <div class="sectiontitle">Included Modules</div>
@@ -142,43 +142,43 @@ followed.
142
142
  <div class="sectiontitle">Public Class methods</div>
143
143
  <div class="method">
144
144
  <div class="title">
145
- <a name="M000091"></a><b>new</b>()
145
+ <a name="M000093"></a><b>new</b>()
146
146
  </div>
147
147
  <div class="sourcecode">
148
- <p class="source-link">[ <a href="javascript:toggleSource('M000091_source')" id="l_M000091_source">show source</a> ]</p>
149
- <div id="M000091_source" class="dyn-source">
148
+ <p class="source-link">[ <a href="javascript:toggleSource('M000093_source')" id="l_M000093_source">show source</a> ]</p>
149
+ <div id="M000093_source" class="dyn-source">
150
150
  <pre>
151
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 39</span>
152
- 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
153
- 40: <span class="ruby-ivar">@collection</span> = {}
154
- 41: <span class="ruby-ivar">@lock</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
155
- 42: <span class="ruby-ivar">@cleanup_lock</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
156
- 43: <span class="ruby-ivar">@cond</span> = <span class="ruby-constant">ConditionVariable</span>.<span class="ruby-identifier">new</span>
157
- 44: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">false</span>
158
- 45:
159
- 46: <span class="ruby-comment cmt"># The next time the cleaner thread should check for idle servers.</span>
160
- 47: <span class="ruby-comment cmt"># The value may be nil, in which case the value will be calculated</span>
161
- 48: <span class="ruby-comment cmt"># at the end of the #synchronized block.</span>
162
- 49: <span class="ruby-comment cmt">#</span>
163
- 50: <span class="ruby-comment cmt"># Invariant:</span>
164
- 51: <span class="ruby-comment cmt"># if value is not nil:</span>
165
- 52: <span class="ruby-comment cmt"># There exists an s in @collection with s.next_cleaning_time == value.</span>
166
- 53: <span class="ruby-comment cmt"># for all s in @collection:</span>
167
- 54: <span class="ruby-comment cmt"># if eligable_for_cleanup?(s):</span>
168
- 55: <span class="ruby-comment cmt"># s.next_cleaning_time &lt;= value</span>
169
- 56: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
170
- 57: <span class="ruby-ivar">@next_cleaning_time_changed</span> = <span class="ruby-keyword kw">false</span>
171
- 58:
172
- 59: <span class="ruby-ivar">@cleaner_thread</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
173
- 60: <span class="ruby-keyword kw">begin</span>
174
- 61: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
175
- 62: <span class="ruby-identifier">cleaner_thread_main</span>
176
- 63: <span class="ruby-keyword kw">end</span>
177
- 64: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
178
- 65: <span class="ruby-identifier">print_exception</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">e</span>)
179
- 66: <span class="ruby-keyword kw">end</span>
180
- 67: <span class="ruby-keyword kw">end</span>
181
- 68: <span class="ruby-keyword kw">end</span>
151
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 44</span>
152
+ 44: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
153
+ 45: <span class="ruby-ivar">@collection</span> = {}
154
+ 46: <span class="ruby-ivar">@lock</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
155
+ 47: <span class="ruby-ivar">@cleanup_lock</span> = <span class="ruby-constant">Mutex</span>.<span class="ruby-identifier">new</span>
156
+ 48: <span class="ruby-ivar">@cond</span> = <span class="ruby-constant">ConditionVariable</span>.<span class="ruby-identifier">new</span>
157
+ 49: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">false</span>
158
+ 50:
159
+ 51: <span class="ruby-comment cmt"># The next time the cleaner thread should check for idle servers.</span>
160
+ 52: <span class="ruby-comment cmt"># The value may be nil, in which case the value will be calculated</span>
161
+ 53: <span class="ruby-comment cmt"># at the end of the #synchronized block.</span>
162
+ 54: <span class="ruby-comment cmt">#</span>
163
+ 55: <span class="ruby-comment cmt"># Invariant:</span>
164
+ 56: <span class="ruby-comment cmt"># if value is not nil:</span>
165
+ 57: <span class="ruby-comment cmt"># There exists an s in @collection with s.next_cleaning_time == value.</span>
166
+ 58: <span class="ruby-comment cmt"># for all s in @collection:</span>
167
+ 59: <span class="ruby-comment cmt"># if eligable_for_cleanup?(s):</span>
168
+ 60: <span class="ruby-comment cmt"># s.next_cleaning_time &lt;= value</span>
169
+ 61: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
170
+ 62: <span class="ruby-ivar">@next_cleaning_time_changed</span> = <span class="ruby-keyword kw">false</span>
171
+ 63:
172
+ 64: <span class="ruby-ivar">@cleaner_thread</span> = <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
173
+ 65: <span class="ruby-keyword kw">begin</span>
174
+ 66: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
175
+ 67: <span class="ruby-identifier">cleaner_thread_main</span>
176
+ 68: <span class="ruby-keyword kw">end</span>
177
+ 69: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
178
+ 70: <span class="ruby-identifier">print_exception</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">e</span>)
179
+ 71: <span class="ruby-keyword kw">end</span>
180
+ 72: <span class="ruby-keyword kw">end</span>
181
+ 73: <span class="ruby-keyword kw">end</span>
182
182
  </pre>
183
183
  </div>
184
184
  </div>
@@ -186,7 +186,7 @@ followed.
186
186
  <div class="sectiontitle">Public Instance methods</div>
187
187
  <div class="method">
188
188
  <div class="title">
189
- <a name="M000098"></a><b>check_idle_servers!</b>()
189
+ <a name="M000100"></a><b>check_idle_servers!</b>()
190
190
  </div>
191
191
  <div class="description">
192
192
  <p>
@@ -195,27 +195,27 @@ instead of sleeping until the next scheduled cleaning time.
195
195
  </p>
196
196
  <p>
197
197
  Precondition: this method must NOT be called within a <a
198
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
198
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
199
199
  </p>
200
200
  </div>
201
201
  <div class="sourcecode">
202
- <p class="source-link">[ <a href="javascript:toggleSource('M000098_source')" id="l_M000098_source">show source</a> ]</p>
203
- <div id="M000098_source" class="dyn-source">
202
+ <p class="source-link">[ <a href="javascript:toggleSource('M000100_source')" id="l_M000100_source">show source</a> ]</p>
203
+ <div id="M000100_source" class="dyn-source">
204
204
  <pre>
205
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 193</span>
206
- 193: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">check_idle_servers!</span>
207
- 194: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
208
- 195: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
209
- 196: <span class="ruby-ivar">@cond</span>.<span class="ruby-identifier">signal</span>
210
- 197: <span class="ruby-keyword kw">end</span>
211
- 198: <span class="ruby-keyword kw">end</span>
205
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 198</span>
206
+ 198: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">check_idle_servers!</span>
207
+ 199: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
208
+ 200: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
209
+ 201: <span class="ruby-ivar">@cond</span>.<span class="ruby-identifier">signal</span>
210
+ 202: <span class="ruby-keyword kw">end</span>
211
+ 203: <span class="ruby-keyword kw">end</span>
212
212
  </pre>
213
213
  </div>
214
214
  </div>
215
215
  </div>
216
216
  <div class="method">
217
217
  <div class="title">
218
- <a name="M000102"></a><b>cleanup</b>()
218
+ <a name="M000104"></a><b>cleanup</b>()
219
219
  </div>
220
220
  <div class="description">
221
221
  <p>
@@ -233,32 +233,32 @@ will become unusable.
233
233
  </p>
234
234
  <p>
235
235
  Precondition: this method must <b>NOT</b> be called within a <a
236
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
236
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
237
237
  </p>
238
238
  </div>
239
239
  <div class="sourcecode">
240
- <p class="source-link">[ <a href="javascript:toggleSource('M000102_source')" id="l_M000102_source">show source</a> ]</p>
241
- <div id="M000102_source" class="dyn-source">
240
+ <p class="source-link">[ <a href="javascript:toggleSource('M000104_source')" id="l_M000104_source">show source</a> ]</p>
241
+ <div id="M000104_source" class="dyn-source">
242
242
  <pre>
243
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 241</span>
244
- 241: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cleanup</span>
245
- 242: <span class="ruby-ivar">@cleanup_lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
246
- 243: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@done</span>
247
- 244: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
248
- 245: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">true</span>
249
- 246: <span class="ruby-ivar">@cond</span>.<span class="ruby-identifier">signal</span>
250
- 247: <span class="ruby-keyword kw">end</span>
251
- 248: <span class="ruby-ivar">@cleaner_thread</span>.<span class="ruby-identifier">join</span>
252
- 249: <span class="ruby-identifier">clear</span>
253
- 250: <span class="ruby-keyword kw">end</span>
254
- 251: <span class="ruby-keyword kw">end</span>
243
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 246</span>
244
+ 246: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cleanup</span>
245
+ 247: <span class="ruby-ivar">@cleanup_lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
246
+ 248: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@done</span>
247
+ 249: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
248
+ 250: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">true</span>
249
+ 251: <span class="ruby-ivar">@cond</span>.<span class="ruby-identifier">signal</span>
250
+ 252: <span class="ruby-keyword kw">end</span>
251
+ 253: <span class="ruby-ivar">@cleaner_thread</span>.<span class="ruby-identifier">join</span>
252
+ 254: <span class="ruby-identifier">clear</span>
253
+ 255: <span class="ruby-keyword kw">end</span>
254
+ 256: <span class="ruby-keyword kw">end</span>
255
255
  </pre>
256
256
  </div>
257
257
  </div>
258
258
  </div>
259
259
  <div class="method">
260
260
  <div class="title">
261
- <a name="M000101"></a><b>clear</b>()
261
+ <a name="M000103"></a><b>clear</b>()
262
262
  </div>
263
263
  <div class="description">
264
264
  <p>
@@ -268,30 +268,30 @@ necessary.
268
268
  </p>
269
269
  <p>
270
270
  Precondition: this method must be called within a <a
271
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
271
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
272
272
  </p>
273
273
  </div>
274
274
  <div class="sourcecode">
275
- <p class="source-link">[ <a href="javascript:toggleSource('M000101_source')" id="l_M000101_source">show source</a> ]</p>
276
- <div id="M000101_source" class="dyn-source">
275
+ <p class="source-link">[ <a href="javascript:toggleSource('M000103_source')" id="l_M000103_source">show source</a> ]</p>
276
+ <div id="M000103_source" class="dyn-source">
277
277
  <pre>
278
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 223</span>
279
- 223: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear</span>
280
- 224: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
281
- 225: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">started?</span>
282
- 226: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span>
283
- 227: <span class="ruby-keyword kw">end</span>
284
- 228: <span class="ruby-keyword kw">end</span>
285
- 229: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">clear</span>
286
- 230: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-keyword kw">nil</span>
287
- 231: <span class="ruby-keyword kw">end</span>
278
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 228</span>
279
+ 228: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear</span>
280
+ 229: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
281
+ 230: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">started?</span>
282
+ 231: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span>
283
+ 232: <span class="ruby-keyword kw">end</span>
284
+ 233: <span class="ruby-keyword kw">end</span>
285
+ 234: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">clear</span>
286
+ 235: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-keyword kw">nil</span>
287
+ 236: <span class="ruby-keyword kw">end</span>
288
288
  </pre>
289
289
  </div>
290
290
  </div>
291
291
  </div>
292
292
  <div class="method">
293
293
  <div class="title">
294
- <a name="M000096"></a><b>delete</b>(key)
294
+ <a name="M000098"></a><b>delete</b>(key)
295
295
  </div>
296
296
  <div class="description">
297
297
  <p>
@@ -306,34 +306,34 @@ will be stopped before deletion.
306
306
  </p>
307
307
  <p>
308
308
  Precondition: this method must be called within a <a
309
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
309
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
310
310
  </p>
311
311
  </div>
312
312
  <div class="sourcecode">
313
- <p class="source-link">[ <a href="javascript:toggleSource('M000096_source')" id="l_M000096_source">show source</a> ]</p>
314
- <div id="M000096_source" class="dyn-source">
313
+ <p class="source-link">[ <a href="javascript:toggleSource('M000098_source')" id="l_M000098_source">show source</a> ]</p>
314
+ <div id="M000098_source" class="dyn-source">
315
315
  <pre>
316
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 157</span>
317
- 157: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>)
318
- 158: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;cleanup() has already been called.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@done</span>
319
- 159: <span class="ruby-identifier">server</span> = <span class="ruby-ivar">@collection</span>[<span class="ruby-identifier">key</span>]
320
- 160: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>
321
- 161: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">started?</span>
322
- 162: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span>
323
- 163: <span class="ruby-keyword kw">end</span>
324
- 164: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>)
325
- 165: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@next_cleaning_time</span>
326
- 166: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-keyword kw">nil</span>
327
- 167: <span class="ruby-keyword kw">end</span>
328
- 168: <span class="ruby-keyword kw">end</span>
329
- 169: <span class="ruby-keyword kw">end</span>
316
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 162</span>
317
+ 162: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>)
318
+ 163: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;cleanup() has already been called.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@done</span>
319
+ 164: <span class="ruby-identifier">server</span> = <span class="ruby-ivar">@collection</span>[<span class="ruby-identifier">key</span>]
320
+ 165: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>
321
+ 166: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">started?</span>
322
+ 167: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">stop</span>
323
+ 168: <span class="ruby-keyword kw">end</span>
324
+ 169: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>)
325
+ 170: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@next_cleaning_time</span>
326
+ 171: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-keyword kw">nil</span>
327
+ 172: <span class="ruby-keyword kw">end</span>
328
+ 173: <span class="ruby-keyword kw">end</span>
329
+ 174: <span class="ruby-keyword kw">end</span>
330
330
  </pre>
331
331
  </div>
332
332
  </div>
333
333
  </div>
334
334
  <div class="method">
335
335
  <div class="title">
336
- <a name="M000099"></a><b>each</b>() {|server| ...}
336
+ <a name="M000101"></a><b>each</b>() {|server| ...}
337
337
  </div>
338
338
  <div class="description">
339
339
  <p>
@@ -341,26 +341,26 @@ Iterate over all <a href="AbstractServer.html">AbstractServer</a> objects.
341
341
  </p>
342
342
  <p>
343
343
  Precondition: this method must be called within a <a
344
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
344
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
345
345
  </p>
346
346
  </div>
347
347
  <div class="sourcecode">
348
- <p class="source-link">[ <a href="javascript:toggleSource('M000099_source')" id="l_M000099_source">show source</a> ]</p>
349
- <div id="M000099_source" class="dyn-source">
348
+ <p class="source-link">[ <a href="javascript:toggleSource('M000101_source')" id="l_M000101_source">show source</a> ]</p>
349
+ <div id="M000101_source" class="dyn-source">
350
350
  <pre>
351
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 203</span>
352
- 203: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>
353
- 204: <span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
354
- 205: <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">server</span>
355
- 206: <span class="ruby-keyword kw">end</span>
356
- 207: <span class="ruby-keyword kw">end</span>
351
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 208</span>
352
+ 208: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>
353
+ 209: <span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
354
+ 210: <span class="ruby-keyword kw">yield</span> <span class="ruby-identifier">server</span>
355
+ 211: <span class="ruby-keyword kw">end</span>
356
+ 212: <span class="ruby-keyword kw">end</span>
357
357
  </pre>
358
358
  </div>
359
359
  </div>
360
360
  </div>
361
361
  <div class="method">
362
362
  <div class="title">
363
- <a name="M000100"></a><b>each_pair</b>() {|key, server| ...}
363
+ <a name="M000102"></a><b>each_pair</b>() {|key, server| ...}
364
364
  </div>
365
365
  <div class="description">
366
366
  <p>
@@ -369,27 +369,27 @@ href="AbstractServer.html">AbstractServer</a> objects.
369
369
  </p>
370
370
  <p>
371
371
  Precondition: this method must be called within a <a
372
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
372
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
373
373
  </p>
374
374
  </div>
375
375
  <div class="sourcecode">
376
- <p class="source-link">[ <a href="javascript:toggleSource('M000100_source')" id="l_M000100_source">show source</a> ]</p>
377
- <div id="M000100_source" class="dyn-source">
376
+ <p class="source-link">[ <a href="javascript:toggleSource('M000102_source')" id="l_M000102_source">show source</a> ]</p>
377
+ <div id="M000102_source" class="dyn-source">
378
378
  <pre>
379
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 212</span>
380
- 212: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each_pair</span>
381
- 213: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;cleanup() has already been called.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@done</span>
382
- 214: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
383
- 215: <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">server</span>)
384
- 216: <span class="ruby-keyword kw">end</span>
385
- 217: <span class="ruby-keyword kw">end</span>
379
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 217</span>
380
+ 217: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each_pair</span>
381
+ 218: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;cleanup() has already been called.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@done</span>
382
+ 219: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
383
+ 220: <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">server</span>)
384
+ 221: <span class="ruby-keyword kw">end</span>
385
+ 222: <span class="ruby-keyword kw">end</span>
386
386
  </pre>
387
387
  </div>
388
388
  </div>
389
389
  </div>
390
390
  <div class="method">
391
391
  <div class="title">
392
- <a name="M000095"></a><b>empty?</b>()
392
+ <a name="M000097"></a><b>empty?</b>()
393
393
  </div>
394
394
  <div class="description">
395
395
  <p>
@@ -397,24 +397,24 @@ Checks whether the collection is empty.
397
397
  </p>
398
398
  <p>
399
399
  Precondition: this method must be called within a <a
400
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
400
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
401
401
  </p>
402
402
  </div>
403
403
  <div class="sourcecode">
404
- <p class="source-link">[ <a href="javascript:toggleSource('M000095_source')" id="l_M000095_source">show source</a> ]</p>
405
- <div id="M000095_source" class="dyn-source">
404
+ <p class="source-link">[ <a href="javascript:toggleSource('M000097_source')" id="l_M000097_source">show source</a> ]</p>
405
+ <div id="M000097_source" class="dyn-source">
406
406
  <pre>
407
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 147</span>
408
- 147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">empty?</span>
409
- 148: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">empty?</span>
410
- 149: <span class="ruby-keyword kw">end</span>
407
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 152</span>
408
+ 152: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">empty?</span>
409
+ 153: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">empty?</span>
410
+ 154: <span class="ruby-keyword kw">end</span>
411
411
  </pre>
412
412
  </div>
413
413
  </div>
414
414
  </div>
415
415
  <div class="method">
416
416
  <div class="title">
417
- <a name="M000094"></a><b>has_key?</b>(key)
417
+ <a name="M000096"></a><b>has_key?</b>(key)
418
418
  </div>
419
419
  <div class="description">
420
420
  <p>
@@ -424,24 +424,24 @@ given key.
424
424
  </p>
425
425
  <p>
426
426
  Precondition: this method must be called within a <a
427
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
427
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
428
428
  </p>
429
429
  </div>
430
430
  <div class="sourcecode">
431
- <p class="source-link">[ <a href="javascript:toggleSource('M000094_source')" id="l_M000094_source">show source</a> ]</p>
432
- <div id="M000094_source" class="dyn-source">
431
+ <p class="source-link">[ <a href="javascript:toggleSource('M000096_source')" id="l_M000096_source">show source</a> ]</p>
432
+ <div id="M000096_source" class="dyn-source">
433
433
  <pre>
434
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 140</span>
435
- 140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">key</span>)
436
- 141: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">key</span>)
437
- 142: <span class="ruby-keyword kw">end</span>
434
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 145</span>
435
+ 145: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">key</span>)
436
+ 146: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">key</span>)
437
+ 147: <span class="ruby-keyword kw">end</span>
438
438
  </pre>
439
439
  </div>
440
440
  </div>
441
441
  </div>
442
442
  <div class="method">
443
443
  <div class="title">
444
- <a name="M000093"></a><b>lookup_or_add</b>(key) {|| ...}
444
+ <a name="M000095"></a><b>lookup_or_add</b>(key) {|| ...}
445
445
  </div>
446
446
  <div class="description">
447
447
  <p>
@@ -469,43 +469,43 @@ and the exception will be propagated.
469
469
  </p>
470
470
  <p>
471
471
  Precondition: this method must be called within a <a
472
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
472
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
473
473
  </p>
474
474
  </div>
475
475
  <div class="sourcecode">
476
- <p class="source-link">[ <a href="javascript:toggleSource('M000093_source')" id="l_M000093_source">show source</a> ]</p>
477
- <div id="M000093_source" class="dyn-source">
476
+ <p class="source-link">[ <a href="javascript:toggleSource('M000095_source')" id="l_M000095_source">show source</a> ]</p>
477
+ <div id="M000095_source" class="dyn-source">
478
478
  <pre>
479
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 114</span>
480
- 114: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">lookup_or_add</span>(<span class="ruby-identifier">key</span>)
481
- 115: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;cleanup() has already been called.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@done</span>
482
- 116: <span class="ruby-identifier">server</span> = <span class="ruby-ivar">@collection</span>[<span class="ruby-identifier">key</span>]
483
- 117: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>
484
- 118: <span class="ruby-identifier">register_activity</span>(<span class="ruby-identifier">server</span>)
485
- 119: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">server</span>
486
- 120: <span class="ruby-keyword kw">else</span>
487
- 121: <span class="ruby-identifier">server</span> = <span class="ruby-keyword kw">yield</span>
488
- 122: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">server</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:start</span>)
489
- 123: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-value str">&quot;The block didn't return a valid AbstractServer object.&quot;</span>
490
- 124: <span class="ruby-keyword kw">end</span>
491
- 125: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">eligable_for_cleanup?</span>(<span class="ruby-identifier">server</span>)
492
- 126: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">max_idle_time</span>
493
- 127: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@next_cleaning_time</span>
494
- 128: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span>
495
- 129: <span class="ruby-ivar">@next_cleaning_time_changed</span> = <span class="ruby-keyword kw">true</span>
496
- 130: <span class="ruby-keyword kw">end</span>
497
- 131: <span class="ruby-keyword kw">end</span>
498
- 132: <span class="ruby-ivar">@collection</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">server</span>
499
- 133: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">server</span>
500
- 134: <span class="ruby-keyword kw">end</span>
501
- 135: <span class="ruby-keyword kw">end</span>
479
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 119</span>
480
+ 119: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">lookup_or_add</span>(<span class="ruby-identifier">key</span>)
481
+ 120: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;cleanup() has already been called.&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@done</span>
482
+ 121: <span class="ruby-identifier">server</span> = <span class="ruby-ivar">@collection</span>[<span class="ruby-identifier">key</span>]
483
+ 122: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>
484
+ 123: <span class="ruby-identifier">register_activity</span>(<span class="ruby-identifier">server</span>)
485
+ 124: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">server</span>
486
+ 125: <span class="ruby-keyword kw">else</span>
487
+ 126: <span class="ruby-identifier">server</span> = <span class="ruby-keyword kw">yield</span>
488
+ 127: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">server</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:start</span>)
489
+ 128: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-value str">&quot;The block didn't return a valid AbstractServer object.&quot;</span>
490
+ 129: <span class="ruby-keyword kw">end</span>
491
+ 130: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">eligable_for_cleanup?</span>(<span class="ruby-identifier">server</span>)
492
+ 131: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">max_idle_time</span>
493
+ 132: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@next_cleaning_time</span>
494
+ 133: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span>
495
+ 134: <span class="ruby-ivar">@next_cleaning_time_changed</span> = <span class="ruby-keyword kw">true</span>
496
+ 135: <span class="ruby-keyword kw">end</span>
497
+ 136: <span class="ruby-keyword kw">end</span>
498
+ 137: <span class="ruby-ivar">@collection</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">server</span>
499
+ 138: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">server</span>
500
+ 139: <span class="ruby-keyword kw">end</span>
501
+ 140: <span class="ruby-keyword kw">end</span>
502
502
  </pre>
503
503
  </div>
504
504
  </div>
505
505
  </div>
506
506
  <div class="method">
507
507
  <div class="title">
508
- <a name="M000097"></a><b>register_activity</b>(server)
508
+ <a name="M000099"></a><b>register_activity</b>(server)
509
509
  </div>
510
510
  <div class="description">
511
511
  <p>
@@ -516,38 +516,38 @@ href="AbstractServerCollection.html">AbstractServerCollection</a> will
516
516
  update the idle information associated with <tt>server</tt> accordingly.
517
517
  </p>
518
518
  <p>
519
- <a href="AbstractServerCollection.html#M000093">lookup_or_add</a> already
519
+ <a href="AbstractServerCollection.html#M000095">lookup_or_add</a> already
520
520
  automatically updates idle information, so you only need to call this
521
521
  method if the time at which the server has performed an activity is not
522
522
  close to the time at which <a
523
- href="AbstractServerCollection.html#M000093">lookup_or_add</a> had been
523
+ href="AbstractServerCollection.html#M000095">lookup_or_add</a> had been
524
524
  called.
525
525
  </p>
526
526
  <p>
527
527
  Precondition: this method must be called within a <a
528
- href="AbstractServerCollection.html#M000092">#synchronize</a> block.
528
+ href="AbstractServerCollection.html#M000094">#synchronize</a> block.
529
529
  </p>
530
530
  </div>
531
531
  <div class="sourcecode">
532
- <p class="source-link">[ <a href="javascript:toggleSource('M000097_source')" id="l_M000097_source">show source</a> ]</p>
533
- <div id="M000097_source" class="dyn-source">
532
+ <p class="source-link">[ <a href="javascript:toggleSource('M000099_source')" id="l_M000099_source">show source</a> ]</p>
533
+ <div id="M000099_source" class="dyn-source">
534
534
  <pre>
535
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 180</span>
536
- 180: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">register_activity</span>(<span class="ruby-identifier">server</span>)
537
- 181: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">eligable_for_cleanup?</span>(<span class="ruby-identifier">server</span>)
538
- 182: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@next_cleaning_time</span>
539
- 183: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-keyword kw">nil</span>
540
- 184: <span class="ruby-keyword kw">end</span>
541
- 185: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">max_idle_time</span>
542
- 186: <span class="ruby-keyword kw">end</span>
543
- 187: <span class="ruby-keyword kw">end</span>
535
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 185</span>
536
+ 185: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">register_activity</span>(<span class="ruby-identifier">server</span>)
537
+ 186: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">eligable_for_cleanup?</span>(<span class="ruby-identifier">server</span>)
538
+ 187: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@next_cleaning_time</span>
539
+ 188: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-keyword kw">nil</span>
540
+ 189: <span class="ruby-keyword kw">end</span>
541
+ 190: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">server</span>.<span class="ruby-identifier">max_idle_time</span>
542
+ 191: <span class="ruby-keyword kw">end</span>
543
+ 192: <span class="ruby-keyword kw">end</span>
544
544
  </pre>
545
545
  </div>
546
546
  </div>
547
547
  </div>
548
548
  <div class="method">
549
549
  <div class="title">
550
- <a name="M000092"></a><b>synchronize</b>() {|| ...}
550
+ <a name="M000094"></a><b>synchronize</b>() {|| ...}
551
551
  </div>
552
552
  <div class="description">
553
553
  <p>
@@ -558,34 +558,34 @@ operation.
558
558
  </p>
559
559
  </div>
560
560
  <div class="sourcecode">
561
- <p class="source-link">[ <a href="javascript:toggleSource('M000092_source')" id="l_M000092_source">show source</a> ]</p>
562
- <div id="M000092_source" class="dyn-source">
561
+ <p class="source-link">[ <a href="javascript:toggleSource('M000094_source')" id="l_M000094_source">show source</a> ]</p>
562
+ <div id="M000094_source" class="dyn-source">
563
563
  <pre>
564
- <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 73</span>
565
- 73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">synchronize</span>
566
- 74: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
567
- 75: <span class="ruby-keyword kw">yield</span>
568
- 76: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time</span>.<span class="ruby-identifier">nil?</span>
569
- 77: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
570
- 78: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
571
- 79: (<span class="ruby-identifier">eligable_for_cleanup?</span>(<span class="ruby-identifier">server</span>) <span class="ruby-operator">&amp;&amp;</span>
572
- 80: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@next_cleaning_time</span>
573
- 81: )
574
- 82: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span>
575
- 83: <span class="ruby-keyword kw">end</span>
576
- 84: <span class="ruby-keyword kw">end</span>
577
- 85: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time</span>.<span class="ruby-identifier">nil?</span>
578
- 86: <span class="ruby-comment cmt"># There are no servers in the collection with an idle timeout.</span>
579
- 87: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
580
- 88: <span class="ruby-keyword kw">end</span>
581
- 89: <span class="ruby-ivar">@next_cleaning_time_changed</span> = <span class="ruby-keyword kw">true</span>
582
- 90: <span class="ruby-keyword kw">end</span>
583
- 91: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time_changed</span>
584
- 92: <span class="ruby-ivar">@next_cleaning_time_changed</span> = <span class="ruby-keyword kw">false</span>
585
- 93: <span class="ruby-ivar">@cond</span>.<span class="ruby-identifier">signal</span>
586
- 94: <span class="ruby-keyword kw">end</span>
587
- 95: <span class="ruby-keyword kw">end</span>
588
- 96: <span class="ruby-keyword kw">end</span>
564
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server_collection.rb, line 78</span>
565
+ 78: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">synchronize</span>
566
+ 79: <span class="ruby-ivar">@lock</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
567
+ 80: <span class="ruby-keyword kw">yield</span>
568
+ 81: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time</span>.<span class="ruby-identifier">nil?</span>
569
+ 82: <span class="ruby-ivar">@collection</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">server</span><span class="ruby-operator">|</span>
570
+ 83: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
571
+ 84: (<span class="ruby-identifier">eligable_for_cleanup?</span>(<span class="ruby-identifier">server</span>) <span class="ruby-operator">&amp;&amp;</span>
572
+ 85: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@next_cleaning_time</span>
573
+ 86: )
574
+ 87: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-identifier">server</span>.<span class="ruby-identifier">next_cleaning_time</span>
575
+ 88: <span class="ruby-keyword kw">end</span>
576
+ 89: <span class="ruby-keyword kw">end</span>
577
+ 90: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time</span>.<span class="ruby-identifier">nil?</span>
578
+ 91: <span class="ruby-comment cmt"># There are no servers in the collection with an idle timeout.</span>
579
+ 92: <span class="ruby-ivar">@next_cleaning_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-value">60</span> <span class="ruby-operator">*</span> <span class="ruby-value">60</span>
580
+ 93: <span class="ruby-keyword kw">end</span>
581
+ 94: <span class="ruby-ivar">@next_cleaning_time_changed</span> = <span class="ruby-keyword kw">true</span>
582
+ 95: <span class="ruby-keyword kw">end</span>
583
+ 96: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@next_cleaning_time_changed</span>
584
+ 97: <span class="ruby-ivar">@next_cleaning_time_changed</span> = <span class="ruby-keyword kw">false</span>
585
+ 98: <span class="ruby-ivar">@cond</span>.<span class="ruby-identifier">signal</span>
586
+ 99: <span class="ruby-keyword kw">end</span>
587
+ 100: <span class="ruby-keyword kw">end</span>
588
+ 101: <span class="ruby-keyword kw">end</span>
589
589
  </pre>
590
590
  </div>
591
591
  </div>