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
@@ -1 +1 @@
1
- 42770577cc354ad419416644abc40e70
1
+ f4e847cb129a1a1896a506f463bb7b63
@@ -1 +1,3 @@
1
- <area shape="rect" href="$classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired." alt="" coords="5,5,208,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classPassenger_1_1Uint32Message.html" title="For 32&#45;bit big&#45;endian integers." alt="" coords="7,5,201,35"/>
3
+ </map>
@@ -1 +1 @@
1
- e011e6aaa3322750aa4eb2b9038df83b
1
+ c443ee7bdc3e4ed0dd4bb3e420a207e8
@@ -1 +1,3 @@
1
- <area shape="rect" href="$classPassenger_1_1Uint16Reader.html" title="Class for reading a 16&#45;bit big&#45;endian integer." alt="" coords="5,5,184,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classServer.html" title="A representation of the Server responsible for handling Client instances." alt="" coords="5,5,69,35"/>
3
+ </map>
@@ -1 +1 @@
1
- 4ac734aec4d6367bb0acfcce43c8ee6f
1
+ 49c26619ea57b6fab68bb69492ab64b3
@@ -1 +1,3 @@
1
- <area shape="rect" href="$classPassenger_1_1Uint32Reader.html" title="Class for reading a 32&#45;bit big&#45;endian integer." alt="" coords="5,5,184,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classServerInstanceDirToucher.html" title="Touch all files in the server instance dir every 6 hours in order to prevent /tmp..." alt="" coords="7,5,191,35"/>
3
+ </map>
@@ -1 +1 @@
1
- 53a33fe3d42c0f2051271768176aecf5
1
+ 895fbb1cabd5da8622d5341648d91bb3
@@ -1 +1,3 @@
1
- <area shape="rect" href="$structPassenger_1_1AnythingToString.html" title="Used internally by toString()." alt="" coords="6,5,238,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classPassenger_1_1ArgumentException.html" title="Indicates that a specified argument is incorrect or violates a requirement." alt="" coords="7,5,228,35"/>
3
+ </map>
@@ -1 +1 @@
1
- 2f9cf45807e1558ab85fe5a11663d501
1
+ 1f09a671d17b2c94737376d2fefc0504
@@ -1 +1,3 @@
1
- <area shape="rect" href="$structPassenger_1_1AnythingToString_3_01vector_3_01StaticString_01_4_01_4.html" title="Used internally by toString()." alt="" coords="5,5,360,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classPassenger_1_1ArrayMessage.html" title="For array messages." alt="" coords="7,5,193,35"/>
3
+ </map>
@@ -1 +1 @@
1
- 76cb662cebe802f2eca40599a37d130b
1
+ ca6b0c927df71626dad64248d7e9ed0f
@@ -1 +1,3 @@
1
- <area shape="rect" href="$structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html" title="Used internally by toString()." alt="" coords="5,5,323,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classPassenger_1_1BufferedUpload.html" title="Represents a buffered upload file." alt="" coords="7,5,201,35"/>
3
+ </map>
@@ -1 +1 @@
1
- 54df67256206a81080be2e219cf8dcc4
1
+ fc2cecd833dcd5ffcd6b3f26bcdee851
@@ -1 +1,3 @@
1
- <area shape="rect" href="$classPassenger_1_1ArgumentException.html" title="Indicates that a specified argument is incorrect or violates a requirement." alt="" coords="5,5,219,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classPassenger_1_1BusyException.html" title="The application pool is too busy and cannot fulfill a get() request." alt="" coords="5,5,195,35"/>
3
+ </map>
@@ -1 +1 @@
1
- 1f09a671d17b2c94737376d2fefc0504
1
+ 33b630dea926c338fbbd6cca62c4f362
@@ -1 +1,3 @@
1
- <area shape="rect" href="$classPassenger_1_1ArrayReader.html" title="Class for reading a an array message." alt="" coords="7,5,177,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classPassenger_1_1ConfigurationException.html" title="Thrown when an invalid configuration is given." alt="" coords="7,5,249,35"/>
3
+ </map>
@@ -1 +1 @@
1
- 50d311ada89d2e9f84f857e32d7b1362
1
+ 33f6fef6c88c681d0a4af344429ded81
@@ -1 +1,3 @@
1
- <area shape="rect" href="$classPassenger_1_1BufferedUpload.html" title="Represents a buffered upload file." alt="" coords="5,5,195,32">
1
+ <map id="G" name="G">
2
+ <area shape="rect" id="node1" href="$classPassenger_1_1DirectoryMapper.html" title="Utility class for determining URI&#45;to&#45;application directory mappings." alt="" coords="5,5,208,35"/>
3
+ </map>
@@ -1 +1 @@
1
- fc2cecd833dcd5ffcd6b3f26bcdee851
1
+ 6ac22ac2a04b31b0b8785e5076f34c72
@@ -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: Graphical Class Hierarchy</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,133 +27,127 @@
24
27
  </div>
25
28
  </div>
26
29
  <div class="contents">
27
- <h1>Graphical Class Hierarchy</h1><a href="hierarchy.html">Go to the textual class hierarchy</a>
28
- <p>
30
+ <h1>Graphical Class Hierarchy</h1>
31
+ <p><a href="hierarchy.html">Go to the textual class hierarchy</a></p>
29
32
  <table border="0" cellspacing="10" cellpadding="0">
30
- <tr><td><img src="inherit__graph__0.png" border="0" alt="" usemap="#AgentWatcher_map">
31
- <map name="AgentWatcher_map">
33
+ <tr><td><img src="inherit__graph__0.png" border="0" alt="" usemap="#AgentWatcher_map"/>
34
+ <map name="AgentWatcher_map" id="AgentWatcher">
32
35
  <area shape="rect" href="classAgentWatcher.html" title="Abstract base class for watching agent processes." alt="" coords="5,5,115,32"></map></td></tr>
33
- <tr><td><img src="inherit__graph__1.png" border="0" alt="" usemap="#Client_map">
34
- <map name="Client_map">
36
+ <tr><td><img src="inherit__graph__1.png" border="0" alt="" usemap="#Client_map"/>
37
+ <map name="Client_map" id="Client">
35
38
  <area shape="rect" href="classClient.html" title="A representation of a Client from the Server&#39;s point of view." alt="" coords="7,5,63,32"></map></td></tr>
36
- <tr><td><img src="inherit__graph__2.png" border="0" alt="" usemap="#Hooks_map">
37
- <map name="Hooks_map">
39
+ <tr><td><img src="inherit__graph__2.png" border="0" alt="" usemap="#Hooks_map"/>
40
+ <map name="Hooks_map" id="Hooks">
38
41
  <area shape="rect" href="classHooks.html" title="Apache hook functions, wrapped in a class." alt="" coords="7,5,65,32"></map></td></tr>
39
- <tr><td><img src="inherit__graph__3.png" border="0" alt="" usemap="#Passenger_1_1AbstractSpawnManager_map">
40
- <map name="Passenger_1_1AbstractSpawnManager_map">
42
+ <tr><td><img src="inherit__graph__3.png" border="0" alt="" usemap="#Passenger_1_1AbstractSpawnManager_map"/>
43
+ <map name="Passenger_1_1AbstractSpawnManager_map" id="Passenger_1_1AbstractSpawnManager">
41
44
  <area shape="rect" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes." alt="" coords="5,5,245,32"><area shape="rect" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation." alt="" coords="293,5,483,32"></map></td></tr>
42
- <tr><td><img src="inherit__graph__4.png" border="0" alt="" usemap="#Passenger_1_1AnythingToString_3_01T_01_4_map">
43
- <map name="Passenger_1_1AnythingToString_3_01T_01_4_map">
44
- <area shape="rect" href="structPassenger_1_1AnythingToString.html" title="Used internally by toString()." alt="" coords="6,5,238,32"></map></td></tr>
45
- <tr><td><img src="inherit__graph__5.png" border="0" alt="" usemap="#Passenger_1_1AnythingToString_3_01vector_3_01StaticString_01_4_01_4_map">
46
- <map name="Passenger_1_1AnythingToString_3_01vector_3_01StaticString_01_4_01_4_map">
47
- <area shape="rect" href="structPassenger_1_1AnythingToString_3_01vector_3_01StaticString_01_4_01_4.html" title="Used internally by toString()." alt="" coords="5,5,360,32"></map></td></tr>
48
- <tr><td><img src="inherit__graph__6.png" border="0" alt="" usemap="#Passenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4_map">
49
- <map name="Passenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4_map">
50
- <area shape="rect" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html" title="Used internally by toString()." alt="" coords="5,5,323,32"></map></td></tr>
51
- <tr><td><img src="inherit__graph__7.png" border="0" alt="" usemap="#Passenger_1_1ArgumentException_map">
52
- <map name="Passenger_1_1ArgumentException_map">
53
- <area shape="rect" href="classPassenger_1_1ArgumentException.html" title="Indicates that a specified argument is incorrect or violates a requirement." alt="" coords="5,5,219,32"></map></td></tr>
54
- <tr><td><img src="inherit__graph__8.png" border="0" alt="" usemap="#Passenger_1_1ArrayReader_map">
55
- <map name="Passenger_1_1ArrayReader_map">
56
- <area shape="rect" href="classPassenger_1_1ArrayReader.html" title="Class for reading a an array message." alt="" coords="7,5,177,32"></map></td></tr>
57
- <tr><td><img src="inherit__graph__9.png" border="0" alt="" usemap="#Passenger_1_1BufferedUpload_map">
58
- <map name="Passenger_1_1BufferedUpload_map">
59
- <area shape="rect" href="classPassenger_1_1BufferedUpload.html" title="Represents a buffered upload file." alt="" coords="5,5,195,32"></map></td></tr>
60
- <tr><td><img src="inherit__graph__10.png" border="0" alt="" usemap="#Passenger_1_1BusyException_map">
61
- <map name="Passenger_1_1BusyException_map">
62
- <area shape="rect" href="classPassenger_1_1BusyException.html" title="The application pool is too busy and cannot fulfill a get() request." alt="" coords="6,5,190,32"></map></td></tr>
63
- <tr><td><img src="inherit__graph__11.png" border="0" alt="" usemap="#Passenger_1_1ConfigurationException_map">
64
- <map name="Passenger_1_1ConfigurationException_map">
65
- <area shape="rect" href="classPassenger_1_1ConfigurationException.html" title="Thrown when an invalid configuration is given." alt="" coords="7,5,241,32"></map></td></tr>
66
- <tr><td><img src="inherit__graph__12.png" border="0" alt="" usemap="#Passenger_1_1DirectoryMapper_map">
67
- <map name="Passenger_1_1DirectoryMapper_map">
68
- <area shape="rect" href="classPassenger_1_1DirectoryMapper.html" title="Utility class for determining URI&#45;to&#45;application directory mappings." alt="" coords="5,5,200,32"></map></td></tr>
69
- <tr><td><img src="inherit__graph__13.png" border="0" alt="" usemap="#Passenger_1_1EventFd_map">
70
- <map name="Passenger_1_1EventFd_map">
71
- <area shape="rect" href="classPassenger_1_1EventFd.html" title="A synchronization mechanism that&#39;s implemented with file descriptors, and as..." alt="" coords="7,5,151,32"></map></td></tr>
72
- <tr><td><img src="inherit__graph__14.png" border="0" alt="" usemap="#Passenger_1_1FileDescriptor_map">
73
- <map name="Passenger_1_1FileDescriptor_map">
74
- <area shape="rect" href="classPassenger_1_1FileDescriptor.html" title="Wrapper class around a file descriptor integer, for RAII behavior." alt="" coords="5,5,184,32"></map></td></tr>
75
- <tr><td><img src="inherit__graph__15.png" border="0" alt="" usemap="#Passenger_1_1HttpStatusExtractor_map">
76
- <map name="Passenger_1_1HttpStatusExtractor_map">
77
- <area shape="rect" href="classPassenger_1_1HttpStatusExtractor.html" title="Utility class for extracting the HTTP status value from an HTTP response." alt="" coords="5,5,219,32"></map></td></tr>
78
- <tr><td><img src="inherit__graph__16.png" border="0" alt="" usemap="#Passenger_1_1IOException_map">
79
- <map name="Passenger_1_1IOException_map">
80
- <area shape="rect" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation." alt="" coords="5,31,173,57"><area shape="rect" href="classPassenger_1_1EOFException.html" title="An unexpected end&#45;of&#45;file I/O error." alt="" coords="249,5,431,32"><area shape="rect" href="classPassenger_1_1FileNotFoundException.html" title="Thrown when a certain file cannot be found." alt="" coords="223,56,457,83"></map></td></tr>
81
- <tr><td><img src="inherit__graph__17.png" border="0" alt="" usemap="#Passenger_1_1MemZeroGuard_map">
82
- <map name="Passenger_1_1MemZeroGuard_map">
83
- <area shape="rect" href="classPassenger_1_1MemZeroGuard.html" title="Fills the given memory space or string with zeroes when a MemoryZeroGuard object..." alt="" coords="7,5,196,32"></map></td></tr>
84
- <tr><td><img src="inherit__graph__18.png" border="0" alt="" usemap="#Passenger_1_1MessageChannel_map">
85
- <map name="Passenger_1_1MessageChannel_map">
86
- <area shape="rect" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors." alt="" coords="6,5,206,32"></map></td></tr>
87
- <tr><td><img src="inherit__graph__19.png" border="0" alt="" usemap="#Passenger_1_1MessageServer_map">
88
- <map name="Passenger_1_1MessageServer_map">
89
- <area shape="rect" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework." alt="" coords="5,5,195,32"></map></td></tr>
90
- <tr><td><img src="inherit__graph__20.png" border="0" alt="" usemap="#Passenger_1_1MessageServer_1_1MessageServer_1_1ClientContext_map">
91
- <map name="Passenger_1_1MessageServer_1_1MessageServer_1_1ClientContext_map">
92
- <area shape="rect" href="classPassenger_1_1MessageServer_1_1ClientContext.html" title="Interface for client context objects." alt="" coords="7,5,386,32"><area shape="rect" href="classPassenger_1_1MessageServer_1_1CommonClientContext.html" title="A common client context, containing client&#45;specific information used by MessageServer..." alt="" coords="435,5,870,32"></map></td></tr>
93
- <tr><td><img src="inherit__graph__21.png" border="0" alt="" usemap="#Passenger_1_1MessageServer_1_1MessageServer_1_1DisconnectEventBroadcastGuard_map">
94
- <map name="Passenger_1_1MessageServer_1_1MessageServer_1_1DisconnectEventBroadcastGuard_map">
95
- <area shape="rect" href="structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html" title="Calls clientDisconnected() on all handlers when destroyed." alt="" coords="7,5,505,32"></map></td></tr>
96
- <tr><td><img src="inherit__graph__22.png" border="0" alt="" usemap="#Passenger_1_1MessageServer_1_1MessageServer_1_1Handler_map">
97
- <map name="Passenger_1_1MessageServer_1_1MessageServer_1_1Handler_map">
98
- <area shape="rect" href="classPassenger_1_1MessageServer_1_1Handler.html" title="An abstract message handler class." alt="" coords="5,5,352,32"></map></td></tr>
99
- <tr><td><img src="inherit__graph__23.png" border="0" alt="" usemap="#Passenger_1_1PoolOptions_map">
100
- <map name="Passenger_1_1PoolOptions_map">
101
- <area shape="rect" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()..." alt="" coords="7,5,175,32"></map></td></tr>
102
- <tr><td><img src="inherit__graph__24.png" border="0" alt="" usemap="#Passenger_1_1Process_map">
103
- <map name="Passenger_1_1Process_map">
104
- <area shape="rect" href="classPassenger_1_1Process.html" title="Represents a single application process, as spawned by SpawnManager or by ApplicationPool::Interface..." alt="" coords="6,5,150,32"></map></td></tr>
105
- <tr><td><img src="inherit__graph__25.png" border="0" alt="" usemap="#Passenger_1_1RandomGenerator_map">
106
- <map name="Passenger_1_1RandomGenerator_map">
107
- <area shape="rect" href="classPassenger_1_1RandomGenerator.html" title="A random data generator." alt="" coords="6,5,214,32"></map></td></tr>
108
- <tr><td><img src="inherit__graph__26.png" border="0" alt="" usemap="#Passenger_1_1RuntimeException_map">
109
- <map name="Passenger_1_1RuntimeException_map">
110
- <area shape="rect" href="classPassenger_1_1RuntimeException.html" title="A generic runtime exception." alt="" coords="7,5,209,32"></map></td></tr>
111
- <tr><td><img src="inherit__graph__27.png" border="0" alt="" usemap="#Passenger_1_1ScalarReader_map">
112
- <map name="Passenger_1_1ScalarReader_map">
113
- <area shape="rect" href="classPassenger_1_1ScalarReader.html" title="Class for reading a scalar message." alt="" coords="5,5,184,32"></map></td></tr>
114
- <tr><td><img src="inherit__graph__28.png" border="0" alt="" usemap="#Passenger_1_1ScgiRequestParser_map">
115
- <map name="Passenger_1_1ScgiRequestParser_map">
116
- <area shape="rect" href="classPassenger_1_1ScgiRequestParser.html" title="A parser for SCGI requests." alt="" coords="5,5,216,32"></map></td></tr>
117
- <tr><td><img src="inherit__graph__29.png" border="0" alt="" usemap="#Passenger_1_1SecurityException_map">
118
- <map name="Passenger_1_1SecurityException_map">
119
- <area shape="rect" href="classPassenger_1_1SecurityException.html" title="Represents some kind of security error." alt="" coords="5,5,208,32"></map></td></tr>
120
- <tr><td><img src="inherit__graph__30.png" border="0" alt="" usemap="#Passenger_1_1Session_map">
121
- <map name="Passenger_1_1Session_map">
122
- <area shape="rect" href="classPassenger_1_1Session.html" title="Represents a single request/response pair of an application process." alt="" coords="7,5,148,32"><area shape="rect" href="classPassenger_1_1StandardSession.html" title="A &quot;standard&quot; implementation of Session." alt="" coords="199,5,396,32"></map></td></tr>
123
- <tr><td><img src="inherit__graph__31.png" border="0" alt="" usemap="#Passenger_1_1SpawnException_map">
124
- <map name="Passenger_1_1SpawnException_map">
125
- <area shape="rect" href="classPassenger_1_1SpawnException.html" title="Thrown when SpawnManager or ApplicationPool fails to spawn an application instance..." alt="" coords="5,5,200,32"></map></td></tr>
126
- <tr><td><img src="inherit__graph__32.png" border="0" alt="" usemap="#Passenger_1_1StaticString_map">
127
- <map name="Passenger_1_1StaticString_map">
128
- <area shape="rect" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer." alt="" coords="7,5,169,32"></map></td></tr>
129
- <tr><td><img src="inherit__graph__33.png" border="0" alt="" usemap="#Passenger_1_1StaticString_1_1StaticString_1_1Hash_map">
130
- <map name="Passenger_1_1StaticString_1_1StaticString_1_1Hash_map">
131
- <area shape="rect" href="structPassenger_1_1StaticString_1_1Hash.html" title="A hash function object for StaticString." alt="" coords="7,5,287,32"></map></td></tr>
132
- <tr><td><img src="inherit__graph__34.png" border="0" alt="" usemap="#Passenger_1_1SystemException_map">
133
- <map name="Passenger_1_1SystemException_map">
134
- <area shape="rect" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call." alt="" coords="7,31,204,57"><area shape="rect" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system." alt="" coords="261,5,483,32"><area shape="rect" href="classPassenger_1_1TimeRetrievalException.html" title="Unable to retrieve the system time using time()." alt="" coords="253,56,491,83"></map></td></tr>
135
- <tr><td><img src="inherit__graph__35.png" border="0" alt="" usemap="#Passenger_1_1TimeoutException_map">
136
- <map name="Passenger_1_1TimeoutException_map">
137
- <area shape="rect" href="classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired." alt="" coords="5,5,208,32"></map></td></tr>
138
- <tr><td><img src="inherit__graph__36.png" border="0" alt="" usemap="#Passenger_1_1Uint16Reader_map">
139
- <map name="Passenger_1_1Uint16Reader_map">
140
- <area shape="rect" href="classPassenger_1_1Uint16Reader.html" title="Class for reading a 16&#45;bit big&#45;endian integer." alt="" coords="5,5,184,32"></map></td></tr>
141
- <tr><td><img src="inherit__graph__37.png" border="0" alt="" usemap="#Passenger_1_1Uint32Reader_map">
142
- <map name="Passenger_1_1Uint32Reader_map">
143
- <area shape="rect" href="classPassenger_1_1Uint32Reader.html" title="Class for reading a 32&#45;bit big&#45;endian integer." alt="" coords="5,5,184,32"></map></td></tr>
144
- <tr><td><img src="inherit__graph__38.png" border="0" alt="" usemap="#Server_map">
145
- <map name="Server_map">
146
- <area shape="rect" href="classServer.html" title="A representation of the Server responsible for handling Client instances." alt="" coords="7,5,68,32"></map></td></tr>
147
- <tr><td><img src="inherit__graph__39.png" border="0" alt="" usemap="#ServerInstanceDirToucher_map">
148
- <map name="ServerInstanceDirToucher_map">
149
- <area shape="rect" href="classServerInstanceDirToucher.html" title="Touch all files in the server instance dir every 6 hours in order to prevent /tmp..." alt="" coords="5,5,187,32"></map></td></tr>
45
+ <tr><td><img src="inherit__graph__4.png" border="0" alt="" usemap="#Passenger_1_1ArgumentException_map"/>
46
+ <map name="Passenger_1_1ArgumentException_map" id="Passenger_1_1ArgumentException">
47
+ <area shape="rect" id="node1" href="classPassenger_1_1ArgumentException.html" title="Indicates that a specified argument is incorrect or violates a requirement." alt="" coords="7,5,228,35"/></map></td></tr>
48
+ <tr><td><img src="inherit__graph__5.png" border="0" alt="" usemap="#Passenger_1_1ArrayMessage_map"/>
49
+ <map name="Passenger_1_1ArrayMessage_map" id="Passenger_1_1ArrayMessage">
50
+ <area shape="rect" id="node1" href="classPassenger_1_1ArrayMessage.html" title="For array messages." alt="" coords="7,5,193,35"/></map></td></tr>
51
+ <tr><td><img src="inherit__graph__6.png" border="0" alt="" usemap="#Passenger_1_1BufferedUpload_map"/>
52
+ <map name="Passenger_1_1BufferedUpload_map" id="Passenger_1_1BufferedUpload">
53
+ <area shape="rect" id="node1" href="classPassenger_1_1BufferedUpload.html" title="Represents a buffered upload file." alt="" coords="7,5,201,35"/></map></td></tr>
54
+ <tr><td><img src="inherit__graph__7.png" border="0" alt="" usemap="#Passenger_1_1BusyException_map"/>
55
+ <map name="Passenger_1_1BusyException_map" id="Passenger_1_1BusyException">
56
+ <area shape="rect" id="node1" href="classPassenger_1_1BusyException.html" title="The application pool is too busy and cannot fulfill a get() request." alt="" coords="5,5,195,35"/></map></td></tr>
57
+ <tr><td><img src="inherit__graph__8.png" border="0" alt="" usemap="#Passenger_1_1ConfigurationException_map"/>
58
+ <map name="Passenger_1_1ConfigurationException_map" id="Passenger_1_1ConfigurationException">
59
+ <area shape="rect" id="node1" href="classPassenger_1_1ConfigurationException.html" title="Thrown when an invalid configuration is given." alt="" coords="7,5,249,35"/></map></td></tr>
60
+ <tr><td><img src="inherit__graph__9.png" border="0" alt="" usemap="#Passenger_1_1DirectoryMapper_map"/>
61
+ <map name="Passenger_1_1DirectoryMapper_map" id="Passenger_1_1DirectoryMapper">
62
+ <area shape="rect" id="node1" href="classPassenger_1_1DirectoryMapper.html" title="Utility class for determining URI&#45;to&#45;application directory mappings." alt="" coords="5,5,208,35"/></map></td></tr>
63
+ <tr><td><img src="inherit__graph__10.png" border="0" alt="" usemap="#Passenger_1_1EventedClient_map"/>
64
+ <map name="Passenger_1_1EventedClient_map" id="Passenger_1_1EventedClient">
65
+ <area shape="rect" id="node1" href="classPassenger_1_1EventedClient.html" title="A utility class for making I/O handling in non&#45;blocking libev evented servers much..." alt="" coords="5,5,189,35"/></map></td></tr>
66
+ <tr><td><img src="inherit__graph__11.png" border="0" alt="" usemap="#Passenger_1_1EventedServer_map"/>
67
+ <map name="Passenger_1_1EventedServer_map" id="Passenger_1_1EventedServer">
68
+ <area shape="rect" id="node1" href="classPassenger_1_1EventedServer.html" title="A base class for writing single&#45;threaded, evented servers that use non&#45;blocking I/O..." alt="" coords="7,5,196,35"/><area shape="rect" id="node3" href="classPassenger_1_1EventedMessageServer.html" title="Note when overriding onNewClient: call the parent method first! It does some initialization..." alt="" coords="245,5,493,35"/></map></td></tr>
69
+ <tr><td><img src="inherit__graph__12.png" border="0" alt="" usemap="#Passenger_1_1EventFd_map"/>
70
+ <map name="Passenger_1_1EventFd_map" id="Passenger_1_1EventFd">
71
+ <area shape="rect" id="node1" href="classPassenger_1_1EventFd.html" title="A synchronization mechanism that&#39;s implemented with file descriptors, and as..." alt="" coords="7,5,153,35"/></map></td></tr>
72
+ <tr><td><img src="inherit__graph__13.png" border="0" alt="" usemap="#Passenger_1_1FileDescriptor_map"/>
73
+ <map name="Passenger_1_1FileDescriptor_map" id="Passenger_1_1FileDescriptor">
74
+ <area shape="rect" id="node1" href="classPassenger_1_1FileDescriptor.html" title="Wrapper class around a file descriptor integer, for RAII behavior." alt="" coords="5,5,189,35"/></map></td></tr>
75
+ <tr><td><img src="inherit__graph__14.png" border="0" alt="" usemap="#Passenger_1_1HttpStatusExtractor_map"/>
76
+ <map name="Passenger_1_1HttpStatusExtractor_map" id="Passenger_1_1HttpStatusExtractor">
77
+ <area shape="rect" id="node1" href="classPassenger_1_1HttpStatusExtractor.html" title="Utility class for extracting the HTTP status value from an HTTP response." alt="" coords="5,5,229,35"/></map></td></tr>
78
+ <tr><td><img src="inherit__graph__15.png" border="0" alt="" usemap="#Passenger_1_1IOException_map"/>
79
+ <map name="Passenger_1_1IOException_map" id="Passenger_1_1IOException">
80
+ <area shape="rect" id="node1" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation." alt="" coords="7,32,177,61"/><area shape="rect" id="node3" href="classPassenger_1_1EOFException.html" title="An unexpected end&#45;of&#45;file I/O error." alt="" coords="256,5,440,35"/><area shape="rect" id="node5" href="classPassenger_1_1FileNotFoundException.html" title="Thrown when a certain file cannot be found." alt="" coords="228,59,468,88"/></map></td></tr>
81
+ <tr><td><img src="inherit__graph__16.png" border="0" alt="" usemap="#Passenger_1_1MessageChannel_map"/>
82
+ <map name="Passenger_1_1MessageChannel_map" id="Passenger_1_1MessageChannel">
83
+ <area shape="rect" id="node1" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors." alt="" coords="5,5,211,35"/></map></td></tr>
84
+ <tr><td><img src="inherit__graph__17.png" border="0" alt="" usemap="#Passenger_1_1MessageServer_map"/>
85
+ <map name="Passenger_1_1MessageServer_map" id="Passenger_1_1MessageServer">
86
+ <area shape="rect" id="node1" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework." alt="" coords="7,5,201,35"/></map></td></tr>
87
+ <tr><td><img src="inherit__graph__18.png" border="0" alt="" usemap="#Passenger_1_1MessageServer_1_1ClientContext_map"/>
88
+ <map name="Passenger_1_1MessageServer_1_1ClientContext_map" id="Passenger_1_1MessageServer_1_1ClientContext">
89
+ <area shape="rect" id="node1" href="classPassenger_1_1MessageServer_1_1ClientContext.html" title="Interface for client context objects." alt="" coords="7,5,295,35"/><area shape="rect" id="node3" href="classPassenger_1_1MessageServer_1_1CommonClientContext.html" title="A common client context, containing client&#45;specific information used by MessageServer..." alt="" coords="345,5,692,35"/></map></td></tr>
90
+ <tr><td><img src="inherit__graph__19.png" border="0" alt="" usemap="#Passenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard_map"/>
91
+ <map name="Passenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard_map" id="Passenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard">
92
+ <area shape="rect" id="node1" href="structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html" title="Calls clientDisconnected() on all handlers when destroyed." alt="" coords="7,5,420,35"/></map></td></tr>
93
+ <tr><td><img src="inherit__graph__20.png" border="0" alt="" usemap="#Passenger_1_1MessageServer_1_1Handler_map"/>
94
+ <map name="Passenger_1_1MessageServer_1_1Handler_map" id="Passenger_1_1MessageServer_1_1Handler">
95
+ <area shape="rect" id="node1" href="classPassenger_1_1MessageServer_1_1Handler.html" title="An abstract message handler class." alt="" coords="5,5,259,35"/></map></td></tr>
96
+ <tr><td><img src="inherit__graph__21.png" border="0" alt="" usemap="#Passenger_1_1PoolOptions_map"/>
97
+ <map name="Passenger_1_1PoolOptions_map" id="Passenger_1_1PoolOptions">
98
+ <area shape="rect" id="node1" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()..." alt="" coords="7,5,177,35"/></map></td></tr>
99
+ <tr><td><img src="inherit__graph__22.png" border="0" alt="" usemap="#Passenger_1_1Process_map"/>
100
+ <map name="Passenger_1_1Process_map" id="Passenger_1_1Process">
101
+ <area shape="rect" id="node1" href="classPassenger_1_1Process.html" title="Represents a single application process, as spawned by SpawnManager or by ApplicationPool::Interface..." alt="" coords="5,5,152,35"/></map></td></tr>
102
+ <tr><td><img src="inherit__graph__23.png" border="0" alt="" usemap="#Passenger_1_1RandomGenerator_map"/>
103
+ <map name="Passenger_1_1RandomGenerator_map" id="Passenger_1_1RandomGenerator">
104
+ <area shape="rect" id="node1" href="classPassenger_1_1RandomGenerator.html" title="A random data generator." alt="" coords="7,5,220,35"/></map></td></tr>
105
+ <tr><td><img src="inherit__graph__24.png" border="0" alt="" usemap="#Passenger_1_1RuntimeException_map"/>
106
+ <map name="Passenger_1_1RuntimeException_map" id="Passenger_1_1RuntimeException">
107
+ <area shape="rect" id="node1" href="classPassenger_1_1RuntimeException.html" title="A generic runtime exception." alt="" coords="7,5,217,35"/></map></td></tr>
108
+ <tr><td><img src="inherit__graph__25.png" border="0" alt="" usemap="#Passenger_1_1ScalarMessage_map"/>
109
+ <map name="Passenger_1_1ScalarMessage_map" id="Passenger_1_1ScalarMessage">
110
+ <area shape="rect" id="node1" href="classPassenger_1_1ScalarMessage.html" title="Class for reading a scalar message." alt="" coords="7,5,199,35"/></map></td></tr>
111
+ <tr><td><img src="inherit__graph__26.png" border="0" alt="" usemap="#Passenger_1_1ScgiRequestParser_map"/>
112
+ <map name="Passenger_1_1ScgiRequestParser_map" id="Passenger_1_1ScgiRequestParser">
113
+ <area shape="rect" id="node1" href="classPassenger_1_1ScgiRequestParser.html" title="A parser for SCGI requests." alt="" coords="5,5,221,35"/></map></td></tr>
114
+ <tr><td><img src="inherit__graph__27.png" border="0" alt="" usemap="#Passenger_1_1SecurityException_map"/>
115
+ <map name="Passenger_1_1SecurityException_map" id="Passenger_1_1SecurityException">
116
+ <area shape="rect" id="node1" href="classPassenger_1_1SecurityException.html" title="Represents some kind of security error." alt="" coords="5,5,216,35"/></map></td></tr>
117
+ <tr><td><img src="inherit__graph__28.png" border="0" alt="" usemap="#Passenger_1_1Session_map"/>
118
+ <map name="Passenger_1_1Session_map" id="Passenger_1_1Session">
119
+ <area shape="rect" id="node1" href="classPassenger_1_1Session.html" title="Represents a single request/response pair of an application process." alt="" coords="5,5,152,35"/><area shape="rect" id="node3" href="classPassenger_1_1StandardSession.html" title="A &quot;standard&quot; implementation of Session." alt="" coords="200,5,405,35"/></map></td></tr>
120
+ <tr><td><img src="inherit__graph__29.png" border="0" alt="" usemap="#Passenger_1_1SpawnException_map"/>
121
+ <map name="Passenger_1_1SpawnException_map" id="Passenger_1_1SpawnException">
122
+ <area shape="rect" id="node1" href="classPassenger_1_1SpawnException.html" title="Thrown when SpawnManager or ApplicationPool fails to spawn an application instance..." alt="" coords="5,5,205,35"/></map></td></tr>
123
+ <tr><td><img src="inherit__graph__30.png" border="0" alt="" usemap="#Passenger_1_1StaticString_map"/>
124
+ <map name="Passenger_1_1StaticString_map" id="Passenger_1_1StaticString">
125
+ <area shape="rect" id="node1" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer." alt="" coords="7,5,177,35"/></map></td></tr>
126
+ <tr><td><img src="inherit__graph__31.png" border="0" alt="" usemap="#Passenger_1_1StaticString_1_1Hash_map"/>
127
+ <map name="Passenger_1_1StaticString_1_1Hash_map" id="Passenger_1_1StaticString_1_1Hash">
128
+ <area shape="rect" id="node1" href="structPassenger_1_1StaticString_1_1Hash.html" title="A hash function object for StaticString." alt="" coords="7,5,217,35"/></map></td></tr>
129
+ <tr><td><img src="inherit__graph__32.png" border="0" alt="" usemap="#Passenger_1_1SystemException_map"/>
130
+ <map name="Passenger_1_1SystemException_map" id="Passenger_1_1SystemException">
131
+ <area shape="rect" id="node1" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call." alt="" coords="5,32,213,61"/><area shape="rect" id="node3" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system." alt="" coords="271,5,497,35"/><area shape="rect" id="node5" href="classPassenger_1_1TimeRetrievalException.html" title="Unable to retrieve the system time using time()." alt="" coords="263,59,505,88"/></map></td></tr>
132
+ <tr><td><img src="inherit__graph__33.png" border="0" alt="" usemap="#Passenger_1_1TimeoutException_map"/>
133
+ <map name="Passenger_1_1TimeoutException_map" id="Passenger_1_1TimeoutException">
134
+ <area shape="rect" id="node1" href="classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired." alt="" coords="5,5,216,35"/></map></td></tr>
135
+ <tr><td><img src="inherit__graph__34.png" border="0" alt="" usemap="#Passenger_1_1Uint16Message_map"/>
136
+ <map name="Passenger_1_1Uint16Message_map" id="Passenger_1_1Uint16Message">
137
+ <area shape="rect" id="node1" href="classPassenger_1_1Uint16Message.html" title="For 16&#45;bit big&#45;endian integers." alt="" coords="7,5,201,35"/></map></td></tr>
138
+ <tr><td><img src="inherit__graph__35.png" border="0" alt="" usemap="#Passenger_1_1Uint32Message_map"/>
139
+ <map name="Passenger_1_1Uint32Message_map" id="Passenger_1_1Uint32Message">
140
+ <area shape="rect" id="node1" href="classPassenger_1_1Uint32Message.html" title="For 32&#45;bit big&#45;endian integers." alt="" coords="7,5,201,35"/></map></td></tr>
141
+ <tr><td><img src="inherit__graph__36.png" border="0" alt="" usemap="#Server_map"/>
142
+ <map name="Server_map" id="Server">
143
+ <area shape="rect" id="node1" href="classServer.html" title="A representation of the Server responsible for handling Client instances." alt="" coords="5,5,69,35"/></map></td></tr>
144
+ <tr><td><img src="inherit__graph__37.png" border="0" alt="" usemap="#ServerInstanceDirToucher_map"/>
145
+ <map name="ServerInstanceDirToucher_map" id="ServerInstanceDirToucher">
146
+ <area shape="rect" id="node1" href="classServerInstanceDirToucher.html" title="Touch all files in the server instance dir every 6 hours in order to prevent /tmp..." alt="" coords="7,5,191,35"/></map></td></tr>
150
147
  </table>
151
148
  </div>
152
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:58 2010 for Passenger by&nbsp;
149
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
153
150
  <a href="http://www.doxygen.org/index.html">
154
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
151
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
155
152
  </body>
156
153
  </html>
@@ -13,6 +13,7 @@
13
13
  <ul>
14
14
  <li class="current"><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><a href="annotated.html"><span>Classes</span></a></li>
17
18
  <li><a href="files.html"><span>Files</span></a></li>
18
19
  </ul>
@@ -13,6 +13,7 @@
13
13
  <ul>
14
14
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
15
15
  <li class="current"><a href="modules.html"><span>Modules</span></a></li>
16
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
16
17
  <li><a href="annotated.html"><span>Classes</span></a></li>
17
18
  <li><a href="files.html"><span>Files</span></a></li>
18
19
  </ul>
@@ -21,11 +22,11 @@
21
22
  <div class="contents">
22
23
  <h1>Modules</h1>Here is a list of all modules:<ul>
23
24
  <li><a class="el" href="group__Core.html">Core Apache-related classes and functions</a><ul>
24
- <li><a class="el" href="group__Configuration.html">Apache module configuration</a></li>
25
25
  <li><a class="el" href="group__Hooks.html">Apache hooks</a></li>
26
26
  </ul>
27
27
  </li>
28
28
  <li><a class="el" href="group__Support.html">Apache-independent support classes and function</a></li>
29
+ <li><a class="el" href="group__Exceptions.html">Exceptions</a></li>
29
30
  </ul>
30
31
  </div>
31
32
  <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
@@ -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: Passenger Namespace 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>
@@ -23,439 +26,268 @@
23
26
  </div>
24
27
  </div>
25
28
  <div class="contents">
26
- <h1>Passenger Namespace Reference</h1>This file provides a bunch of classes for reading and writing messages in the <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> format.
27
- <a href="#_details">More...</a>
28
- <p>
29
+ <h1>Passenger Namespace Reference</h1>
30
+ <p>Common code for all agents.
31
+ <a href="#_details">More...</a></p>
29
32
  <table border="0" cellpadding="0" cellspacing="0">
30
- <tr><td></td></tr>
31
- <tr><td colspan="2"><br><h2>Classes</h2></td></tr>
32
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1DirectoryMapper.html">DirectoryMapper</a></td></tr>
33
-
34
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility class for determining URI-to-application directory mappings. <a href="classPassenger_1_1DirectoryMapper.html#_details">More...</a><br></td></tr>
35
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1AbstractSpawnManager.html">AbstractSpawnManager</a></td></tr>
36
-
37
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Spawning of application processes. <a href="classPassenger_1_1AbstractSpawnManager.html#_details">More...</a><br></td></tr>
38
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SystemException.html">SystemException</a></td></tr>
39
-
40
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an error returned by a system call or a standard library call. <a href="classPassenger_1_1SystemException.html#_details">More...</a><br></td></tr>
41
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1FileSystemException.html">FileSystemException</a></td></tr>
42
-
43
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A filesystem error, as returned by the operating system. <a href="classPassenger_1_1FileSystemException.html#_details">More...</a><br></td></tr>
44
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1TimeRetrievalException.html">TimeRetrievalException</a></td></tr>
45
-
46
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unable to retrieve the system time using <code>time()</code>. <a href="classPassenger_1_1TimeRetrievalException.html#_details">More...</a><br></td></tr>
47
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1IOException.html">IOException</a></td></tr>
48
-
49
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an error that occured during an I/O operation. <a href="classPassenger_1_1IOException.html#_details">More...</a><br></td></tr>
50
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1FileNotFoundException.html">FileNotFoundException</a></td></tr>
51
-
52
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Thrown when a certain file cannot be found. <a href="classPassenger_1_1FileNotFoundException.html#_details">More...</a><br></td></tr>
53
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1EOFException.html">EOFException</a></td></tr>
54
-
55
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An unexpected end-of-file I/O error. <a href="classPassenger_1_1EOFException.html#_details">More...</a><br></td></tr>
56
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ConfigurationException.html">ConfigurationException</a></td></tr>
57
-
58
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Thrown when an invalid configuration is given. <a href="classPassenger_1_1ConfigurationException.html#_details">More...</a><br></td></tr>
59
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SpawnException.html">SpawnException</a></td></tr>
60
-
61
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Thrown when <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> or ApplicationPool fails to spawn an application instance. <a href="classPassenger_1_1SpawnException.html#_details">More...</a><br></td></tr>
62
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ArgumentException.html">ArgumentException</a></td></tr>
63
-
64
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates that a specified argument is incorrect or violates a requirement. <a href="classPassenger_1_1ArgumentException.html#_details">More...</a><br></td></tr>
65
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1RuntimeException.html">RuntimeException</a></td></tr>
66
-
67
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A generic runtime exception. <a href="classPassenger_1_1RuntimeException.html#_details">More...</a><br></td></tr>
68
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1TimeoutException.html">TimeoutException</a></td></tr>
69
-
70
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An exception indicating that some timeout expired. <a href="classPassenger_1_1TimeoutException.html#_details">More...</a><br></td></tr>
71
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SecurityException.html">SecurityException</a></td></tr>
72
-
73
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents some kind of security error. <a href="classPassenger_1_1SecurityException.html#_details">More...</a><br></td></tr>
74
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1BusyException.html">BusyException</a></td></tr>
75
-
76
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The application pool is too busy and cannot fulfill a get() request. <a href="classPassenger_1_1BusyException.html#_details">More...</a><br></td></tr>
77
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a></td></tr>
78
-
79
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper class around a file descriptor integer, for RAII behavior. <a href="classPassenger_1_1FileDescriptor.html#_details">More...</a><br></td></tr>
80
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1EventFd.html">EventFd</a></td></tr>
81
-
82
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A synchronization mechanism that's implemented with file descriptors, and as such can be used in combination with select() and friends. <a href="classPassenger_1_1EventFd.html#_details">More...</a><br></td></tr>
83
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html">MessageChannel</a></td></tr>
84
-
85
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience class for I/O operations on file descriptors. <a href="classPassenger_1_1MessageChannel.html#_details">More...</a><br></td></tr>
86
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Uint16Reader.html">Uint16Reader</a></td></tr>
87
-
88
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for reading a 16-bit big-endian integer. <a href="classPassenger_1_1Uint16Reader.html#_details">More...</a><br></td></tr>
89
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Uint32Reader.html">Uint32Reader</a></td></tr>
90
-
91
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for reading a 32-bit big-endian integer. <a href="classPassenger_1_1Uint32Reader.html#_details">More...</a><br></td></tr>
92
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ArrayReader.html">ArrayReader</a></td></tr>
93
-
94
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for reading a an array message. <a href="classPassenger_1_1ArrayReader.html#_details">More...</a><br></td></tr>
95
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ScalarReader.html">ScalarReader</a></td></tr>
96
-
97
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for reading a scalar message. <a href="classPassenger_1_1ScalarReader.html#_details">More...</a><br></td></tr>
98
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html">MessageServer</a></td></tr>
99
-
100
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simple pluggable request/response messaging server framework. <a href="classPassenger_1_1MessageServer.html#_details">More...</a><br></td></tr>
101
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a></td></tr>
102
-
103
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This struct encapsulates information for ApplicationPool::get() and for <a class="el" href="classPassenger_1_1SpawnManager.html#88a94ba4d41dab492cb1dc8a0f998973" title="Spawn a new application process.">SpawnManager::spawn()</a>, such as which application is to be spawned. <a href="structPassenger_1_1PoolOptions.html#_details">More...</a><br></td></tr>
104
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Process.html">Process</a></td></tr>
105
-
106
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">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(). <a href="classPassenger_1_1Process.html#_details">More...</a><br></td></tr>
107
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1RandomGenerator.html">RandomGenerator</a></td></tr>
108
-
109
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A random data generator. <a href="classPassenger_1_1RandomGenerator.html#_details">More...</a><br></td></tr>
110
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Session.html">Session</a></td></tr>
111
-
112
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents a single request/response pair of an application process. <a href="classPassenger_1_1Session.html#_details">More...</a><br></td></tr>
113
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardSession.html">StandardSession</a></td></tr>
114
-
115
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">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>. <a href="classPassenger_1_1StandardSession.html#_details">More...</a><br></td></tr>
116
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SpawnManager.html">SpawnManager</a></td></tr>
117
-
118
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An <a class="el" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes.">AbstractSpawnManager</a> implementation. <a href="classPassenger_1_1SpawnManager.html#_details">More...</a><br></td></tr>
119
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StaticString.html">StaticString</a></td></tr>
120
-
121
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An immutable, static byte buffer. <a href="classPassenger_1_1StaticString.html#_details">More...</a><br></td></tr>
122
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1AnythingToString.html">AnythingToString</a></td></tr>
123
-
124
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used internally by <a class="el" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString()</a>. <a href="structPassenger_1_1AnythingToString.html#_details">More...</a><br></td></tr>
125
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html">AnythingToString&lt; vector&lt; string &gt; &gt;</a></td></tr>
126
-
127
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used internally by <a class="el" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString()</a>. <a href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html#_details">More...</a><br></td></tr>
128
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01StaticString_01_4_01_4.html">AnythingToString&lt; vector&lt; StaticString &gt; &gt;</a></td></tr>
129
-
130
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used internally by <a class="el" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString()</a>. <a href="structPassenger_1_1AnythingToString_3_01vector_3_01StaticString_01_4_01_4.html#_details">More...</a><br></td></tr>
131
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1BufferedUpload.html">BufferedUpload</a></td></tr>
132
-
133
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents a buffered upload file. <a href="classPassenger_1_1BufferedUpload.html#_details">More...</a><br></td></tr>
134
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MemZeroGuard.html">MemZeroGuard</a></td></tr>
135
-
136
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fills the given memory space or string with zeroes when a MemoryZeroGuard object is destroyed. <a href="classPassenger_1_1MemZeroGuard.html#_details">More...</a><br></td></tr>
137
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1HttpStatusExtractor.html">HttpStatusExtractor</a></td></tr>
138
-
139
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility class for extracting the HTTP status value from an HTTP response. <a href="classPassenger_1_1HttpStatusExtractor.html#_details">More...</a><br></td></tr>
140
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ScgiRequestParser.html">ScgiRequestParser</a></td></tr>
141
-
142
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A parser for SCGI requests. <a href="classPassenger_1_1ScgiRequestParser.html#_details">More...</a><br></td></tr>
143
- <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
144
- <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef shared_ptr<br class="typebreak">
145
- &lt; <a class="el" href="classPassenger_1_1AbstractSpawnManager.html">AbstractSpawnManager</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#fd60d942a89fbb7f306e330d75704570">AbstractSpawnManagerPtr</a></td></tr>
146
-
147
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient alias for <a class="el" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes.">AbstractSpawnManager</a> smart pointer. <a href="#fd60d942a89fbb7f306e330d75704570"></a><br></td></tr>
148
- <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef shared_ptr&lt; <a class="el" href="classPassenger_1_1Process.html">Process</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#ced1f248465136b313c6dec5fe6ca492">ProcessPtr</a></td></tr>
149
-
150
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient alias for <a class="el" href="classPassenger_1_1Process.html" title="Represents a single application process, as spawned by SpawnManager or by ApplicationPool::Interface...">Process</a> smart pointer. <a href="#ced1f248465136b313c6dec5fe6ca492"></a><br></td></tr>
151
- <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef shared_ptr&lt; <a class="el" href="classPassenger_1_1SpawnManager.html">SpawnManager</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#6ab2d566ff87a2676c23d8aa40204587">SpawnManagerPtr</a></td></tr>
152
-
153
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient alias for <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> smart pointer. <a href="#6ab2d566ff87a2676c23d8aa40204587"></a><br></td></tr>
154
- <tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
155
- <tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d">FileType</a> { <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d9fc66834fe96c52799397496b8df8486">FT_NONEXISTANT</a>,
156
- <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d1538596a928321d1a282c6bb06e80563">FT_REGULAR</a>,
157
- <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07dbb09dbba1071b4770913363db2462eee">FT_DIRECTORY</a>,
158
- <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d3e89b9a7be074975e007d9f7cd77f4ff">FT_OTHER</a>
33
+ <tr><td colspan="2"><h2>Classes</h2></td></tr>
34
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1DirectoryMapper.html">DirectoryMapper</a></td></tr>
35
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility class for determining URI-to-application directory mappings. <a href="classPassenger_1_1DirectoryMapper.html#_details">More...</a><br/></td></tr>
36
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1AbstractSpawnManager.html">AbstractSpawnManager</a></td></tr>
37
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Spawning of application processes. <a href="classPassenger_1_1AbstractSpawnManager.html#_details">More...</a><br/></td></tr>
38
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1EventedClient.html">EventedClient</a></td></tr>
39
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A utility class for making I/O handling in non-blocking libev evented servers much easier. <a href="classPassenger_1_1EventedClient.html#_details">More...</a><br/></td></tr>
40
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1EventedMessageServer.html">EventedMessageServer</a></td></tr>
41
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Note when overriding onNewClient: call the parent method first! It does some initialization but might disconnect the client if that initialization fails. <a href="classPassenger_1_1EventedMessageServer.html#_details">More...</a><br/></td></tr>
42
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1EventedServer.html">EventedServer</a></td></tr>
43
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A base class for writing single-threaded, evented servers that use non-blocking I/O. <a href="classPassenger_1_1EventedServer.html#_details">More...</a><br/></td></tr>
44
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SystemException.html">SystemException</a></td></tr>
45
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an error returned by a system call or a standard library call. <a href="classPassenger_1_1SystemException.html#_details">More...</a><br/></td></tr>
46
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1FileSystemException.html">FileSystemException</a></td></tr>
47
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A filesystem error, as returned by the operating system. <a href="classPassenger_1_1FileSystemException.html#_details">More...</a><br/></td></tr>
48
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1TimeRetrievalException.html">TimeRetrievalException</a></td></tr>
49
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unable to retrieve the system time using <code>time()</code>. <a href="classPassenger_1_1TimeRetrievalException.html#_details">More...</a><br/></td></tr>
50
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1IOException.html">IOException</a></td></tr>
51
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents an error that occured during an I/O operation. <a href="classPassenger_1_1IOException.html#_details">More...</a><br/></td></tr>
52
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1FileNotFoundException.html">FileNotFoundException</a></td></tr>
53
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Thrown when a certain file cannot be found. <a href="classPassenger_1_1FileNotFoundException.html#_details">More...</a><br/></td></tr>
54
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1EOFException.html">EOFException</a></td></tr>
55
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An unexpected end-of-file I/O error. <a href="classPassenger_1_1EOFException.html#_details">More...</a><br/></td></tr>
56
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ConfigurationException.html">ConfigurationException</a></td></tr>
57
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Thrown when an invalid configuration is given. <a href="classPassenger_1_1ConfigurationException.html#_details">More...</a><br/></td></tr>
58
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SpawnException.html">SpawnException</a></td></tr>
59
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Thrown when <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> or ApplicationPool fails to spawn an application instance. <a href="classPassenger_1_1SpawnException.html#_details">More...</a><br/></td></tr>
60
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ArgumentException.html">ArgumentException</a></td></tr>
61
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicates that a specified argument is incorrect or violates a requirement. <a href="classPassenger_1_1ArgumentException.html#_details">More...</a><br/></td></tr>
62
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1RuntimeException.html">RuntimeException</a></td></tr>
63
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A generic runtime exception. <a href="classPassenger_1_1RuntimeException.html#_details">More...</a><br/></td></tr>
64
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1TimeoutException.html">TimeoutException</a></td></tr>
65
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An exception indicating that some timeout expired. <a href="classPassenger_1_1TimeoutException.html#_details">More...</a><br/></td></tr>
66
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SecurityException.html">SecurityException</a></td></tr>
67
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents some kind of security error. <a href="classPassenger_1_1SecurityException.html#_details">More...</a><br/></td></tr>
68
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1BusyException.html">BusyException</a></td></tr>
69
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The application pool is too busy and cannot fulfill a get() request. <a href="classPassenger_1_1BusyException.html#_details">More...</a><br/></td></tr>
70
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a></td></tr>
71
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper class around a file descriptor integer, for RAII behavior. <a href="classPassenger_1_1FileDescriptor.html#_details">More...</a><br/></td></tr>
72
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1EventFd.html">EventFd</a></td></tr>
73
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A synchronization mechanism that's implemented with file descriptors, and as such can be used in combination with select() and friends. <a href="classPassenger_1_1EventFd.html#_details">More...</a><br/></td></tr>
74
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html">MessageChannel</a></td></tr>
75
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience class for I/O operations on file descriptors. <a href="classPassenger_1_1MessageChannel.html#_details">More...</a><br/></td></tr>
76
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Uint16Message.html">Uint16Message</a></td></tr>
77
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">For 16-bit big-endian integers. <a href="classPassenger_1_1Uint16Message.html#_details">More...</a><br/></td></tr>
78
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Uint32Message.html">Uint32Message</a></td></tr>
79
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">For 32-bit big-endian integers. <a href="classPassenger_1_1Uint32Message.html#_details">More...</a><br/></td></tr>
80
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ArrayMessage.html">ArrayMessage</a></td></tr>
81
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">For array messages. <a href="classPassenger_1_1ArrayMessage.html#_details">More...</a><br/></td></tr>
82
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ScalarMessage.html">ScalarMessage</a></td></tr>
83
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Class for reading a scalar message. <a href="classPassenger_1_1ScalarMessage.html#_details">More...</a><br/></td></tr>
84
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html">MessageServer</a></td></tr>
85
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simple pluggable request/response messaging server framework. <a href="classPassenger_1_1MessageServer.html#_details">More...</a><br/></td></tr>
86
+ <tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a></td></tr>
87
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">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. <a href="structPassenger_1_1PoolOptions.html#_details">More...</a><br/></td></tr>
88
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Process.html">Process</a></td></tr>
89
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">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(). <a href="classPassenger_1_1Process.html#_details">More...</a><br/></td></tr>
90
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1RandomGenerator.html">RandomGenerator</a></td></tr>
91
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A random data generator. <a href="classPassenger_1_1RandomGenerator.html#_details">More...</a><br/></td></tr>
92
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Session.html">Session</a></td></tr>
93
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents a single request/response pair of an application process. <a href="classPassenger_1_1Session.html#_details">More...</a><br/></td></tr>
94
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StandardSession.html">StandardSession</a></td></tr>
95
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">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>. <a href="classPassenger_1_1StandardSession.html#_details">More...</a><br/></td></tr>
96
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1SpawnManager.html">SpawnManager</a></td></tr>
97
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An <a class="el" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes.">AbstractSpawnManager</a> implementation. <a href="classPassenger_1_1SpawnManager.html#_details">More...</a><br/></td></tr>
98
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1StaticString.html">StaticString</a></td></tr>
99
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An immutable, static byte buffer. <a href="classPassenger_1_1StaticString.html#_details">More...</a><br/></td></tr>
100
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1BufferedUpload.html">BufferedUpload</a></td></tr>
101
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents a buffered upload file. <a href="classPassenger_1_1BufferedUpload.html#_details">More...</a><br/></td></tr>
102
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1HttpStatusExtractor.html">HttpStatusExtractor</a></td></tr>
103
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility class for extracting the HTTP status value from an HTTP response. <a href="classPassenger_1_1HttpStatusExtractor.html#_details">More...</a><br/></td></tr>
104
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ScgiRequestParser.html">ScgiRequestParser</a></td></tr>
105
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A parser for SCGI requests. <a href="classPassenger_1_1ScgiRequestParser.html#_details">More...</a><br/></td></tr>
106
+ <tr><td colspan="2"><h2>Typedefs</h2></td></tr>
107
+ <tr><td class="memItemLeft" align="right" valign="top">typedef shared_ptr<br class="typebreak"/>
108
+ &lt; <a class="el" href="classPassenger_1_1AbstractSpawnManager.html">AbstractSpawnManager</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#afd60d942a89fbb7f306e330d75704570">AbstractSpawnManagerPtr</a></td></tr>
109
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient alias for <a class="el" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes.">AbstractSpawnManager</a> smart pointer. <a href="#afd60d942a89fbb7f306e330d75704570"></a><br/></td></tr>
110
+ <tr><td class="memItemLeft" align="right" valign="top">typedef shared_ptr&lt; <a class="el" href="classPassenger_1_1Process.html">Process</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#aced1f248465136b313c6dec5fe6ca492">ProcessPtr</a></td></tr>
111
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient alias for <a class="el" href="classPassenger_1_1Process.html" title="Represents a single application process, as spawned by SpawnManager or by ApplicationPool::Interface...">Process</a> smart pointer. <a href="#aced1f248465136b313c6dec5fe6ca492"></a><br/></td></tr>
112
+ <tr><td class="memItemLeft" align="right" valign="top">typedef shared_ptr&lt; <a class="el" href="classPassenger_1_1SpawnManager.html">SpawnManager</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#a6ab2d566ff87a2676c23d8aa40204587">SpawnManagerPtr</a></td></tr>
113
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient alias for <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> smart pointer. <a href="#a6ab2d566ff87a2676c23d8aa40204587"></a><br/></td></tr>
114
+ <tr><td colspan="2"><h2>Enumerations</h2></td></tr>
115
+ <tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#a14174b712df6046cb823cde43d7ef07d">FileType</a> { <a class="el" href="namespacePassenger.html#a14174b712df6046cb823cde43d7ef07da9fc66834fe96c52799397496b8df8486">FT_NONEXISTANT</a>,
116
+ <a class="el" href="namespacePassenger.html#a14174b712df6046cb823cde43d7ef07da1538596a928321d1a282c6bb06e80563">FT_REGULAR</a>,
117
+ <a class="el" href="namespacePassenger.html#a14174b712df6046cb823cde43d7ef07dabb09dbba1071b4770913363db2462eee">FT_DIRECTORY</a>,
118
+ <a class="el" href="namespacePassenger.html#a14174b712df6046cb823cde43d7ef07da3e89b9a7be074975e007d9f7cd77f4ff">FT_OTHER</a>
159
119
  }</td></tr>
160
-
161
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumeration which indicates what kind of file a file is. <a href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d">More...</a><br></td></tr>
162
- <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
163
- <tr><td class="memItemLeft" nowrap align="right" valign="top">apr_bucket *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#35b11c8ce90e90d01380f182d82f8cac">passenger_bucket_create</a> (SessionPtr session, PassengerBucketStatePtr state, apr_bucket_alloc_t *list)</td></tr>
164
-
165
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">We used to use an apr_bucket_pipe for forwarding the backend process's response to the HTTP client. <a href="#35b11c8ce90e90d01380f182d82f8cac"></a><br></td></tr>
166
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g73b17b509ee44938a56bf16cbf82fb48"></a><!-- doxytag: member="Passenger::atoi" ref="g73b17b509ee44938a56bf16cbf82fb48" args="(const string &amp;s)" -->
167
- int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g73b17b509ee44938a56bf16cbf82fb48">atoi</a> (const string &amp;s)</td></tr>
168
-
169
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts the given string to an integer. <br></td></tr>
170
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7b50461f1bc2b370c956967870da2762"></a><!-- doxytag: member="Passenger::atol" ref="g7b50461f1bc2b370c956967870da2762" args="(const string &amp;s)" -->
171
- long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g7b50461f1bc2b370c956967870da2762">atol</a> (const string &amp;s)</td></tr>
172
-
173
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts the given string to a long integer. <br></td></tr>
174
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g4b8320aedc6a164a535c920234e3d8bf">split</a> (const string &amp;str, char sep, vector&lt; string &gt; &amp;output)</td></tr>
175
-
176
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Split the given string using the given separator. <a href="group__Support.html#g4b8320aedc6a164a535c920234e3d8bf"></a><br></td></tr>
177
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g2a62e38a72c6c65992e3361f6d80c7ef">fileExists</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;filename, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
178
-
179
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the specified file exists. <a href="group__Support.html#g2a62e38a72c6c65992e3361f6d80c7ef"></a><br></td></tr>
180
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d">FileType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g15298b031377d3ecb80295bd5b1a8180">getFileType</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;filename, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
181
-
182
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether 'filename' exists and what kind of file it is. <a href="group__Support.html#g15298b031377d3ecb80295bd5b1a8180"></a><br></td></tr>
183
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g6f414070373465da2e12947463f69953">createFile</a> (const string &amp;filename, const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;contents, mode_t permissions=S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, uid_t owner=USER_NOT_GIVEN, gid_t group=GROUP_NOT_GIVEN, bool overwrite=true)</td></tr>
184
-
185
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the given file with the given contents, permissions and ownership. <a href="group__Support.html#g6f414070373465da2e12947463f69953"></a><br></td></tr>
186
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gf3b0a483f0a252ae08d9de9f8b267d36">canonicalizePath</a> (const string &amp;path)</td></tr>
187
-
188
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a canonical version of the specified path. <a href="group__Support.html#gf3b0a483f0a252ae08d9de9f8b267d36"></a><br></td></tr>
189
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gc3d2b3d608188527d888e63d22c5163c">resolveSymlink</a> (const string &amp;path)</td></tr>
190
-
191
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If <em>path</em> refers to a symlink, then this function resolves the symlink for 1 level. <a href="group__Support.html#gc3d2b3d608188527d888e63d22c5163c"></a><br></td></tr>
192
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge651ece5281f22dc5fc974079f7c9187"></a><!-- doxytag: member="Passenger::extractDirName" ref="ge651ece5281f22dc5fc974079f7c9187" args="(const StaticString &amp;path)" -->
193
- string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#ge651ece5281f22dc5fc974079f7c9187">extractDirName</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;path)</td></tr>
194
-
195
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a path, extracts its directory name. <br></td></tr>
196
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="geb750234207485fa57609174ca8d4359"></a><!-- doxytag: member="Passenger::extractBaseName" ref="geb750234207485fa57609174ca8d4359" args="(const StaticString &amp;path)" -->
197
- string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#geb750234207485fa57609174ca8d4359">extractBaseName</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;path)</td></tr>
198
-
199
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a path, extracts its base name. <br></td></tr>
200
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#ge74addedf73782a1eb1f6dd48d6fce06">escapeForXml</a> (const string &amp;input)</td></tr>
201
-
202
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Escape the given raw string into an XML value. <a href="group__Support.html#ge74addedf73782a1eb1f6dd48d6fce06"></a><br></td></tr>
203
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g7e3fdc923bdf6efeab407cdd325883a8">setNonBlocking</a> (int fd)</td></tr>
204
-
205
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets a socket in non-blocking mode. <a href="group__Support.html#g7e3fdc923bdf6efeab407cdd325883a8"></a><br></td></tr>
206
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#de80218e8b836b796f8b960b6225b439">getProcessUsername</a> ()</td></tr>
207
-
208
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the username of the user that the current process is running as. <a href="#de80218e8b836b796f8b960b6225b439"></a><br></td></tr>
209
- <tr><td class="memItemLeft" nowrap align="right" valign="top">mode_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#da53f5a9bdcf3d22d4a710e7ea3678e9">parseModeString</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;mode)</td></tr>
210
-
211
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a mode string into a mode_t value. <a href="#da53f5a9bdcf3d22d4a710e7ea3678e9"></a><br></td></tr>
212
- <tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g68f4105c5a8e510520b5ea3eecb66213">getSystemTempDir</a> ()</td></tr>
213
-
214
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the path name for the directory in which the system stores general temporary files. <a href="group__Support.html#g68f4105c5a8e510520b5ea3eecb66213"></a><br></td></tr>
215
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#448f25263af0b37b91caee3d294ec4aa">makeDirTree</a> (const string &amp;path, const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;mode=&quot;u=rwx,g=,o=&quot;, uid_t owner=USER_NOT_GIVEN, gid_t group=GROUP_NOT_GIVEN)</td></tr>
216
-
217
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the directory at the given path, creating intermediate directories if necessary. <a href="#448f25263af0b37b91caee3d294ec4aa"></a><br></td></tr>
218
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#8422d210cbd2f62d21254415b5a7f747">removeDirTree</a> (const string &amp;path)</td></tr>
219
-
220
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove an entire directory tree recursively. <a href="#8422d210cbd2f62d21254415b5a7f747"></a><br></td></tr>
221
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g5e6bc7ff22b7c61238d7913521936f71">verifyRailsDir</a> (const string &amp;dir, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
222
-
223
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the specified directory is a valid Ruby on Rails application root directory. <a href="group__Support.html#g5e6bc7ff22b7c61238d7913521936f71"></a><br></td></tr>
224
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g53969f8e3ee68d1d99ffe75af8db9be8">verifyRackDir</a> (const string &amp;dir, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
225
-
226
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the specified directory is a valid Rack application root directory. <a href="group__Support.html#g53969f8e3ee68d1d99ffe75af8db9be8"></a><br></td></tr>
227
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gaec51d2912999d611994c49341f36247">verifyWSGIDir</a> (const string &amp;dir, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
228
-
229
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the specified directory is a valid WSGI application root directory. <a href="group__Support.html#gaec51d2912999d611994c49341f36247"></a><br></td></tr>
230
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#1d0a66b0e207c46dc6124ff3b2f331e6">getHostName</a> ()</td></tr>
231
-
232
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the system's host name. <a href="#1d0a66b0e207c46dc6124ff3b2f331e6"></a><br></td></tr>
233
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#d88884ee6e2184ef8656fc20f0549b0b">fillInMiddle</a> (unsigned int max, const string &amp;prefix, const string &amp;middle, const string &amp;postfix=&quot;&quot;)</td></tr>
234
-
235
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a prefix string, a middle string and a postfix string, try to build a string that looks like <code>prefix + middle + postfix</code>, with as many characters from <code>midle</code> preserved as possible. <a href="#d88884ee6e2184ef8656fc20f0549b0b"></a><br></td></tr>
236
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1d4b16a419fe7231bc8b7036266f8131"></a><!-- doxytag: member="Passenger::toHex" ref="1d4b16a419fe7231bc8b7036266f8131" args="(const StaticString &amp;data)" -->
237
- string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#1d4b16a419fe7231bc8b7036266f8131">toHex</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;data)</td></tr>
238
-
239
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert the given binary data to hexadecimal. <br></td></tr>
240
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#8b73dbe534ee6daf755909cf6c321166">toHex</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;data, char *output)</td></tr>
241
-
242
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert the given binary data to hexadecimal. <a href="#8b73dbe534ee6daf755909cf6c321166"></a><br></td></tr>
243
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="979cb43cef743bf261c329b13e712366"></a><!-- doxytag: member="Passenger::getSignalName" ref="979cb43cef743bf261c329b13e712366" args="(int sig)" -->
244
- string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#979cb43cef743bf261c329b13e712366">getSignalName</a> (int sig)</td></tr>
245
-
246
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a signal number to its associated name. <br></td></tr>
247
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g5d3b342a34d81e7506744e90ee2f9b8b">createUnixServer</a> (const char *filename, unsigned int backlogSize=0, bool autoDelete=true)</td></tr>
248
-
249
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new Unix server socket which is bounded to <code>filename</code>. <a href="group__Support.html#g5d3b342a34d81e7506744e90ee2f9b8b"></a><br></td></tr>
250
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gae3993db9dfa0b05c97b67ccefd2b619">connectToUnixServer</a> (const char *filename)</td></tr>
251
-
252
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect to a Unix server socket at <code>filename</code>. <a href="group__Support.html#gae3993db9dfa0b05c97b67ccefd2b619"></a><br></td></tr>
253
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gaf4965fbefc2dfe26c1380c621962e68">connectToTcpServer</a> (const char *hostname, unsigned int port)</td></tr>
254
-
255
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect to a TCP server socket at the given host name and port. <a href="group__Support.html#gaf4965fbefc2dfe26c1380c621962e68"></a><br></td></tr>
256
- <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename T &gt; </td></tr>
257
- <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">shared_ptr&lt; T &gt;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Support.html#g41b6c4a82fed72531a147de0505a8396">ptr</a> (T *pointer)</td></tr>
258
-
259
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience shortcut for creating a <code>shared_ptr</code>. <a href="group__Support.html#g41b6c4a82fed72531a147de0505a8396"></a><br></td></tr>
260
- <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename T &gt; </td></tr>
261
- <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407">toString</a> (T something)</td></tr>
262
-
263
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert anything to a string. <a href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407"></a><br></td></tr>
264
- <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename IntType &gt; </td></tr>
265
- <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">IntType&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#6b2bc9d6fa3848e01fd8c164d30737cc">roundUp</a> (IntType number, IntType multiple)</td></tr>
266
-
267
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Round <em>number</em> up to the nearest multiple of <em>multiple</em>. <a href="#6b2bc9d6fa3848e01fd8c164d30737cc"></a><br></td></tr>
120
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>Enumeration which indicates what kind of file a file is. </p>
121
+ <a href="namespacePassenger.html#a14174b712df6046cb823cde43d7ef07d">More...</a><br/></td></tr>
122
+ <tr><td colspan="2"><h2>Functions</h2></td></tr>
123
+ <tr><td class="memItemLeft" align="right" valign="top">apr_bucket *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#a35b11c8ce90e90d01380f182d82f8cac">passenger_bucket_create</a> (SessionPtr session, PassengerBucketStatePtr state, apr_bucket_alloc_t *list)</td></tr>
124
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">We used to use an apr_bucket_pipe for forwarding the backend process's response to the HTTP client. <a href="#a35b11c8ce90e90d01380f182d82f8cac"></a><br/></td></tr>
125
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#ga2a62e38a72c6c65992e3361f6d80c7ef">fileExists</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;filename, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
126
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the specified file exists. <a href="group__Support.html#ga2a62e38a72c6c65992e3361f6d80c7ef"></a><br/></td></tr>
127
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacePassenger.html#a14174b712df6046cb823cde43d7ef07d">FileType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#ga15298b031377d3ecb80295bd5b1a8180">getFileType</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;filename, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
128
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether 'filename' exists and what kind of file it is. <a href="group__Support.html#ga15298b031377d3ecb80295bd5b1a8180"></a><br/></td></tr>
129
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#ga6f414070373465da2e12947463f69953">createFile</a> (const string &amp;filename, const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;contents, mode_t permissions=S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, uid_t owner=USER_NOT_GIVEN, gid_t group=GROUP_NOT_GIVEN, bool overwrite=true)</td></tr>
130
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the given file with the given contents, permissions and ownership. <a href="group__Support.html#ga6f414070373465da2e12947463f69953"></a><br/></td></tr>
131
+ <tr><td class="memItemLeft" align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gaf3b0a483f0a252ae08d9de9f8b267d36">canonicalizePath</a> (const string &amp;path)</td></tr>
132
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a canonical version of the specified path. <a href="group__Support.html#gaf3b0a483f0a252ae08d9de9f8b267d36"></a><br/></td></tr>
133
+ <tr><td class="memItemLeft" align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gac3d2b3d608188527d888e63d22c5163c">resolveSymlink</a> (const string &amp;path)</td></tr>
134
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">If <em>path</em> refers to a symlink, then this function resolves the symlink for 1 level. <a href="group__Support.html#gac3d2b3d608188527d888e63d22c5163c"></a><br/></td></tr>
135
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae651ece5281f22dc5fc974079f7c9187"></a><!-- doxytag: member="Passenger::extractDirName" ref="gae651ece5281f22dc5fc974079f7c9187" args="(const StaticString &amp;path)" -->
136
+ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gae651ece5281f22dc5fc974079f7c9187">extractDirName</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;path)</td></tr>
137
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a path, extracts its directory name. <br/></td></tr>
138
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaeb750234207485fa57609174ca8d4359"></a><!-- doxytag: member="Passenger::extractBaseName" ref="gaeb750234207485fa57609174ca8d4359" args="(const StaticString &amp;path)" -->
139
+ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gaeb750234207485fa57609174ca8d4359">extractBaseName</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;path)</td></tr>
140
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a path, extracts its base name. <br/></td></tr>
141
+ <tr><td class="memItemLeft" align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gae74addedf73782a1eb1f6dd48d6fce06">escapeForXml</a> (const string &amp;input)</td></tr>
142
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Escape the given raw string into an XML value. <a href="group__Support.html#gae74addedf73782a1eb1f6dd48d6fce06"></a><br/></td></tr>
143
+ <tr><td class="memItemLeft" align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#ade80218e8b836b796f8b960b6225b439">getProcessUsername</a> ()</td></tr>
144
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the username of the user that the current process is running as. <a href="#ade80218e8b836b796f8b960b6225b439"></a><br/></td></tr>
145
+ <tr><td class="memItemLeft" align="right" valign="top">mode_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#ada53f5a9bdcf3d22d4a710e7ea3678e9">parseModeString</a> (const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;mode)</td></tr>
146
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts a mode string into a mode_t value. <a href="#ada53f5a9bdcf3d22d4a710e7ea3678e9"></a><br/></td></tr>
147
+ <tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#ga68f4105c5a8e510520b5ea3eecb66213">getSystemTempDir</a> ()</td></tr>
148
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the path name for the directory in which the system stores general temporary files. <a href="group__Support.html#ga68f4105c5a8e510520b5ea3eecb66213"></a><br/></td></tr>
149
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#a448f25263af0b37b91caee3d294ec4aa">makeDirTree</a> (const string &amp;path, const <a class="el" href="classPassenger_1_1StaticString.html">StaticString</a> &amp;mode=&quot;u=rwx,g=,o=&quot;, uid_t owner=USER_NOT_GIVEN, gid_t group=GROUP_NOT_GIVEN)</td></tr>
150
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the directory at the given path, creating intermediate directories if necessary. <a href="#a448f25263af0b37b91caee3d294ec4aa"></a><br/></td></tr>
151
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#a8422d210cbd2f62d21254415b5a7f747">removeDirTree</a> (const string &amp;path)</td></tr>
152
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove an entire directory tree recursively. <a href="#a8422d210cbd2f62d21254415b5a7f747"></a><br/></td></tr>
153
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#ga5e6bc7ff22b7c61238d7913521936f71">verifyRailsDir</a> (const string &amp;dir, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
154
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the specified directory is a valid Ruby on Rails application root directory. <a href="group__Support.html#ga5e6bc7ff22b7c61238d7913521936f71"></a><br/></td></tr>
155
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#ga53969f8e3ee68d1d99ffe75af8db9be8">verifyRackDir</a> (const string &amp;dir, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
156
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the specified directory is a valid Rack application root directory. <a href="group__Support.html#ga53969f8e3ee68d1d99ffe75af8db9be8"></a><br/></td></tr>
157
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#gaaec51d2912999d611994c49341f36247">verifyWSGIDir</a> (const string &amp;dir, CachedFileStat *cstat=0, unsigned int throttleRate=0)</td></tr>
158
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check whether the specified directory is a valid WSGI application root directory. <a href="group__Support.html#gaaec51d2912999d611994c49341f36247"></a><br/></td></tr>
159
+ <tr><td class="memItemLeft" align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#a1d0a66b0e207c46dc6124ff3b2f331e6">getHostName</a> ()</td></tr>
160
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the system's host name. <a href="#a1d0a66b0e207c46dc6124ff3b2f331e6"></a><br/></td></tr>
161
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a979cb43cef743bf261c329b13e712366"></a><!-- doxytag: member="Passenger::getSignalName" ref="a979cb43cef743bf261c329b13e712366" args="(int sig)" -->
162
+ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#a979cb43cef743bf261c329b13e712366">getSignalName</a> (int sig)</td></tr>
163
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a signal number to its associated name. <br/></td></tr>
164
+ <tr><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
165
+ <tr><td class="memTemplItemLeft" align="right" valign="top">shared_ptr&lt; T &gt;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__Support.html#ga41b6c4a82fed72531a147de0505a8396">ptr</a> (T *pointer)</td></tr>
166
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience shortcut for creating a <code>shared_ptr</code>. <a href="group__Support.html#ga41b6c4a82fed72531a147de0505a8396"></a><br/></td></tr>
268
167
  </table>
269
- <hr><a name="_details"></a><h2>Detailed Description</h2>
270
- This file provides a bunch of classes for reading and writing messages in the <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> format.
271
- <p>
272
- A random.<p>
273
- Unlike <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a>, whose operations take control over the I/O handle and may block, these classes are like parsers and data generators. Reader classes require the user to feed data to them. Writer classes generate a bunch of bytes that the user can send out. These classes will never block, making them ideal for use in evented servers.<p>
168
+ <hr/><a name="_details"></a><h2>Detailed Description</h2>
169
+ <p>Common code for all agents. </p>
170
+ <p>A random.</p>
171
+ <p>This file provides a bunch of classes for reading and writing messages in the <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> format.</p>
172
+ <p>Unlike <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a>, whose operations take control over the I/O handle and may block, these classes act like parsers and data generators. To read messages one must feed data to them. To write messages one must instruct the classes to generate a bunch of data. These classes will never block, making them ideal for use in evented servers.</p>
274
173
  <h2>Reading messages</h2>
275
- <p>
276
- To read a single message, one must instantiate a reader object and feed network data to it with the feed() method. This method returns the number of bytes actually processed by the reader (i.e. the number of bytes that it has recognized as part of the message).<p>
277
- When the reader has either successfully parsed the data or encountered an error, it will indicate so via the done() method. With hasError() one can check whether an error was encountered or whether the reader succeeded, and with errorCode() one can obtain the exact error reason. Not all readers support hasError() and errorCode() because some readers can never encounter errors and some readers only have a single reason to fail.<p>
278
- When successful, the parsed message can be obtained with value(). This method may only be called when done() is true and there is no error, otherwise the return value is undefined.<p>
279
- At this point, the reader object cannot process any more data and feed() will always return 0. To reuse the object for processing another message, one must reset its state by calling reset().<p>
280
- The following example demonstrates how to read a continuous stream of 32-bit integers: <div class="fragment"><pre class="fragment"> Uint32Reader intReader;
174
+ <p>To read a single message, one must instantiate a message object and feed network data to it with the feed() method. This method returns the number of bytes actually processed by the message object (i.e. the number of bytes that it has recognized as part of the message).</p>
175
+ <p>When the message object has either successfully parsed the data or encountered an error, it will indicate so via the done() method. With hasError() one can check whether an error was encountered or whether the reader succeeded, and with errorCode() one can obtain the exact error reason. Not all message objects support hasError() and errorCode() because some of them can never encounter errors and some of them can only fail for a single reason.</p>
176
+ <p>When successful, the parsed message can be obtained with value(). This method may only be called when done() is true and there is no error, otherwise the return value is undefined.</p>
177
+ <p>At this point, the message object cannot process any more data and feed() will always return 0. To reuse the object for processing another message, one must reset its state by calling reset().</p>
178
+ <p>The following example demonstrates how to read a continuous stream of 32-bit integers: </p>
179
+ <div class="fragment"><pre class="fragment"> Uint32Message intMessage;
281
180
  <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
282
181
  <span class="comment">// Read a bunch of network data...</span>
283
182
  <span class="keywordtype">char</span> buf[1024];
284
183
  ssize_t size = recv(fd, buf, <span class="keyword">sizeof</span>(buf));
285
184
  <span class="keywordtype">size_t</span> consumed = 0;
286
185
 
287
- <span class="comment">// ...and process it all. We only feed data to the reader that</span>
288
- <span class="comment">// hasn't already been fed.</span>
186
+ <span class="comment">// ...and process it all. We only feed data to the message object</span>
187
+ <span class="comment">// that hasn&#39;t already been fed.</span>
289
188
  <span class="keywordflow">while</span> (consumed &lt; size) {
290
189
  consumed += intReader.feed(buf + consumed, size - consumed);
291
- <span class="keywordflow">if</span> (intReader.done()) {
292
- printf(<span class="stringliteral">"Integer: %d\n"</span>, (<span class="keywordtype">int</span>) intReader.value());
190
+ <span class="keywordflow">if</span> (intMessage.done()) {
191
+ printf(<span class="stringliteral">&quot;Integer: %d\n&quot;</span>, (<span class="keywordtype">int</span>) intMessage.value());
293
192
  <span class="comment">// The state must be reset before the reader can be reused.</span>
294
- intReader.reset();
193
+ intMessage.reset();
295
194
  }
296
195
  }
297
196
  }
298
- </pre></div><p>
299
- Some readers return non-primitive values in their value() methods, such as <a class="el" href="classPassenger_1_1ArrayReader.html" title="Class for reading a an array message.">ArrayReader</a> and <a class="el" href="classPassenger_1_1ScalarReader.html" title="Class for reading a scalar message.">ScalarReader</a> which return <code>const vector&lt;StaticString&gt; &amp;</code> and <code><a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a></code>, respectively. These values are only valid until either of the following things occur:<p>
197
+ </pre></div><p>Some message objects return non-primitive values in their value() methods, such as <a class="el" href="classPassenger_1_1ArrayMessage.html" title="For array messages.">ArrayMessage</a> and <a class="el" href="classPassenger_1_1ScalarMessage.html" title="Class for reading a scalar message.">ScalarMessage</a> which return <code>const vector&lt;StaticString&gt; &amp;</code> and <code><a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a></code>, respectively. These values are only valid until either of the following things occur:</p>
300
198
  <ul>
301
- <li>The buffer containing last the fed data has been destroyed or modified.</li><li>The reader itself has been destroyed.</li></ul>
302
- <p>
303
- This is because the readers try to apply copy-zero optimizations whenever possible. For example, in case of <a class="el" href="classPassenger_1_1ScalarReader.html" title="Class for reading a scalar message.">ScalarReader</a>, it'll check whether the data that has been fed in the first feed() call already contains a full scalar message. If so then it'll just return a <a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a> that points to the scalar message in the fed data; it will not copy the fed data. In this case it is important that the buffer containing the fed data is not modified or destroyed while the <a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a> is in use. If the first feed() call does not supply a full scalar message then it will buffer all fed data until the buffer contains a full scalar message, and the result will point to this buffer. Because the buffer is owned by the reader, the result will be invalidated as soon as the reader is destroyed.
304
- <p>
305
- <hr><h2>Typedef Documentation</h2>
306
- <a class="anchor" name="fd60d942a89fbb7f306e330d75704570"></a><!-- doxytag: member="Passenger::AbstractSpawnManagerPtr" ref="fd60d942a89fbb7f306e330d75704570" args="" -->
199
+ <li>The buffer containing last the fed data has been destroyed or modified.</li>
200
+ <li>The message object itself has been destroyed.</li>
201
+ </ul>
202
+ <p>This is because the message objects try to apply copy-zero optimizations whenever possible. For example, in case of <a class="el" href="classPassenger_1_1ScalarMessage.html" title="Class for reading a scalar message.">ScalarMessage</a>, it'll check whether the data that has been fed in the first feed() call already contains a full scalar message. If so then it'll just return a <a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a> that points to the scalar message in the fed data; it will not copy the fed data. In this case it is important that the buffer containing the fed data is not modified or destroyed while the <a class="el" href="classPassenger_1_1StaticString.html" title="An immutable, static byte buffer.">StaticString</a> is in use. If the first feed() call does not supply a full scalar message then it will buffer all fed data until the buffer contains a full scalar message, and the result will point to this buffer. Because the buffer is owned by the message object, the result will be invalidated as soon as the message object is destroyed. </p>
203
+ <hr/><h2>Typedef Documentation</h2>
204
+ <a class="anchor" id="afd60d942a89fbb7f306e330d75704570"></a><!-- doxytag: member="Passenger::AbstractSpawnManagerPtr" ref="afd60d942a89fbb7f306e330d75704570" args="" -->
307
205
  <div class="memitem">
308
206
  <div class="memproto">
309
207
  <table class="memname">
310
208
  <tr>
311
- <td class="memname">typedef shared_ptr&lt;<a class="el" href="classPassenger_1_1AbstractSpawnManager.html">AbstractSpawnManager</a>&gt; <a class="el" href="namespacePassenger.html#fd60d942a89fbb7f306e330d75704570">Passenger::AbstractSpawnManagerPtr</a> </td>
209
+ <td class="memname">typedef shared_ptr&lt;<a class="el" href="classPassenger_1_1AbstractSpawnManager.html">AbstractSpawnManager</a>&gt; <a class="el" href="namespacePassenger.html#afd60d942a89fbb7f306e330d75704570">Passenger::AbstractSpawnManagerPtr</a></td>
312
210
  </tr>
313
211
  </table>
314
212
  </div>
315
213
  <div class="memdoc">
316
214
 
317
- <p>
318
- Convenient alias for <a class="el" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes.">AbstractSpawnManager</a> smart pointer.
319
- <p>
215
+ <p>Convenient alias for <a class="el" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes.">AbstractSpawnManager</a> smart pointer. </p>
320
216
 
321
217
  </div>
322
- </div><p>
323
- <a class="anchor" name="ced1f248465136b313c6dec5fe6ca492"></a><!-- doxytag: member="Passenger::ProcessPtr" ref="ced1f248465136b313c6dec5fe6ca492" args="" -->
218
+ </div>
219
+ <a class="anchor" id="aced1f248465136b313c6dec5fe6ca492"></a><!-- doxytag: member="Passenger::ProcessPtr" ref="aced1f248465136b313c6dec5fe6ca492" args="" -->
324
220
  <div class="memitem">
325
221
  <div class="memproto">
326
222
  <table class="memname">
327
223
  <tr>
328
- <td class="memname">typedef shared_ptr&lt;<a class="el" href="classPassenger_1_1Process.html">Process</a>&gt; <a class="el" href="namespacePassenger.html#ced1f248465136b313c6dec5fe6ca492">Passenger::ProcessPtr</a> </td>
224
+ <td class="memname">typedef shared_ptr&lt;<a class="el" href="classPassenger_1_1Process.html">Process</a>&gt; <a class="el" href="namespacePassenger.html#aced1f248465136b313c6dec5fe6ca492">Passenger::ProcessPtr</a></td>
329
225
  </tr>
330
226
  </table>
331
227
  </div>
332
228
  <div class="memdoc">
333
229
 
334
- <p>
335
- Convenient alias for <a class="el" href="classPassenger_1_1Process.html" title="Represents a single application process, as spawned by SpawnManager or by ApplicationPool::Interface...">Process</a> smart pointer.
336
- <p>
230
+ <p>Convenient alias for <a class="el" href="classPassenger_1_1Process.html" title="Represents a single application process, as spawned by SpawnManager or by ApplicationPool::Interface...">Process</a> smart pointer. </p>
337
231
 
338
232
  </div>
339
- </div><p>
340
- <a class="anchor" name="6ab2d566ff87a2676c23d8aa40204587"></a><!-- doxytag: member="Passenger::SpawnManagerPtr" ref="6ab2d566ff87a2676c23d8aa40204587" args="" -->
233
+ </div>
234
+ <a class="anchor" id="a6ab2d566ff87a2676c23d8aa40204587"></a><!-- doxytag: member="Passenger::SpawnManagerPtr" ref="a6ab2d566ff87a2676c23d8aa40204587" args="" -->
341
235
  <div class="memitem">
342
236
  <div class="memproto">
343
237
  <table class="memname">
344
238
  <tr>
345
- <td class="memname">typedef shared_ptr&lt;<a class="el" href="classPassenger_1_1SpawnManager.html">SpawnManager</a>&gt; <a class="el" href="namespacePassenger.html#6ab2d566ff87a2676c23d8aa40204587">Passenger::SpawnManagerPtr</a> </td>
239
+ <td class="memname">typedef shared_ptr&lt;<a class="el" href="classPassenger_1_1SpawnManager.html">SpawnManager</a>&gt; <a class="el" href="namespacePassenger.html#a6ab2d566ff87a2676c23d8aa40204587">Passenger::SpawnManagerPtr</a></td>
346
240
  </tr>
347
241
  </table>
348
242
  </div>
349
243
  <div class="memdoc">
350
244
 
351
- <p>
352
- Convenient alias for <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> smart pointer.
353
- <p>
245
+ <p>Convenient alias for <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> smart pointer. </p>
354
246
 
355
247
  </div>
356
- </div><p>
357
- <hr><h2>Enumeration Type Documentation</h2>
358
- <a class="anchor" name="14174b712df6046cb823cde43d7ef07d"></a><!-- doxytag: member="Passenger::FileType" ref="14174b712df6046cb823cde43d7ef07d" args="" -->
248
+ </div>
249
+ <hr/><h2>Enumeration Type Documentation</h2>
250
+ <a class="anchor" id="a14174b712df6046cb823cde43d7ef07d"></a><!-- doxytag: member="Passenger::FileType" ref="a14174b712df6046cb823cde43d7ef07d" args="" -->
359
251
  <div class="memitem">
360
252
  <div class="memproto">
361
253
  <table class="memname">
362
254
  <tr>
363
- <td class="memname">enum <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d">Passenger::FileType</a> </td>
255
+ <td class="memname">enum <a class="el" href="namespacePassenger.html#a14174b712df6046cb823cde43d7ef07d">Passenger::FileType</a></td>
364
256
  </tr>
365
257
  </table>
366
258
  </div>
367
259
  <div class="memdoc">
368
260
 
369
- <p>
370
- Enumeration which indicates what kind of file a file is.
371
- <p>
372
- <dl compact><dt><b>Enumerator: </b></dt><dd>
373
- <table border="0" cellspacing="2" cellpadding="0">
374
- <tr><td valign="top"><em><a class="anchor" name="14174b712df6046cb823cde43d7ef07d9fc66834fe96c52799397496b8df8486"></a><!-- doxytag: member="FT_NONEXISTANT" ref="14174b712df6046cb823cde43d7ef07d9fc66834fe96c52799397496b8df8486" args="" -->FT_NONEXISTANT</em>&nbsp;</td><td>
375
- The file doesn't exist.
376
- <p>
261
+ <p>Enumeration which indicates what kind of file a file is. </p>
262
+ <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
263
+ <tr><td valign="top"><em><a class="anchor" id="a14174b712df6046cb823cde43d7ef07da9fc66834fe96c52799397496b8df8486"></a><!-- doxytag: member="FT_NONEXISTANT" ref="a14174b712df6046cb823cde43d7ef07da9fc66834fe96c52799397496b8df8486" args="" -->FT_NONEXISTANT</em>&nbsp;</td><td>
264
+ <p>The file doesn't exist. </p>
265
+ </td></tr>
266
+ <tr><td valign="top"><em><a class="anchor" id="a14174b712df6046cb823cde43d7ef07da1538596a928321d1a282c6bb06e80563"></a><!-- doxytag: member="FT_REGULAR" ref="a14174b712df6046cb823cde43d7ef07da1538596a928321d1a282c6bb06e80563" args="" -->FT_REGULAR</em>&nbsp;</td><td>
267
+ <p>A regular file or a symlink to a regular file. </p>
377
268
  </td></tr>
378
- <tr><td valign="top"><em><a class="anchor" name="14174b712df6046cb823cde43d7ef07d1538596a928321d1a282c6bb06e80563"></a><!-- doxytag: member="FT_REGULAR" ref="14174b712df6046cb823cde43d7ef07d1538596a928321d1a282c6bb06e80563" args="" -->FT_REGULAR</em>&nbsp;</td><td>
379
- A regular file or a symlink to a regular file.
380
- <p>
269
+ <tr><td valign="top"><em><a class="anchor" id="a14174b712df6046cb823cde43d7ef07dabb09dbba1071b4770913363db2462eee"></a><!-- doxytag: member="FT_DIRECTORY" ref="a14174b712df6046cb823cde43d7ef07dabb09dbba1071b4770913363db2462eee" args="" -->FT_DIRECTORY</em>&nbsp;</td><td>
270
+ <p>A directory. </p>
381
271
  </td></tr>
382
- <tr><td valign="top"><em><a class="anchor" name="14174b712df6046cb823cde43d7ef07dbb09dbba1071b4770913363db2462eee"></a><!-- doxytag: member="FT_DIRECTORY" ref="14174b712df6046cb823cde43d7ef07dbb09dbba1071b4770913363db2462eee" args="" -->FT_DIRECTORY</em>&nbsp;</td><td>
383
- A directory.
384
- <p>
272
+ <tr><td valign="top"><em><a class="anchor" id="a14174b712df6046cb823cde43d7ef07da3e89b9a7be074975e007d9f7cd77f4ff"></a><!-- doxytag: member="FT_OTHER" ref="a14174b712df6046cb823cde43d7ef07da3e89b9a7be074975e007d9f7cd77f4ff" args="" -->FT_OTHER</em>&nbsp;</td><td>
273
+ <p>Something else, e.g. </p>
274
+ <p>a pipe or a socket. </p>
385
275
  </td></tr>
386
- <tr><td valign="top"><em><a class="anchor" name="14174b712df6046cb823cde43d7ef07d3e89b9a7be074975e007d9f7cd77f4ff"></a><!-- doxytag: member="FT_OTHER" ref="14174b712df6046cb823cde43d7ef07d3e89b9a7be074975e007d9f7cd77f4ff" args="" -->FT_OTHER</em>&nbsp;</td><td>
387
- Something else, e.g.
388
- <p>
389
- a pipe or a socket. </td></tr>
390
276
  </table>
277
+ </dd>
391
278
  </dl>
392
279
 
393
280
  </div>
394
- </div><p>
395
- <hr><h2>Function Documentation</h2>
396
- <a class="anchor" name="d88884ee6e2184ef8656fc20f0549b0b"></a><!-- doxytag: member="Passenger::fillInMiddle" ref="d88884ee6e2184ef8656fc20f0549b0b" args="(unsigned int max, const string &amp;prefix, const string &amp;middle, const string &amp;postfix=&quot;&quot;)" -->
397
- <div class="memitem">
398
- <div class="memproto">
399
- <table class="memname">
400
- <tr>
401
- <td class="memname">string Passenger::fillInMiddle </td>
402
- <td>(</td>
403
- <td class="paramtype">unsigned int&nbsp;</td>
404
- <td class="paramname"> <em>max</em>, </td>
405
- </tr>
406
- <tr>
407
- <td class="paramkey"></td>
408
- <td></td>
409
- <td class="paramtype">const string &amp;&nbsp;</td>
410
- <td class="paramname"> <em>prefix</em>, </td>
411
- </tr>
412
- <tr>
413
- <td class="paramkey"></td>
414
- <td></td>
415
- <td class="paramtype">const string &amp;&nbsp;</td>
416
- <td class="paramname"> <em>middle</em>, </td>
417
- </tr>
418
- <tr>
419
- <td class="paramkey"></td>
420
- <td></td>
421
- <td class="paramtype">const string &amp;&nbsp;</td>
422
- <td class="paramname"> <em>postfix</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
423
- </tr>
424
- <tr>
425
- <td></td>
426
- <td>)</td>
427
- <td></td><td></td><td></td>
428
- </tr>
429
- </table>
430
- </div>
431
- <div class="memdoc">
432
-
433
- <p>
434
- Given a prefix string, a middle string and a postfix string, try to build a string that looks like <code>prefix + middle + postfix</code>, with as many characters from <code>midle</code> preserved as possible.
435
- <p>
436
- If <code>prefix + middle + postfix</code> does not fit in <code>max</code> characters, then <code>middle</code> will be truncated so that it fits. If <code>max</code> is too small to contain even 1 character from <code>middle</code>, then an <a class="el" href="classPassenger_1_1ArgumentException.html" title="Indicates that a specified argument is incorrect or violates a requirement.">ArgumentException</a> will be thrown.<p>
437
- <div class="fragment"><pre class="fragment"> <a class="code" href="namespacePassenger.html#d88884ee6e2184ef8656fc20f0549b0b" title="Given a prefix string, a middle string and a postfix string, try to build a string...">fillInMiddle</a>(18, <span class="stringliteral">"server."</span>, <span class="stringliteral">"1234"</span>, <span class="stringliteral">".socket"</span>); <span class="comment">// "server.1234.socket"</span>
438
- <a class="code" href="namespacePassenger.html#d88884ee6e2184ef8656fc20f0549b0b" title="Given a prefix string, a middle string and a postfix string, try to build a string...">fillInMiddle</a>(16, <span class="stringliteral">"server."</span>, <span class="stringliteral">"1234"</span>, <span class="stringliteral">".socket"</span>); <span class="comment">// "server.12.socket"</span>
439
- <a class="code" href="namespacePassenger.html#d88884ee6e2184ef8656fc20f0549b0b" title="Given a prefix string, a middle string and a postfix string, try to build a string...">fillInMiddle</a>(14, <span class="stringliteral">"server."</span>, <span class="stringliteral">"1234"</span>, <span class="stringliteral">".socket"</span>); <span class="comment">// ArgumentException</span>
440
- </pre></div><p>
441
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>The resulting string, with <code>middle</code> possibly truncated. </dd></dl>
442
- <dl compact><dt><b>Exceptions:</b></dt><dd>
443
- <table border="0" cellspacing="2" cellpadding="0">
444
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1ArgumentException.html" title="Indicates that a specified argument is incorrect or violates a requirement.">ArgumentException</a></em>&nbsp;</td><td><code>max</code> is too small to contain even 1 character from <code>middle</code>. </td></tr>
445
- </table>
446
- </dl>
447
- <dl class="post" compact><dt><b>Postcondition:</b></dt><dd>result.size() &lt;= max </dd></dl>
448
-
449
281
  </div>
450
- </div><p>
451
- <a class="anchor" name="1d0a66b0e207c46dc6124ff3b2f331e6"></a><!-- doxytag: member="Passenger::getHostName" ref="1d0a66b0e207c46dc6124ff3b2f331e6" args="()" -->
282
+ <hr/><h2>Function Documentation</h2>
283
+ <a class="anchor" id="a1d0a66b0e207c46dc6124ff3b2f331e6"></a><!-- doxytag: member="Passenger::getHostName" ref="a1d0a66b0e207c46dc6124ff3b2f331e6" args="()" -->
452
284
  <div class="memitem">
453
285
  <div class="memproto">
454
286
  <table class="memname">
455
287
  <tr>
456
- <td class="memname">string Passenger::getHostName </td>
288
+ <td class="memname">string Passenger::getHostName </td>
457
289
  <td>(</td>
458
- <td class="paramname"> </td>
290
+ <td class="paramname"></td>
459
291
  <td>&nbsp;)&nbsp;</td>
460
292
  <td></td>
461
293
  </tr>
@@ -463,25 +295,24 @@ If <code>prefix + middle + postfix</code> does not fit in <code>max</code> chara
463
295
  </div>
464
296
  <div class="memdoc">
465
297
 
466
- <p>
467
- Returns the system's host name.
468
- <p>
469
- <dl compact><dt><b>Exceptions:</b></dt><dd>
298
+ <p>Returns the system's host name. </p>
299
+ <dl><dt><b>Exceptions:</b></dt><dd>
470
300
  <table border="0" cellspacing="2" cellpadding="0">
471
301
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>The host name cannot be retrieved. </td></tr>
472
302
  </table>
303
+ </dd>
473
304
  </dl>
474
305
 
475
306
  </div>
476
- </div><p>
477
- <a class="anchor" name="de80218e8b836b796f8b960b6225b439"></a><!-- doxytag: member="Passenger::getProcessUsername" ref="de80218e8b836b796f8b960b6225b439" args="()" -->
307
+ </div>
308
+ <a class="anchor" id="ade80218e8b836b796f8b960b6225b439"></a><!-- doxytag: member="Passenger::getProcessUsername" ref="ade80218e8b836b796f8b960b6225b439" args="()" -->
478
309
  <div class="memitem">
479
310
  <div class="memproto">
480
311
  <table class="memname">
481
312
  <tr>
482
- <td class="memname">string Passenger::getProcessUsername </td>
313
+ <td class="memname">string Passenger::getProcessUsername </td>
483
314
  <td>(</td>
484
- <td class="paramname"> </td>
315
+ <td class="paramname"></td>
485
316
  <td>&nbsp;)&nbsp;</td>
486
317
  <td></td>
487
318
  </tr>
@@ -489,18 +320,17 @@ Returns the system's host name.
489
320
  </div>
490
321
  <div class="memdoc">
491
322
 
492
- <p>
493
- Returns the username of the user that the current process is running as.
494
- <p>
495
- If the user has no associated username, then "UID xxxx" is returned, where xxxx is the current UID.
323
+ <p>Returns the username of the user that the current process is running as. </p>
324
+ <p>If the user has no associated username, then "UID xxxx" is returned, where xxxx is the current UID. </p>
325
+
496
326
  </div>
497
- </div><p>
498
- <a class="anchor" name="448f25263af0b37b91caee3d294ec4aa"></a><!-- doxytag: member="Passenger::makeDirTree" ref="448f25263af0b37b91caee3d294ec4aa" args="(const string &amp;path, const StaticString &amp;mode=&quot;u=rwx,g=,o=&quot;, uid_t owner=USER_NOT_GIVEN, gid_t group=GROUP_NOT_GIVEN)" -->
327
+ </div>
328
+ <a class="anchor" id="a448f25263af0b37b91caee3d294ec4aa"></a><!-- doxytag: member="Passenger::makeDirTree" ref="a448f25263af0b37b91caee3d294ec4aa" args="(const string &amp;path, const StaticString &amp;mode=&quot;u=rwx,g=,o=&quot;, uid_t owner=USER_NOT_GIVEN, gid_t group=GROUP_NOT_GIVEN)" -->
499
329
  <div class="memitem">
500
330
  <div class="memproto">
501
331
  <table class="memname">
502
332
  <tr>
503
- <td class="memname">void Passenger::makeDirTree </td>
333
+ <td class="memname">void Passenger::makeDirTree </td>
504
334
  <td>(</td>
505
335
  <td class="paramtype">const string &amp;&nbsp;</td>
506
336
  <td class="paramname"> <em>path</em>, </td>
@@ -532,34 +362,34 @@ If the user has no associated username, then "UID xxxx" is returned, where xxxx
532
362
  </div>
533
363
  <div class="memdoc">
534
364
 
535
- <p>
536
- Create the directory at the given path, creating intermediate directories if necessary.
537
- <p>
538
- The created directories' permissions are exactly as specified by the 'mode' parameter (i.e. the umask will be ignored). You can specify this directory's owner and group through the 'owner' and 'group' parameters. A value of USER_NOT_GIVEN for 'owner' and/or GROUP_NOT_GIVEN 'group' means that the owner/group should not be changed.<p>
539
- If 'path' already exists, then nothing will happen.<p>
540
- <dl compact><dt><b>Parameters:</b></dt><dd>
365
+ <p>Create the directory at the given path, creating intermediate directories if necessary. </p>
366
+ <p>The created directories' permissions are exactly as specified by the 'mode' parameter (i.e. the umask will be ignored). You can specify this directory's owner and group through the 'owner' and 'group' parameters. A value of USER_NOT_GIVEN for 'owner' and/or GROUP_NOT_GIVEN 'group' means that the owner/group should not be changed.</p>
367
+ <p>If 'path' already exists, then nothing will happen.</p>
368
+ <dl><dt><b>Parameters:</b></dt><dd>
541
369
  <table border="0" cellspacing="2" cellpadding="0">
542
- <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>A mode string, as supported by <a class="el" href="namespacePassenger.html#da53f5a9bdcf3d22d4a710e7ea3678e9" title="Converts a mode string into a mode_t value.">parseModeString()</a>. </td></tr>
370
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>A mode string, as supported by <a class="el" href="namespacePassenger.html#ada53f5a9bdcf3d22d4a710e7ea3678e9" title="Converts a mode string into a mode_t value.">parseModeString()</a>. </td></tr>
543
371
  </table>
372
+ </dd>
544
373
  </dl>
545
- <dl compact><dt><b>Exceptions:</b></dt><dd>
374
+ <dl><dt><b>Exceptions:</b></dt><dd>
546
375
  <table border="0" cellspacing="2" cellpadding="0">
547
376
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system.">FileSystemException</a></em>&nbsp;</td><td>Something went wrong. </td></tr>
548
377
  <tr><td valign="top"></td><td valign="top"><em>InvalidModeStringException</em>&nbsp;</td><td>The mode string cannot be parsed. </td></tr>
549
378
  </table>
379
+ </dd>
550
380
  </dl>
551
381
 
552
382
  </div>
553
- </div><p>
554
- <a class="anchor" name="da53f5a9bdcf3d22d4a710e7ea3678e9"></a><!-- doxytag: member="Passenger::parseModeString" ref="da53f5a9bdcf3d22d4a710e7ea3678e9" args="(const StaticString &amp;mode)" -->
383
+ </div>
384
+ <a class="anchor" id="ada53f5a9bdcf3d22d4a710e7ea3678e9"></a><!-- doxytag: member="Passenger::parseModeString" ref="ada53f5a9bdcf3d22d4a710e7ea3678e9" args="(const StaticString &amp;mode)" -->
555
385
  <div class="memitem">
556
386
  <div class="memproto">
557
387
  <table class="memname">
558
388
  <tr>
559
- <td class="memname">mode_t Passenger::parseModeString </td>
389
+ <td class="memname">mode_t Passenger::parseModeString </td>
560
390
  <td>(</td>
561
391
  <td class="paramtype">const StaticString &amp;&nbsp;</td>
562
- <td class="paramname"> <em>mode</em> </td>
392
+ <td class="paramname"> <em>mode</em></td>
563
393
  <td>&nbsp;)&nbsp;</td>
564
394
  <td></td>
565
395
  </tr>
@@ -567,31 +397,33 @@ If 'path' already exists, then nothing will happen.<p>
567
397
  </div>
568
398
  <div class="memdoc">
569
399
 
570
- <p>
571
- Converts a mode string into a mode_t value.
572
- <p>
573
- At this time only the symbolic mode strings are supported, e.g. something like looks this: "u=rwx,g=w,o=rx". The grammar is as follows: <div class="fragment"><pre class="fragment"> mode ::= (clause (<span class="stringliteral">","</span> clause)*)?
574
- clause ::= who <span class="stringliteral">"="</span> permission*
575
- who ::= <span class="stringliteral">"u"</span> | <span class="stringliteral">"g"</span> | <span class="stringliteral">"o"</span>
576
- permission ::= <span class="stringliteral">"r"</span> | <span class="stringliteral">"w"</span> | <span class="stringliteral">"x"</span> | <span class="stringliteral">"s"</span>
577
- </pre></div><p>
578
- Notes:<ul>
579
- <li>The mode value starts with 0. So if you specify "u=rwx", then the group and world permissions will be empty (set to 0).</li><li>The "s" permission is only allowed for who == "u" or who == "g".</li><li>The return value does not depend on the umask.</li></ul>
580
- <p>
581
- <dl compact><dt><b>Exceptions:</b></dt><dd>
400
+ <p>Converts a mode string into a mode_t value. </p>
401
+ <p>At this time only the symbolic mode strings are supported, e.g. something like looks this: "u=rwx,g=w,o=rx". The grammar is as follows: </p>
402
+ <div class="fragment"><pre class="fragment"> mode ::= (clause (<span class="stringliteral">&quot;,&quot;</span> clause)*)?
403
+ clause ::= who <span class="stringliteral">&quot;=&quot;</span> permission*
404
+ who ::= <span class="stringliteral">&quot;u&quot;</span> | <span class="stringliteral">&quot;g&quot;</span> | <span class="stringliteral">&quot;o&quot;</span>
405
+ permission ::= <span class="stringliteral">&quot;r&quot;</span> | <span class="stringliteral">&quot;w&quot;</span> | <span class="stringliteral">&quot;x&quot;</span> | <span class="stringliteral">&quot;s&quot;</span>
406
+ </pre></div><p>Notes:</p>
407
+ <ul>
408
+ <li>The mode value starts with 0. So if you specify "u=rwx", then the group and world permissions will be empty (set to 0).</li>
409
+ <li>The "s" permission is only allowed for who == "u" or who == "g".</li>
410
+ <li>The return value does not depend on the umask.</li>
411
+ </ul>
412
+ <dl><dt><b>Exceptions:</b></dt><dd>
582
413
  <table border="0" cellspacing="2" cellpadding="0">
583
414
  <tr><td valign="top"></td><td valign="top"><em>InvalidModeStringException</em>&nbsp;</td><td>The mode string cannot be parsed. </td></tr>
584
415
  </table>
416
+ </dd>
585
417
  </dl>
586
418
 
587
419
  </div>
588
- </div><p>
589
- <a class="anchor" name="35b11c8ce90e90d01380f182d82f8cac"></a><!-- doxytag: member="Passenger::passenger_bucket_create" ref="35b11c8ce90e90d01380f182d82f8cac" args="(SessionPtr session, PassengerBucketStatePtr state, apr_bucket_alloc_t *list)" -->
420
+ </div>
421
+ <a class="anchor" id="a35b11c8ce90e90d01380f182d82f8cac"></a><!-- doxytag: member="Passenger::passenger_bucket_create" ref="a35b11c8ce90e90d01380f182d82f8cac" args="(SessionPtr session, PassengerBucketStatePtr state, apr_bucket_alloc_t *list)" -->
590
422
  <div class="memitem">
591
423
  <div class="memproto">
592
424
  <table class="memname">
593
425
  <tr>
594
- <td class="memname">apr_bucket * Passenger::passenger_bucket_create </td>
426
+ <td class="memname">apr_bucket * Passenger::passenger_bucket_create </td>
595
427
  <td>(</td>
596
428
  <td class="paramtype">SessionPtr&nbsp;</td>
597
429
  <td class="paramname"> <em>session</em>, </td>
@@ -617,26 +449,30 @@ Notes:<ul>
617
449
  </div>
618
450
  <div class="memdoc">
619
451
 
620
- <p>
621
- We used to use an apr_bucket_pipe for forwarding the backend process's response to the HTTP client.
622
- <p>
623
- However, apr_bucket_pipe has a number of issues:<ul>
624
- <li>It closes the pipe's file descriptor when it has reached end-of-stream, but not when an error has occurred. This behavior is undesirable because it can easily cause file descriptor leaks.</li><li>It does weird non-blocking-I/O related things which can cause it to read less data than can actually be read.</li></ul>
625
- <p>
626
- PassengerBucket is like apr_bucket_pipe, but:<ul>
627
- <li>It also holds a reference to a <a class="el" href="classPassenger_1_1Session.html" title="Represents a single request/response pair of an application process.">Session</a>. When a read error has occured or when end-of-stream has been reached, the <a class="el" href="classPassenger_1_1Session.html" title="Represents a single request/response pair of an application process.">Session</a> will be dereferenced, so that the underlying file descriptor is closed.</li><li>It ignores the APR_NONBLOCK_READ flag because that's known to cause strange I/O problems.</li><li>It can store its current state in a PassengerBucketState data structure. </li></ul>
452
+ <p>We used to use an apr_bucket_pipe for forwarding the backend process's response to the HTTP client. </p>
453
+ <p>However, apr_bucket_pipe has a number of issues:</p>
454
+ <ul>
455
+ <li>It closes the pipe's file descriptor when it has reached end-of-stream, but not when an error has occurred. This behavior is undesirable because it can easily cause file descriptor leaks.</li>
456
+ <li>It does weird non-blocking-I/O related things which can cause it to read less data than can actually be read.</li>
457
+ </ul>
458
+ <p>PassengerBucket is like apr_bucket_pipe, but:</p>
459
+ <ul>
460
+ <li>It also holds a reference to a <a class="el" href="classPassenger_1_1Session.html" title="Represents a single request/response pair of an application process.">Session</a>. When a read error has occured or when end-of-stream has been reached, the <a class="el" href="classPassenger_1_1Session.html" title="Represents a single request/response pair of an application process.">Session</a> will be dereferenced, so that the underlying file descriptor is closed.</li>
461
+ <li>It ignores the APR_NONBLOCK_READ flag because that's known to cause strange I/O problems.</li>
462
+ <li>It can store its current state in a PassengerBucketState data structure. </li>
463
+ </ul>
628
464
 
629
465
  </div>
630
- </div><p>
631
- <a class="anchor" name="8422d210cbd2f62d21254415b5a7f747"></a><!-- doxytag: member="Passenger::removeDirTree" ref="8422d210cbd2f62d21254415b5a7f747" args="(const string &amp;path)" -->
466
+ </div>
467
+ <a class="anchor" id="a8422d210cbd2f62d21254415b5a7f747"></a><!-- doxytag: member="Passenger::removeDirTree" ref="a8422d210cbd2f62d21254415b5a7f747" args="(const string &amp;path)" -->
632
468
  <div class="memitem">
633
469
  <div class="memproto">
634
470
  <table class="memname">
635
471
  <tr>
636
- <td class="memname">void Passenger::removeDirTree </td>
472
+ <td class="memname">void Passenger::removeDirTree </td>
637
473
  <td>(</td>
638
474
  <td class="paramtype">const string &amp;&nbsp;</td>
639
- <td class="paramname"> <em>path</em> </td>
475
+ <td class="paramname"> <em>path</em></td>
640
476
  <td>&nbsp;)&nbsp;</td>
641
477
  <td></td>
642
478
  </tr>
@@ -644,85 +480,20 @@ PassengerBucket is like apr_bucket_pipe, but:<ul>
644
480
  </div>
645
481
  <div class="memdoc">
646
482
 
647
- <p>
648
- Remove an entire directory tree recursively.
649
- <p>
650
- If the directory doesn't exist then this function does nothing.<p>
651
- <dl compact><dt><b>Exceptions:</b></dt><dd>
483
+ <p>Remove an entire directory tree recursively. </p>
484
+ <p>If the directory doesn't exist then this function does nothing.</p>
485
+ <dl><dt><b>Exceptions:</b></dt><dd>
652
486
  <table border="0" cellspacing="2" cellpadding="0">
653
487
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1FileSystemException.html" title="A filesystem error, as returned by the operating system.">FileSystemException</a></em>&nbsp;</td><td>Something went wrong. </td></tr>
654
488
  </table>
489
+ </dd>
655
490
  </dl>
656
491
 
657
492
  </div>
658
- </div><p>
659
- <a class="anchor" name="6b2bc9d6fa3848e01fd8c164d30737cc"></a><!-- doxytag: member="Passenger::roundUp" ref="6b2bc9d6fa3848e01fd8c164d30737cc" args="(IntType number, IntType multiple)" -->
660
- <div class="memitem">
661
- <div class="memproto">
662
- <div class="memtemplate">
663
- template&lt;typename IntType &gt; </div>
664
- <table class="memname">
665
- <tr>
666
- <td class="memname">IntType Passenger::roundUp </td>
667
- <td>(</td>
668
- <td class="paramtype">IntType&nbsp;</td>
669
- <td class="paramname"> <em>number</em>, </td>
670
- </tr>
671
- <tr>
672
- <td class="paramkey"></td>
673
- <td></td>
674
- <td class="paramtype">IntType&nbsp;</td>
675
- <td class="paramname"> <em>multiple</em></td><td>&nbsp;</td>
676
- </tr>
677
- <tr>
678
- <td></td>
679
- <td>)</td>
680
- <td></td><td></td><td><code> [inline]</code></td>
681
- </tr>
682
- </table>
683
- </div>
684
- <div class="memdoc">
685
-
686
- <p>
687
- Round <em>number</em> up to the nearest multiple of <em>multiple</em>.
688
- <p>
689
-
690
- </div>
691
- </div><p>
692
- <a class="anchor" name="8b73dbe534ee6daf755909cf6c321166"></a><!-- doxytag: member="Passenger::toHex" ref="8b73dbe534ee6daf755909cf6c321166" args="(const StaticString &amp;data, char *output)" -->
693
- <div class="memitem">
694
- <div class="memproto">
695
- <table class="memname">
696
- <tr>
697
- <td class="memname">void Passenger::toHex </td>
698
- <td>(</td>
699
- <td class="paramtype">const StaticString &amp;&nbsp;</td>
700
- <td class="paramname"> <em>data</em>, </td>
701
- </tr>
702
- <tr>
703
- <td class="paramkey"></td>
704
- <td></td>
705
- <td class="paramtype">char *&nbsp;</td>
706
- <td class="paramname"> <em>output</em></td><td>&nbsp;</td>
707
- </tr>
708
- <tr>
709
- <td></td>
710
- <td>)</td>
711
- <td></td><td></td><td></td>
712
- </tr>
713
- </table>
714
- </div>
715
- <div class="memdoc">
716
-
717
- <p>
718
- Convert the given binary data to hexadecimal.
719
- <p>
720
- This form accepts an output buffer which must be at least data.size() * 2 bytes large.
721
493
  </div>
722
- </div><p>
723
494
  </div>
724
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:58 2010 for Passenger by&nbsp;
495
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
725
496
  <a href="http://www.doxygen.org/index.html">
726
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
497
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
727
498
  </body>
728
499
  </html>