passenger 2.2.9 → 2.2.10

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 (435) hide show
  1. data/NEWS +10 -0
  2. data/doc/Architectural overview.html +202 -65
  3. data/doc/Security of user switching support.html +200 -63
  4. data/doc/Users guide Apache.html +266 -129
  5. data/doc/Users guide Nginx.html +234 -97
  6. data/doc/cxxapi/AbstractSpawnManager_8h-source.html +138 -0
  7. data/doc/cxxapi/Account_8h-source.html +202 -0
  8. data/doc/cxxapi/AccountsDatabase_8h-source.html +158 -0
  9. data/doc/cxxapi/AgentsStarter_8h-source.html +79 -0
  10. data/doc/cxxapi/BCrypt_8h-source.html +101 -0
  11. data/doc/cxxapi/BacktracesServer_8h-source.html +87 -0
  12. data/doc/cxxapi/Base64_8h-source.html +85 -0
  13. data/doc/cxxapi/Blowfish_8h-source.html +131 -0
  14. data/doc/cxxapi/Bucket_8h-source.html +1 -1
  15. data/doc/cxxapi/CachedFileStat_8h-source.html +49 -157
  16. data/doc/cxxapi/Configuration_8h-source.html +1 -1
  17. data/doc/cxxapi/Constants_8h-source.html +71 -0
  18. data/doc/cxxapi/ContentHandler_8h-source.html +92 -0
  19. data/doc/cxxapi/DirectoryMapper_8h-source.html +1 -1
  20. data/doc/cxxapi/Exceptions_8h-source.html +332 -236
  21. data/doc/cxxapi/FileChangeChecker_8h-source.html +237 -0
  22. data/doc/cxxapi/FileDescriptor_8h-source.html +206 -0
  23. data/doc/cxxapi/Hooks_8h-source.html +1 -1
  24. data/doc/cxxapi/HttpStatusExtractor_8h-source.html +378 -0
  25. data/doc/cxxapi/LoggingServer_8h-source.html +165 -0
  26. data/doc/cxxapi/Logging_8h-source.html +580 -112
  27. data/doc/cxxapi/MessageChannel_8h-source.html +789 -599
  28. data/doc/cxxapi/MessageClient_8h-source.html +297 -0
  29. data/doc/cxxapi/MessageServer_8h-source.html +607 -0
  30. data/doc/cxxapi/PoolOptions_8h-source.html +471 -278
  31. data/doc/cxxapi/Process_8h-source.html +272 -0
  32. data/doc/cxxapi/RandomGenerator_8h-source.html +156 -0
  33. data/doc/cxxapi/ResourceLocator_8h-source.html +104 -0
  34. data/doc/cxxapi/ScgiRequestParser_8h-source.html +399 -0
  35. data/doc/cxxapi/ServerInstanceDir_8h-source.html +356 -0
  36. data/doc/cxxapi/Session_8h-source.html +483 -0
  37. data/doc/cxxapi/SpawnManager_8h-source.html +590 -546
  38. data/doc/cxxapi/StaticContentHandler_8h-source.html +65 -0
  39. data/doc/cxxapi/StaticString_8h-source.html +214 -0
  40. data/doc/cxxapi/StringListCreator_8h-source.html +111 -0
  41. data/doc/cxxapi/SystemTime_8h-source.html +191 -78
  42. data/doc/cxxapi/Timer_8h-source.html +157 -0
  43. data/doc/cxxapi/Utils_8h-source.html +621 -434
  44. data/doc/cxxapi/Version_8h-source.html +59 -0
  45. data/doc/cxxapi/annotated.html +1 -1
  46. data/doc/cxxapi/apache2_2Configuration_8h-source.html +79 -0
  47. data/doc/cxxapi/classAgentWatcher-members.html +50 -0
  48. data/doc/cxxapi/classAgentWatcher.html +445 -0
  49. data/doc/cxxapi/classClient-members.html +4 -3
  50. data/doc/cxxapi/classClient.html +50 -46
  51. data/doc/cxxapi/classHooks-members.html +1 -1
  52. data/doc/cxxapi/classHooks.html +1 -1
  53. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +37 -0
  54. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +191 -0
  55. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.map +1 -0
  56. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.md5 +1 -0
  57. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager__inherit__graph.png +0 -0
  58. data/doc/cxxapi/{classPassenger_1_1DummySpawnManager-members.html → classPassenger_1_1ArgumentException-members.html} +3 -2
  59. data/doc/cxxapi/classPassenger_1_1ArgumentException.html +52 -0
  60. data/doc/cxxapi/classPassenger_1_1BacktracesServer-members.html +36 -0
  61. data/doc/cxxapi/classPassenger_1_1BacktracesServer.html +107 -0
  62. data/doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.map +1 -0
  63. data/doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.md5 +1 -0
  64. data/doc/cxxapi/classPassenger_1_1BacktracesServer__inherit__graph.png +0 -0
  65. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +3 -3
  66. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +18 -34
  67. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +2 -1
  68. data/doc/cxxapi/classPassenger_1_1BusyException.html +3 -2
  69. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +2 -1
  70. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +3 -2
  71. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +1 -1
  72. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +1 -1
  73. data/doc/cxxapi/{classPassenger_1_1FileChecker-members.html → classPassenger_1_1EOFException-members.html} +3 -4
  74. data/doc/cxxapi/classPassenger_1_1EOFException.html +57 -0
  75. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.map +1 -0
  76. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.md5 +1 -0
  77. data/doc/cxxapi/classPassenger_1_1EOFException__inherit__graph.png +0 -0
  78. data/doc/cxxapi/classPassenger_1_1EventFd-members.html +33 -0
  79. data/doc/cxxapi/classPassenger_1_1EventFd.html +49 -0
  80. data/doc/cxxapi/classPassenger_1_1FileChangeChecker-members.html +37 -0
  81. data/doc/cxxapi/classPassenger_1_1FileChangeChecker.html +166 -0
  82. data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +37 -0
  83. data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +159 -0
  84. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +2 -1
  85. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +3 -2
  86. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +2 -1
  87. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +3 -2
  88. data/doc/cxxapi/{classPassenger_1_1ApplicationPoolServer-members.html → classPassenger_1_1HttpStatusExtractor-members.html} +6 -5
  89. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +128 -0
  90. data/doc/cxxapi/classPassenger_1_1IOException-members.html +2 -1
  91. data/doc/cxxapi/classPassenger_1_1IOException.html +4 -3
  92. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +2 -1
  93. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -1
  94. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  95. data/doc/cxxapi/classPassenger_1_1MemZeroGuard-members.html +36 -0
  96. data/doc/cxxapi/classPassenger_1_1MemZeroGuard.html +147 -0
  97. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +12 -5
  98. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +267 -34
  99. data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +46 -0
  100. data/doc/cxxapi/classPassenger_1_1MessageServer.html +438 -0
  101. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +33 -0
  102. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +56 -0
  103. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map +1 -0
  104. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5 +1 -0
  105. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png +0 -0
  106. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +38 -0
  107. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +175 -0
  108. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map +1 -0
  109. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5 +1 -0
  110. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png +0 -0
  111. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +36 -0
  112. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +176 -0
  113. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.map +1 -0
  114. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.md5 +1 -0
  115. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler__inherit__graph.png +0 -0
  116. data/doc/cxxapi/classPassenger_1_1Process-members.html +40 -0
  117. data/doc/cxxapi/classPassenger_1_1Process.html +266 -0
  118. data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +33 -0
  119. data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +51 -0
  120. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +2 -1
  121. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +3 -2
  122. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +47 -0
  123. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +302 -0
  124. data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +33 -0
  125. data/doc/cxxapi/classPassenger_1_1SecurityException.html +52 -0
  126. data/doc/cxxapi/classPassenger_1_1Session-members.html +50 -0
  127. data/doc/cxxapi/classPassenger_1_1Session.html +577 -0
  128. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.map +1 -0
  129. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.md5 +1 -0
  130. data/doc/cxxapi/classPassenger_1_1Session__inherit__graph.png +0 -0
  131. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +2 -1
  132. data/doc/cxxapi/classPassenger_1_1SpawnException.html +5 -4
  133. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +8 -5
  134. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +127 -45
  135. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.map +1 -0
  136. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.md5 +1 -0
  137. data/doc/cxxapi/classPassenger_1_1SpawnManager__inherit__graph.png +0 -0
  138. data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +51 -0
  139. data/doc/cxxapi/classPassenger_1_1StandardSession.html +415 -0
  140. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.map +1 -0
  141. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.md5 +1 -0
  142. data/doc/cxxapi/classPassenger_1_1StandardSession__inherit__graph.png +0 -0
  143. data/doc/cxxapi/classPassenger_1_1StaticString-members.html +33 -0
  144. data/doc/cxxapi/classPassenger_1_1StaticString.html +54 -0
  145. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +2 -1
  146. data/doc/cxxapi/classPassenger_1_1SystemException.html +4 -3
  147. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +1 -0
  148. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +1 -1
  149. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  150. data/doc/cxxapi/classPassenger_1_1SystemTime-members.html +9 -1
  151. data/doc/cxxapi/classPassenger_1_1SystemTime.html +92 -8
  152. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +37 -0
  153. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +57 -0
  154. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.map +1 -0
  155. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.md5 +1 -0
  156. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException__inherit__graph.png +0 -0
  157. data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +33 -0
  158. data/doc/cxxapi/classPassenger_1_1TimeoutException.html +50 -0
  159. data/doc/cxxapi/{classPassenger_1_1Application-members.html → classPassenger_1_1Timer-members.html} +8 -7
  160. data/doc/cxxapi/classPassenger_1_1Timer.html +163 -0
  161. data/doc/cxxapi/classServer-members.html +33 -0
  162. data/doc/cxxapi/classServer.html +46 -0
  163. data/doc/cxxapi/classServerInstanceDirToucher-members.html +33 -0
  164. data/doc/cxxapi/classServerInstanceDirToucher.html +43 -0
  165. data/doc/cxxapi/classes.html +1 -1
  166. data/doc/cxxapi/definitions_8h-source.html +1 -1
  167. data/doc/cxxapi/files.html +1 -1
  168. data/doc/cxxapi/functions.html +1 -1
  169. data/doc/cxxapi/{functions_type.html → functions_enum.html} +7 -5
  170. data/doc/cxxapi/functions_eval.html +55 -0
  171. data/doc/cxxapi/functions_func.html +1 -1
  172. data/doc/cxxapi/functions_vars.html +106 -9
  173. data/doc/cxxapi/graph_legend.html +1 -1
  174. data/doc/cxxapi/group__Configuration.html +1 -1
  175. data/doc/cxxapi/group__Core.html +1 -1
  176. data/doc/cxxapi/group__Exceptions.html +17 -1
  177. data/doc/cxxapi/group__Hooks.html +1 -1
  178. data/doc/cxxapi/group__Support.html +1 -1
  179. data/doc/cxxapi/hierarchy.html +34 -12
  180. data/doc/cxxapi/inherit__graph__0.map +1 -1
  181. data/doc/cxxapi/inherit__graph__0.md5 +1 -1
  182. data/doc/cxxapi/inherit__graph__0.png +0 -0
  183. data/doc/cxxapi/inherit__graph__1.map +1 -1
  184. data/doc/cxxapi/inherit__graph__1.md5 +1 -1
  185. data/doc/cxxapi/inherit__graph__1.png +0 -0
  186. data/doc/cxxapi/inherit__graph__10.map +1 -1
  187. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  188. data/doc/cxxapi/inherit__graph__10.png +0 -0
  189. data/doc/cxxapi/inherit__graph__11.map +1 -1
  190. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  191. data/doc/cxxapi/inherit__graph__11.png +0 -0
  192. data/doc/cxxapi/inherit__graph__12.map +1 -1
  193. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  194. data/doc/cxxapi/inherit__graph__12.png +0 -0
  195. data/doc/cxxapi/inherit__graph__13.map +1 -1
  196. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  197. data/doc/cxxapi/inherit__graph__13.png +0 -0
  198. data/doc/cxxapi/inherit__graph__14.map +3 -2
  199. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  200. data/doc/cxxapi/inherit__graph__14.png +0 -0
  201. data/doc/cxxapi/inherit__graph__15.map +1 -1
  202. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  203. data/doc/cxxapi/inherit__graph__15.png +0 -0
  204. data/doc/cxxapi/inherit__graph__16.map +1 -1
  205. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  206. data/doc/cxxapi/inherit__graph__16.png +0 -0
  207. data/doc/cxxapi/inherit__graph__17.map +1 -1
  208. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  209. data/doc/cxxapi/inherit__graph__17.png +0 -0
  210. data/doc/cxxapi/inherit__graph__18.map +2 -1
  211. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  212. data/doc/cxxapi/inherit__graph__18.png +0 -0
  213. data/doc/cxxapi/inherit__graph__19.map +1 -1
  214. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  215. data/doc/cxxapi/inherit__graph__19.png +0 -0
  216. data/doc/cxxapi/inherit__graph__2.map +1 -1
  217. data/doc/cxxapi/inherit__graph__2.md5 +1 -1
  218. data/doc/cxxapi/inherit__graph__2.png +0 -0
  219. data/doc/cxxapi/inherit__graph__20.map +1 -2
  220. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  221. data/doc/cxxapi/inherit__graph__20.png +0 -0
  222. data/doc/cxxapi/inherit__graph__21.map +1 -1
  223. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  224. data/doc/cxxapi/inherit__graph__21.png +0 -0
  225. data/doc/cxxapi/inherit__graph__22.map +1 -0
  226. data/doc/cxxapi/inherit__graph__22.md5 +1 -0
  227. data/doc/cxxapi/inherit__graph__22.png +0 -0
  228. data/doc/cxxapi/inherit__graph__23.map +1 -0
  229. data/doc/cxxapi/inherit__graph__23.md5 +1 -0
  230. data/doc/cxxapi/inherit__graph__23.png +0 -0
  231. data/doc/cxxapi/inherit__graph__24.map +1 -0
  232. data/doc/cxxapi/inherit__graph__24.md5 +1 -0
  233. data/doc/cxxapi/inherit__graph__24.png +0 -0
  234. data/doc/cxxapi/inherit__graph__25.map +1 -0
  235. data/doc/cxxapi/inherit__graph__25.md5 +1 -0
  236. data/doc/cxxapi/inherit__graph__25.png +0 -0
  237. data/doc/cxxapi/inherit__graph__26.map +1 -0
  238. data/doc/cxxapi/inherit__graph__26.md5 +1 -0
  239. data/doc/cxxapi/inherit__graph__26.png +0 -0
  240. data/doc/cxxapi/inherit__graph__27.map +2 -0
  241. data/doc/cxxapi/inherit__graph__27.md5 +1 -0
  242. data/doc/cxxapi/inherit__graph__27.png +0 -0
  243. data/doc/cxxapi/inherit__graph__28.map +1 -0
  244. data/doc/cxxapi/inherit__graph__28.md5 +1 -0
  245. data/doc/cxxapi/inherit__graph__28.png +0 -0
  246. data/doc/cxxapi/inherit__graph__29.map +1 -0
  247. data/doc/cxxapi/inherit__graph__29.md5 +1 -0
  248. data/doc/cxxapi/inherit__graph__29.png +0 -0
  249. data/doc/cxxapi/inherit__graph__3.map +2 -1
  250. data/doc/cxxapi/inherit__graph__3.md5 +1 -1
  251. data/doc/cxxapi/inherit__graph__3.png +0 -0
  252. data/doc/cxxapi/inherit__graph__30.map +1 -0
  253. data/doc/cxxapi/inherit__graph__30.md5 +1 -0
  254. data/doc/cxxapi/inherit__graph__30.png +0 -0
  255. data/doc/cxxapi/inherit__graph__31.map +3 -0
  256. data/doc/cxxapi/inherit__graph__31.md5 +1 -0
  257. data/doc/cxxapi/inherit__graph__31.png +0 -0
  258. data/doc/cxxapi/inherit__graph__32.map +1 -0
  259. data/doc/cxxapi/inherit__graph__32.md5 +1 -0
  260. data/doc/cxxapi/inherit__graph__32.png +0 -0
  261. data/doc/cxxapi/inherit__graph__33.map +1 -0
  262. data/doc/cxxapi/inherit__graph__33.md5 +1 -0
  263. data/doc/cxxapi/inherit__graph__33.png +0 -0
  264. data/doc/cxxapi/inherit__graph__34.map +1 -0
  265. data/doc/cxxapi/inherit__graph__34.md5 +1 -0
  266. data/doc/cxxapi/inherit__graph__34.png +0 -0
  267. data/doc/cxxapi/inherit__graph__35.map +1 -0
  268. data/doc/cxxapi/inherit__graph__35.md5 +1 -0
  269. data/doc/cxxapi/inherit__graph__35.png +0 -0
  270. data/doc/cxxapi/inherit__graph__36.map +1 -0
  271. data/doc/cxxapi/inherit__graph__36.md5 +1 -0
  272. data/doc/cxxapi/inherit__graph__36.png +0 -0
  273. data/doc/cxxapi/inherit__graph__4.map +1 -1
  274. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  275. data/doc/cxxapi/inherit__graph__4.png +0 -0
  276. data/doc/cxxapi/inherit__graph__5.map +1 -1
  277. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  278. data/doc/cxxapi/inherit__graph__5.png +0 -0
  279. data/doc/cxxapi/inherit__graph__6.map +1 -2
  280. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  281. data/doc/cxxapi/inherit__graph__6.png +0 -0
  282. data/doc/cxxapi/inherit__graph__7.map +1 -1
  283. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  284. data/doc/cxxapi/inherit__graph__7.png +0 -0
  285. data/doc/cxxapi/inherit__graph__8.map +1 -1
  286. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  287. data/doc/cxxapi/inherit__graph__8.png +0 -0
  288. data/doc/cxxapi/inherit__graph__9.map +1 -1
  289. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  290. data/doc/cxxapi/inherit__graph__9.png +0 -0
  291. data/doc/cxxapi/inherits.html +81 -41
  292. data/doc/cxxapi/main.html +1 -1
  293. data/doc/cxxapi/md5_8h-source.html +121 -0
  294. data/doc/cxxapi/modules.html +1 -1
  295. data/doc/cxxapi/namespacePassenger.html +651 -0
  296. data/doc/cxxapi/namespacemembers.html +155 -0
  297. data/doc/cxxapi/namespacemembers_enum.html +46 -0
  298. data/doc/cxxapi/namespacemembers_eval.html +52 -0
  299. data/doc/cxxapi/namespacemembers_func.html +139 -0
  300. data/doc/cxxapi/namespacemembers_type.html +50 -0
  301. data/doc/cxxapi/namespaces.html +34 -0
  302. data/doc/cxxapi/nginx_2Configuration_8h-source.html +114 -0
  303. data/doc/cxxapi/ngx__http__passenger__module_8h-source.html +91 -0
  304. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +2 -1
  305. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +3 -2
  306. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +2 -1
  307. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +3 -2
  308. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +33 -0
  309. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +49 -0
  310. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +19 -7
  311. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +323 -53
  312. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +33 -0
  313. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +49 -0
  314. data/ext/common/MessageChannel.h +48 -4
  315. data/ext/common/Version.h +1 -1
  316. data/ext/nginx/HttpStatusExtractor.h +1 -0
  317. data/ext/nginx/ScgiRequestParser.h +1 -0
  318. data/ext/phusion_passenger/native_support.c +5 -1
  319. data/lib/phusion_passenger/constants.rb +1 -1
  320. data/lib/phusion_passenger/message_channel.rb +45 -3
  321. data/lib/phusion_passenger/rack/application_spawner.rb +4 -0
  322. data/lib/phusion_passenger/railz/application_spawner.rb +19 -1
  323. data/lib/phusion_passenger/utils.rb +3 -3
  324. data/lib/phusion_passenger/utils/rewindable_input.rb +5 -0
  325. data/test/MessageChannelTest.cpp +9 -1
  326. data/test/stub/message_channel.rb +1 -1
  327. data/test/stub/message_channel_2.rb +1 -1
  328. data/test/stub/message_channel_3.rb +2 -2
  329. metadata +173 -113
  330. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +0 -833
  331. data/doc/cxxapi/ApplicationPool_8h-source.html +0 -226
  332. data/doc/cxxapi/Application_8h-source.html +0 -553
  333. data/doc/cxxapi/DummySpawnManager_8h-source.html +0 -130
  334. data/doc/cxxapi/FileChecker_8h-source.html +0 -134
  335. data/doc/cxxapi/StandardApplicationPool_8h-source.html +0 -842
  336. data/doc/cxxapi/classPassenger_1_1Application.html +0 -231
  337. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +0 -41
  338. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +0 -323
  339. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +0 -227
  340. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map +0 -1
  341. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5 +0 -1
  342. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  343. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +0 -44
  344. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +0 -403
  345. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +0 -53
  346. data/doc/cxxapi/classPassenger_1_1FileChecker.html +0 -124
  347. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +0 -44
  348. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +0 -342
  349. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map +0 -1
  350. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5 +0 -1
  351. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  352. data/doc/rdoc/classes/ConditionVariable.html +0 -194
  353. data/doc/rdoc/classes/Exception.html +0 -120
  354. data/doc/rdoc/classes/GC.html +0 -113
  355. data/doc/rdoc/classes/IO.html +0 -169
  356. data/doc/rdoc/classes/PhusionPassenger.html +0 -239
  357. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -153
  358. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -517
  359. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -719
  360. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
  361. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
  362. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
  363. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
  364. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -598
  365. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -140
  366. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +0 -317
  367. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +0 -138
  368. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -154
  369. data/doc/rdoc/classes/PhusionPassenger/Application.html +0 -283
  370. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
  371. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
  372. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -175
  373. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
  374. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
  375. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -489
  376. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +0 -350
  377. data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
  378. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -188
  379. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -199
  380. data/doc/rdoc/classes/PhusionPassenger/Railz.html +0 -95
  381. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +0 -438
  382. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +0 -98
  383. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +0 -200
  384. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +0 -436
  385. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +0 -98
  386. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +0 -155
  387. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -402
  388. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
  389. data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -805
  390. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +0 -169
  391. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +0 -247
  392. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +0 -120
  393. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
  394. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
  395. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -188
  396. data/doc/rdoc/classes/PlatformInfo.html +0 -866
  397. data/doc/rdoc/classes/RakeExtensions.html +0 -197
  398. data/doc/rdoc/classes/Signal.html +0 -139
  399. data/doc/rdoc/created.rid +0 -1
  400. data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -255
  401. data/doc/rdoc/files/README.html +0 -157
  402. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +0 -92
  403. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -129
  404. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -129
  405. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
  406. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -128
  407. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +0 -130
  408. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
  409. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +0 -127
  410. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
  411. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
  412. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -134
  413. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +0 -122
  414. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
  415. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -126
  416. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -120
  417. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
  418. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -127
  419. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -133
  420. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -125
  421. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +0 -140
  422. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +0 -126
  423. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +0 -145
  424. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +0 -125
  425. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
  426. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -159
  427. data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +0 -100
  428. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -174
  429. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -129
  430. data/doc/rdoc/files/misc/rake/extensions_rb.html +0 -130
  431. data/doc/rdoc/fr_class_index.html +0 -93
  432. data/doc/rdoc/fr_file_index.html +0 -77
  433. data/doc/rdoc/fr_method_index.html +0 -212
  434. data/doc/rdoc/index.html +0 -26
  435. data/doc/rdoc/rdoc-style.css +0 -187
@@ -25,7 +25,7 @@
25
25
  <li><a class="el" href="group__Support.html">Apache-independent support classes and function</a>
26
26
  </ul>
27
27
  </div>
28
- <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Mon Feb 22 13:50:37 2010 for Passenger by&nbsp;
29
29
  <a href="http://www.doxygen.org/index.html">
30
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
31
31
  </body>
@@ -0,0 +1,651 @@
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">
3
+ <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 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
14
+ <li><a href="annotated.html"><span>Classes</span></a></li>
15
+ <li><a href="files.html"><span>Files</span></a></li>
16
+ </ul>
17
+ </div>
18
+ <div class="tabs">
19
+ <ul>
20
+ <li><a href="namespaces.html"><span>Namespace&nbsp;List</span></a></li>
21
+ <li><a href="namespacemembers.html"><span>Namespace&nbsp;Members</span></a></li>
22
+ </ul>
23
+ </div>
24
+ </div>
25
+ <div class="contents">
26
+ <h1>Passenger Namespace Reference</h1>A random.
27
+ <a href="#_details">More...</a>
28
+ <p>
29
+ <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_1MessageServer.html">MessageServer</a></td></tr>
87
+
88
+ <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>
89
+ <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>
90
+
91
+ <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>
92
+ <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>
93
+
94
+ <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>
95
+ <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>
96
+
97
+ <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>
98
+ <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>
99
+
100
+ <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>
101
+ <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>
102
+
103
+ <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>
104
+ <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>
105
+
106
+ <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>
107
+ <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>
108
+
109
+ <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>
110
+ <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>
111
+
112
+ <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>
113
+ <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>
114
+
115
+ <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>
116
+ <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>
117
+
118
+ <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>
119
+ <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>
120
+
121
+ <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>
122
+ <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>
123
+
124
+ <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>
125
+ <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>
126
+
127
+ <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>
128
+ <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
129
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef shared_ptr<br class="typebreak">
130
+ &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>
131
+
132
+ <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>
133
+ <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>
134
+
135
+ <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>
136
+ <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>
137
+
138
+ <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>
139
+ <tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
140
+ <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>,
141
+ <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d1538596a928321d1a282c6bb06e80563">FT_REGULAR</a>,
142
+ <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07dbb09dbba1071b4770913363db2462eee">FT_DIRECTORY</a>,
143
+ <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d3e89b9a7be074975e007d9f7cd77f4ff">FT_OTHER</a>
144
+ }</td></tr>
145
+
146
+ <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>
147
+ <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
148
+ <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>
149
+
150
+ <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>
151
+ <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)" -->
152
+ int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g73b17b509ee44938a56bf16cbf82fb48">atoi</a> (const string &amp;s)</td></tr>
153
+
154
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts the given string to an integer. <br></td></tr>
155
+ <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)" -->
156
+ long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#g7b50461f1bc2b370c956967870da2762">atol</a> (const string &amp;s)</td></tr>
157
+
158
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Converts the given string to a long integer. <br></td></tr>
159
+ <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>
160
+
161
+ <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>
162
+ <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>
163
+
164
+ <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>
165
+ <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>
166
+
167
+ <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>
168
+ <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>
169
+
170
+ <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>
171
+ <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>
172
+
173
+ <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>
174
+ <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>
175
+
176
+ <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>
177
+ <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)" -->
178
+ 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>
179
+
180
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a path, extracts its directory name. <br></td></tr>
181
+ <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)" -->
182
+ 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>
183
+
184
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a path, extracts its base name. <br></td></tr>
185
+ <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>
186
+
187
+ <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>
188
+ <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>
189
+
190
+ <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>
191
+ <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>
192
+
193
+ <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>
194
+ <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>
195
+
196
+ <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>
197
+ <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>
198
+
199
+ <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>
200
+ <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>
201
+
202
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove an entire directory tree recursively. <a href="#8422d210cbd2f62d21254415b5a7f747"></a><br></td></tr>
203
+ <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>
204
+
205
+ <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>
206
+ <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>
207
+
208
+ <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>
209
+ <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>
210
+
211
+ <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>
212
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Support.html#geb1ed5adc17a8f98fbc9a4e96bb3ae95">generateSecureToken</a> (void *buf, unsigned int size)</td></tr>
213
+
214
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate a secure, random token of the <code>size</code> bytes and put the result into <code>buf</code>. <a href="group__Support.html#geb1ed5adc17a8f98fbc9a4e96bb3ae95"></a><br></td></tr>
215
+ <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>
216
+
217
+ <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>
218
+ <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)" -->
219
+ 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>
220
+
221
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert the given binary data to hexadecimal. <br></td></tr>
222
+ <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>
223
+
224
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert the given binary data to hexadecimal. <a href="#8b73dbe534ee6daf755909cf6c321166"></a><br></td></tr>
225
+ <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="979cb43cef743bf261c329b13e712366"></a><!-- doxytag: member="Passenger::getSignalName" ref="979cb43cef743bf261c329b13e712366" args="(int sig)" -->
226
+ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacePassenger.html#979cb43cef743bf261c329b13e712366">getSignalName</a> (int sig)</td></tr>
227
+
228
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a signal number to its associated name. <br></td></tr>
229
+ <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>
230
+
231
+ <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>
232
+ <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>
233
+
234
+ <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>
235
+ <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>
236
+
237
+ <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>
238
+ <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename T &gt; </td></tr>
239
+ <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>
240
+
241
+ <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>
242
+ <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename T &gt; </td></tr>
243
+ <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>
244
+
245
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert anything to a string. <a href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407"></a><br></td></tr>
246
+ <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename IntType &gt; </td></tr>
247
+ <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>
248
+
249
+ <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>
250
+ </table>
251
+ <hr><a name="_details"></a><h2>Detailed Description</h2>
252
+ A random.
253
+ <p>
254
+ <hr><h2>Typedef Documentation</h2>
255
+ <a class="anchor" name="fd60d942a89fbb7f306e330d75704570"></a><!-- doxytag: member="Passenger::AbstractSpawnManagerPtr" ref="fd60d942a89fbb7f306e330d75704570" args="" -->
256
+ <div class="memitem">
257
+ <div class="memproto">
258
+ <table class="memname">
259
+ <tr>
260
+ <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>
261
+ </tr>
262
+ </table>
263
+ </div>
264
+ <div class="memdoc">
265
+
266
+ <p>
267
+ Convenient alias for <a class="el" href="classPassenger_1_1AbstractSpawnManager.html" title="Spawning of application processes.">AbstractSpawnManager</a> smart pointer.
268
+ <p>
269
+
270
+ </div>
271
+ </div><p>
272
+ <a class="anchor" name="ced1f248465136b313c6dec5fe6ca492"></a><!-- doxytag: member="Passenger::ProcessPtr" ref="ced1f248465136b313c6dec5fe6ca492" args="" -->
273
+ <div class="memitem">
274
+ <div class="memproto">
275
+ <table class="memname">
276
+ <tr>
277
+ <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>
278
+ </tr>
279
+ </table>
280
+ </div>
281
+ <div class="memdoc">
282
+
283
+ <p>
284
+ 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.
285
+ <p>
286
+
287
+ </div>
288
+ </div><p>
289
+ <a class="anchor" name="6ab2d566ff87a2676c23d8aa40204587"></a><!-- doxytag: member="Passenger::SpawnManagerPtr" ref="6ab2d566ff87a2676c23d8aa40204587" args="" -->
290
+ <div class="memitem">
291
+ <div class="memproto">
292
+ <table class="memname">
293
+ <tr>
294
+ <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>
295
+ </tr>
296
+ </table>
297
+ </div>
298
+ <div class="memdoc">
299
+
300
+ <p>
301
+ Convenient alias for <a class="el" href="classPassenger_1_1SpawnManager.html" title="An AbstractSpawnManager implementation.">SpawnManager</a> smart pointer.
302
+ <p>
303
+
304
+ </div>
305
+ </div><p>
306
+ <hr><h2>Enumeration Type Documentation</h2>
307
+ <a class="anchor" name="14174b712df6046cb823cde43d7ef07d"></a><!-- doxytag: member="Passenger::FileType" ref="14174b712df6046cb823cde43d7ef07d" args="" -->
308
+ <div class="memitem">
309
+ <div class="memproto">
310
+ <table class="memname">
311
+ <tr>
312
+ <td class="memname">enum <a class="el" href="namespacePassenger.html#14174b712df6046cb823cde43d7ef07d">Passenger::FileType</a> </td>
313
+ </tr>
314
+ </table>
315
+ </div>
316
+ <div class="memdoc">
317
+
318
+ <p>
319
+ Enumeration which indicates what kind of file a file is.
320
+ <p>
321
+ <dl compact><dt><b>Enumerator: </b></dt><dd>
322
+ <table border="0" cellspacing="2" cellpadding="0">
323
+ <tr><td valign="top"><em><a class="anchor" name="14174b712df6046cb823cde43d7ef07d9fc66834fe96c52799397496b8df8486"></a><!-- doxytag: member="FT_NONEXISTANT" ref="14174b712df6046cb823cde43d7ef07d9fc66834fe96c52799397496b8df8486" args="" -->FT_NONEXISTANT</em>&nbsp;</td><td>
324
+ The file doesn't exist.
325
+ <p>
326
+ </td></tr>
327
+ <tr><td valign="top"><em><a class="anchor" name="14174b712df6046cb823cde43d7ef07d1538596a928321d1a282c6bb06e80563"></a><!-- doxytag: member="FT_REGULAR" ref="14174b712df6046cb823cde43d7ef07d1538596a928321d1a282c6bb06e80563" args="" -->FT_REGULAR</em>&nbsp;</td><td>
328
+ A regular file or a symlink to a regular file.
329
+ <p>
330
+ </td></tr>
331
+ <tr><td valign="top"><em><a class="anchor" name="14174b712df6046cb823cde43d7ef07dbb09dbba1071b4770913363db2462eee"></a><!-- doxytag: member="FT_DIRECTORY" ref="14174b712df6046cb823cde43d7ef07dbb09dbba1071b4770913363db2462eee" args="" -->FT_DIRECTORY</em>&nbsp;</td><td>
332
+ A directory.
333
+ <p>
334
+ </td></tr>
335
+ <tr><td valign="top"><em><a class="anchor" name="14174b712df6046cb823cde43d7ef07d3e89b9a7be074975e007d9f7cd77f4ff"></a><!-- doxytag: member="FT_OTHER" ref="14174b712df6046cb823cde43d7ef07d3e89b9a7be074975e007d9f7cd77f4ff" args="" -->FT_OTHER</em>&nbsp;</td><td>
336
+ Something else, e.g.
337
+ <p>
338
+ a pipe or a socket. </td></tr>
339
+ </table>
340
+ </dl>
341
+
342
+ </div>
343
+ </div><p>
344
+ <hr><h2>Function Documentation</h2>
345
+ <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;)" -->
346
+ <div class="memitem">
347
+ <div class="memproto">
348
+ <table class="memname">
349
+ <tr>
350
+ <td class="memname">string Passenger::fillInMiddle </td>
351
+ <td>(</td>
352
+ <td class="paramtype">unsigned int&nbsp;</td>
353
+ <td class="paramname"> <em>max</em>, </td>
354
+ </tr>
355
+ <tr>
356
+ <td class="paramkey"></td>
357
+ <td></td>
358
+ <td class="paramtype">const string &amp;&nbsp;</td>
359
+ <td class="paramname"> <em>prefix</em>, </td>
360
+ </tr>
361
+ <tr>
362
+ <td class="paramkey"></td>
363
+ <td></td>
364
+ <td class="paramtype">const string &amp;&nbsp;</td>
365
+ <td class="paramname"> <em>middle</em>, </td>
366
+ </tr>
367
+ <tr>
368
+ <td class="paramkey"></td>
369
+ <td></td>
370
+ <td class="paramtype">const string &amp;&nbsp;</td>
371
+ <td class="paramname"> <em>postfix</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
372
+ </tr>
373
+ <tr>
374
+ <td></td>
375
+ <td>)</td>
376
+ <td></td><td></td><td></td>
377
+ </tr>
378
+ </table>
379
+ </div>
380
+ <div class="memdoc">
381
+
382
+ <p>
383
+ 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.
384
+ <p>
385
+ 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>
386
+ <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>
387
+ <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>
388
+ <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>
389
+ </pre></div><p>
390
+ <dl class="return" compact><dt><b>Returns:</b></dt><dd>The resulting string, with <code>middle</code> possibly truncated. </dd></dl>
391
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
392
+ <table border="0" cellspacing="2" cellpadding="0">
393
+ <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>
394
+ </table>
395
+ </dl>
396
+ <dl class="post" compact><dt><b>Postcondition:</b></dt><dd>result.size() &lt;= max </dd></dl>
397
+
398
+ </div>
399
+ </div><p>
400
+ <a class="anchor" name="de80218e8b836b796f8b960b6225b439"></a><!-- doxytag: member="Passenger::getProcessUsername" ref="de80218e8b836b796f8b960b6225b439" args="()" -->
401
+ <div class="memitem">
402
+ <div class="memproto">
403
+ <table class="memname">
404
+ <tr>
405
+ <td class="memname">string Passenger::getProcessUsername </td>
406
+ <td>(</td>
407
+ <td class="paramname"> </td>
408
+ <td>&nbsp;)&nbsp;</td>
409
+ <td></td>
410
+ </tr>
411
+ </table>
412
+ </div>
413
+ <div class="memdoc">
414
+
415
+ <p>
416
+ Returns the username of the user that the current process is running as.
417
+ <p>
418
+ If the user has no associated username, then "UID xxxx" is returned, where xxxx is the current UID.
419
+ </div>
420
+ </div><p>
421
+ <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)" -->
422
+ <div class="memitem">
423
+ <div class="memproto">
424
+ <table class="memname">
425
+ <tr>
426
+ <td class="memname">void Passenger::makeDirTree </td>
427
+ <td>(</td>
428
+ <td class="paramtype">const string &amp;&nbsp;</td>
429
+ <td class="paramname"> <em>path</em>, </td>
430
+ </tr>
431
+ <tr>
432
+ <td class="paramkey"></td>
433
+ <td></td>
434
+ <td class="paramtype">const StaticString &amp;&nbsp;</td>
435
+ <td class="paramname"> <em>mode</em> = <code>&quot;u=rwx,g=,o=&quot;</code>, </td>
436
+ </tr>
437
+ <tr>
438
+ <td class="paramkey"></td>
439
+ <td></td>
440
+ <td class="paramtype">uid_t&nbsp;</td>
441
+ <td class="paramname"> <em>owner</em> = <code>USER_NOT_GIVEN</code>, </td>
442
+ </tr>
443
+ <tr>
444
+ <td class="paramkey"></td>
445
+ <td></td>
446
+ <td class="paramtype">gid_t&nbsp;</td>
447
+ <td class="paramname"> <em>group</em> = <code>GROUP_NOT_GIVEN</code></td><td>&nbsp;</td>
448
+ </tr>
449
+ <tr>
450
+ <td></td>
451
+ <td>)</td>
452
+ <td></td><td></td><td></td>
453
+ </tr>
454
+ </table>
455
+ </div>
456
+ <div class="memdoc">
457
+
458
+ <p>
459
+ Create the directory at the given path, creating intermediate directories if necessary.
460
+ <p>
461
+ 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>
462
+ If 'path' already exists, then nothing will happen.<p>
463
+ <dl compact><dt><b>Parameters:</b></dt><dd>
464
+ <table border="0" cellspacing="2" cellpadding="0">
465
+ <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>
466
+ </table>
467
+ </dl>
468
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
469
+ <table border="0" cellspacing="2" cellpadding="0">
470
+ <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>
471
+ <tr><td valign="top"></td><td valign="top"><em>InvalidModeStringException</em>&nbsp;</td><td>The mode string cannot be parsed. </td></tr>
472
+ </table>
473
+ </dl>
474
+
475
+ </div>
476
+ </div><p>
477
+ <a class="anchor" name="da53f5a9bdcf3d22d4a710e7ea3678e9"></a><!-- doxytag: member="Passenger::parseModeString" ref="da53f5a9bdcf3d22d4a710e7ea3678e9" args="(const StaticString &amp;mode)" -->
478
+ <div class="memitem">
479
+ <div class="memproto">
480
+ <table class="memname">
481
+ <tr>
482
+ <td class="memname">mode_t Passenger::parseModeString </td>
483
+ <td>(</td>
484
+ <td class="paramtype">const StaticString &amp;&nbsp;</td>
485
+ <td class="paramname"> <em>mode</em> </td>
486
+ <td>&nbsp;)&nbsp;</td>
487
+ <td></td>
488
+ </tr>
489
+ </table>
490
+ </div>
491
+ <div class="memdoc">
492
+
493
+ <p>
494
+ Converts a mode string into a mode_t value.
495
+ <p>
496
+ 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)*)?
497
+ clause ::= who <span class="stringliteral">"="</span> permission*
498
+ who ::= <span class="stringliteral">"u"</span> | <span class="stringliteral">"g"</span> | <span class="stringliteral">"o"</span>
499
+ permission ::= <span class="stringliteral">"r"</span> | <span class="stringliteral">"w"</span> | <span class="stringliteral">"x"</span> | <span class="stringliteral">"s"</span>
500
+ </pre></div><p>
501
+ Notes:<ul>
502
+ <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>
503
+ <p>
504
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
505
+ <table border="0" cellspacing="2" cellpadding="0">
506
+ <tr><td valign="top"></td><td valign="top"><em>InvalidModeStringException</em>&nbsp;</td><td>The mode string cannot be parsed. </td></tr>
507
+ </table>
508
+ </dl>
509
+
510
+ </div>
511
+ </div><p>
512
+ <a class="anchor" name="35b11c8ce90e90d01380f182d82f8cac"></a><!-- doxytag: member="Passenger::passenger_bucket_create" ref="35b11c8ce90e90d01380f182d82f8cac" args="(SessionPtr session, PassengerBucketStatePtr state, apr_bucket_alloc_t *list)" -->
513
+ <div class="memitem">
514
+ <div class="memproto">
515
+ <table class="memname">
516
+ <tr>
517
+ <td class="memname">apr_bucket * Passenger::passenger_bucket_create </td>
518
+ <td>(</td>
519
+ <td class="paramtype">SessionPtr&nbsp;</td>
520
+ <td class="paramname"> <em>session</em>, </td>
521
+ </tr>
522
+ <tr>
523
+ <td class="paramkey"></td>
524
+ <td></td>
525
+ <td class="paramtype">PassengerBucketStatePtr&nbsp;</td>
526
+ <td class="paramname"> <em>state</em>, </td>
527
+ </tr>
528
+ <tr>
529
+ <td class="paramkey"></td>
530
+ <td></td>
531
+ <td class="paramtype">apr_bucket_alloc_t *&nbsp;</td>
532
+ <td class="paramname"> <em>list</em></td><td>&nbsp;</td>
533
+ </tr>
534
+ <tr>
535
+ <td></td>
536
+ <td>)</td>
537
+ <td></td><td></td><td></td>
538
+ </tr>
539
+ </table>
540
+ </div>
541
+ <div class="memdoc">
542
+
543
+ <p>
544
+ We used to use an apr_bucket_pipe for forwarding the backend process's response to the HTTP client.
545
+ <p>
546
+ However, apr_bucket_pipe has a number of issues:<ul>
547
+ <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>
548
+ <p>
549
+ PassengerBucket is like apr_bucket_pipe, but:<ul>
550
+ <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>
551
+
552
+ </div>
553
+ </div><p>
554
+ <a class="anchor" name="8422d210cbd2f62d21254415b5a7f747"></a><!-- doxytag: member="Passenger::removeDirTree" ref="8422d210cbd2f62d21254415b5a7f747" args="(const string &amp;path)" -->
555
+ <div class="memitem">
556
+ <div class="memproto">
557
+ <table class="memname">
558
+ <tr>
559
+ <td class="memname">void Passenger::removeDirTree </td>
560
+ <td>(</td>
561
+ <td class="paramtype">const string &amp;&nbsp;</td>
562
+ <td class="paramname"> <em>path</em> </td>
563
+ <td>&nbsp;)&nbsp;</td>
564
+ <td></td>
565
+ </tr>
566
+ </table>
567
+ </div>
568
+ <div class="memdoc">
569
+
570
+ <p>
571
+ Remove an entire directory tree recursively.
572
+ <p>
573
+ If the directory doesn't exist then this function does nothing.<p>
574
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
575
+ <table border="0" cellspacing="2" cellpadding="0">
576
+ <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>
577
+ </table>
578
+ </dl>
579
+
580
+ </div>
581
+ </div><p>
582
+ <a class="anchor" name="6b2bc9d6fa3848e01fd8c164d30737cc"></a><!-- doxytag: member="Passenger::roundUp" ref="6b2bc9d6fa3848e01fd8c164d30737cc" args="(IntType number, IntType multiple)" -->
583
+ <div class="memitem">
584
+ <div class="memproto">
585
+ <div class="memtemplate">
586
+ template&lt;typename IntType &gt; </div>
587
+ <table class="memname">
588
+ <tr>
589
+ <td class="memname">IntType Passenger::roundUp </td>
590
+ <td>(</td>
591
+ <td class="paramtype">IntType&nbsp;</td>
592
+ <td class="paramname"> <em>number</em>, </td>
593
+ </tr>
594
+ <tr>
595
+ <td class="paramkey"></td>
596
+ <td></td>
597
+ <td class="paramtype">IntType&nbsp;</td>
598
+ <td class="paramname"> <em>multiple</em></td><td>&nbsp;</td>
599
+ </tr>
600
+ <tr>
601
+ <td></td>
602
+ <td>)</td>
603
+ <td></td><td></td><td><code> [inline]</code></td>
604
+ </tr>
605
+ </table>
606
+ </div>
607
+ <div class="memdoc">
608
+
609
+ <p>
610
+ Round <em>number</em> up to the nearest multiple of <em>multiple</em>.
611
+ <p>
612
+
613
+ </div>
614
+ </div><p>
615
+ <a class="anchor" name="8b73dbe534ee6daf755909cf6c321166"></a><!-- doxytag: member="Passenger::toHex" ref="8b73dbe534ee6daf755909cf6c321166" args="(const StaticString &amp;data, char *output)" -->
616
+ <div class="memitem">
617
+ <div class="memproto">
618
+ <table class="memname">
619
+ <tr>
620
+ <td class="memname">void Passenger::toHex </td>
621
+ <td>(</td>
622
+ <td class="paramtype">const StaticString &amp;&nbsp;</td>
623
+ <td class="paramname"> <em>data</em>, </td>
624
+ </tr>
625
+ <tr>
626
+ <td class="paramkey"></td>
627
+ <td></td>
628
+ <td class="paramtype">char *&nbsp;</td>
629
+ <td class="paramname"> <em>output</em></td><td>&nbsp;</td>
630
+ </tr>
631
+ <tr>
632
+ <td></td>
633
+ <td>)</td>
634
+ <td></td><td></td><td></td>
635
+ </tr>
636
+ </table>
637
+ </div>
638
+ <div class="memdoc">
639
+
640
+ <p>
641
+ Convert the given binary data to hexadecimal.
642
+ <p>
643
+ This form accepts an output buffer which must be at least data.size() * 2 bytes large.
644
+ </div>
645
+ </div><p>
646
+ </div>
647
+ <hr size="1"><address style="text-align: right;"><small>Generated on Sun Feb 21 12:22:48 2010 for Passenger by&nbsp;
648
+ <a href="http://www.doxygen.org/index.html">
649
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
650
+ </body>
651
+ </html>