passenger 2.2.15 → 3.0.0.pre1

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 (1338) hide show
  1. data/DEVELOPERS.TXT +21 -12
  2. data/LICENSE +1 -1
  3. data/NEWS +8 -1
  4. data/PACKAGING.TXT +25 -0
  5. data/Rakefile +28 -891
  6. data/bin/passenger +32 -0
  7. data/bin/passenger-config +5 -5
  8. data/bin/passenger-install-apache2-module +37 -24
  9. data/bin/passenger-install-nginx-module +48 -46
  10. data/bin/passenger-make-enterprisey +8 -9
  11. data/bin/passenger-memory-stats +20 -150
  12. data/bin/passenger-status +130 -44
  13. data/bin/passenger-stress-test +5 -4
  14. data/build/agents.rb +73 -0
  15. data/build/apache2.rb +165 -0
  16. data/build/basics.rb +81 -0
  17. data/build/common_library.rb +198 -0
  18. data/build/config.rb +35 -0
  19. data/{misc/rake/cplusplus.rb → build/cplusplus_support.rb} +1 -1
  20. data/build/cxx_tests.rb +205 -0
  21. data/build/documentation.rb +77 -0
  22. data/{misc/rake → build}/gempackagetask.rb +1 -1
  23. data/build/integration_tests.rb +57 -0
  24. data/build/misc.rb +146 -0
  25. data/build/nginx.rb +64 -0
  26. data/build/oxt_tests.rb +52 -0
  27. data/{misc/rake → build}/packagetask.rb +0 -0
  28. data/build/packaging.rb +189 -0
  29. data/{misc/rake/extensions.rb → build/rake_extensions.rb} +1 -1
  30. data/{misc/rake → build}/rdoctask.rb +0 -0
  31. data/build/ruby_extension.rb +46 -0
  32. data/build/ruby_tests.rb +42 -0
  33. data/build/test_basics.rb +31 -0
  34. data/doc/ApplicationPool algorithm.txt +447 -234
  35. data/doc/Architectural overview.html +47 -56
  36. data/doc/Doxyfile +1 -1
  37. data/doc/Security of user switching support.html +46 -57
  38. data/doc/Users guide Apache.html +1033 -306
  39. data/doc/Users guide Apache.txt +419 -99
  40. data/doc/Users guide Nginx.html +1252 -253
  41. data/doc/Users guide Nginx.txt +711 -87
  42. data/doc/Users guide Standalone.html +603 -0
  43. data/doc/Users guide Standalone.txt +40 -0
  44. data/doc/cxxapi/AbstractSpawnManager_8h_source.html +141 -0
  45. data/doc/cxxapi/Account_8h_source.html +206 -0
  46. data/doc/cxxapi/AccountsDatabase_8h_source.html +161 -0
  47. data/doc/cxxapi/AgentBase_8h_source.html +70 -0
  48. data/doc/cxxapi/AgentsStarter_8h_source.html +112 -0
  49. data/doc/cxxapi/BCrypt_8h_source.html +104 -0
  50. data/doc/cxxapi/Blowfish_8h_source.html +134 -0
  51. data/doc/cxxapi/Bucket_8h_source.html +4 -3
  52. data/doc/cxxapi/Constants_8h_source.html +79 -0
  53. data/doc/cxxapi/ContentHandler_8h_source.html +95 -0
  54. data/doc/cxxapi/DirectoryMapper_8h_source.html +9 -8
  55. data/doc/cxxapi/EventedClient_8h_source.html +629 -0
  56. data/doc/cxxapi/EventedMessageServer_8h_source.html +358 -0
  57. data/doc/cxxapi/EventedServer_8h_source.html +326 -0
  58. data/doc/cxxapi/Exceptions_8h_source.html +366 -0
  59. data/doc/cxxapi/FileDescriptor_8h_source.html +260 -0
  60. data/doc/cxxapi/Hooks_8h_source.html +2 -1
  61. data/doc/cxxapi/HttpStatusExtractor_8h_source.html +382 -0
  62. data/doc/cxxapi/Logging_8h_source.html +726 -0
  63. data/doc/cxxapi/MessageChannel_8h_source.html +852 -0
  64. data/doc/cxxapi/MessageClient_8h_source.html +328 -0
  65. data/doc/cxxapi/MessageReadersWriters_8h_source.html +539 -0
  66. data/doc/cxxapi/MessageServer_8h_source.html +606 -0
  67. data/doc/cxxapi/PoolOptions_8h_source.html +548 -0
  68. data/doc/cxxapi/Process_8h_source.html +286 -0
  69. data/doc/cxxapi/RandomGenerator_8h_source.html +191 -0
  70. data/doc/cxxapi/ResourceLocator_8h_source.html +115 -0
  71. data/doc/cxxapi/ScgiRequestParser_8h_source.html +406 -0
  72. data/doc/cxxapi/ServerInstanceDir_8h_source.html +374 -0
  73. data/doc/cxxapi/Session_8h_source.html +501 -0
  74. data/doc/cxxapi/SpawnManager_8h_source.html +647 -0
  75. data/doc/cxxapi/StaticContentHandler_8h_source.html +68 -0
  76. data/doc/cxxapi/StaticString_8h_source.html +254 -0
  77. data/doc/cxxapi/StringListCreator_8h_source.html +114 -0
  78. data/doc/cxxapi/Utils_8h_source.html +442 -0
  79. data/doc/cxxapi/annotated.html +46 -0
  80. data/doc/cxxapi/apache2_2Configuration_8h_source.html +82 -0
  81. data/doc/cxxapi/classAgentWatcher-members.html +30 -26
  82. data/doc/cxxapi/classAgentWatcher.html +168 -194
  83. data/doc/cxxapi/classClient-members.html +14 -11
  84. data/doc/cxxapi/classClient.html +35 -35
  85. data/doc/cxxapi/classHooks-members.html +2 -0
  86. data/doc/cxxapi/classHooks.html +2 -0
  87. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +16 -13
  88. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +78 -82
  89. data/doc/cxxapi/classPassenger_1_1ArgumentException-members.html +12 -9
  90. data/doc/cxxapi/classPassenger_1_1ArgumentException.html +26 -22
  91. data/doc/cxxapi/classPassenger_1_1ArrayMessage-members.html +37 -0
  92. data/doc/cxxapi/classPassenger_1_1ArrayMessage.html +113 -0
  93. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +14 -11
  94. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +41 -42
  95. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +12 -9
  96. data/doc/cxxapi/classPassenger_1_1BusyException.html +24 -20
  97. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +12 -9
  98. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +23 -19
  99. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +2 -0
  100. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +8 -6
  101. data/doc/cxxapi/classPassenger_1_1EOFException-members.html +12 -9
  102. data/doc/cxxapi/classPassenger_1_1EOFException.html +27 -23
  103. data/doc/cxxapi/classPassenger_1_1EventFd-members.html +12 -9
  104. data/doc/cxxapi/classPassenger_1_1EventFd.html +24 -21
  105. data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +54 -0
  106. data/doc/cxxapi/classPassenger_1_1EventedClient.html +436 -0
  107. data/doc/cxxapi/classPassenger_1_1EventedMessageServer-members.html +37 -0
  108. data/doc/cxxapi/classPassenger_1_1EventedMessageServer.html +59 -0
  109. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.map +3 -0
  110. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.md5 +1 -0
  111. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.png +0 -0
  112. data/doc/cxxapi/classPassenger_1_1EventedServer-members.html +37 -0
  113. data/doc/cxxapi/classPassenger_1_1EventedServer.html +93 -0
  114. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.map +3 -0
  115. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.md5 +1 -0
  116. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.png +0 -0
  117. data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +16 -13
  118. data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +63 -70
  119. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +12 -9
  120. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +26 -22
  121. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +17 -14
  122. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +32 -30
  123. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html +15 -12
  124. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +59 -59
  125. data/doc/cxxapi/classPassenger_1_1IOException-members.html +12 -9
  126. data/doc/cxxapi/classPassenger_1_1IOException.html +27 -23
  127. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +36 -33
  128. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +326 -344
  129. data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +25 -22
  130. data/doc/cxxapi/classPassenger_1_1MessageServer.html +160 -191
  131. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +12 -9
  132. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +29 -27
  133. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map +3 -1
  134. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5 +1 -1
  135. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png +0 -0
  136. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +17 -14
  137. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +69 -79
  138. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map +3 -1
  139. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5 +1 -1
  140. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png +0 -0
  141. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +15 -12
  142. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +60 -63
  143. data/doc/cxxapi/classPassenger_1_1Process-members.html +20 -17
  144. data/doc/cxxapi/classPassenger_1_1Process.html +88 -95
  145. data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +13 -10
  146. data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +36 -35
  147. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +12 -9
  148. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +24 -20
  149. data/doc/cxxapi/classPassenger_1_1ScalarMessage-members.html +37 -0
  150. data/doc/cxxapi/classPassenger_1_1ScalarMessage.html +76 -0
  151. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +26 -23
  152. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +121 -138
  153. data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +12 -9
  154. data/doc/cxxapi/classPassenger_1_1SecurityException.html +26 -22
  155. data/doc/cxxapi/classPassenger_1_1Session-members.html +29 -26
  156. data/doc/cxxapi/classPassenger_1_1Session.html +219 -240
  157. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +14 -11
  158. data/doc/cxxapi/classPassenger_1_1SpawnException.html +36 -37
  159. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +18 -15
  160. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +115 -110
  161. data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +30 -27
  162. data/doc/cxxapi/classPassenger_1_1StandardSession.html +163 -184
  163. data/doc/cxxapi/classPassenger_1_1StaticString-members.html +12 -9
  164. data/doc/cxxapi/classPassenger_1_1StaticString.html +27 -25
  165. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +16 -13
  166. data/doc/cxxapi/classPassenger_1_1SystemException.html +65 -67
  167. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +16 -13
  168. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +27 -23
  169. data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +12 -9
  170. data/doc/cxxapi/classPassenger_1_1TimeoutException.html +24 -20
  171. data/doc/cxxapi/classPassenger_1_1Uint16Message-members.html +36 -0
  172. data/doc/cxxapi/classPassenger_1_1Uint16Message.html +51 -0
  173. data/doc/cxxapi/classPassenger_1_1Uint32Message-members.html +36 -0
  174. data/doc/cxxapi/classPassenger_1_1Uint32Message.html +51 -0
  175. data/doc/cxxapi/classServer-members.html +12 -9
  176. data/doc/cxxapi/classServer.html +23 -20
  177. data/doc/cxxapi/classServerInstanceDirToucher-members.html +12 -9
  178. data/doc/cxxapi/classServerInstanceDirToucher.html +21 -17
  179. data/doc/cxxapi/classes.html +18 -4
  180. data/doc/cxxapi/definitions_8h_source.html +1 -0
  181. data/doc/cxxapi/files.html +36 -1
  182. data/doc/cxxapi/functions.html +53 -21
  183. data/doc/cxxapi/functions_0x62.html +82 -0
  184. data/doc/cxxapi/functions_0x63.html +99 -0
  185. data/doc/cxxapi/functions_0x64.html +95 -0
  186. data/doc/cxxapi/functions_0x65.html +88 -0
  187. data/doc/cxxapi/functions_0x66.html +100 -0
  188. data/doc/cxxapi/functions_0x67.html +170 -0
  189. data/doc/cxxapi/functions_0x68.html +88 -0
  190. data/doc/cxxapi/functions_0x69.html +93 -0
  191. data/doc/cxxapi/functions_0x6b.html +80 -0
  192. data/doc/cxxapi/functions_0x6c.html +88 -0
  193. data/doc/cxxapi/functions_0x6d.html +88 -0
  194. data/doc/cxxapi/functions_0x6e.html +86 -0
  195. data/doc/cxxapi/functions_0x6f.html +94 -0
  196. data/doc/cxxapi/functions_0x70.html +94 -0
  197. data/doc/cxxapi/functions_0x72.html +110 -0
  198. data/doc/cxxapi/functions_0x73.html +171 -0
  199. data/doc/cxxapi/functions_0x74.html +85 -0
  200. data/doc/cxxapi/functions_0x75.html +85 -0
  201. data/doc/cxxapi/functions_0x77.html +92 -0
  202. data/doc/cxxapi/functions_0x7e.html +79 -0
  203. data/doc/cxxapi/functions_enum.html +14 -12
  204. data/doc/cxxapi/functions_eval.html +22 -16
  205. data/doc/cxxapi/functions_func.html +460 -1
  206. data/doc/cxxapi/functions_vars.html +163 -63
  207. data/doc/cxxapi/graph_legend.html +1 -0
  208. data/doc/cxxapi/graph_legend.png +0 -0
  209. data/doc/cxxapi/group__Core.html +2 -2
  210. data/doc/cxxapi/group__Core.map +1 -2
  211. data/doc/cxxapi/group__Core.png +0 -0
  212. data/doc/cxxapi/group__Exceptions.html +32 -40
  213. data/doc/cxxapi/group__Hooks.html +2 -1
  214. data/doc/cxxapi/group__Hooks.map +1 -1
  215. data/doc/cxxapi/group__Hooks.png +0 -0
  216. data/doc/cxxapi/group__Support.html +509 -0
  217. data/doc/cxxapi/hierarchy.html +66 -62
  218. data/doc/cxxapi/inherit__graph__10.map +3 -1
  219. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  220. data/doc/cxxapi/inherit__graph__10.png +0 -0
  221. data/doc/cxxapi/inherit__graph__11.map +4 -1
  222. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  223. data/doc/cxxapi/inherit__graph__11.png +0 -0
  224. data/doc/cxxapi/inherit__graph__12.map +3 -1
  225. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  226. data/doc/cxxapi/inherit__graph__12.png +0 -0
  227. data/doc/cxxapi/inherit__graph__13.map +3 -1
  228. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  229. data/doc/cxxapi/inherit__graph__13.png +0 -0
  230. data/doc/cxxapi/inherit__graph__14.map +3 -1
  231. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  232. data/doc/cxxapi/inherit__graph__14.png +0 -0
  233. data/doc/cxxapi/inherit__graph__15.map +5 -1
  234. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  235. data/doc/cxxapi/inherit__graph__15.png +0 -0
  236. data/doc/cxxapi/inherit__graph__16.map +3 -3
  237. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  238. data/doc/cxxapi/inherit__graph__16.png +0 -0
  239. data/doc/cxxapi/inherit__graph__17.map +3 -1
  240. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  241. data/doc/cxxapi/inherit__graph__17.png +0 -0
  242. data/doc/cxxapi/inherit__graph__18.map +4 -1
  243. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  244. data/doc/cxxapi/inherit__graph__18.png +0 -0
  245. data/doc/cxxapi/inherit__graph__19.map +3 -1
  246. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  247. data/doc/cxxapi/inherit__graph__19.png +0 -0
  248. data/doc/cxxapi/inherit__graph__20.map +3 -2
  249. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  250. data/doc/cxxapi/inherit__graph__20.png +0 -0
  251. data/doc/cxxapi/inherit__graph__21.map +3 -1
  252. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  253. data/doc/cxxapi/inherit__graph__21.png +0 -0
  254. data/doc/cxxapi/inherit__graph__22.map +3 -1
  255. data/doc/cxxapi/inherit__graph__22.md5 +1 -1
  256. data/doc/cxxapi/inherit__graph__22.png +0 -0
  257. data/doc/cxxapi/inherit__graph__23.map +3 -1
  258. data/doc/cxxapi/inherit__graph__23.md5 +1 -1
  259. data/doc/cxxapi/inherit__graph__23.png +0 -0
  260. data/doc/cxxapi/inherit__graph__24.map +3 -1
  261. data/doc/cxxapi/inherit__graph__24.md5 +1 -1
  262. data/doc/cxxapi/inherit__graph__24.png +0 -0
  263. data/doc/cxxapi/inherit__graph__25.map +3 -1
  264. data/doc/cxxapi/inherit__graph__25.md5 +1 -1
  265. data/doc/cxxapi/inherit__graph__25.png +0 -0
  266. data/doc/cxxapi/inherit__graph__26.map +3 -1
  267. data/doc/cxxapi/inherit__graph__26.md5 +1 -1
  268. data/doc/cxxapi/inherit__graph__26.png +0 -0
  269. data/doc/cxxapi/inherit__graph__27.map +3 -1
  270. data/doc/cxxapi/inherit__graph__27.md5 +1 -1
  271. data/doc/cxxapi/inherit__graph__27.png +0 -0
  272. data/doc/cxxapi/inherit__graph__28.map +4 -1
  273. data/doc/cxxapi/inherit__graph__28.md5 +1 -1
  274. data/doc/cxxapi/inherit__graph__28.png +0 -0
  275. data/doc/cxxapi/inherit__graph__29.map +3 -1
  276. data/doc/cxxapi/inherit__graph__29.md5 +1 -1
  277. data/doc/cxxapi/inherit__graph__29.png +0 -0
  278. data/doc/cxxapi/inherit__graph__30.map +3 -2
  279. data/doc/cxxapi/inherit__graph__30.md5 +1 -1
  280. data/doc/cxxapi/inherit__graph__30.png +0 -0
  281. data/doc/cxxapi/inherit__graph__31.map +3 -1
  282. data/doc/cxxapi/inherit__graph__31.md5 +1 -1
  283. data/doc/cxxapi/inherit__graph__31.png +0 -0
  284. data/doc/cxxapi/inherit__graph__32.map +5 -1
  285. data/doc/cxxapi/inherit__graph__32.md5 +1 -1
  286. data/doc/cxxapi/inherit__graph__32.png +0 -0
  287. data/doc/cxxapi/inherit__graph__33.map +3 -1
  288. data/doc/cxxapi/inherit__graph__33.md5 +1 -1
  289. data/doc/cxxapi/inherit__graph__33.png +0 -0
  290. data/doc/cxxapi/inherit__graph__34.map +3 -3
  291. data/doc/cxxapi/inherit__graph__34.md5 +1 -1
  292. data/doc/cxxapi/inherit__graph__34.png +0 -0
  293. data/doc/cxxapi/inherit__graph__35.map +3 -1
  294. data/doc/cxxapi/inherit__graph__35.md5 +1 -1
  295. data/doc/cxxapi/inherit__graph__35.png +0 -0
  296. data/doc/cxxapi/inherit__graph__36.map +3 -1
  297. data/doc/cxxapi/inherit__graph__36.md5 +1 -1
  298. data/doc/cxxapi/inherit__graph__36.png +0 -0
  299. data/doc/cxxapi/inherit__graph__37.map +3 -1
  300. data/doc/cxxapi/inherit__graph__37.md5 +1 -1
  301. data/doc/cxxapi/inherit__graph__37.png +0 -0
  302. data/doc/cxxapi/inherit__graph__4.map +3 -1
  303. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  304. data/doc/cxxapi/inherit__graph__4.png +0 -0
  305. data/doc/cxxapi/inherit__graph__5.map +3 -1
  306. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  307. data/doc/cxxapi/inherit__graph__5.png +0 -0
  308. data/doc/cxxapi/inherit__graph__6.map +3 -1
  309. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  310. data/doc/cxxapi/inherit__graph__6.png +0 -0
  311. data/doc/cxxapi/inherit__graph__7.map +3 -1
  312. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  313. data/doc/cxxapi/inherit__graph__7.png +0 -0
  314. data/doc/cxxapi/inherit__graph__8.map +3 -1
  315. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  316. data/doc/cxxapi/inherit__graph__8.png +0 -0
  317. data/doc/cxxapi/inherit__graph__9.map +3 -1
  318. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  319. data/doc/cxxapi/inherit__graph__9.png +0 -0
  320. data/doc/cxxapi/inherits.html +123 -126
  321. data/doc/cxxapi/main.html +1 -0
  322. data/doc/cxxapi/modules.html +2 -1
  323. data/doc/cxxapi/namespacePassenger.html +263 -492
  324. data/doc/cxxapi/namespacemembers.html +68 -96
  325. data/doc/cxxapi/namespacemembers_enum.html +14 -12
  326. data/doc/cxxapi/namespacemembers_eval.html +20 -15
  327. data/doc/cxxapi/namespacemembers_func.html +52 -88
  328. data/doc/cxxapi/namespacemembers_type.html +18 -14
  329. data/doc/cxxapi/namespaces.html +12 -9
  330. data/doc/cxxapi/nginx_2Configuration_8h_source.html +125 -0
  331. data/doc/cxxapi/ngx__http__passenger__module_8h_source.html +94 -0
  332. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +12 -9
  333. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +24 -22
  334. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +43 -38
  335. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +275 -325
  336. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +12 -9
  337. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +24 -22
  338. data/doc/cxxapi/tree.html +152 -7
  339. data/doc/users_guide_snippets/{analysis_and_system_maintenance_tools.txt → analysis_and_system_maintenance.txt} +58 -1
  340. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +1 -2
  341. data/doc/users_guide_snippets/global_queueing_explained.txt +1 -5
  342. data/doc/users_guide_snippets/{rails_spawn_method.txt → passenger_spawn_method.txt} +9 -8
  343. data/doc/users_guide_snippets/tips.txt +12 -6
  344. data/doc/users_guide_snippets/under_the_hood/page_caching_support.txt +22 -0
  345. data/ext/apache2/Bucket.cpp +4 -4
  346. data/ext/apache2/Bucket.h +3 -3
  347. data/ext/apache2/Configuration.cpp +278 -381
  348. data/ext/apache2/Configuration.h +3 -357
  349. data/ext/apache2/Configuration.hpp +461 -0
  350. data/ext/apache2/DirectoryMapper.h +3 -3
  351. data/ext/apache2/HelperAgent.cpp +359 -0
  352. data/ext/apache2/Hooks.cpp +339 -226
  353. data/ext/apache2/Hooks.h +1 -1
  354. data/ext/apache2/mod_passenger.c +10 -4
  355. data/ext/boost/algorithm/string/case_conv.hpp +4 -4
  356. data/ext/boost/algorithm/string/concept.hpp +2 -2
  357. data/ext/boost/algorithm/string/detail/case_conv.hpp +18 -9
  358. data/ext/boost/algorithm/string/detail/find_format.hpp +44 -43
  359. data/ext/boost/algorithm/string/detail/find_format_all.hpp +56 -56
  360. data/ext/boost/algorithm/string/detail/find_format_store.hpp +7 -0
  361. data/ext/boost/algorithm/string/detail/finder.hpp +14 -14
  362. data/ext/boost/algorithm/string/detail/formatter.hpp +2 -2
  363. data/ext/boost/algorithm/string/detail/replace_storage.hpp +3 -3
  364. data/ext/boost/algorithm/string/detail/sequence.hpp +3 -3
  365. data/ext/boost/algorithm/string/erase.hpp +98 -98
  366. data/ext/boost/algorithm/string/find_format.hpp +56 -38
  367. data/ext/boost/algorithm/string/finder.hpp +6 -6
  368. data/ext/boost/algorithm/string/formatter.hpp +1 -1
  369. data/ext/boost/algorithm/string/replace.hpp +99 -99
  370. data/ext/boost/bind.hpp +5 -1670
  371. data/ext/boost/bind/bind.hpp +1751 -0
  372. data/ext/boost/bind/bind_mf2_cc.hpp +228 -0
  373. data/ext/boost/bind/mem_fn.hpp +389 -0
  374. data/ext/boost/bind/mem_fn_template.hpp +54 -27
  375. data/ext/boost/bind/placeholders.hpp +3 -2
  376. data/ext/boost/concept_check.hpp +10 -0
  377. data/ext/boost/config/abi/msvc_prefix.hpp +15 -1
  378. data/ext/boost/config/abi_prefix.hpp +1 -1
  379. data/ext/boost/config/abi_suffix.hpp +3 -2
  380. data/ext/boost/config/auto_link.hpp +6 -1
  381. data/ext/boost/config/compiler/borland.hpp +75 -17
  382. data/ext/boost/config/compiler/codegear.hpp +163 -0
  383. data/ext/boost/config/compiler/common_edg.hpp +35 -0
  384. data/ext/boost/config/compiler/digitalmars.hpp +26 -0
  385. data/ext/boost/config/compiler/gcc.hpp +69 -14
  386. data/ext/boost/config/compiler/hp_acc.hpp +32 -0
  387. data/ext/boost/config/compiler/intel.hpp +13 -2
  388. data/ext/boost/config/compiler/kai.hpp +0 -2
  389. data/ext/boost/config/compiler/metrowerks.hpp +29 -1
  390. data/ext/boost/config/compiler/mpw.hpp +30 -0
  391. data/ext/boost/config/compiler/pgi.hpp +37 -0
  392. data/ext/boost/config/compiler/sgi_mipspro.hpp +1 -0
  393. data/ext/boost/config/compiler/sunpro_cc.hpp +39 -7
  394. data/ext/boost/config/compiler/vacpp.hpp +31 -3
  395. data/ext/boost/config/compiler/visualc.hpp +72 -5
  396. data/ext/boost/config/no_tr1/cmath.hpp +28 -0
  397. data/ext/boost/config/platform/bsd.hpp +16 -3
  398. data/ext/boost/config/platform/hpux.hpp +3 -0
  399. data/ext/boost/config/platform/macos.hpp +8 -0
  400. data/ext/boost/config/platform/solaris.hpp +7 -0
  401. data/ext/boost/config/platform/vxworks.hpp +31 -0
  402. data/ext/boost/config/select_compiler_config.hpp +4 -0
  403. data/ext/boost/config/select_platform_config.hpp +6 -2
  404. data/ext/boost/config/select_stdlib_config.hpp +17 -8
  405. data/ext/boost/config/stdlib/dinkumware.hpp +34 -2
  406. data/ext/boost/config/stdlib/libcomo.hpp +25 -0
  407. data/ext/boost/config/stdlib/libstdcpp3.hpp +56 -2
  408. data/ext/boost/config/stdlib/modena.hpp +25 -0
  409. data/ext/boost/config/stdlib/msl.hpp +24 -0
  410. data/ext/boost/config/stdlib/roguewave.hpp +26 -0
  411. data/ext/boost/config/stdlib/sgi.hpp +25 -0
  412. data/ext/boost/config/stdlib/stlport.hpp +36 -1
  413. data/ext/boost/config/stdlib/vacpp.hpp +25 -0
  414. data/ext/boost/config/suffix.hpp +67 -32
  415. data/ext/boost/config/warning_disable.hpp +47 -0
  416. data/ext/boost/cstdint.hpp +62 -36
  417. data/ext/boost/date_time/c_time.hpp +28 -12
  418. data/ext/boost/date_time/compiler_config.hpp +27 -5
  419. data/ext/boost/date_time/constrained_value.hpp +36 -13
  420. data/ext/boost/date_time/date.hpp +44 -33
  421. data/ext/boost/date_time/date_duration.hpp +13 -14
  422. data/ext/boost/date_time/date_facet.hpp +215 -226
  423. data/ext/boost/date_time/date_generator_formatter.hpp +22 -20
  424. data/ext/boost/date_time/date_generator_parser.hpp +52 -51
  425. data/ext/boost/date_time/date_generators.hpp +16 -16
  426. data/ext/boost/date_time/date_parsing.hpp +115 -98
  427. data/ext/boost/date_time/filetime_functions.hpp +133 -41
  428. data/ext/boost/date_time/format_date_parser.hpp +22 -10
  429. data/ext/boost/date_time/gregorian/conversion.hpp +32 -39
  430. data/ext/boost/date_time/gregorian/greg_calendar.hpp +15 -14
  431. data/ext/boost/date_time/gregorian/greg_date.hpp +19 -18
  432. data/ext/boost/date_time/gregorian/greg_duration.hpp +106 -10
  433. data/ext/boost/date_time/gregorian/greg_duration_types.hpp +16 -7
  434. data/ext/boost/date_time/gregorian/greg_weekday.hpp +2 -2
  435. data/ext/boost/date_time/gregorian/gregorian_io.hpp +11 -4
  436. data/ext/boost/date_time/gregorian_calendar.hpp +8 -8
  437. data/ext/boost/date_time/gregorian_calendar.ipp +30 -30
  438. data/ext/boost/date_time/int_adapter.hpp +4 -2
  439. data/ext/boost/date_time/microsec_time_clock.hpp +39 -117
  440. data/ext/boost/date_time/period_parser.hpp +17 -15
  441. data/ext/boost/date_time/posix_time/conversion.hpp +28 -29
  442. data/ext/boost/date_time/posix_time/posix_time_config.hpp +19 -19
  443. data/ext/boost/date_time/posix_time/posix_time_io.hpp +31 -38
  444. data/ext/boost/date_time/posix_time/time_formatters.hpp +32 -32
  445. data/ext/boost/date_time/string_parse_tree.hpp +46 -46
  446. data/ext/boost/date_time/strings_from_facet.hpp +7 -5
  447. data/ext/boost/date_time/time.hpp +7 -6
  448. data/ext/boost/date_time/time_defs.hpp +12 -2
  449. data/ext/boost/date_time/time_duration.hpp +27 -26
  450. data/ext/boost/date_time/time_facet.hpp +386 -321
  451. data/ext/boost/date_time/time_formatting_streams.hpp +8 -5
  452. data/ext/boost/date_time/time_resolution_traits.hpp +29 -25
  453. data/ext/boost/date_time/time_system_split.hpp +7 -13
  454. data/ext/boost/date_time/wrapping_int.hpp +21 -15
  455. data/ext/boost/detail/call_traits.hpp +1 -1
  456. data/ext/boost/detail/endian.hpp +4 -4
  457. data/ext/boost/detail/no_exceptions_support.hpp +87 -0
  458. data/ext/boost/detail/sp_typeinfo.hpp +50 -4
  459. data/ext/boost/detail/workaround.hpp +63 -3
  460. data/ext/boost/enable_shared_from_this.hpp +4 -59
  461. data/ext/boost/exception/current_exception_cast.hpp +43 -0
  462. data/ext/boost/exception/detail/attribute_noreturn.hpp +17 -0
  463. data/ext/boost/exception/detail/error_info_impl.hpp +75 -0
  464. data/ext/boost/exception/detail/exception_ptr.hpp +490 -0
  465. data/ext/boost/exception/detail/is_output_streamable.hpp +47 -0
  466. data/ext/boost/exception/detail/object_hex_dump.hpp +50 -0
  467. data/ext/boost/exception/detail/type_info.hpp +79 -0
  468. data/ext/boost/exception/diagnostic_information.hpp +182 -0
  469. data/ext/boost/exception/exception.hpp +422 -0
  470. data/ext/boost/exception/get_error_info.hpp +130 -0
  471. data/ext/boost/exception/info.hpp +167 -0
  472. data/ext/boost/exception/to_string.hpp +83 -0
  473. data/ext/boost/exception/to_string_stub.hpp +109 -0
  474. data/ext/boost/exception_ptr.hpp +11 -0
  475. data/ext/boost/function/detail/prologue.hpp +2 -1
  476. data/ext/boost/function/function_base.hpp +270 -128
  477. data/ext/boost/function/function_fwd.hpp +70 -0
  478. data/ext/boost/function/function_template.hpp +319 -130
  479. data/ext/boost/get_pointer.hpp +5 -1
  480. data/ext/boost/integer.hpp +253 -0
  481. data/ext/boost/integer_fwd.hpp +174 -0
  482. data/ext/boost/integer_traits.hpp +26 -1
  483. data/ext/boost/io/ios_state.hpp +8 -0
  484. data/ext/boost/iterator/detail/config_def.hpp +4 -2
  485. data/ext/boost/iterator/iterator_adaptor.hpp +7 -2
  486. data/ext/boost/iterator/iterator_facade.hpp +1 -2
  487. data/ext/boost/lexical_cast.hpp +113 -105
  488. data/ext/boost/limits.hpp +1 -1
  489. data/ext/boost/mem_fn.hpp +5 -370
  490. data/ext/boost/memory_order.hpp +53 -0
  491. data/ext/boost/mpl/always.hpp +3 -3
  492. data/ext/boost/mpl/and.hpp +3 -3
  493. data/ext/boost/mpl/apply.hpp +3 -3
  494. data/ext/boost/mpl/apply_fwd.hpp +3 -3
  495. data/ext/boost/mpl/apply_wrap.hpp +37 -6
  496. data/ext/boost/mpl/arg.hpp +3 -3
  497. data/ext/boost/mpl/arg_fwd.hpp +3 -3
  498. data/ext/boost/mpl/assert.hpp +6 -6
  499. data/ext/boost/mpl/aux_/adl_barrier.hpp +3 -3
  500. data/ext/boost/mpl/aux_/arg_typedef.hpp +3 -3
  501. data/ext/boost/mpl/aux_/arity.hpp +3 -3
  502. data/ext/boost/mpl/aux_/arity_spec.hpp +3 -3
  503. data/ext/boost/mpl/aux_/common_name_wknd.hpp +3 -3
  504. data/ext/boost/mpl/aux_/config/adl.hpp +4 -4
  505. data/ext/boost/mpl/aux_/config/arrays.hpp +4 -4
  506. data/ext/boost/mpl/aux_/config/bcc.hpp +28 -0
  507. data/ext/boost/mpl/aux_/config/bind.hpp +4 -4
  508. data/ext/boost/mpl/aux_/config/compiler.hpp +8 -6
  509. data/ext/boost/mpl/aux_/config/ctps.hpp +3 -3
  510. data/ext/boost/mpl/aux_/config/dtp.hpp +5 -5
  511. data/ext/boost/mpl/aux_/config/eti.hpp +3 -3
  512. data/ext/boost/mpl/aux_/config/gcc.hpp +3 -3
  513. data/ext/boost/mpl/aux_/config/has_apply.hpp +3 -3
  514. data/ext/boost/mpl/aux_/config/has_xxx.hpp +3 -3
  515. data/ext/boost/mpl/aux_/config/integral.hpp +4 -4
  516. data/ext/boost/mpl/aux_/config/intel.hpp +3 -3
  517. data/ext/boost/mpl/aux_/config/lambda.hpp +3 -3
  518. data/ext/boost/mpl/aux_/config/msvc.hpp +3 -3
  519. data/ext/boost/mpl/aux_/config/msvc_typename.hpp +3 -3
  520. data/ext/boost/mpl/aux_/config/nttp.hpp +3 -3
  521. data/ext/boost/mpl/aux_/config/overload_resolution.hpp +3 -3
  522. data/ext/boost/mpl/aux_/config/pp_counter.hpp +3 -3
  523. data/ext/boost/mpl/aux_/config/preprocessor.hpp +4 -4
  524. data/ext/boost/mpl/aux_/config/static_constant.hpp +3 -3
  525. data/ext/boost/mpl/aux_/config/ttp.hpp +4 -4
  526. data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +3 -3
  527. data/ext/boost/mpl/aux_/config/workaround.hpp +3 -3
  528. data/ext/boost/mpl/aux_/full_lambda.hpp +3 -3
  529. data/ext/boost/mpl/aux_/has_apply.hpp +3 -3
  530. data/ext/boost/mpl/aux_/has_type.hpp +3 -3
  531. data/ext/boost/mpl/aux_/include_preprocessed.hpp +3 -3
  532. data/ext/boost/mpl/aux_/integral_wrapper.hpp +3 -3
  533. data/ext/boost/mpl/aux_/lambda_arity_param.hpp +3 -3
  534. data/ext/boost/mpl/aux_/lambda_support.hpp +4 -4
  535. data/ext/boost/mpl/aux_/msvc_never_true.hpp +3 -3
  536. data/ext/boost/mpl/aux_/na.hpp +3 -3
  537. data/ext/boost/mpl/aux_/na_assert.hpp +3 -3
  538. data/ext/boost/mpl/aux_/na_fwd.hpp +3 -3
  539. data/ext/boost/mpl/aux_/na_spec.hpp +3 -3
  540. data/ext/boost/mpl/aux_/nested_type_wknd.hpp +3 -3
  541. data/ext/boost/mpl/aux_/nttp_decl.hpp +3 -3
  542. data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +3 -3
  543. data/ext/boost/mpl/aux_/preprocessor/enum.hpp +3 -3
  544. data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +3 -3
  545. data/ext/boost/mpl/aux_/preprocessor/params.hpp +3 -3
  546. data/ext/boost/mpl/aux_/preprocessor/sub.hpp +3 -3
  547. data/ext/boost/mpl/aux_/static_cast.hpp +3 -3
  548. data/ext/boost/mpl/aux_/template_arity.hpp +3 -3
  549. data/ext/boost/mpl/aux_/template_arity_fwd.hpp +3 -3
  550. data/ext/boost/mpl/aux_/type_wrapper.hpp +3 -3
  551. data/ext/boost/mpl/aux_/value_wknd.hpp +3 -3
  552. data/ext/boost/mpl/aux_/yes_no.hpp +3 -3
  553. data/ext/boost/mpl/bind.hpp +3 -3
  554. data/ext/boost/mpl/bind_fwd.hpp +3 -3
  555. data/ext/boost/mpl/bool.hpp +3 -3
  556. data/ext/boost/mpl/bool_fwd.hpp +3 -3
  557. data/ext/boost/mpl/eval_if.hpp +3 -3
  558. data/ext/boost/mpl/has_xxx.hpp +10 -8
  559. data/ext/boost/mpl/identity.hpp +3 -3
  560. data/ext/boost/mpl/if.hpp +3 -3
  561. data/ext/boost/mpl/int.hpp +3 -3
  562. data/ext/boost/mpl/int_fwd.hpp +3 -3
  563. data/ext/boost/mpl/integral_c.hpp +3 -3
  564. data/ext/boost/mpl/integral_c_fwd.hpp +3 -3
  565. data/ext/boost/mpl/integral_c_tag.hpp +3 -3
  566. data/ext/boost/mpl/lambda.hpp +3 -3
  567. data/ext/boost/mpl/lambda_fwd.hpp +3 -3
  568. data/ext/boost/mpl/limits/arity.hpp +3 -3
  569. data/ext/boost/mpl/logical.hpp +3 -3
  570. data/ext/boost/mpl/next.hpp +3 -3
  571. data/ext/boost/mpl/next_prior.hpp +3 -3
  572. data/ext/boost/mpl/not.hpp +3 -3
  573. data/ext/boost/mpl/or.hpp +3 -3
  574. data/ext/boost/mpl/placeholders.hpp +3 -3
  575. data/ext/boost/mpl/protect.hpp +3 -3
  576. data/ext/boost/mpl/quote.hpp +18 -7
  577. data/ext/boost/mpl/size_t.hpp +3 -3
  578. data/ext/boost/mpl/size_t_fwd.hpp +3 -3
  579. data/ext/boost/mpl/void.hpp +3 -3
  580. data/ext/boost/mpl/void_fwd.hpp +3 -3
  581. data/ext/boost/non_type.hpp +27 -27
  582. data/ext/boost/operators.hpp +51 -18
  583. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  584. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  585. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  586. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  587. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  588. data/ext/boost/preprocessor/seq/cat.hpp +48 -0
  589. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  590. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  591. data/ext/boost/range/as_literal.hpp +10 -14
  592. data/ext/boost/range/begin.hpp +4 -4
  593. data/ext/boost/range/detail/implementation_help.hpp +4 -0
  594. data/ext/boost/range/end.hpp +4 -4
  595. data/ext/boost/range/iterator_range.hpp +31 -15
  596. data/ext/boost/ref.hpp +12 -1
  597. data/ext/boost/scoped_array.hpp +16 -0
  598. data/ext/boost/scoped_ptr.hpp +16 -0
  599. data/ext/boost/shared_ptr.hpp +2 -602
  600. data/ext/boost/{detail → smart_ptr}/bad_weak_ptr.hpp +4 -4
  601. data/ext/boost/{detail → smart_ptr/detail}/atomic_count.hpp +14 -19
  602. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_gcc.hpp +13 -9
  603. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_gcc_x86.hpp +5 -12
  604. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_pthreads.hpp +5 -5
  605. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_solaris.hpp +3 -3
  606. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_sync.hpp +9 -5
  607. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_win32.hpp +3 -3
  608. data/ext/boost/smart_ptr/detail/operator_bool.hpp +56 -0
  609. data/ext/boost/{detail → smart_ptr/detail}/shared_count.hpp +86 -17
  610. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +76 -0
  611. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +70 -0
  612. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_acc_ia64.hpp +4 -4
  613. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_cw_ppc.hpp +4 -4
  614. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_cw_x86.hpp +4 -4
  615. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_ia64.hpp +4 -4
  616. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +172 -0
  617. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_ppc.hpp +4 -4
  618. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_sparc.hpp +7 -7
  619. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_x86.hpp +4 -4
  620. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_nt.hpp +4 -4
  621. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_pt.hpp +4 -4
  622. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_solaris.hpp +4 -4
  623. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +131 -0
  624. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_sync.hpp +8 -4
  625. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_w32.hpp +4 -4
  626. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_impl.hpp +5 -5
  627. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +49 -0
  628. data/ext/boost/smart_ptr/detail/spinlock.hpp +53 -0
  629. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +85 -0
  630. data/ext/boost/smart_ptr/detail/spinlock_nt.hpp +89 -0
  631. data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +87 -0
  632. data/ext/boost/smart_ptr/detail/spinlock_pt.hpp +79 -0
  633. data/ext/boost/smart_ptr/detail/spinlock_sync.hpp +87 -0
  634. data/ext/boost/smart_ptr/detail/yield_k.hpp +149 -0
  635. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +79 -0
  636. data/ext/boost/smart_ptr/scoped_array.hpp +107 -0
  637. data/ext/boost/smart_ptr/scoped_ptr.hpp +131 -0
  638. data/ext/boost/smart_ptr/shared_ptr.hpp +701 -0
  639. data/ext/boost/smart_ptr/weak_ptr.hpp +230 -0
  640. data/ext/boost/src/pthread/thread.cpp +115 -203
  641. data/ext/boost/src/tss_null.cpp +1 -1
  642. data/ext/boost/static_assert.hpp +14 -4
  643. data/ext/boost/thread.hpp +7 -2
  644. data/ext/boost/thread/barrier.hpp +63 -0
  645. data/ext/boost/thread/detail/force_cast.hpp +39 -0
  646. data/ext/boost/thread/detail/move.hpp +29 -2
  647. data/ext/boost/thread/detail/platform.hpp +3 -3
  648. data/ext/boost/thread/detail/singleton.hpp +59 -0
  649. data/ext/boost/thread/detail/thread.hpp +496 -0
  650. data/ext/boost/thread/detail/thread_group.hpp +105 -0
  651. data/ext/boost/thread/detail/thread_heap_alloc.hpp +23 -0
  652. data/ext/boost/thread/detail/thread_interruption.hpp +35 -0
  653. data/ext/boost/thread/detail/tss_hooks.hpp +82 -0
  654. data/ext/boost/thread/exceptions.hpp +174 -60
  655. data/ext/boost/thread/future.hpp +1364 -0
  656. data/ext/boost/thread/locks.hpp +899 -32
  657. data/ext/boost/thread/once.hpp +4 -0
  658. data/ext/boost/thread/pthread/condition_variable.hpp +16 -21
  659. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +37 -3
  660. data/ext/boost/thread/pthread/mutex.hpp +20 -7
  661. data/ext/boost/thread/pthread/once.hpp +7 -2
  662. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +5 -1
  663. data/ext/boost/thread/pthread/recursive_mutex.hpp +22 -5
  664. data/ext/boost/thread/pthread/shared_mutex.hpp +303 -0
  665. data/ext/boost/thread/pthread/thread_data.hpp +37 -10
  666. data/ext/boost/thread/pthread/thread_heap_alloc.hpp +242 -0
  667. data/ext/boost/thread/pthread/timespec.hpp +11 -3
  668. data/ext/boost/thread/shared_mutex.hpp +21 -0
  669. data/ext/boost/thread/thread.hpp +8 -3
  670. data/ext/boost/thread/thread_time.hpp +4 -0
  671. data/ext/boost/thread/tss.hpp +106 -13
  672. data/ext/boost/thread/xtime.hpp +6 -2
  673. data/ext/boost/throw_exception.hpp +36 -7
  674. data/ext/boost/token_functions.hpp +1 -1
  675. data/ext/boost/tokenizer.hpp +1 -1
  676. data/ext/boost/type_traits/add_pointer.hpp +1 -1
  677. data/ext/boost/type_traits/add_volatile.hpp +47 -0
  678. data/ext/boost/type_traits/alignment_of.hpp +29 -1
  679. data/ext/boost/type_traits/config.hpp +1 -1
  680. data/ext/boost/type_traits/conversion_traits.hpp +1 -1
  681. data/ext/boost/type_traits/has_trivial_destructor.hpp +42 -0
  682. data/ext/boost/type_traits/intrinsics.hpp +88 -1
  683. data/ext/boost/type_traits/is_abstract.hpp +14 -5
  684. data/ext/boost/type_traits/is_arithmetic.hpp +8 -0
  685. data/ext/boost/type_traits/is_array.hpp +3 -2
  686. data/ext/boost/type_traits/is_base_and_derived.hpp +254 -0
  687. data/ext/boost/type_traits/is_base_of.hpp +51 -0
  688. data/ext/boost/type_traits/is_class.hpp +12 -0
  689. data/ext/boost/type_traits/is_const.hpp +6 -2
  690. data/ext/boost/type_traits/is_convertible.hpp +14 -2
  691. data/ext/boost/type_traits/is_enum.hpp +10 -1
  692. data/ext/boost/type_traits/is_function.hpp +11 -3
  693. data/ext/boost/type_traits/is_fundamental.hpp +45 -0
  694. data/ext/boost/type_traits/is_integral.hpp +5 -0
  695. data/ext/boost/type_traits/is_member_function_pointer.hpp +5 -3
  696. data/ext/boost/type_traits/is_member_pointer.hpp +4 -2
  697. data/ext/boost/type_traits/is_pointer.hpp +3 -1
  698. data/ext/boost/type_traits/is_reference.hpp +4 -2
  699. data/ext/boost/type_traits/is_signed.hpp +135 -0
  700. data/ext/boost/type_traits/is_unsigned.hpp +130 -0
  701. data/ext/boost/type_traits/is_void.hpp +5 -0
  702. data/ext/boost/type_traits/is_volatile.hpp +4 -2
  703. data/ext/boost/type_traits/make_unsigned.hpp +137 -0
  704. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  705. data/ext/boost/type_traits/type_with_alignment.hpp +106 -1
  706. data/ext/boost/utility.hpp +2 -1
  707. data/ext/boost/utility/addressof.hpp +61 -17
  708. data/ext/boost/utility/binary.hpp +708 -0
  709. data/ext/boost/utility/enable_if.hpp +2 -2
  710. data/ext/boost/weak_ptr.hpp +4 -174
  711. data/ext/common/AbstractSpawnManager.h +110 -0
  712. data/ext/common/Account.h +175 -0
  713. data/ext/common/AccountsDatabase.cpp +81 -0
  714. data/ext/common/AccountsDatabase.h +130 -0
  715. data/ext/common/AgentBase.cpp +323 -0
  716. data/ext/common/{Version.h → AgentBase.h} +14 -6
  717. data/ext/common/AgentsStarter.cpp +154 -0
  718. data/ext/common/AgentsStarter.h +81 -0
  719. data/ext/common/AgentsStarter.hpp +619 -0
  720. data/ext/common/ApplicationPool/Client.h +796 -0
  721. data/ext/common/{ApplicationPool.h → ApplicationPool/Interface.h} +108 -18
  722. data/ext/common/ApplicationPool/Pool.h +1315 -0
  723. data/ext/common/ApplicationPool/Server.h +475 -0
  724. data/ext/common/BCrypt.cpp +343 -0
  725. data/ext/common/BCrypt.h +73 -0
  726. data/ext/common/Blowfish.c +685 -0
  727. data/ext/common/Blowfish.h +103 -0
  728. data/ext/common/Constants.h +48 -0
  729. data/ext/common/EventedClient.h +598 -0
  730. data/ext/common/EventedMessageServer.h +327 -0
  731. data/ext/common/EventedServer.h +295 -0
  732. data/ext/common/Exceptions.h +78 -1
  733. data/ext/common/FileDescriptor.h +229 -0
  734. data/ext/common/HelperAgent/BacktracesServer.h +59 -0
  735. data/ext/common/Logging.cpp +8 -9
  736. data/ext/common/Logging.h +593 -21
  737. data/ext/common/LoggingAgent/ChangeNotifier.h +63 -0
  738. data/ext/common/LoggingAgent/DataStoreId.h +177 -0
  739. data/ext/common/LoggingAgent/LoggingServer.h +1343 -0
  740. data/ext/common/LoggingAgent/Main.cpp +278 -0
  741. data/ext/common/LoggingAgent/RemoteSender.h +457 -0
  742. data/ext/common/MessageChannel.h +196 -34
  743. data/ext/common/MessageClient.h +297 -0
  744. data/ext/common/MessageReadersWriters.h +508 -0
  745. data/ext/common/MessageServer.h +575 -0
  746. data/ext/common/PoolOptions.h +279 -117
  747. data/ext/common/Process.h +255 -0
  748. data/ext/common/RandomGenerator.h +160 -0
  749. data/ext/common/ResourceLocator.h +84 -0
  750. data/ext/common/ServerInstanceDir.h +343 -0
  751. data/ext/common/Session.h +470 -0
  752. data/ext/common/SpawnManager.h +256 -201
  753. data/ext/common/StaticString.h +79 -4
  754. data/ext/common/StringListCreator.h +2 -2
  755. data/ext/common/Utils.cpp +385 -397
  756. data/ext/common/Utils.h +79 -165
  757. data/ext/common/{Base64.cpp → Utils/Base64.cpp} +0 -0
  758. data/ext/common/{Base64.h → Utils/Base64.h} +27 -1
  759. data/ext/common/Utils/BlockingQueue.h +136 -0
  760. data/ext/common/Utils/BlockingScalar.h +50 -0
  761. data/ext/common/{CachedFileStat.cpp → Utils/CachedFileStat.cpp} +1 -1
  762. data/ext/common/{CachedFileStat.h → Utils/CachedFileStat.h} +1 -1
  763. data/ext/common/{CachedFileStat.hpp → Utils/CachedFileStat.hpp} +1 -1
  764. data/ext/common/{FileChangeChecker.h → Utils/FileChangeChecker.h} +1 -1
  765. data/ext/common/Utils/FileHandleGuard.h +81 -0
  766. data/ext/common/Utils/IOUtils.cpp +754 -0
  767. data/ext/common/Utils/IOUtils.h +253 -0
  768. data/ext/common/Utils/MD5.cpp +406 -0
  769. data/ext/common/Utils/MD5.h +98 -0
  770. data/ext/common/Utils/MemZeroGuard.h +103 -0
  771. data/ext/common/Utils/ProcessMetricsCollector.h +462 -0
  772. data/ext/common/Utils/ScopeGuard.h +72 -0
  773. data/ext/common/Utils/StrIntUtils.cpp +329 -0
  774. data/ext/common/Utils/StrIntUtils.h +228 -0
  775. data/ext/common/{SystemTime.cpp → Utils/SystemTime.cpp} +5 -1
  776. data/ext/common/Utils/SystemTime.h +201 -0
  777. data/ext/common/{Timer.h → Utils/Timer.h} +58 -18
  778. data/ext/common/Utils/VariantMap.h +363 -0
  779. data/ext/common/Utils/foo.cpp +10 -0
  780. data/ext/common/Watchdog.cpp +1034 -0
  781. data/ext/google/COPYING +28 -0
  782. data/ext/google/ChangeLog +167 -0
  783. data/ext/google/dense_hash_map +310 -0
  784. data/ext/google/dense_hash_set +287 -0
  785. data/ext/google/sparse_hash_map +294 -0
  786. data/ext/google/sparse_hash_set +275 -0
  787. data/ext/google/sparsehash/densehashtable.h +1062 -0
  788. data/ext/google/sparsehash/sparseconfig.h +55 -0
  789. data/ext/google/sparsehash/sparsehashtable.h +1015 -0
  790. data/ext/google/sparsetable +1468 -0
  791. data/ext/google/type_traits.h +250 -0
  792. data/ext/libev/Changes +302 -0
  793. data/ext/libev/LICENSE +36 -0
  794. data/ext/libev/Makefile.am +18 -0
  795. data/ext/libev/Makefile.in +685 -0
  796. data/ext/libev/README +58 -0
  797. data/ext/libev/aclocal.m4 +7549 -0
  798. data/ext/libev/autogen.sh +6 -0
  799. data/ext/libev/config.guess +1526 -0
  800. data/ext/libev/config.h +122 -0
  801. data/ext/libev/config.h.in +121 -0
  802. data/ext/libev/config.sub +1658 -0
  803. data/ext/libev/configure +22156 -0
  804. data/ext/libev/configure.ac +18 -0
  805. data/ext/libev/ev++.h +800 -0
  806. data/ext/libev/ev.c +3694 -0
  807. data/ext/libev/ev.h +705 -0
  808. data/ext/libev/ev_epoll.c +228 -0
  809. data/ext/libev/ev_kqueue.c +196 -0
  810. data/ext/libev/ev_poll.c +144 -0
  811. data/ext/libev/ev_port.c +165 -0
  812. data/ext/libev/ev_select.c +308 -0
  813. data/ext/libev/ev_vars.h +187 -0
  814. data/ext/libev/ev_win32.c +153 -0
  815. data/ext/libev/ev_wrap.h +178 -0
  816. data/ext/libev/event.c +401 -0
  817. data/ext/libev/event.h +158 -0
  818. data/ext/libev/install-sh +294 -0
  819. data/ext/libev/libev.m4 +38 -0
  820. data/ext/libev/ltmain.sh +6871 -0
  821. data/ext/libev/missing +336 -0
  822. data/ext/libev/mkinstalldirs +111 -0
  823. data/ext/nginx/Configuration.c +532 -182
  824. data/ext/nginx/Configuration.h +33 -10
  825. data/ext/nginx/ContentHandler.c +188 -53
  826. data/ext/nginx/ContentHandler.h +1 -1
  827. data/ext/nginx/{HelperServer.cpp → HelperAgent.cpp} +433 -299
  828. data/ext/nginx/HttpStatusExtractor.h +1 -1
  829. data/ext/nginx/ScgiRequestParser.h +68 -11
  830. data/ext/nginx/StaticContentHandler.c +4 -1
  831. data/ext/nginx/StaticContentHandler.h +1 -1
  832. data/ext/nginx/config +5 -5
  833. data/ext/nginx/ngx_http_passenger_module.c +315 -469
  834. data/ext/nginx/ngx_http_passenger_module.h +8 -17
  835. data/ext/oxt/backtrace.cpp +49 -41
  836. data/ext/oxt/backtrace.hpp +1 -1
  837. data/ext/oxt/detail/backtrace_disabled.hpp +1 -1
  838. data/ext/oxt/detail/backtrace_enabled.hpp +16 -15
  839. data/ext/oxt/detail/spin_lock_darwin.hpp +69 -0
  840. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +3 -4
  841. data/ext/oxt/detail/spin_lock_portable.hpp +1 -1
  842. data/ext/oxt/detail/spin_lock_pthreads.hpp +1 -1
  843. data/ext/oxt/detail/tracable_exception_disabled.hpp +1 -1
  844. data/ext/oxt/detail/tracable_exception_enabled.hpp +1 -1
  845. data/ext/oxt/dynamic_thread_group.hpp +195 -0
  846. data/ext/oxt/macros.hpp +1 -1
  847. data/ext/oxt/spin_lock.hpp +4 -2
  848. data/ext/oxt/system_calls.cpp +129 -13
  849. data/ext/oxt/system_calls.hpp +16 -2
  850. data/ext/oxt/thread.cpp +1 -1
  851. data/ext/oxt/thread.hpp +49 -14
  852. data/ext/oxt/tracable_exception.cpp +5 -5
  853. data/ext/oxt/tracable_exception.hpp +1 -1
  854. data/ext/phusion_passenger/extconf.rb +7 -2
  855. data/ext/phusion_passenger/native_support.c +733 -33
  856. data/{bin → helper-scripts}/passenger-spawn-server +50 -12
  857. data/helper-scripts/prespawn +63 -0
  858. data/lib/phusion_passenger.rb +113 -0
  859. data/lib/phusion_passenger/abstract_installer.rb +50 -12
  860. data/lib/phusion_passenger/abstract_request_handler.rb +432 -171
  861. data/lib/phusion_passenger/abstract_server.rb +125 -122
  862. data/lib/phusion_passenger/abstract_server_collection.rb +51 -22
  863. data/lib/phusion_passenger/admin_tools.rb +1 -1
  864. data/lib/phusion_passenger/admin_tools/memory_stats.rb +299 -0
  865. data/lib/phusion_passenger/admin_tools/server_instance.rb +334 -0
  866. data/lib/phusion_passenger/analytics_logger.rb +342 -0
  867. data/lib/phusion_passenger/{application.rb → app_process.rb} +73 -24
  868. data/lib/phusion_passenger/classic_rails/application_spawner.rb +344 -0
  869. data/lib/phusion_passenger/{railz → classic_rails}/cgi_fixed.rb +2 -2
  870. data/lib/phusion_passenger/{railz → classic_rails}/framework_spawner.rb +75 -98
  871. data/lib/phusion_passenger/{railz → classic_rails}/request_handler.rb +8 -6
  872. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +65 -0
  873. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +48 -0
  874. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +59 -0
  875. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb +54 -0
  876. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +130 -0
  877. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +47 -0
  878. data/lib/phusion_passenger/classic_rails_extensions/init.rb +123 -0
  879. data/lib/phusion_passenger/console_text_template.rb +1 -1
  880. data/lib/phusion_passenger/constants.rb +9 -5
  881. data/lib/phusion_passenger/debug_logging.rb +104 -0
  882. data/lib/phusion_passenger/dependencies.rb +187 -4
  883. data/lib/phusion_passenger/exceptions.rb +4 -4
  884. data/lib/phusion_passenger/html_template.rb +6 -8
  885. data/lib/phusion_passenger/message_channel.rb +137 -21
  886. data/lib/phusion_passenger/message_client.rb +173 -0
  887. data/lib/phusion_passenger/native_support.rb +108 -0
  888. data/lib/phusion_passenger/packaging.rb +82 -13
  889. data/lib/phusion_passenger/platform_info.rb +84 -475
  890. data/lib/phusion_passenger/platform_info/apache.rb +329 -0
  891. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +187 -0
  892. data/lib/phusion_passenger/platform_info/compiler.rb +154 -0
  893. data/lib/phusion_passenger/{events.rb → platform_info/curl.rb} +26 -23
  894. data/lib/phusion_passenger/platform_info/documentation_tools.rb +35 -0
  895. data/lib/phusion_passenger/platform_info/linux.rb +77 -0
  896. data/lib/phusion_passenger/platform_info/operating_system.rb +51 -0
  897. data/lib/phusion_passenger/platform_info/ruby.rb +198 -0
  898. data/lib/phusion_passenger/platform_info/zlib.rb +38 -0
  899. data/lib/phusion_passenger/plugin.rb +96 -0
  900. data/lib/phusion_passenger/public_api.rb +112 -0
  901. data/lib/phusion_passenger/rack/application_spawner.rb +146 -71
  902. data/lib/phusion_passenger/rack/request_handler.rb +36 -13
  903. data/lib/phusion_passenger/rails3_extensions/init.rb +204 -0
  904. data/lib/phusion_passenger/simple_benchmarking.rb +1 -1
  905. data/lib/phusion_passenger/spawn_manager.rb +137 -141
  906. data/lib/phusion_passenger/standalone/app_finder.rb +153 -0
  907. data/lib/phusion_passenger/standalone/command.rb +237 -0
  908. data/lib/phusion_passenger/standalone/config_file.rb +119 -0
  909. data/lib/phusion_passenger/standalone/help_command.rb +57 -0
  910. data/lib/phusion_passenger/standalone/main.rb +101 -0
  911. data/lib/phusion_passenger/standalone/package_runtime_command.rb +92 -0
  912. data/lib/phusion_passenger/standalone/runtime_installer.rb +466 -0
  913. data/lib/phusion_passenger/standalone/start_command.rb +510 -0
  914. data/lib/phusion_passenger/standalone/status_command.rb +62 -0
  915. data/lib/phusion_passenger/standalone/stop_command.rb +74 -0
  916. data/lib/phusion_passenger/standalone/utils.rb +42 -0
  917. data/lib/phusion_passenger/standalone/version_command.rb +42 -0
  918. data/lib/phusion_passenger/templates/framework_init_error.html.erb +1 -1
  919. data/lib/phusion_passenger/templates/standalone/cannot_write_to_dir.txt.erb +11 -0
  920. data/lib/phusion_passenger/templates/standalone/config.erb +69 -0
  921. data/lib/phusion_passenger/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +17 -0
  922. data/lib/phusion_passenger/templates/standalone/run_installer_as_root.txt.erb +8 -0
  923. data/lib/phusion_passenger/templates/standalone/welcome.txt.erb +8 -0
  924. data/lib/phusion_passenger/templates/standalone_default_root/index.html +1 -0
  925. data/lib/phusion_passenger/templates/version_not_found.html.erb +2 -2
  926. data/lib/phusion_passenger/utils.rb +476 -125
  927. data/lib/phusion_passenger/utils/file_system_watcher.rb +186 -0
  928. data/lib/phusion_passenger/utils/hosts_file_parser.rb +130 -0
  929. data/lib/phusion_passenger/utils/tmpdir.rb +70 -0
  930. data/lib/phusion_passenger/utils/unseekable_socket.rb +196 -0
  931. data/lib/phusion_passenger/wsgi/application_spawner.rb +24 -20
  932. data/lib/phusion_passenger/wsgi/request_handler.py +1 -1
  933. data/misc/copy_boost_headers.rb +36 -9
  934. data/misc/find_owner_pipe_leaks.rb +1 -1
  935. data/misc/render_error_pages.rb +1 -1
  936. data/misc/union_station_gateway.crt +32 -0
  937. data/test/config.yml.example +24 -13
  938. data/test/cxx/ApplicationPool_PoolTest.cpp +33 -0
  939. data/test/cxx/ApplicationPool_PoolTestCases.cpp +1029 -0
  940. data/test/cxx/ApplicationPool_ServerTest.cpp +308 -0
  941. data/test/cxx/ApplicationPool_Server_PoolTest.cpp +80 -0
  942. data/test/{Base64Test.cpp → cxx/Base64Test.cpp} +4 -2
  943. data/test/{CachedFileStatTest.cpp → cxx/CachedFileStatTest.cpp} +3 -3
  944. data/test/{CxxTestMain.cpp → cxx/CxxTestMain.cpp} +6 -27
  945. data/test/cxx/EventedClientTest.cpp +386 -0
  946. data/test/{FileChangeCheckerTest.cpp → cxx/FileChangeCheckerTest.cpp} +3 -5
  947. data/test/cxx/FileDescriptorTest.cpp +69 -0
  948. data/test/{HttpStatusExtractorTest.cpp → cxx/HttpStatusExtractorTest.cpp} +1 -1
  949. data/test/cxx/IOUtilsTest.cpp +398 -0
  950. data/test/cxx/LoggingTest.cpp +914 -0
  951. data/test/cxx/MessageChannelTest.cpp +672 -0
  952. data/test/cxx/MessageReadersWritersTest.cpp +574 -0
  953. data/test/cxx/MessageServerTest.cpp +383 -0
  954. data/test/{PoolOptionsTest.cpp → cxx/PoolOptionsTest.cpp} +2 -3
  955. data/test/{ScgiRequestParserTest.cpp → cxx/ScgiRequestParserTest.cpp} +53 -1
  956. data/test/cxx/ServerInstanceDirTest.cpp +186 -0
  957. data/test/cxx/SpawnManagerTest.cpp +161 -0
  958. data/test/cxx/StaticStringTest.cpp +86 -0
  959. data/test/{SystemTimeTest.cpp → cxx/SystemTimeTest.cpp} +2 -2
  960. data/test/cxx/TestSupport.cpp +166 -0
  961. data/test/cxx/TestSupport.h +254 -0
  962. data/test/cxx/UtilsTest.cpp +521 -0
  963. data/test/cxx/VariantMapTest.cpp +179 -0
  964. data/test/integration_tests/apache2_tests.rb +198 -127
  965. data/test/integration_tests/cgi_environment_spec.rb +26 -0
  966. data/test/integration_tests/mycook_spec.rb +2 -28
  967. data/test/integration_tests/nginx_tests.rb +125 -16
  968. data/test/integration_tests/spec_helper.rb +19 -0
  969. data/test/oxt/backtrace_test.cpp +19 -59
  970. data/test/oxt/counter.hpp +55 -0
  971. data/test/oxt/dynamic_thread_group_test.cpp +131 -0
  972. data/test/oxt/oxt_test_main.cpp +2 -2
  973. data/test/oxt/spin_lock_test.cpp +59 -0
  974. data/test/oxt/syscall_interruption_test.cpp +1 -1
  975. data/test/ruby/abstract_request_handler_spec.rb +346 -25
  976. data/test/ruby/abstract_server_collection_spec.rb +4 -3
  977. data/test/ruby/abstract_server_spec.rb +37 -27
  978. data/test/ruby/admin_tools_spec.rb +362 -0
  979. data/test/ruby/analytics_logger_spec.rb +253 -0
  980. data/test/ruby/{application_spec.rb → app_process_spec.rb} +14 -14
  981. data/test/ruby/classic_rails/application_spawner_spec.rb +89 -0
  982. data/test/ruby/classic_rails/framework_spawner_spec.rb +92 -0
  983. data/test/ruby/debug_logging_spec.rb +141 -0
  984. data/test/ruby/message_channel_spec.rb +51 -25
  985. data/test/ruby/rack/application_spawner_spec.rb +99 -82
  986. data/test/ruby/shared/abstract_server_spec.rb +23 -0
  987. data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +375 -0
  988. data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +38 -0
  989. data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +19 -0
  990. data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +15 -0
  991. data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +27 -0
  992. data/test/ruby/shared/spawners/preloading_spawner_spec.rb +29 -0
  993. data/test/ruby/shared/spawners/reload_all_spec.rb +36 -0
  994. data/test/ruby/shared/spawners/reload_single_spec.rb +52 -0
  995. data/test/ruby/shared/spawners/spawn_server_spec.rb +28 -0
  996. data/test/ruby/shared/spawners/spawner_spec.rb +273 -0
  997. data/test/ruby/shared/utils/pseudo_io_spec.rb +60 -0
  998. data/test/ruby/spawn_manager_spec.rb +104 -175
  999. data/test/ruby/spec_helper.rb +104 -0
  1000. data/test/ruby/utils/file_system_watcher_spec.rb +221 -0
  1001. data/test/ruby/utils/hosts_file_parser.rb +258 -0
  1002. data/test/ruby/utils/unseekable_socket_spec.rb +66 -0
  1003. data/test/ruby/utils_spec.rb +410 -59
  1004. data/test/ruby/wsgi/application_spawner_spec.rb +16 -20
  1005. data/test/stub/apache2/httpd.conf.erb +11 -6
  1006. data/test/stub/message_channel.rb +3 -1
  1007. data/test/stub/message_channel_2.rb +3 -1
  1008. data/test/stub/message_channel_3.rb +5 -3
  1009. data/test/stub/nginx/nginx.conf.erb +3 -2
  1010. data/test/stub/rails_apps/1.2/empty/Rakefile +10 -0
  1011. data/test/stub/rails_apps/1.2/empty/app/controllers/application.rb +7 -0
  1012. data/test/stub/rails_apps/{foobar → 1.2/empty}/app/helpers/application_helper.rb +0 -0
  1013. data/test/stub/rails_apps/{mycook → 1.2/empty}/config/boot.rb +3 -3
  1014. data/test/stub/rails_apps/1.2/empty/config/database.yml +31 -0
  1015. data/test/stub/rails_apps/1.2/empty/config/environment.rb +66 -0
  1016. data/test/stub/rails_apps/1.2/empty/config/environments/development.rb +21 -0
  1017. data/test/stub/rails_apps/{foobar → 1.2/empty}/config/environments/production.rb +0 -0
  1018. data/test/stub/rails_apps/1.2/empty/config/environments/staging.rb +18 -0
  1019. data/test/stub/rails_apps/1.2/empty/config/environments/test.rb +19 -0
  1020. data/test/stub/rails_apps/1.2/empty/config/routes.rb +23 -0
  1021. data/test/stub/rails_apps/1.2/empty/doc/README_FOR_APP +2 -0
  1022. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/404.html +0 -0
  1023. data/test/stub/rails_apps/1.2/empty/public/500.html +30 -0
  1024. data/test/stub/rails_apps/1.2/empty/public/dispatch.cgi +10 -0
  1025. data/test/stub/rails_apps/1.2/empty/public/dispatch.fcgi +24 -0
  1026. data/test/stub/rails_apps/1.2/empty/public/dispatch.rb +10 -0
  1027. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/favicon.ico +0 -0
  1028. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/images/rails.png +0 -0
  1029. data/test/stub/rails_apps/1.2/empty/public/robots.txt +1 -0
  1030. data/test/stub/rails_apps/1.2/empty/script/about +3 -0
  1031. data/test/stub/rails_apps/1.2/empty/script/breakpointer +3 -0
  1032. data/test/stub/rails_apps/1.2/empty/script/console +3 -0
  1033. data/test/stub/rails_apps/1.2/empty/script/destroy +3 -0
  1034. data/test/stub/rails_apps/1.2/empty/script/generate +3 -0
  1035. data/test/stub/rails_apps/1.2/empty/script/performance/benchmarker +3 -0
  1036. data/test/stub/rails_apps/1.2/empty/script/performance/profiler +3 -0
  1037. data/test/stub/rails_apps/1.2/empty/script/plugin +3 -0
  1038. data/test/stub/rails_apps/1.2/empty/script/process/inspector +3 -0
  1039. data/test/stub/rails_apps/1.2/empty/script/process/reaper +3 -0
  1040. data/test/stub/rails_apps/1.2/empty/script/process/spawner +3 -0
  1041. data/test/stub/rails_apps/1.2/empty/script/runner +3 -0
  1042. data/test/stub/rails_apps/1.2/empty/script/server +3 -0
  1043. data/test/stub/rails_apps/1.2/empty/test/test_helper.rb +28 -0
  1044. data/test/stub/rails_apps/2.0/empty/Rakefile +10 -0
  1045. data/test/stub/rails_apps/2.0/empty/app/controllers/application.rb +10 -0
  1046. data/test/stub/rails_apps/{mycook → 2.0/empty}/app/helpers/application_helper.rb +0 -0
  1047. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/boot.rb +3 -3
  1048. data/test/stub/rails_apps/2.0/empty/config/database.yml +31 -0
  1049. data/test/stub/rails_apps/2.0/empty/config/environment.rb +59 -0
  1050. data/test/stub/rails_apps/{mycook → 2.0/empty}/config/environments/development.rb +1 -1
  1051. data/test/stub/rails_apps/2.0/empty/config/environments/production.rb +18 -0
  1052. data/test/stub/rails_apps/2.0/empty/config/environments/staging.rb +18 -0
  1053. data/test/stub/rails_apps/2.0/empty/config/environments/test.rb +22 -0
  1054. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/initializers/inflections.rb +0 -0
  1055. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/initializers/mime_types.rb +0 -0
  1056. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/routes.rb +0 -0
  1057. data/test/stub/rails_apps/2.0/empty/doc/README_FOR_APP +2 -0
  1058. data/test/stub/rails_apps/2.0/empty/public/404.html +30 -0
  1059. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/422.html +0 -0
  1060. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/500.html +0 -0
  1061. data/test/stub/rails_apps/2.0/empty/public/dispatch.cgi +10 -0
  1062. data/test/stub/rails_apps/2.0/empty/public/dispatch.fcgi +24 -0
  1063. data/test/stub/rails_apps/2.0/empty/public/dispatch.rb +10 -0
  1064. data/test/stub/rails_apps/2.0/empty/public/favicon.ico +0 -0
  1065. data/test/stub/rails_apps/2.0/empty/public/images/rails.png +0 -0
  1066. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/robots.txt +0 -0
  1067. data/test/stub/rails_apps/2.0/empty/script/about +3 -0
  1068. data/test/stub/rails_apps/2.0/empty/script/console +3 -0
  1069. data/test/stub/rails_apps/2.0/empty/script/destroy +3 -0
  1070. data/test/stub/rails_apps/2.0/empty/script/generate +3 -0
  1071. data/test/stub/rails_apps/2.0/empty/script/performance/benchmarker +3 -0
  1072. data/test/stub/rails_apps/2.0/empty/script/performance/profiler +3 -0
  1073. data/test/stub/rails_apps/2.0/empty/script/performance/request +3 -0
  1074. data/test/stub/rails_apps/2.0/empty/script/plugin +3 -0
  1075. data/test/stub/rails_apps/2.0/empty/script/process/inspector +3 -0
  1076. data/test/stub/rails_apps/2.0/empty/script/process/reaper +3 -0
  1077. data/test/stub/rails_apps/2.0/empty/script/process/spawner +3 -0
  1078. data/test/stub/rails_apps/2.0/empty/script/runner +3 -0
  1079. data/test/stub/rails_apps/2.0/empty/script/server +3 -0
  1080. data/test/stub/rails_apps/2.0/empty/test/test_helper.rb +38 -0
  1081. data/test/stub/rails_apps/2.2/empty/Rakefile +10 -0
  1082. data/test/stub/rails_apps/2.2/empty/app/controllers/application.rb +15 -0
  1083. data/test/stub/rails_apps/2.2/empty/app/helpers/application_helper.rb +3 -0
  1084. data/test/stub/rails_apps/2.2/empty/config/boot.rb +109 -0
  1085. data/test/stub/rails_apps/2.2/empty/config/database.yml +31 -0
  1086. data/test/stub/rails_apps/2.2/empty/config/environment.rb +75 -0
  1087. data/test/stub/rails_apps/{foobar → 2.2/empty}/config/environments/development.rb +0 -0
  1088. data/test/stub/rails_apps/2.2/empty/config/environments/production.rb +24 -0
  1089. data/test/stub/rails_apps/2.2/empty/config/environments/staging.rb +24 -0
  1090. data/test/stub/rails_apps/2.2/empty/config/environments/test.rb +22 -0
  1091. data/test/stub/rails_apps/2.2/empty/config/initializers/inflections.rb +10 -0
  1092. data/test/stub/rails_apps/{mycook → 2.2/empty}/config/initializers/mime_types.rb +0 -0
  1093. data/test/stub/rails_apps/2.2/empty/config/initializers/new_rails_defaults.rb +17 -0
  1094. data/test/stub/rails_apps/2.2/empty/config/locales/en.yml +5 -0
  1095. data/test/stub/rails_apps/2.2/empty/config/routes.rb +43 -0
  1096. data/test/stub/rails_apps/2.2/empty/doc/README_FOR_APP +5 -0
  1097. data/test/stub/rails_apps/2.2/empty/public/404.html +30 -0
  1098. data/test/stub/rails_apps/2.2/empty/public/422.html +30 -0
  1099. data/test/stub/rails_apps/2.2/empty/public/500.html +33 -0
  1100. data/test/stub/rails_apps/2.2/empty/public/dispatch.cgi +10 -0
  1101. data/test/stub/rails_apps/2.2/empty/public/dispatch.fcgi +24 -0
  1102. data/test/stub/rails_apps/2.2/empty/public/dispatch.rb +10 -0
  1103. data/test/stub/rails_apps/2.2/empty/public/favicon.ico +0 -0
  1104. data/test/stub/rails_apps/2.2/empty/public/images/rails.png +0 -0
  1105. data/test/stub/rails_apps/2.2/empty/public/robots.txt +5 -0
  1106. data/test/stub/rails_apps/2.2/empty/script/about +4 -0
  1107. data/test/stub/rails_apps/2.2/empty/script/console +3 -0
  1108. data/test/stub/rails_apps/2.2/empty/script/dbconsole +3 -0
  1109. data/test/stub/rails_apps/2.2/empty/script/destroy +3 -0
  1110. data/test/stub/rails_apps/2.2/empty/script/generate +3 -0
  1111. data/test/stub/rails_apps/2.2/empty/script/performance/benchmarker +3 -0
  1112. data/test/stub/rails_apps/2.2/empty/script/performance/profiler +3 -0
  1113. data/test/stub/rails_apps/2.2/empty/script/performance/request +3 -0
  1114. data/test/stub/rails_apps/2.2/empty/script/plugin +3 -0
  1115. data/test/stub/rails_apps/2.2/empty/script/process/inspector +3 -0
  1116. data/test/stub/rails_apps/2.2/empty/script/process/reaper +3 -0
  1117. data/test/stub/rails_apps/2.2/empty/script/process/spawner +3 -0
  1118. data/test/stub/rails_apps/2.2/empty/script/runner +3 -0
  1119. data/test/stub/rails_apps/2.2/empty/script/server +3 -0
  1120. data/test/stub/rails_apps/2.2/empty/test/performance/browsing_test.rb +9 -0
  1121. data/test/stub/rails_apps/2.2/empty/test/test_helper.rb +38 -0
  1122. data/test/stub/rails_apps/2.3/empty/Rakefile +10 -0
  1123. data/test/stub/rails_apps/2.3/empty/app/controllers/application_controller.rb +10 -0
  1124. data/test/stub/rails_apps/2.3/empty/app/helpers/application_helper.rb +3 -0
  1125. data/test/stub/rails_apps/2.3/empty/config/boot.rb +110 -0
  1126. data/test/stub/rails_apps/2.3/empty/config/database.yml +31 -0
  1127. data/test/stub/rails_apps/2.3/empty/config/environment.rb +41 -0
  1128. data/test/stub/rails_apps/2.3/empty/config/environments/development.rb +17 -0
  1129. data/test/stub/rails_apps/2.3/empty/config/environments/production.rb +28 -0
  1130. data/test/stub/rails_apps/2.3/empty/config/environments/staging.rb +28 -0
  1131. data/test/stub/rails_apps/2.3/empty/config/environments/test.rb +28 -0
  1132. data/test/stub/rails_apps/2.3/empty/config/initializers/backtrace_silencers.rb +7 -0
  1133. data/test/stub/rails_apps/2.3/empty/config/initializers/inflections.rb +10 -0
  1134. data/test/stub/rails_apps/2.3/empty/config/initializers/mime_types.rb +5 -0
  1135. data/test/stub/rails_apps/2.3/empty/config/initializers/new_rails_defaults.rb +21 -0
  1136. data/test/stub/rails_apps/2.3/empty/config/initializers/session_store.rb +15 -0
  1137. data/test/stub/rails_apps/2.3/empty/config/locales/en.yml +5 -0
  1138. data/test/stub/rails_apps/2.3/empty/config/routes.rb +43 -0
  1139. data/test/stub/rails_apps/2.3/empty/db/seeds.rb +7 -0
  1140. data/test/stub/rails_apps/2.3/empty/doc/README_FOR_APP +2 -0
  1141. data/test/stub/rails_apps/2.3/empty/public/404.html +30 -0
  1142. data/test/stub/rails_apps/2.3/empty/public/422.html +30 -0
  1143. data/test/stub/rails_apps/2.3/empty/public/500.html +30 -0
  1144. data/test/stub/rails_apps/2.3/empty/public/favicon.ico +0 -0
  1145. data/test/stub/rails_apps/2.3/empty/public/images/rails.png +0 -0
  1146. data/test/stub/rails_apps/2.3/empty/public/robots.txt +5 -0
  1147. data/test/stub/rails_apps/2.3/empty/script/about +4 -0
  1148. data/test/stub/rails_apps/2.3/empty/script/console +3 -0
  1149. data/test/stub/rails_apps/2.3/empty/script/dbconsole +3 -0
  1150. data/test/stub/rails_apps/2.3/empty/script/destroy +3 -0
  1151. data/test/stub/rails_apps/2.3/empty/script/generate +3 -0
  1152. data/test/stub/rails_apps/2.3/empty/script/performance/benchmarker +3 -0
  1153. data/test/stub/rails_apps/2.3/empty/script/performance/profiler +3 -0
  1154. data/test/stub/rails_apps/2.3/empty/script/plugin +3 -0
  1155. data/test/stub/rails_apps/2.3/empty/script/runner +3 -0
  1156. data/test/stub/rails_apps/2.3/empty/script/server +3 -0
  1157. data/test/stub/rails_apps/2.3/empty/test/performance/browsing_test.rb +9 -0
  1158. data/test/stub/rails_apps/2.3/empty/test/test_helper.rb +38 -0
  1159. data/test/stub/rails_apps/2.3/foobar/Rakefile +10 -0
  1160. data/test/stub/rails_apps/{foobar/app/controllers/application.rb → 2.3/foobar/app/controllers/application_controller.rb} +0 -0
  1161. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/bar_controller_1.rb +0 -0
  1162. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/bar_controller_2.rb +0 -0
  1163. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/foo_controller.rb +0 -0
  1164. data/test/stub/rails_apps/2.3/foobar/app/helpers/application_helper.rb +3 -0
  1165. data/test/stub/rails_apps/2.3/foobar/config/boot.rb +110 -0
  1166. data/test/stub/rails_apps/{foobar → 2.3/foobar}/config/database.yml +0 -0
  1167. data/test/stub/rails_apps/{foobar → 2.3/foobar}/config/environment.rb +1 -1
  1168. data/test/stub/rails_apps/2.3/foobar/config/environments/development.rb +17 -0
  1169. data/test/stub/rails_apps/2.3/foobar/config/environments/production.rb +18 -0
  1170. data/test/stub/rails_apps/2.3/foobar/config/environments/staging.rb +18 -0
  1171. data/test/stub/rails_apps/{mycook → 2.3/foobar}/config/initializers/inflections.rb +0 -0
  1172. data/test/stub/rails_apps/2.3/foobar/config/initializers/mime_types.rb +5 -0
  1173. data/test/stub/rails_apps/2.3/foobar/config/routes.rb +35 -0
  1174. data/test/stub/rails_apps/2.3/foobar/script/about +3 -0
  1175. data/test/stub/rails_apps/2.3/foobar/script/console +3 -0
  1176. data/test/stub/rails_apps/2.3/foobar/script/dbconsole +3 -0
  1177. data/test/stub/rails_apps/2.3/foobar/script/destroy +3 -0
  1178. data/test/stub/rails_apps/2.3/foobar/script/generate +3 -0
  1179. data/test/stub/rails_apps/2.3/foobar/script/performance/benchmarker +3 -0
  1180. data/test/stub/rails_apps/2.3/foobar/script/performance/profiler +3 -0
  1181. data/test/stub/rails_apps/2.3/foobar/script/performance/request +3 -0
  1182. data/test/stub/rails_apps/2.3/foobar/script/plugin +3 -0
  1183. data/test/stub/rails_apps/2.3/foobar/script/process/inspector +3 -0
  1184. data/test/stub/rails_apps/2.3/foobar/script/process/reaper +3 -0
  1185. data/test/stub/rails_apps/2.3/foobar/script/process/spawner +3 -0
  1186. data/test/stub/rails_apps/2.3/foobar/script/runner +3 -0
  1187. data/test/stub/rails_apps/2.3/foobar/script/server +3 -0
  1188. data/test/stub/rails_apps/2.3/mycook/Rakefile +10 -0
  1189. data/test/stub/rails_apps/{mycook/app/controllers/application.rb → 2.3/mycook/app/controllers/application_controller.rb} +0 -0
  1190. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/recipes_controller.rb +0 -0
  1191. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/uploads_controller.rb +0 -0
  1192. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/welcome_controller.rb +0 -0
  1193. data/test/stub/rails_apps/2.3/mycook/app/helpers/application_helper.rb +3 -0
  1194. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/layouts/default.rhtml +0 -0
  1195. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/create.rhtml +0 -0
  1196. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/index.rhtml +0 -0
  1197. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/new.rhtml +0 -0
  1198. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/uploads/index.rhtml +0 -0
  1199. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/uploads/new.html.erb +0 -0
  1200. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/welcome/cached.rhtml +0 -0
  1201. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/welcome/index.rhtml +0 -0
  1202. data/test/stub/rails_apps/2.3/mycook/config/boot.rb +110 -0
  1203. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/database.yml +0 -0
  1204. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/environment.rb +1 -1
  1205. data/test/stub/rails_apps/2.3/mycook/config/environments/development.rb +18 -0
  1206. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/environments/production.rb +0 -0
  1207. data/test/stub/rails_apps/2.3/mycook/config/initializers/inflections.rb +10 -0
  1208. data/test/stub/rails_apps/2.3/mycook/config/initializers/mime_types.rb +5 -0
  1209. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/routes.rb +0 -0
  1210. data/test/stub/rails_apps/{mycook → 2.3/mycook}/log/useless.txt +0 -0
  1211. data/test/stub/rails_apps/2.3/mycook/public/404.html +30 -0
  1212. data/test/stub/rails_apps/2.3/mycook/public/422.html +30 -0
  1213. data/test/stub/rails_apps/2.3/mycook/public/500.html +30 -0
  1214. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.cgi +0 -0
  1215. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.fcgi +0 -0
  1216. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.rb +1 -1
  1217. data/test/stub/rails_apps/2.3/mycook/public/favicon.ico +0 -0
  1218. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/angrywizard.gif +0 -0
  1219. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/cookbook.gif +0 -0
  1220. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/header.png +0 -0
  1221. data/test/stub/rails_apps/2.3/mycook/public/images/rails.png +0 -0
  1222. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/application.js +0 -0
  1223. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/controls.js +73 -73
  1224. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/dragdrop.js +166 -165
  1225. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/effects.js +174 -166
  1226. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/prototype.js +362 -267
  1227. data/test/stub/rails_apps/2.3/mycook/public/robots.txt +5 -0
  1228. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/uploads.html +0 -0
  1229. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/welcome/cached.html +0 -0
  1230. data/test/stub/rails_apps/2.3/mycook/script/about +3 -0
  1231. data/test/stub/rails_apps/2.3/mycook/script/console +3 -0
  1232. data/test/stub/rails_apps/2.3/mycook/script/dbconsole +3 -0
  1233. data/test/stub/rails_apps/2.3/mycook/script/destroy +3 -0
  1234. data/test/stub/rails_apps/2.3/mycook/script/generate +3 -0
  1235. data/test/stub/rails_apps/2.3/mycook/script/performance/benchmarker +3 -0
  1236. data/test/stub/rails_apps/2.3/mycook/script/performance/profiler +3 -0
  1237. data/test/stub/rails_apps/2.3/mycook/script/performance/request +3 -0
  1238. data/test/stub/rails_apps/2.3/mycook/script/plugin +3 -0
  1239. data/test/stub/rails_apps/2.3/mycook/script/process/inspector +3 -0
  1240. data/test/stub/rails_apps/2.3/mycook/script/process/reaper +3 -0
  1241. data/test/stub/rails_apps/2.3/mycook/script/process/spawner +3 -0
  1242. data/test/stub/rails_apps/2.3/mycook/script/runner +3 -0
  1243. data/test/stub/rails_apps/2.3/mycook/script/server +3 -0
  1244. data/test/stub/rails_apps/{mycook → 2.3/mycook}/sites/some.site/public/uploads.html +0 -0
  1245. data/test/stub/rails_apps/{mycook → 2.3/mycook}/sites/some.site/public/welcome/cached.html +0 -0
  1246. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/cache/useless.txt +0 -0
  1247. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/pids/useless.txt +0 -0
  1248. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/sessions/useless.txt +0 -0
  1249. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/sockets/useless.txt +0 -0
  1250. data/test/stub/rails_apps/3.0/empty/Gemfile +22 -0
  1251. data/test/stub/rails_apps/3.0/empty/Rakefile +10 -0
  1252. data/test/stub/rails_apps/3.0/empty/app/controllers/application_controller.rb +4 -0
  1253. data/test/stub/rails_apps/3.0/empty/app/helpers/application_helper.rb +2 -0
  1254. data/test/stub/rails_apps/3.0/empty/app/views/layouts/application.html.erb +14 -0
  1255. data/test/stub/rails_apps/3.0/empty/config.ru +4 -0
  1256. data/test/stub/rails_apps/3.0/empty/config/application.rb +48 -0
  1257. data/test/stub/rails_apps/3.0/empty/config/boot.rb +13 -0
  1258. data/test/stub/rails_apps/3.0/empty/config/database.yml +22 -0
  1259. data/test/stub/rails_apps/3.0/empty/config/environment.rb +5 -0
  1260. data/test/stub/rails_apps/3.0/empty/config/environments/development.rb +19 -0
  1261. data/test/stub/rails_apps/3.0/empty/config/environments/production.rb +48 -0
  1262. data/test/stub/rails_apps/3.0/empty/config/environments/test.rb +32 -0
  1263. data/test/stub/rails_apps/3.0/empty/config/initializers/backtrace_silencers.rb +7 -0
  1264. data/test/stub/rails_apps/3.0/empty/config/initializers/inflections.rb +10 -0
  1265. data/test/stub/rails_apps/3.0/empty/config/initializers/mime_types.rb +5 -0
  1266. data/test/stub/rails_apps/3.0/empty/config/initializers/passenger.rb +1 -0
  1267. data/test/stub/rails_apps/3.0/empty/config/initializers/secret_token.rb +7 -0
  1268. data/test/stub/rails_apps/3.0/empty/config/initializers/session_store.rb +8 -0
  1269. data/test/stub/rails_apps/3.0/empty/config/locales/en.yml +5 -0
  1270. data/test/stub/rails_apps/3.0/empty/config/routes.rb +58 -0
  1271. data/test/stub/rails_apps/3.0/empty/db/seeds.rb +7 -0
  1272. data/test/stub/rails_apps/3.0/empty/doc/README_FOR_APP +2 -0
  1273. data/test/stub/rails_apps/3.0/empty/log/development.log +3 -0
  1274. data/test/stub/rails_apps/3.0/empty/public/404.html +26 -0
  1275. data/test/stub/rails_apps/3.0/empty/public/422.html +26 -0
  1276. data/test/stub/rails_apps/3.0/empty/public/500.html +26 -0
  1277. data/test/stub/rails_apps/3.0/empty/public/favicon.ico +0 -0
  1278. data/test/stub/rails_apps/3.0/empty/public/index.html +279 -0
  1279. data/test/stub/rails_apps/3.0/empty/public/robots.txt +5 -0
  1280. data/test/stub/rails_apps/3.0/empty/script/rails +9 -0
  1281. data/test/stub/rails_apps/3.0/empty/test/performance/browsing_test.rb +9 -0
  1282. data/test/stub/rails_apps/3.0/empty/test/test_helper.rb +13 -0
  1283. data/test/stub/spawn_server.rb +4 -2
  1284. data/test/stub/vendor_rails/minimal/actionpack/lib/action_controller.rb +3 -0
  1285. data/test/stub/vendor_rails/minimal/railties/lib/initializer.rb +7 -2
  1286. data/test/support/apache2_controller.rb +10 -2
  1287. data/test/support/nginx_controller.rb +3 -2
  1288. data/test/support/test_helper.rb +282 -46
  1289. data/test/{support → tut}/tut.h +6 -0
  1290. data/test/{support → tut}/tut_reporter.h +0 -0
  1291. metadata +824 -266
  1292. data/benchmark/ApplicationPool.cpp +0 -52
  1293. data/benchmark/accept_vs_socketpair_vs_named_pipes.rb +0 -126
  1294. data/benchmark/dispatcher.rb +0 -42
  1295. data/benchmark/overhead_of_password_checking.rb +0 -81
  1296. data/benchmark/socket_connections_vs_persistent_pipe.rb +0 -99
  1297. data/benchmark/unix_sockets_vs_pipes.rb +0 -83
  1298. data/ext/boost/LICENSE.TXT +0 -23
  1299. data/ext/boost/VERSION.TXT +0 -1
  1300. data/ext/boost/detail/sp_counted_base.hpp +0 -81
  1301. data/ext/boost/src/pthread/exceptions.cpp +0 -146
  1302. data/ext/boost/src/win32/exceptions.cpp +0 -124
  1303. data/ext/boost/src/win32/thread.cpp +0 -629
  1304. data/ext/boost/src/win32/timeconv.inl +0 -130
  1305. data/ext/boost/src/win32/tss_dll.cpp +0 -72
  1306. data/ext/boost/src/win32/tss_pe.cpp +0 -269
  1307. data/ext/boost/thread/pthread/thread.hpp +0 -339
  1308. data/ext/boost/thread/pthread/tss.hpp +0 -103
  1309. data/ext/common/Application.h +0 -511
  1310. data/ext/common/ApplicationPoolServer.h +0 -794
  1311. data/ext/common/ApplicationPoolServerExecutable.cpp +0 -743
  1312. data/ext/common/ApplicationPoolStatusReporter.h +0 -336
  1313. data/ext/common/DummySpawnManager.h +0 -108
  1314. data/ext/common/StandardApplicationPool.h +0 -821
  1315. data/ext/common/SystemTime.h +0 -88
  1316. data/lib/phusion_passenger/admin_tools/control_process.rb +0 -150
  1317. data/lib/phusion_passenger/railz/application_spawner.rb +0 -463
  1318. data/lib/phusion_passenger/templates/invalid_app_root.html.erb +0 -9
  1319. data/test/ApplicationPoolServerTest.cpp +0 -114
  1320. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +0 -33
  1321. data/test/ApplicationPoolTest.cpp +0 -599
  1322. data/test/MessageChannelTest.cpp +0 -320
  1323. data/test/SpawnManagerTest.cpp +0 -64
  1324. data/test/StandardApplicationPoolTest.cpp +0 -27
  1325. data/test/StaticStringTest.cpp +0 -51
  1326. data/test/UtilsTest.cpp +0 -257
  1327. data/test/ruby/rails/application_spawner_spec.rb +0 -159
  1328. data/test/ruby/rails/framework_spawner_spec.rb +0 -133
  1329. data/test/ruby/rails/minimal_spawner_spec.rb +0 -93
  1330. data/test/ruby/rails/spawner_error_handling_spec.rb +0 -107
  1331. data/test/ruby/rails/spawner_privilege_lowering_spec.rb +0 -97
  1332. data/test/ruby/spawn_server_spec.rb +0 -26
  1333. data/test/stub/MessageServer.dSYM/Contents/Info.plist +0 -25
  1334. data/test/stub/MessageServer.dSYM/Contents/Resources/DWARF/MessageServer +0 -0
  1335. data/test/support/Support.cpp +0 -84
  1336. data/test/support/Support.h +0 -118
  1337. data/test/support/config.rb +0 -38
  1338. data/test/support/run_rspec_tests.rb +0 -10
@@ -13,6 +13,7 @@
13
13
  <ul>
14
14
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
15
15
  <li><a href="modules.html"><span>Modules</span></a></li>
16
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
16
17
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
17
18
  <li><a href="files.html"><span>Files</span></a></li>
18
19
  </ul>
@@ -20,14 +21,59 @@
20
21
  <div class="tabs">
21
22
  <ul>
22
23
  <li class="current"><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
24
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
23
25
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
24
26
  </ul>
25
27
  </div>
26
28
  </div>
27
29
  <div class="contents">
28
30
  <h1>Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
31
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1AbstractSpawnManager.html">Passenger::AbstractSpawnManager</a></td><td class="indexvalue">Spawning of application processes </td></tr>
32
+ <tr><td class="indexkey"><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td class="indexvalue">Abstract base class for watching agent processes </td></tr>
33
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1ArgumentException.html">Passenger::ArgumentException</a></td><td class="indexvalue">Indicates that a specified argument is incorrect or violates a requirement </td></tr>
34
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1ArrayMessage.html">Passenger::ArrayMessage</a></td><td class="indexvalue">For array messages </td></tr>
35
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1BufferedUpload.html">Passenger::BufferedUpload</a></td><td class="indexvalue">Represents a buffered upload file </td></tr>
36
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1BusyException.html">Passenger::BusyException</a></td><td class="indexvalue">The application pool is too busy and cannot fulfill a get() request </td></tr>
37
+ <tr><td class="indexkey"><a class="el" href="classClient.html">Client</a></td><td class="indexvalue">A representation of a <a class="el" href="classClient.html" title="A representation of a Client from the Server&#39;s point of view.">Client</a> from the Server's point of view </td></tr>
38
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1MessageServer_1_1ClientContext.html">Passenger::MessageServer::ClientContext</a></td><td class="indexvalue">Interface for client context objects </td></tr>
39
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1MessageServer_1_1CommonClientContext.html">Passenger::MessageServer::CommonClientContext</a></td><td class="indexvalue">A common client context, containing client-specific information used by <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> itself </td></tr>
40
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1ConfigurationException.html">Passenger::ConfigurationException</a></td><td class="indexvalue">Thrown when an invalid configuration is given </td></tr>
29
41
  <tr><td class="indexkey"><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td class="indexvalue">Utility class for determining URI-to-application directory mappings </td></tr>
42
+ <tr><td class="indexkey"><a class="el" href="structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html">Passenger::MessageServer::DisconnectEventBroadcastGuard</a></td><td class="indexvalue">Calls clientDisconnected() on all handlers when destroyed </td></tr>
43
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1EOFException.html">Passenger::EOFException</a></td><td class="indexvalue">An unexpected end-of-file I/O error </td></tr>
44
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1EventedClient.html">Passenger::EventedClient</a></td><td class="indexvalue">A utility class for making I/O handling in non-blocking libev evented servers much easier </td></tr>
45
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1EventedMessageServer.html">Passenger::EventedMessageServer</a></td><td class="indexvalue">Note when overriding onNewClient: call the parent method first! It does some initialization but might disconnect the client if that initialization fails </td></tr>
46
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1EventedServer.html">Passenger::EventedServer</a></td><td class="indexvalue">A base class for writing single-threaded, evented servers that use non-blocking I/O </td></tr>
47
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1EventFd.html">Passenger::EventFd</a></td><td class="indexvalue">A synchronization mechanism that's implemented with file descriptors, and as such can be used in combination with select() and friends </td></tr>
48
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1FileDescriptor.html">Passenger::FileDescriptor</a></td><td class="indexvalue">Wrapper class around a file descriptor integer, for RAII behavior </td></tr>
49
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1FileNotFoundException.html">Passenger::FileNotFoundException</a></td><td class="indexvalue">Thrown when a certain file cannot be found </td></tr>
50
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1FileSystemException.html">Passenger::FileSystemException</a></td><td class="indexvalue">A filesystem error, as returned by the operating system </td></tr>
51
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1MessageServer_1_1Handler.html">Passenger::MessageServer::Handler</a></td><td class="indexvalue">An abstract message handler class </td></tr>
52
+ <tr><td class="indexkey"><a class="el" href="structPassenger_1_1StaticString_1_1Hash.html">Passenger::StaticString::Hash</a></td><td class="indexvalue">A hash function object for <a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a> </td></tr>
30
53
  <tr><td class="indexkey"><a class="el" href="classHooks.html">Hooks</a></td><td class="indexvalue">Apache hook functions, wrapped in a class </td></tr>
54
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1HttpStatusExtractor.html">Passenger::HttpStatusExtractor</a></td><td class="indexvalue">Utility class for extracting the HTTP status value from an HTTP response </td></tr>
55
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1IOException.html">Passenger::IOException</a></td><td class="indexvalue">Represents an error that occured during an I/O operation </td></tr>
56
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td class="indexvalue">Convenience class for I/O operations on file descriptors </td></tr>
57
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td class="indexvalue">Simple pluggable request/response messaging server framework </td></tr>
58
+ <tr><td class="indexkey"><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td class="indexvalue">This struct encapsulates information for ApplicationPool::get() and for <a class="el" href="classPassenger_1_1SpawnManager.html#a88a94ba4d41dab492cb1dc8a0f998973" title="Spawn a new application process.">SpawnManager::spawn()</a>, such as which application is to be spawned </td></tr>
59
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1Process.html">Passenger::Process</a></td><td class="indexvalue">Represents a single application process, as spawned by <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> or by ApplicationPool::Interface::get() </td></tr>
60
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1RandomGenerator.html">Passenger::RandomGenerator</a></td><td class="indexvalue">A random data generator </td></tr>
61
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1RuntimeException.html">Passenger::RuntimeException</a></td><td class="indexvalue">A generic runtime exception </td></tr>
62
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1ScalarMessage.html">Passenger::ScalarMessage</a></td><td class="indexvalue">Class for reading a scalar message </td></tr>
63
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1ScgiRequestParser.html">Passenger::ScgiRequestParser</a></td><td class="indexvalue">A parser for SCGI requests </td></tr>
64
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1SecurityException.html">Passenger::SecurityException</a></td><td class="indexvalue">Represents some kind of security error </td></tr>
65
+ <tr><td class="indexkey"><a class="el" href="classServer.html">Server</a></td><td class="indexvalue">A representation of the <a class="el" href="classServer.html" title="A representation of the Server responsible for handling Client instances.">Server</a> responsible for handling <a class="el" href="classClient.html" title="A representation of a Client from the Server&#39;s point of view.">Client</a> instances </td></tr>
66
+ <tr><td class="indexkey"><a class="el" href="classServerInstanceDirToucher.html">ServerInstanceDirToucher</a></td><td class="indexvalue">Touch all files in the server instance dir every 6 hours in order to prevent /tmp cleaners from weaking havoc: <a href="http://code.google.com/p/phusion-passenger/issues/detail?id=365">http://code.google.com/p/phusion-passenger/issues/detail?id=365</a> </td></tr>
67
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1Session.html">Passenger::Session</a></td><td class="indexvalue">Represents a single request/response pair of an application process </td></tr>
68
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1SpawnException.html">Passenger::SpawnException</a></td><td class="indexvalue">Thrown when <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> or ApplicationPool fails to spawn an application instance </td></tr>
69
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1SpawnManager.html">Passenger::SpawnManager</a></td><td class="indexvalue">An <a class="el" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes.">AbstractSpawnManager</a> implementation </td></tr>
70
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1StandardSession.html">Passenger::StandardSession</a></td><td class="indexvalue">A "standard" implementation of <a class="el" href="classPassenger_1_1Session.html" title="Represents a single request/response pair of an application process.">Session</a> </td></tr>
71
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1StaticString.html">Passenger::StaticString</a></td><td class="indexvalue">An immutable, static byte buffer </td></tr>
72
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td class="indexvalue">Represents an error returned by a system call or a standard library call </td></tr>
73
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1TimeoutException.html">Passenger::TimeoutException</a></td><td class="indexvalue">An exception indicating that some timeout expired </td></tr>
74
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1TimeRetrievalException.html">Passenger::TimeRetrievalException</a></td><td class="indexvalue">Unable to retrieve the system time using <code>time()</code> </td></tr>
75
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1Uint16Message.html">Passenger::Uint16Message</a></td><td class="indexvalue">For 16-bit big-endian integers </td></tr>
76
+ <tr><td class="indexkey"><a class="el" href="classPassenger_1_1Uint32Message.html">Passenger::Uint32Message</a></td><td class="indexvalue">For 32-bit big-endian integers </td></tr>
31
77
  </table>
32
78
  </div>
33
79
  <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
@@ -0,0 +1,82 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <title>Passenger: Configuration.h Source File</title>
6
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
7
+ <link href="doxygen.css" rel="stylesheet" type="text/css"/>
8
+ </head>
9
+ <body>
10
+ <!-- Generated by Doxygen 1.6.2 -->
11
+ <div class="navigation" id="top">
12
+ <div class="tabs">
13
+ <ul>
14
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
15
+ <li><a href="modules.html"><span>Modules</span></a></li>
16
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
17
+ <li><a href="annotated.html"><span>Classes</span></a></li>
18
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
19
+ </ul>
20
+ </div>
21
+ <div class="tabs">
22
+ <ul>
23
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
24
+ </ul>
25
+ </div>
26
+ <h1>Configuration.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
27
+ <a name="l00002"></a>00002 <span class="comment"> * Phusion Passenger - http://www.modrails.com/</span>
28
+ <a name="l00003"></a>00003 <span class="comment"> * Copyright (c) 2010 Phusion</span>
29
+ <a name="l00004"></a>00004 <span class="comment"> *</span>
30
+ <a name="l00005"></a>00005 <span class="comment"> * &quot;Phusion Passenger&quot; is a trademark of Hongli Lai &amp; Ninh Bui.</span>
31
+ <a name="l00006"></a>00006 <span class="comment"> *</span>
32
+ <a name="l00007"></a>00007 <span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy</span>
33
+ <a name="l00008"></a>00008 <span class="comment"> * of this software and associated documentation files (the &quot;Software&quot;), to deal</span>
34
+ <a name="l00009"></a>00009 <span class="comment"> * in the Software without restriction, including without limitation the rights</span>
35
+ <a name="l00010"></a>00010 <span class="comment"> * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span>
36
+ <a name="l00011"></a>00011 <span class="comment"> * copies of the Software, and to permit persons to whom the Software is</span>
37
+ <a name="l00012"></a>00012 <span class="comment"> * furnished to do so, subject to the following conditions:</span>
38
+ <a name="l00013"></a>00013 <span class="comment"> *</span>
39
+ <a name="l00014"></a>00014 <span class="comment"> * The above copyright notice and this permission notice shall be included in</span>
40
+ <a name="l00015"></a>00015 <span class="comment"> * all copies or substantial portions of the Software.</span>
41
+ <a name="l00016"></a>00016 <span class="comment"> *</span>
42
+ <a name="l00017"></a>00017 <span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span>
43
+ <a name="l00018"></a>00018 <span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span>
44
+ <a name="l00019"></a>00019 <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span>
45
+ <a name="l00020"></a>00020 <span class="comment"> * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span>
46
+ <a name="l00021"></a>00021 <span class="comment"> * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span>
47
+ <a name="l00022"></a>00022 <span class="comment"> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN</span>
48
+ <a name="l00023"></a>00023 <span class="comment"> * THE SOFTWARE.</span>
49
+ <a name="l00024"></a>00024 <span class="comment"> */</span>
50
+ <a name="l00025"></a>00025 <span class="preprocessor">#ifndef _PASSENGER_CONFIGURATION_H_</span>
51
+ <a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define _PASSENGER_CONFIGURATION_H_</span>
52
+ <a name="l00027"></a>00027 <span class="preprocessor"></span>
53
+ <a name="l00028"></a>00028 <span class="preprocessor">#include &lt;apr_pools.h&gt;</span>
54
+ <a name="l00029"></a>00029 <span class="preprocessor">#include &lt;httpd.h&gt;</span>
55
+ <a name="l00030"></a>00030 <span class="preprocessor">#include &lt;http_config.h&gt;</span>
56
+ <a name="l00031"></a>00031
57
+ <a name="l00032"></a>00032 <span class="preprocessor">#ifdef __cplusplus</span>
58
+ <a name="l00033"></a>00033 <span class="preprocessor"></span> <span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
59
+ <a name="l00034"></a>00034 <span class="preprocessor">#endif</span>
60
+ <a name="l00035"></a>00035 <span class="preprocessor"></span>
61
+ <a name="l00036"></a>00036 <span class="comment"></span>
62
+ <a name="l00037"></a>00037 <span class="comment">/** Configuration hook for per-directory configuration structure creation. */</span>
63
+ <a name="l00038"></a>00038 <span class="keywordtype">void</span> *passenger_config_create_dir(apr_pool_t *p, <span class="keywordtype">char</span> *dirspec);
64
+ <a name="l00039"></a>00039 <span class="comment"></span>
65
+ <a name="l00040"></a>00040 <span class="comment">/** Configuration hook for per-directory configuration structure merging. */</span>
66
+ <a name="l00041"></a>00041 <span class="keywordtype">void</span> *passenger_config_merge_dir(apr_pool_t *p, <span class="keywordtype">void</span> *basev, <span class="keywordtype">void</span> *addv);
67
+ <a name="l00042"></a>00042 <span class="comment"></span>
68
+ <a name="l00043"></a>00043 <span class="comment">/** Apache module commands array. */</span>
69
+ <a name="l00044"></a>00044 <span class="keyword">extern</span> <span class="keyword">const</span> command_rec passenger_commands[];
70
+ <a name="l00045"></a>00045
71
+ <a name="l00046"></a>00046
72
+ <a name="l00047"></a>00047 <span class="preprocessor">#ifdef __cplusplus</span>
73
+ <a name="l00048"></a>00048 <span class="preprocessor"></span> }
74
+ <a name="l00049"></a>00049 <span class="preprocessor">#endif</span>
75
+ <a name="l00050"></a>00050 <span class="preprocessor"></span>
76
+ <a name="l00051"></a>00051 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_CONFIGURATION_H_ */</span>
77
+ </pre></div></div>
78
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
79
+ <a href="http://www.doxygen.org/index.html">
80
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
81
+ </body>
82
+ </html>
@@ -1,10 +1,13 @@
1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
- <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
3
5
  <title>Passenger: Member List</title>
4
- <link href="tabs.css" rel="stylesheet" type="text/css">
5
- <link href="doxygen.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.5.8 -->
6
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
7
+ <link href="doxygen.css" rel="stylesheet" type="text/css"/>
8
+ </head>
9
+ <body>
10
+ <!-- Generated by Doxygen 1.6.2 -->
8
11
  <div class="navigation" id="top">
9
12
  <div class="tabs">
10
13
  <ul>
@@ -24,27 +27,28 @@
24
27
  </div>
25
28
  </div>
26
29
  <div class="contents">
27
- <h1>AgentWatcher Member List</h1>This is the complete list of members for <a class="el" href="classAgentWatcher.html">AgentWatcher</a>, including all inherited members.<p><table>
28
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#c6325cb940f9c25ef2f44aca00c30755">execProgram</a>() const </td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, protected, virtual]</code></td></tr>
29
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a3eba8fe19117a84764f5f653a03612d">feedbackFd</a></td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected]</code></td></tr>
30
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#e65876d2cc680b739dfee02378233340">forceShutdown</a>()</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, virtual]</code></td></tr>
31
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#80ef9eaf1a84d994e7ba5f1507616fde">getErrorBacktrace</a>() const </td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline]</code></td></tr>
32
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#b99d4346d7b69d86db1b14206e7caadb">getErrorMessage</a>() const </td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline]</code></td></tr>
33
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#77279925d786a774bdf097468c36af96">getExeFilename</a>() const =0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected, pure virtual]</code></td></tr>
34
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#c0749ab103ed5d1adc81b53a7ddc93d8">getFeedbackFd</a>() const </td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline]</code></td></tr>
35
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a358a05d41db4ddab9696727849e0d4c">killAndWait</a>(pid_t pid)</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, protected]</code></td></tr>
36
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#22ad2ee317c4e254833ab07f377ed7fd">lock</a></td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [mutable, protected]</code></td></tr>
37
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#982a388ed5c485ab9615c5bc0abbc71e">name</a>() const =0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [pure virtual]</code></td></tr>
38
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#76de201bbc7111c01c31668211494fa8">pid</a></td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected]</code></td></tr>
39
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#4c1c454374c8916788fee166beacfb05">processStartupInfo</a>(pid_t pid, FileDescriptor &amp;fd, const vector&lt; string &gt; &amp;args)=0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected, pure virtual]</code></td></tr>
40
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#45bc0e41253a0c287e14f708f7dba1e6">sendStartupArguments</a>(pid_t pid, FileDescriptor &amp;fd)=0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected, pure virtual]</code></td></tr>
41
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a9f83ed13b06ef80d0417f9c313cf61e">sendStartupInfo</a>(MessageChannel &amp;channel)=0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [pure virtual]</code></td></tr>
42
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#daf1c0a7104aea662d90f639066b8247">start</a>()</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, virtual]</code></td></tr>
43
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#3da11d23ed3b1210a24844856b7f3159">startWatching</a>()</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, virtual]</code></td></tr>
44
- <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#c4fa4122858073a1e3e1d96ce2ade6f2">threadExceptionMessage</a></td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected]</code></td></tr>
30
+ <h1>AgentWatcher Member List</h1>This is the complete list of members for <a class="el" href="classAgentWatcher.html">AgentWatcher</a>, including all inherited members.<table>
31
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#ac6325cb940f9c25ef2f44aca00c30755">execProgram</a>() const </td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, protected, virtual]</code></td></tr>
32
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#aa3eba8fe19117a84764f5f653a03612d">feedbackFd</a></td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected]</code></td></tr>
33
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#ae65876d2cc680b739dfee02378233340">forceShutdown</a>()</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, virtual]</code></td></tr>
34
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a80ef9eaf1a84d994e7ba5f1507616fde">getErrorBacktrace</a>() const </td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline]</code></td></tr>
35
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#ab99d4346d7b69d86db1b14206e7caadb">getErrorMessage</a>() const </td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline]</code></td></tr>
36
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a77279925d786a774bdf097468c36af96">getExeFilename</a>() const =0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected, pure virtual]</code></td></tr>
37
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#ac0749ab103ed5d1adc81b53a7ddc93d8">getFeedbackFd</a>() const </td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline]</code></td></tr>
38
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a9c50694046e32a8b900420cb473e9e16">killAndWait</a>(pid_t pid)</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, protected, static]</code></td></tr>
39
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a22ad2ee317c4e254833ab07f377ed7fd">lock</a></td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [mutable, protected]</code></td></tr>
40
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a982a388ed5c485ab9615c5bc0abbc71e">name</a>() const =0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [pure virtual]</code></td></tr>
41
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a76de201bbc7111c01c31668211494fa8">pid</a></td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected]</code></td></tr>
42
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a4c1c454374c8916788fee166beacfb05">processStartupInfo</a>(pid_t pid, FileDescriptor &amp;fd, const vector&lt; string &gt; &amp;args)=0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected, pure virtual]</code></td></tr>
43
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a45bc0e41253a0c287e14f708f7dba1e6">sendStartupArguments</a>(pid_t pid, FileDescriptor &amp;fd)=0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected, pure virtual]</code></td></tr>
44
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#aa9f83ed13b06ef80d0417f9c313cf61e">sendStartupInfo</a>(MessageChannel &amp;channel)=0</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [pure virtual]</code></td></tr>
45
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#adaf1c0a7104aea662d90f639066b8247">start</a>()</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, virtual]</code></td></tr>
46
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a3da11d23ed3b1210a24844856b7f3159">startWatching</a>()</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, virtual]</code></td></tr>
47
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#ac4fa4122858073a1e3e1d96ce2ade6f2">threadExceptionMessage</a></td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [protected]</code></td></tr>
48
+ <tr class="memlist"><td><a class="el" href="classAgentWatcher.html#a231e843bd6d916650f7e7a641c5b4ca4">timedWaitPid</a>(pid_t pid, int *status, unsigned long long timeout)</td><td><a class="el" href="classAgentWatcher.html">AgentWatcher</a></td><td><code> [inline, protected, static]</code></td></tr>
45
49
  </table></div>
46
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:56 2010 for Passenger by&nbsp;
50
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
47
51
  <a href="http://www.doxygen.org/index.html">
48
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
52
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
49
53
  </body>
50
54
  </html>
@@ -1,10 +1,13 @@
1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
- <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
3
5
  <title>Passenger: AgentWatcher Class Reference</title>
4
- <link href="tabs.css" rel="stylesheet" type="text/css">
5
- <link href="doxygen.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.5.8 -->
6
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
7
+ <link href="doxygen.css" rel="stylesheet" type="text/css"/>
8
+ </head>
9
+ <body>
10
+ <!-- Generated by Doxygen 1.6.2 -->
8
11
  <div class="navigation" id="top">
9
12
  <div class="tabs">
10
13
  <ul>
@@ -24,82 +27,69 @@
24
27
  </div>
25
28
  </div>
26
29
  <div class="contents">
27
- <h1>AgentWatcher Class Reference</h1><!-- doxytag: class="AgentWatcher" -->Abstract base class for watching agent processes.
28
- <a href="#_details">More...</a>
29
- <p>
30
- Inherited by HelperAgentWatcher, and LoggingAgentWatcher.
31
- <p>
32
-
33
- <p>
34
- <a href="classAgentWatcher-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
35
- <tr><td></td></tr>
36
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
37
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a9f83ed13b06ef80d0417f9c313cf61e">sendStartupInfo</a> (<a class="el" href="classPassenger_1_1MessageChannel.html">MessageChannel</a> &amp;channel)=0</td></tr>
38
-
39
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send the started agent process's startup information over the given channel, to the starter process. <a href="#a9f83ed13b06ef80d0417f9c313cf61e"></a><br></td></tr>
40
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#982a388ed5c485ab9615c5bc0abbc71e">name</a> () const =0</td></tr>
41
-
42
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the name of the agent that this class is watching. <a href="#982a388ed5c485ab9615c5bc0abbc71e"></a><br></td></tr>
43
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#daf1c0a7104aea662d90f639066b8247">start</a> ()</td></tr>
44
-
45
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Starts the agent process. <a href="#daf1c0a7104aea662d90f639066b8247"></a><br></td></tr>
46
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#3da11d23ed3b1210a24844856b7f3159">startWatching</a> ()</td></tr>
47
-
48
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start watching the agent process. <a href="#3da11d23ed3b1210a24844856b7f3159"></a><br></td></tr>
49
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#e65876d2cc680b739dfee02378233340">forceShutdown</a> ()</td></tr>
50
-
51
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Force the agent process to shut down. <a href="#e65876d2cc680b739dfee02378233340"></a><br></td></tr>
52
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#b99d4346d7b69d86db1b14206e7caadb">getErrorMessage</a> () const </td></tr>
53
-
54
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the watcher thread has encountered an error, then the error message will be stored here. <a href="#b99d4346d7b69d86db1b14206e7caadb"></a><br></td></tr>
55
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="80ef9eaf1a84d994e7ba5f1507616fde"></a><!-- doxytag: member="AgentWatcher::getErrorBacktrace" ref="80ef9eaf1a84d994e7ba5f1507616fde" args="() const " -->
56
- string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#80ef9eaf1a84d994e7ba5f1507616fde">getErrorBacktrace</a> () const </td></tr>
57
-
58
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The error backtrace, if applicable. <br></td></tr>
59
- <tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#c0749ab103ed5d1adc81b53a7ddc93d8">getFeedbackFd</a> () const </td></tr>
60
-
61
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the agent process feedback fd, or NULL if the agent process hasn't been started yet. <a href="#c0749ab103ed5d1adc81b53a7ddc93d8"></a><br></td></tr>
62
- <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
63
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#77279925d786a774bdf097468c36af96">getExeFilename</a> () const =0</td></tr>
64
-
65
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the filename of the agent process's executable. <a href="#77279925d786a774bdf097468c36af96"></a><br></td></tr>
66
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#c6325cb940f9c25ef2f44aca00c30755">execProgram</a> () const </td></tr>
67
-
68
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is to exec() the agent with the right arguments. <a href="#c6325cb940f9c25ef2f44aca00c30755"></a><br></td></tr>
69
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#45bc0e41253a0c287e14f708f7dba1e6">sendStartupArguments</a> (pid_t <a class="el" href="classAgentWatcher.html#76de201bbc7111c01c31668211494fa8">pid</a>, <a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;fd)=0</td></tr>
70
-
71
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is to send startup arguments to the agent process through the given file descriptor, which is the agent process's feedback fd. <a href="#45bc0e41253a0c287e14f708f7dba1e6"></a><br></td></tr>
72
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#4c1c454374c8916788fee166beacfb05">processStartupInfo</a> (pid_t <a class="el" href="classAgentWatcher.html#76de201bbc7111c01c31668211494fa8">pid</a>, <a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;fd, const vector&lt; string &gt; &amp;args)=0</td></tr>
73
-
74
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is to process the startup info that the agent process has sent back. <a href="#4c1c454374c8916788fee166beacfb05"></a><br></td></tr>
75
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a358a05d41db4ddab9696727849e0d4c">killAndWait</a> (pid_t <a class="el" href="classAgentWatcher.html#76de201bbc7111c01c31668211494fa8">pid</a>)</td></tr>
76
-
77
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Kill a process with SIGKILL, and attempt to kill its children too. <a href="#a358a05d41db4ddab9696727849e0d4c"></a><br></td></tr>
78
- <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
79
- <tr><td class="memItemLeft" nowrap align="right" valign="top">pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#76de201bbc7111c01c31668211494fa8">pid</a></td></tr>
80
-
81
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PID of the process we're watching. <a href="#76de201bbc7111c01c31668211494fa8"></a><br></td></tr>
82
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#c4fa4122858073a1e3e1d96ce2ade6f2">threadExceptionMessage</a></td></tr>
83
-
84
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the watcher thread threw an uncaught exception then its information will be stored here so that the main thread can check whether a watcher encountered an error. <a href="#c4fa4122858073a1e3e1d96ce2ade6f2"></a><br></td></tr>
85
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a3eba8fe19117a84764f5f653a03612d">feedbackFd</a></td></tr>
86
-
87
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The agent process's feedback fd. <a href="#a3eba8fe19117a84764f5f653a03612d"></a><br></td></tr>
88
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="22ad2ee317c4e254833ab07f377ed7fd"></a><!-- doxytag: member="AgentWatcher::lock" ref="22ad2ee317c4e254833ab07f377ed7fd" args="" -->
89
- boost::mutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#22ad2ee317c4e254833ab07f377ed7fd">lock</a></td></tr>
90
-
91
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock for protecting the exchange of data between the main thread and the watcher thread. <br></td></tr>
30
+ <h1>AgentWatcher Class Reference</h1><!-- doxytag: class="AgentWatcher" -->
31
+ <p>Abstract base class for watching agent processes.
32
+ <a href="#_details">More...</a></p>
33
+
34
+ <p>Inherited by HelperAgentWatcher, and LoggingAgentWatcher.</p>
35
+
36
+ <p><a href="classAgentWatcher-members.html">List of all members.</a></p>
37
+ <table border="0" cellpadding="0" cellspacing="0">
38
+ <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
39
+ <tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#aa9f83ed13b06ef80d0417f9c313cf61e">sendStartupInfo</a> (<a class="el" href="classPassenger_1_1MessageChannel.html">MessageChannel</a> &amp;channel)=0</td></tr>
40
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send the started agent process's startup information over the given channel, to the starter process. <a href="#aa9f83ed13b06ef80d0417f9c313cf61e"></a><br/></td></tr>
41
+ <tr><td class="memItemLeft" align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a982a388ed5c485ab9615c5bc0abbc71e">name</a> () const =0</td></tr>
42
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the name of the agent that this class is watching. <a href="#a982a388ed5c485ab9615c5bc0abbc71e"></a><br/></td></tr>
43
+ <tr><td class="memItemLeft" align="right" valign="top">virtual pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#adaf1c0a7104aea662d90f639066b8247">start</a> ()</td></tr>
44
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Starts the agent process. <a href="#adaf1c0a7104aea662d90f639066b8247"></a><br/></td></tr>
45
+ <tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a3da11d23ed3b1210a24844856b7f3159">startWatching</a> ()</td></tr>
46
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start watching the agent process. <a href="#a3da11d23ed3b1210a24844856b7f3159"></a><br/></td></tr>
47
+ <tr><td class="memItemLeft" align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#ae65876d2cc680b739dfee02378233340">forceShutdown</a> ()</td></tr>
48
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Force the agent process to shut down. <a href="#ae65876d2cc680b739dfee02378233340"></a><br/></td></tr>
49
+ <tr><td class="memItemLeft" align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#ab99d4346d7b69d86db1b14206e7caadb">getErrorMessage</a> () const </td></tr>
50
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the watcher thread has encountered an error, then the error message will be stored here. <a href="#ab99d4346d7b69d86db1b14206e7caadb"></a><br/></td></tr>
51
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80ef9eaf1a84d994e7ba5f1507616fde"></a><!-- doxytag: member="AgentWatcher::getErrorBacktrace" ref="a80ef9eaf1a84d994e7ba5f1507616fde" args="() const " -->
52
+ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a80ef9eaf1a84d994e7ba5f1507616fde">getErrorBacktrace</a> () const </td></tr>
53
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The error backtrace, if applicable. <br/></td></tr>
54
+ <tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#ac0749ab103ed5d1adc81b53a7ddc93d8">getFeedbackFd</a> () const </td></tr>
55
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the agent process feedback fd, or NULL if the agent process hasn't been started yet. <a href="#ac0749ab103ed5d1adc81b53a7ddc93d8"></a><br/></td></tr>
56
+ <tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
57
+ <tr><td class="memItemLeft" align="right" valign="top">virtual string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a77279925d786a774bdf097468c36af96">getExeFilename</a> () const =0</td></tr>
58
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the filename of the agent process's executable. <a href="#a77279925d786a774bdf097468c36af96"></a><br/></td></tr>
59
+ <tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#ac6325cb940f9c25ef2f44aca00c30755">execProgram</a> () const </td></tr>
60
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is to exec() the agent with the right arguments. <a href="#ac6325cb940f9c25ef2f44aca00c30755"></a><br/></td></tr>
61
+ <tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a45bc0e41253a0c287e14f708f7dba1e6">sendStartupArguments</a> (pid_t <a class="el" href="classAgentWatcher.html#a76de201bbc7111c01c31668211494fa8">pid</a>, <a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;fd)=0</td></tr>
62
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is to send startup arguments to the agent process through the given file descriptor, which is the agent process's feedback fd. <a href="#a45bc0e41253a0c287e14f708f7dba1e6"></a><br/></td></tr>
63
+ <tr><td class="memItemLeft" align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a4c1c454374c8916788fee166beacfb05">processStartupInfo</a> (pid_t <a class="el" href="classAgentWatcher.html#a76de201bbc7111c01c31668211494fa8">pid</a>, <a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;fd, const vector&lt; string &gt; &amp;args)=0</td></tr>
64
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This method is to process the startup info that the agent process has sent back. <a href="#a4c1c454374c8916788fee166beacfb05"></a><br/></td></tr>
65
+ <tr><td colspan="2"><h2>Static Protected Member Functions</h2></td></tr>
66
+ <tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a9c50694046e32a8b900420cb473e9e16">killAndWait</a> (pid_t <a class="el" href="classAgentWatcher.html#a76de201bbc7111c01c31668211494fa8">pid</a>)</td></tr>
67
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Kill a process with SIGKILL, and attempt to kill its children too. <a href="#a9c50694046e32a8b900420cb473e9e16"></a><br/></td></tr>
68
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a231e843bd6d916650f7e7a641c5b4ca4"></a><!-- doxytag: member="AgentWatcher::timedWaitPid" ref="a231e843bd6d916650f7e7a641c5b4ca4" args="(pid_t pid, int *status, unsigned long long timeout)" -->
69
+ static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a231e843bd6d916650f7e7a641c5b4ca4">timedWaitPid</a> (pid_t <a class="el" href="classAgentWatcher.html#a76de201bbc7111c01c31668211494fa8">pid</a>, int *status, unsigned long long timeout)</td></tr>
70
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Behaves like <code>waitpid(pid, status, WNOHANG)</code>, but waits at most <em>timeout</em> miliseconds for the process to exit. <br/></td></tr>
71
+ <tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
72
+ <tr><td class="memItemLeft" align="right" valign="top">pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a76de201bbc7111c01c31668211494fa8">pid</a></td></tr>
73
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">PID of the process we're watching. <a href="#a76de201bbc7111c01c31668211494fa8"></a><br/></td></tr>
74
+ <tr><td class="memItemLeft" align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#ac4fa4122858073a1e3e1d96ce2ade6f2">threadExceptionMessage</a></td></tr>
75
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If the watcher thread threw an uncaught exception then its information will be stored here so that the main thread can check whether a watcher encountered an error. <a href="#ac4fa4122858073a1e3e1d96ce2ade6f2"></a><br/></td></tr>
76
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#aa3eba8fe19117a84764f5f653a03612d">feedbackFd</a></td></tr>
77
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The agent process's feedback fd. <a href="#aa3eba8fe19117a84764f5f653a03612d"></a><br/></td></tr>
78
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22ad2ee317c4e254833ab07f377ed7fd"></a><!-- doxytag: member="AgentWatcher::lock" ref="a22ad2ee317c4e254833ab07f377ed7fd" args="" -->
79
+ boost::mutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAgentWatcher.html#a22ad2ee317c4e254833ab07f377ed7fd">lock</a></td></tr>
80
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lock for protecting the exchange of data between the main thread and the watcher thread. <br/></td></tr>
92
81
  </table>
93
- <hr><a name="_details"></a><h2>Detailed Description</h2>
94
- Abstract base class for watching agent processes. <hr><h2>Member Function Documentation</h2>
95
- <a class="anchor" name="c6325cb940f9c25ef2f44aca00c30755"></a><!-- doxytag: member="AgentWatcher::execProgram" ref="c6325cb940f9c25ef2f44aca00c30755" args="() const " -->
82
+ <hr/><a name="_details"></a><h2>Detailed Description</h2>
83
+ <p>Abstract base class for watching agent processes. </p>
84
+ <hr/><h2>Member Function Documentation</h2>
85
+ <a class="anchor" id="ac6325cb940f9c25ef2f44aca00c30755"></a><!-- doxytag: member="AgentWatcher::execProgram" ref="ac6325cb940f9c25ef2f44aca00c30755" args="() const " -->
96
86
  <div class="memitem">
97
87
  <div class="memproto">
98
88
  <table class="memname">
99
89
  <tr>
100
- <td class="memname">virtual void AgentWatcher::execProgram </td>
90
+ <td class="memname">virtual void AgentWatcher::execProgram </td>
101
91
  <td>(</td>
102
- <td class="paramname"> </td>
92
+ <td class="paramname"></td>
103
93
  <td>&nbsp;)&nbsp;</td>
104
94
  <td> const<code> [inline, protected, virtual]</code></td>
105
95
  </tr>
@@ -107,20 +97,19 @@ Abstract base class for watching agent processes. <hr><h2>Member Function Docume
107
97
  </div>
108
98
  <div class="memdoc">
109
99
 
110
- <p>
111
- This method is to exec() the agent with the right arguments.
112
- <p>
113
- It is called from within a forked child process, so don't do any dynamic memory allocations in here. It must also not throw any exceptions. It must also preserve the value of errno after exec() is called.
100
+ <p>This method is to exec() the agent with the right arguments. </p>
101
+ <p>It is called from within a forked child process, so don't do any dynamic memory allocations in here. It must also not throw any exceptions. It must also preserve the value of errno after exec() is called. </p>
102
+
103
+ </div>
114
104
  </div>
115
- </div><p>
116
- <a class="anchor" name="e65876d2cc680b739dfee02378233340"></a><!-- doxytag: member="AgentWatcher::forceShutdown" ref="e65876d2cc680b739dfee02378233340" args="()" -->
105
+ <a class="anchor" id="ae65876d2cc680b739dfee02378233340"></a><!-- doxytag: member="AgentWatcher::forceShutdown" ref="ae65876d2cc680b739dfee02378233340" args="()" -->
117
106
  <div class="memitem">
118
107
  <div class="memproto">
119
108
  <table class="memname">
120
109
  <tr>
121
- <td class="memname">virtual bool AgentWatcher::forceShutdown </td>
110
+ <td class="memname">virtual bool AgentWatcher::forceShutdown </td>
122
111
  <td>(</td>
123
- <td class="paramname"> </td>
112
+ <td class="paramname"></td>
124
113
  <td>&nbsp;)&nbsp;</td>
125
114
  <td><code> [inline, virtual]</code></td>
126
115
  </tr>
@@ -128,20 +117,19 @@ It is called from within a forked child process, so don't do any dynamic memory
128
117
  </div>
129
118
  <div class="memdoc">
130
119
 
131
- <p>
132
- Force the agent process to shut down.
133
- <p>
134
- Returns true if it was shut down, or false if it wasn't started.
120
+ <p>Force the agent process to shut down. </p>
121
+ <p>Returns true if it was shut down, or false if it wasn't started. </p>
122
+
123
+ </div>
135
124
  </div>
136
- </div><p>
137
- <a class="anchor" name="b99d4346d7b69d86db1b14206e7caadb"></a><!-- doxytag: member="AgentWatcher::getErrorMessage" ref="b99d4346d7b69d86db1b14206e7caadb" args="() const " -->
125
+ <a class="anchor" id="ab99d4346d7b69d86db1b14206e7caadb"></a><!-- doxytag: member="AgentWatcher::getErrorMessage" ref="ab99d4346d7b69d86db1b14206e7caadb" args="() const " -->
138
126
  <div class="memitem">
139
127
  <div class="memproto">
140
128
  <table class="memname">
141
129
  <tr>
142
- <td class="memname">string AgentWatcher::getErrorMessage </td>
130
+ <td class="memname">string AgentWatcher::getErrorMessage </td>
143
131
  <td>(</td>
144
- <td class="paramname"> </td>
132
+ <td class="paramname"></td>
145
133
  <td>&nbsp;)&nbsp;</td>
146
134
  <td> const<code> [inline]</code></td>
147
135
  </tr>
@@ -149,20 +137,19 @@ Returns true if it was shut down, or false if it wasn't started.
149
137
  </div>
150
138
  <div class="memdoc">
151
139
 
152
- <p>
153
- If the watcher thread has encountered an error, then the error message will be stored here.
154
- <p>
155
- If the error message is empty then it means everything is still OK.
140
+ <p>If the watcher thread has encountered an error, then the error message will be stored here. </p>
141
+ <p>If the error message is empty then it means everything is still OK. </p>
142
+
143
+ </div>
156
144
  </div>
157
- </div><p>
158
- <a class="anchor" name="77279925d786a774bdf097468c36af96"></a><!-- doxytag: member="AgentWatcher::getExeFilename" ref="77279925d786a774bdf097468c36af96" args="() const =0" -->
145
+ <a class="anchor" id="a77279925d786a774bdf097468c36af96"></a><!-- doxytag: member="AgentWatcher::getExeFilename" ref="a77279925d786a774bdf097468c36af96" args="() const =0" -->
159
146
  <div class="memitem">
160
147
  <div class="memproto">
161
148
  <table class="memname">
162
149
  <tr>
163
- <td class="memname">virtual string AgentWatcher::getExeFilename </td>
150
+ <td class="memname">virtual string AgentWatcher::getExeFilename </td>
164
151
  <td>(</td>
165
- <td class="paramname"> </td>
152
+ <td class="paramname"></td>
166
153
  <td>&nbsp;)&nbsp;</td>
167
154
  <td> const<code> [protected, pure virtual]</code></td>
168
155
  </tr>
@@ -170,20 +157,19 @@ If the error message is empty then it means everything is still OK.
170
157
  </div>
171
158
  <div class="memdoc">
172
159
 
173
- <p>
174
- Returns the filename of the agent process's executable.
175
- <p>
176
- This method may be called in a forked child process and may therefore not allocate memory.
160
+ <p>Returns the filename of the agent process's executable. </p>
161
+ <p>This method may be called in a forked child process and may therefore not allocate memory. </p>
162
+
177
163
  </div>
178
- </div><p>
179
- <a class="anchor" name="c0749ab103ed5d1adc81b53a7ddc93d8"></a><!-- doxytag: member="AgentWatcher::getFeedbackFd" ref="c0749ab103ed5d1adc81b53a7ddc93d8" args="() const " -->
164
+ </div>
165
+ <a class="anchor" id="ac0749ab103ed5d1adc81b53a7ddc93d8"></a><!-- doxytag: member="AgentWatcher::getFeedbackFd" ref="ac0749ab103ed5d1adc81b53a7ddc93d8" args="() const " -->
180
166
  <div class="memitem">
181
167
  <div class="memproto">
182
168
  <table class="memname">
183
169
  <tr>
184
- <td class="memname">const <a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> AgentWatcher::getFeedbackFd </td>
170
+ <td class="memname">const <a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> AgentWatcher::getFeedbackFd </td>
185
171
  <td>(</td>
186
- <td class="paramname"> </td>
172
+ <td class="paramname"></td>
187
173
  <td>&nbsp;)&nbsp;</td>
188
174
  <td> const<code> [inline]</code></td>
189
175
  </tr>
@@ -191,42 +177,40 @@ This method may be called in a forked child process and may therefore not alloca
191
177
  </div>
192
178
  <div class="memdoc">
193
179
 
194
- <p>
195
- Returns the agent process feedback fd, or NULL if the agent process hasn't been started yet.
196
- <p>
197
- Can be used to check whether this agent process has exited without using waitpid().
180
+ <p>Returns the agent process feedback fd, or NULL if the agent process hasn't been started yet. </p>
181
+ <p>Can be used to check whether this agent process has exited without using waitpid(). </p>
182
+
183
+ </div>
198
184
  </div>
199
- </div><p>
200
- <a class="anchor" name="a358a05d41db4ddab9696727849e0d4c"></a><!-- doxytag: member="AgentWatcher::killAndWait" ref="a358a05d41db4ddab9696727849e0d4c" args="(pid_t pid)" -->
185
+ <a class="anchor" id="a9c50694046e32a8b900420cb473e9e16"></a><!-- doxytag: member="AgentWatcher::killAndWait" ref="a9c50694046e32a8b900420cb473e9e16" args="(pid_t pid)" -->
201
186
  <div class="memitem">
202
187
  <div class="memproto">
203
188
  <table class="memname">
204
189
  <tr>
205
- <td class="memname">void AgentWatcher::killAndWait </td>
190
+ <td class="memname">static void AgentWatcher::killAndWait </td>
206
191
  <td>(</td>
207
192
  <td class="paramtype">pid_t&nbsp;</td>
208
- <td class="paramname"> <em>pid</em> </td>
193
+ <td class="paramname"> <em>pid</em></td>
209
194
  <td>&nbsp;)&nbsp;</td>
210
- <td><code> [inline, protected]</code></td>
195
+ <td><code> [inline, static, protected]</code></td>
211
196
  </tr>
212
197
  </table>
213
198
  </div>
214
199
  <div class="memdoc">
215
200
 
216
- <p>
217
- Kill a process with SIGKILL, and attempt to kill its children too.
218
- <p>
219
- Then wait until it has quit.
201
+ <p>Kill a process with SIGKILL, and attempt to kill its children too. </p>
202
+ <p>Then wait until it has quit. </p>
203
+
204
+ </div>
220
205
  </div>
221
- </div><p>
222
- <a class="anchor" name="982a388ed5c485ab9615c5bc0abbc71e"></a><!-- doxytag: member="AgentWatcher::name" ref="982a388ed5c485ab9615c5bc0abbc71e" args="() const =0" -->
206
+ <a class="anchor" id="a982a388ed5c485ab9615c5bc0abbc71e"></a><!-- doxytag: member="AgentWatcher::name" ref="a982a388ed5c485ab9615c5bc0abbc71e" args="() const =0" -->
223
207
  <div class="memitem">
224
208
  <div class="memproto">
225
209
  <table class="memname">
226
210
  <tr>
227
- <td class="memname">virtual const char* AgentWatcher::name </td>
211
+ <td class="memname">virtual const char* AgentWatcher::name </td>
228
212
  <td>(</td>
229
- <td class="paramname"> </td>
213
+ <td class="paramname"></td>
230
214
  <td>&nbsp;)&nbsp;</td>
231
215
  <td> const<code> [pure virtual]</code></td>
232
216
  </tr>
@@ -234,18 +218,16 @@ Then wait until it has quit.
234
218
  </div>
235
219
  <div class="memdoc">
236
220
 
237
- <p>
238
- Returns the name of the agent that this class is watching.
239
- <p>
221
+ <p>Returns the name of the agent that this class is watching. </p>
240
222
 
241
223
  </div>
242
- </div><p>
243
- <a class="anchor" name="4c1c454374c8916788fee166beacfb05"></a><!-- doxytag: member="AgentWatcher::processStartupInfo" ref="4c1c454374c8916788fee166beacfb05" args="(pid_t pid, FileDescriptor &amp;fd, const vector&lt; string &gt; &amp;args)=0" -->
224
+ </div>
225
+ <a class="anchor" id="a4c1c454374c8916788fee166beacfb05"></a><!-- doxytag: member="AgentWatcher::processStartupInfo" ref="a4c1c454374c8916788fee166beacfb05" args="(pid_t pid, FileDescriptor &amp;fd, const vector&lt; string &gt; &amp;args)=0" -->
244
226
  <div class="memitem">
245
227
  <div class="memproto">
246
228
  <table class="memname">
247
229
  <tr>
248
- <td class="memname">virtual bool AgentWatcher::processStartupInfo </td>
230
+ <td class="memname">virtual bool AgentWatcher::processStartupInfo </td>
249
231
  <td>(</td>
250
232
  <td class="paramtype">pid_t&nbsp;</td>
251
233
  <td class="paramname"> <em>pid</em>, </td>
@@ -271,18 +253,17 @@ Returns the name of the agent that this class is watching.
271
253
  </div>
272
254
  <div class="memdoc">
273
255
 
274
- <p>
275
- This method is to process the startup info that the agent process has sent back.
276
- <p>
277
- May throw arbitrary exceptions.
256
+ <p>This method is to process the startup info that the agent process has sent back. </p>
257
+ <p>May throw arbitrary exceptions. </p>
258
+
259
+ </div>
278
260
  </div>
279
- </div><p>
280
- <a class="anchor" name="45bc0e41253a0c287e14f708f7dba1e6"></a><!-- doxytag: member="AgentWatcher::sendStartupArguments" ref="45bc0e41253a0c287e14f708f7dba1e6" args="(pid_t pid, FileDescriptor &amp;fd)=0" -->
261
+ <a class="anchor" id="a45bc0e41253a0c287e14f708f7dba1e6"></a><!-- doxytag: member="AgentWatcher::sendStartupArguments" ref="a45bc0e41253a0c287e14f708f7dba1e6" args="(pid_t pid, FileDescriptor &amp;fd)=0" -->
281
262
  <div class="memitem">
282
263
  <div class="memproto">
283
264
  <table class="memname">
284
265
  <tr>
285
- <td class="memname">virtual void AgentWatcher::sendStartupArguments </td>
266
+ <td class="memname">virtual void AgentWatcher::sendStartupArguments </td>
286
267
  <td>(</td>
287
268
  <td class="paramtype">pid_t&nbsp;</td>
288
269
  <td class="paramname"> <em>pid</em>, </td>
@@ -302,21 +283,20 @@ May throw arbitrary exceptions.
302
283
  </div>
303
284
  <div class="memdoc">
304
285
 
305
- <p>
306
- This method is to send startup arguments to the agent process through the given file descriptor, which is the agent process's feedback fd.
307
- <p>
308
- May throw arbitrary exceptions.
286
+ <p>This method is to send startup arguments to the agent process through the given file descriptor, which is the agent process's feedback fd. </p>
287
+ <p>May throw arbitrary exceptions. </p>
288
+
289
+ </div>
309
290
  </div>
310
- </div><p>
311
- <a class="anchor" name="a9f83ed13b06ef80d0417f9c313cf61e"></a><!-- doxytag: member="AgentWatcher::sendStartupInfo" ref="a9f83ed13b06ef80d0417f9c313cf61e" args="(MessageChannel &amp;channel)=0" -->
291
+ <a class="anchor" id="aa9f83ed13b06ef80d0417f9c313cf61e"></a><!-- doxytag: member="AgentWatcher::sendStartupInfo" ref="aa9f83ed13b06ef80d0417f9c313cf61e" args="(MessageChannel &amp;channel)=0" -->
312
292
  <div class="memitem">
313
293
  <div class="memproto">
314
294
  <table class="memname">
315
295
  <tr>
316
- <td class="memname">virtual void AgentWatcher::sendStartupInfo </td>
296
+ <td class="memname">virtual void AgentWatcher::sendStartupInfo </td>
317
297
  <td>(</td>
318
298
  <td class="paramtype"><a class="el" href="classPassenger_1_1MessageChannel.html">MessageChannel</a> &amp;&nbsp;</td>
319
- <td class="paramname"> <em>channel</em> </td>
299
+ <td class="paramname"> <em>channel</em></td>
320
300
  <td>&nbsp;)&nbsp;</td>
321
301
  <td><code> [pure virtual]</code></td>
322
302
  </tr>
@@ -324,22 +304,20 @@ May throw arbitrary exceptions.
324
304
  </div>
325
305
  <div class="memdoc">
326
306
 
327
- <p>
328
- Send the started agent process's startup information over the given channel, to the starter process.
329
- <p>
330
- May throw arbitrary exceptions.<p>
331
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd><a class="el" href="classAgentWatcher.html#daf1c0a7104aea662d90f639066b8247" title="Starts the agent process.">start()</a> has been called and succeeded. </dd></dl>
307
+ <p>Send the started agent process's startup information over the given channel, to the starter process. </p>
308
+ <p>May throw arbitrary exceptions.</p>
309
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd><a class="el" href="classAgentWatcher.html#adaf1c0a7104aea662d90f639066b8247" title="Starts the agent process.">start()</a> has been called and succeeded. </dd></dl>
332
310
 
333
311
  </div>
334
- </div><p>
335
- <a class="anchor" name="daf1c0a7104aea662d90f639066b8247"></a><!-- doxytag: member="AgentWatcher::start" ref="daf1c0a7104aea662d90f639066b8247" args="()" -->
312
+ </div>
313
+ <a class="anchor" id="adaf1c0a7104aea662d90f639066b8247"></a><!-- doxytag: member="AgentWatcher::start" ref="adaf1c0a7104aea662d90f639066b8247" args="()" -->
336
314
  <div class="memitem">
337
315
  <div class="memproto">
338
316
  <table class="memname">
339
317
  <tr>
340
- <td class="memname">virtual pid_t AgentWatcher::start </td>
318
+ <td class="memname">virtual pid_t AgentWatcher::start </td>
341
319
  <td>(</td>
342
- <td class="paramname"> </td>
320
+ <td class="paramname"></td>
343
321
  <td>&nbsp;)&nbsp;</td>
344
322
  <td><code> [inline, virtual]</code></td>
345
323
  </tr>
@@ -347,20 +325,19 @@ May throw arbitrary exceptions.<p>
347
325
  </div>
348
326
  <div class="memdoc">
349
327
 
350
- <p>
351
- Starts the agent process.
352
- <p>
353
- May throw arbitrary exceptions.
328
+ <p>Starts the agent process. </p>
329
+ <p>May throw arbitrary exceptions. </p>
330
+
331
+ </div>
354
332
  </div>
355
- </div><p>
356
- <a class="anchor" name="3da11d23ed3b1210a24844856b7f3159"></a><!-- doxytag: member="AgentWatcher::startWatching" ref="3da11d23ed3b1210a24844856b7f3159" args="()" -->
333
+ <a class="anchor" id="a3da11d23ed3b1210a24844856b7f3159"></a><!-- doxytag: member="AgentWatcher::startWatching" ref="a3da11d23ed3b1210a24844856b7f3159" args="()" -->
357
334
  <div class="memitem">
358
335
  <div class="memproto">
359
336
  <table class="memname">
360
337
  <tr>
361
- <td class="memname">virtual void AgentWatcher::startWatching </td>
338
+ <td class="memname">virtual void AgentWatcher::startWatching </td>
362
339
  <td>(</td>
363
- <td class="paramname"> </td>
340
+ <td class="paramname"></td>
364
341
  <td>&nbsp;)&nbsp;</td>
365
342
  <td><code> [inline, virtual]</code></td>
366
343
  </tr>
@@ -368,78 +345,75 @@ May throw arbitrary exceptions.
368
345
  </div>
369
346
  <div class="memdoc">
370
347
 
371
- <p>
372
- Start watching the agent process.
373
- <p>
374
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd><a class="el" href="classAgentWatcher.html#daf1c0a7104aea662d90f639066b8247" title="Starts the agent process.">start()</a> has been called and succeeded. <p>
348
+ <p>Start watching the agent process. </p>
349
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd><a class="el" href="classAgentWatcher.html#adaf1c0a7104aea662d90f639066b8247" title="Starts the agent process.">start()</a> has been called and succeeded. </dd>
350
+ <dd>
375
351
  This watcher isn't already watching. </dd></dl>
376
- <dl compact><dt><b>Exceptions:</b></dt><dd>
352
+ <dl><dt><b>Exceptions:</b></dt><dd>
377
353
  <table border="0" cellspacing="2" cellpadding="0">
378
354
  <tr><td valign="top"></td><td valign="top"><em>RuntimeException</em>&nbsp;</td><td>If a precondition failed. </td></tr>
379
355
  <tr><td valign="top"></td><td valign="top"><em>thread_interrupted</em>&nbsp;</td><td></td></tr>
380
356
  <tr><td valign="top"></td><td valign="top"><em>thread_resource_error</em>&nbsp;</td><td></td></tr>
381
357
  </table>
358
+ </dd>
382
359
  </dl>
383
360
 
384
361
  </div>
385
- </div><p>
386
- <hr><h2>Member Data Documentation</h2>
387
- <a class="anchor" name="a3eba8fe19117a84764f5f653a03612d"></a><!-- doxytag: member="AgentWatcher::feedbackFd" ref="a3eba8fe19117a84764f5f653a03612d" args="" -->
362
+ </div>
363
+ <hr/><h2>Member Data Documentation</h2>
364
+ <a class="anchor" id="aa3eba8fe19117a84764f5f653a03612d"></a><!-- doxytag: member="AgentWatcher::feedbackFd" ref="aa3eba8fe19117a84764f5f653a03612d" args="" -->
388
365
  <div class="memitem">
389
366
  <div class="memproto">
390
367
  <table class="memname">
391
368
  <tr>
392
- <td class="memname"><a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> <a class="el" href="classAgentWatcher.html#a3eba8fe19117a84764f5f653a03612d">AgentWatcher::feedbackFd</a><code> [protected]</code> </td>
369
+ <td class="memname"><a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> <a class="el" href="classAgentWatcher.html#aa3eba8fe19117a84764f5f653a03612d">AgentWatcher::feedbackFd</a><code> [protected]</code></td>
393
370
  </tr>
394
371
  </table>
395
372
  </div>
396
373
  <div class="memdoc">
397
374
 
398
- <p>
399
- The agent process's feedback fd.
400
- <p>
375
+ <p>The agent process's feedback fd. </p>
401
376
 
402
377
  </div>
403
- </div><p>
404
- <a class="anchor" name="76de201bbc7111c01c31668211494fa8"></a><!-- doxytag: member="AgentWatcher::pid" ref="76de201bbc7111c01c31668211494fa8" args="" -->
378
+ </div>
379
+ <a class="anchor" id="a76de201bbc7111c01c31668211494fa8"></a><!-- doxytag: member="AgentWatcher::pid" ref="a76de201bbc7111c01c31668211494fa8" args="" -->
405
380
  <div class="memitem">
406
381
  <div class="memproto">
407
382
  <table class="memname">
408
383
  <tr>
409
- <td class="memname">pid_t <a class="el" href="classAgentWatcher.html#76de201bbc7111c01c31668211494fa8">AgentWatcher::pid</a><code> [protected]</code> </td>
384
+ <td class="memname">pid_t <a class="el" href="classAgentWatcher.html#a76de201bbc7111c01c31668211494fa8">AgentWatcher::pid</a><code> [protected]</code></td>
410
385
  </tr>
411
386
  </table>
412
387
  </div>
413
388
  <div class="memdoc">
414
389
 
415
- <p>
416
- PID of the process we're watching.
417
- <p>
418
- 0 if no process is started at this time.
390
+ <p>PID of the process we're watching. </p>
391
+ <p>0 if no process is started at this time. </p>
392
+
393
+ </div>
419
394
  </div>
420
- </div><p>
421
- <a class="anchor" name="c4fa4122858073a1e3e1d96ce2ade6f2"></a><!-- doxytag: member="AgentWatcher::threadExceptionMessage" ref="c4fa4122858073a1e3e1d96ce2ade6f2" args="" -->
395
+ <a class="anchor" id="ac4fa4122858073a1e3e1d96ce2ade6f2"></a><!-- doxytag: member="AgentWatcher::threadExceptionMessage" ref="ac4fa4122858073a1e3e1d96ce2ade6f2" args="" -->
422
396
  <div class="memitem">
423
397
  <div class="memproto">
424
398
  <table class="memname">
425
399
  <tr>
426
- <td class="memname">string <a class="el" href="classAgentWatcher.html#c4fa4122858073a1e3e1d96ce2ade6f2">AgentWatcher::threadExceptionMessage</a><code> [protected]</code> </td>
400
+ <td class="memname">string <a class="el" href="classAgentWatcher.html#ac4fa4122858073a1e3e1d96ce2ade6f2">AgentWatcher::threadExceptionMessage</a><code> [protected]</code></td>
427
401
  </tr>
428
402
  </table>
429
403
  </div>
430
404
  <div class="memdoc">
431
405
 
432
- <p>
433
- If the watcher thread threw an uncaught exception then its information will be stored here so that the main thread can check whether a watcher encountered an error.
434
- <p>
435
- These are empty strings if everything is OK.
406
+ <p>If the watcher thread threw an uncaught exception then its information will be stored here so that the main thread can check whether a watcher encountered an error. </p>
407
+ <p>These are empty strings if everything is OK. </p>
408
+
409
+ </div>
436
410
  </div>
437
- </div><p>
438
- <hr>The documentation for this class was generated from the following file:<ul>
439
- <li>Watchdog.cpp</ul>
411
+ <hr/>The documentation for this class was generated from the following file:<ul>
412
+ <li>Watchdog.cpp</li>
413
+ </ul>
440
414
  </div>
441
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:56 2010 for Passenger by&nbsp;
415
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
442
416
  <a href="http://www.doxygen.org/index.html">
443
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
417
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
444
418
  </body>
445
419
  </html>