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
@@ -1,227 +0,0 @@
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::ApplicationPoolServer Class Reference</title>
4
- <link href="tabs.css" rel="stylesheet" type="text/css">
5
- <link href="doxygen.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.5.8 -->
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="annotated.html"><span>Classes</span></a></li>
14
- <li><a href="files.html"><span>Files</span></a></li>
15
- </ul>
16
- </div>
17
- <div class="tabs">
18
- <ul>
19
- <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
20
- <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
21
- <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
- </ul>
23
- </div>
24
- <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1ApplicationPoolServer.html">ApplicationPoolServer</a>
25
- </div>
26
- </div>
27
- <div class="contents">
28
- <h1>Passenger::ApplicationPoolServer Class Reference<br>
29
- <small>
30
- [<a class="el" href="group__Support.html">Apache-independent support classes and function</a>]</small>
31
- </h1><!-- doxytag: class="Passenger::ApplicationPoolServer" -->Multi-process usage support for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>.
32
- <a href="#_details">More...</a>
33
- <p>
34
- <code>#include &lt;<a class="el" href="ApplicationPoolServer_8h-source.html">ApplicationPoolServer.h</a>&gt;</code>
35
- <p>
36
-
37
- <p>
38
- <a href="classPassenger_1_1ApplicationPoolServer-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
39
- <tr><td></td></tr>
40
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
41
- <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#2203db62a022579d569ceddff8ef6ca9">ApplicationPoolServer</a> (const string &amp;serverExecutable, const string &amp;spawnServerCommand, const string &amp;logFile=&quot;&quot;, const string &amp;rubyCommand=&quot;ruby&quot;, const string &amp;user=&quot;&quot;)</td></tr>
42
-
43
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> object. <a href="#2203db62a022579d569ceddff8ef6ca9"></a><br></td></tr>
44
- <tr><td class="memItemLeft" nowrap align="right" valign="top">ApplicationPoolPtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468">connect</a> ()</td></tr>
45
-
46
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connects to the server and returns a usable <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object. <a href="#18f77057cc28e7924a8f4d1397aa0468"></a><br></td></tr>
47
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce">detach</a> ()</td></tr>
48
-
49
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Detach the server, thereby telling it that we don't want to connect to it anymore. <a href="#b13957e32ae8ca36ba85f2e6ffefd5ce"></a><br></td></tr>
50
- </table>
51
- <hr><a name="_details"></a><h2>Detailed Description</h2>
52
- Multi-process usage support for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>.
53
- <p>
54
- <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> implements a client/server architecture for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>. This allows one to use <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> in a multi-process environment (unlike <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a>). The cache/pool data is stored in the server. Different processes can then access the pool through the server.<p>
55
- <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> itself does not inherit <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>. Instead, it returns an <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object via the <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468" title="Connects to the server and returns a usable ApplicationPool object.">connect()</a> call. For example: <div class="fragment"><pre class="fragment"> <span class="comment">// Create an ApplicationPoolServer.</span>
56
- <a class="code" href="classPassenger_1_1ApplicationPoolServer.html#2203db62a022579d569ceddff8ef6ca9" title="Create a new ApplicationPoolServer object.">ApplicationPoolServer</a> server(...);
57
-
58
- <span class="comment">// Now fork a child process, like Apache's prefork MPM eventually will.</span>
59
- pid_t pid = fork();
60
- <span class="keywordflow">if</span> (pid == 0) {
61
- <span class="comment">// Child process</span>
62
-
63
- <span class="comment">// Connect to the server. After connection, we have an ApplicationPool</span>
64
- <span class="comment">// object!</span>
65
- ApplicationPoolPtr pool(server.connect());
66
-
67
- <span class="comment">// We don't need to connect to the server anymore, so we detach from it.</span>
68
- <span class="comment">// This frees up some resources, such as file descriptors.</span>
69
- server.detach();
70
-
71
- ApplicationPool::SessionPtr session(pool-&gt;get(<span class="stringliteral">"/home/webapps/foo"</span>));
72
- do_something_with(session);
73
-
74
- _exit(0);
75
- } <span class="keywordflow">else</span> {
76
- <span class="comment">// Parent process</span>
77
- waitpid(pid, NULL, 0);
78
- }
79
- </pre></div><p>
80
- <h2>Implementation notes</h2>
81
- <p>
82
- <h3>Separate server executable</h3>
83
- <p>
84
- The actual server is implemented in ApplicationPoolServerExecutable.cpp, this class is just a convenience class for starting/stopping the server executable and connecting to it.<p>
85
- In the past, the server logic itself was implemented in this class. This implies that the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server ran inside the Apache process. This presented us with several problems:<ul>
86
- <li>Because of the usage of threads in the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server, the Apache VM size would go way up. This gave people the (wrong) impression that Passenger uses a lot of memory, or that it leaks memory.</li><li>Although it's not entirely confirmed, we suspect that it caused heap fragmentation as well. Apache allocates lots and lots of small objects on the heap, and <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server isn't exactly helping. This too gave people the (wrong) impression that Passenger leaks memory.</li><li>It would unnecessarily bloat the VM size of Apache worker processes.</li><li>We had to resort to all kinds of tricks to make sure that fork()ing a process doesn't result in file descriptor leaks.</li><li>Despite everything, there was still a small chance that file descriptor leaks would occur, and this could not be fixed. The reason for this is that the Apache control process may call fork() right after the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server has established a new connection with a client.</li></ul>
87
- <p>
88
- Because of these problems, it was decided to split the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server to a separate executable. This comes with no performance hit.<p>
89
- <h3>Anonymous server socket</h3>
90
- <p>
91
- Notice that <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> does do not use TCP sockets at all, or even named Unix sockets, despite being a server that can handle multiple clients! So <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> will expose no open ports or temporary Unix socket files. Only child processes are able to use the <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a>.<p>
92
- This is implemented through anonymous Unix sockets (<code>socketpair()</code>) and file descriptor passing. It allows one to emulate <code>accept()</code>. <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> is connected to the server executable through a Unix socket pair. <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468" title="Connects to the server and returns a usable ApplicationPool object.">connect()</a> sends a connect request to the server through that socket. The server will then create a new socket pair, and pass one of them back. This new socket pair represents the newly established connection. <hr><h2>Constructor &amp; Destructor Documentation</h2>
93
- <a class="anchor" name="2203db62a022579d569ceddff8ef6ca9"></a><!-- doxytag: member="Passenger::ApplicationPoolServer::ApplicationPoolServer" ref="2203db62a022579d569ceddff8ef6ca9" args="(const string &amp;serverExecutable, const string &amp;spawnServerCommand, const string &amp;logFile=&quot;&quot;, const string &amp;rubyCommand=&quot;ruby&quot;, const string &amp;user=&quot;&quot;)" -->
94
- <div class="memitem">
95
- <div class="memproto">
96
- <table class="memname">
97
- <tr>
98
- <td class="memname">Passenger::ApplicationPoolServer::ApplicationPoolServer </td>
99
- <td>(</td>
100
- <td class="paramtype">const string &amp;&nbsp;</td>
101
- <td class="paramname"> <em>serverExecutable</em>, </td>
102
- </tr>
103
- <tr>
104
- <td class="paramkey"></td>
105
- <td></td>
106
- <td class="paramtype">const string &amp;&nbsp;</td>
107
- <td class="paramname"> <em>spawnServerCommand</em>, </td>
108
- </tr>
109
- <tr>
110
- <td class="paramkey"></td>
111
- <td></td>
112
- <td class="paramtype">const string &amp;&nbsp;</td>
113
- <td class="paramname"> <em>logFile</em> = <code>&quot;&quot;</code>, </td>
114
- </tr>
115
- <tr>
116
- <td class="paramkey"></td>
117
- <td></td>
118
- <td class="paramtype">const string &amp;&nbsp;</td>
119
- <td class="paramname"> <em>rubyCommand</em> = <code>&quot;ruby&quot;</code>, </td>
120
- </tr>
121
- <tr>
122
- <td class="paramkey"></td>
123
- <td></td>
124
- <td class="paramtype">const string &amp;&nbsp;</td>
125
- <td class="paramname"> <em>user</em> = <code>&quot;&quot;</code></td><td>&nbsp;</td>
126
- </tr>
127
- <tr>
128
- <td></td>
129
- <td>)</td>
130
- <td></td><td></td><td><code> [inline]</code></td>
131
- </tr>
132
- </table>
133
- </div>
134
- <div class="memdoc">
135
-
136
- <p>
137
- Create a new <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> object.
138
- <p>
139
- <dl compact><dt><b>Parameters:</b></dt><dd>
140
- <table border="0" cellspacing="2" cellpadding="0">
141
- <tr><td valign="top"></td><td valign="top"><em>serverExecutable</em>&nbsp;</td><td>The filename of the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server executable to use. </td></tr>
142
- <tr><td valign="top"></td><td valign="top"><em>spawnServerCommand</em>&nbsp;</td><td>The filename of the spawn server to use. </td></tr>
143
- <tr><td valign="top"></td><td valign="top"><em>logFile</em>&nbsp;</td><td>Specify a log file that the spawn server should use. Messages on its standard output and standard error channels will be written to this log file. If an empty string is specified, no log file will be used, and the spawn server will use the same standard output/error channels as the current process. </td></tr>
144
- <tr><td valign="top"></td><td valign="top"><em>rubyCommand</em>&nbsp;</td><td>The Ruby interpreter's command. </td></tr>
145
- <tr><td valign="top"></td><td valign="top"><em>user</em>&nbsp;</td><td>The user that the spawn manager should run as. This parameter only has effect if the current process is running as root. If the empty string is given, or if the <code>user</code> is not a valid username, then the spawn manager will be run as the current user. </td></tr>
146
- </table>
147
- </dl>
148
- <dl compact><dt><b>Exceptions:</b></dt><dd>
149
- <table border="0" cellspacing="2" cellpadding="0">
150
- <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>An error occured while trying to setup the spawn server or the server socket. </td></tr>
151
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a></em>&nbsp;</td><td>The specified log file could not be opened. </td></tr>
152
- </table>
153
- </dl>
154
-
155
- </div>
156
- </div><p>
157
- <hr><h2>Member Function Documentation</h2>
158
- <a class="anchor" name="18f77057cc28e7924a8f4d1397aa0468"></a><!-- doxytag: member="Passenger::ApplicationPoolServer::connect" ref="18f77057cc28e7924a8f4d1397aa0468" args="()" -->
159
- <div class="memitem">
160
- <div class="memproto">
161
- <table class="memname">
162
- <tr>
163
- <td class="memname">ApplicationPoolPtr Passenger::ApplicationPoolServer::connect </td>
164
- <td>(</td>
165
- <td class="paramname"> </td>
166
- <td>&nbsp;)&nbsp;</td>
167
- <td><code> [inline]</code></td>
168
- </tr>
169
- </table>
170
- </div>
171
- <div class="memdoc">
172
-
173
- <p>
174
- Connects to the server and returns a usable <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object.
175
- <p>
176
- All cache/pool data of this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> is actually stored on the server and shared with other clients, but that is totally transparent to the user of the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object.<p>
177
- <dl class="note" compact><dt><b>Note:</b></dt><dd>All methods of the returned <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object may throw <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a>, <a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a> or boost::thread_interrupted.</dd></dl>
178
- <dl class="warning" compact><dt><b>Warning:</b></dt><dd>One may only use the returned <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object for handling one session at a time. For example, don't do stuff like this: <div class="fragment"><pre class="fragment"> ApplicationPoolPtr pool = server.connect();
179
- <a class="code" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9" title="Convenient alias for Session smart pointer.">Application::SessionPtr</a> session1 = pool-&gt;get(...);
180
- <a class="code" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9" title="Convenient alias for Session smart pointer.">Application::SessionPtr</a> session2 = pool-&gt;get(...);
181
- </pre></div> Otherwise, a deadlock can occur under certain circumstances. <p>
182
- Instead, one should call <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468" title="Connects to the server and returns a usable ApplicationPool object.">connect()</a> multiple times: <div class="fragment"><pre class="fragment"> ApplicationPoolPtr pool1 = server.connect();
183
- <a class="code" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9" title="Convenient alias for Session smart pointer.">Application::SessionPtr</a> session1 = pool1-&gt;get(...);
184
-
185
- ApplicationPoolPtr pool2 = server.connect();
186
- <a class="code" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9" title="Convenient alias for Session smart pointer.">Application::SessionPtr</a> session2 = pool2-&gt;get(...);
187
- </pre></div></dd></dl>
188
- <dl compact><dt><b>Exceptions:</b></dt><dd>
189
- <table border="0" cellspacing="2" cellpadding="0">
190
- <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>Something went wrong. </td></tr>
191
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a></em>&nbsp;</td><td>Something went wrong. </td></tr>
192
- </table>
193
- </dl>
194
-
195
- </div>
196
- </div><p>
197
- <a class="anchor" name="b13957e32ae8ca36ba85f2e6ffefd5ce"></a><!-- doxytag: member="Passenger::ApplicationPoolServer::detach" ref="b13957e32ae8ca36ba85f2e6ffefd5ce" args="()" -->
198
- <div class="memitem">
199
- <div class="memproto">
200
- <table class="memname">
201
- <tr>
202
- <td class="memname">void Passenger::ApplicationPoolServer::detach </td>
203
- <td>(</td>
204
- <td class="paramname"> </td>
205
- <td>&nbsp;)&nbsp;</td>
206
- <td><code> [inline]</code></td>
207
- </tr>
208
- </table>
209
- </div>
210
- <div class="memdoc">
211
-
212
- <p>
213
- Detach the server, thereby telling it that we don't want to connect to it anymore.
214
- <p>
215
- This frees up some resources in the current process, such as file descriptors.<p>
216
- This method is particularily useful to Apache worker processes that have just established a connection with the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server. Any sessions that are opened prior to calling <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce" title="Detach the server, thereby telling it that we don&#39;t want to connect to it anymore...">detach()</a>, will keep working even after a <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce" title="Detach the server, thereby telling it that we don&#39;t want to connect to it anymore...">detach()</a>.<p>
217
- This method may only be called once. The <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a> object will become unusable once <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce" title="Detach the server, thereby telling it that we don&#39;t want to connect to it anymore...">detach()</a> has been called, so call <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#18f77057cc28e7924a8f4d1397aa0468" title="Connects to the server and returns a usable ApplicationPool object.">connect()</a> before calling <a class="el" href="classPassenger_1_1ApplicationPoolServer.html#b13957e32ae8ca36ba85f2e6ffefd5ce" title="Detach the server, thereby telling it that we don&#39;t want to connect to it anymore...">detach()</a>.
218
- </div>
219
- </div><p>
220
- <hr>The documentation for this class was generated from the following file:<ul>
221
- <li><a class="el" href="ApplicationPoolServer_8h-source.html">ApplicationPoolServer.h</a></ul>
222
- </div>
223
- <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
224
- <a href="http://www.doxygen.org/index.html">
225
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
226
- </body>
227
- </html>
@@ -1 +0,0 @@
1
- <area shape="rect" href="$classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single&#45;process environments." alt="" coords="5,80,251,107">
@@ -1 +0,0 @@
1
- 1cf90f56fca0d37b32c4cf4625b36b20
@@ -1,44 +0,0 @@
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: Member List</title>
4
- <link href="tabs.css" rel="stylesheet" type="text/css">
5
- <link href="doxygen.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.5.8 -->
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="annotated.html"><span>Classes</span></a></li>
14
- <li><a href="files.html"><span>Files</span></a></li>
15
- </ul>
16
- </div>
17
- <div class="tabs">
18
- <ul>
19
- <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
20
- <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
21
- <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
- </ul>
23
- </div>
24
- </div>
25
- <div class="contents">
26
- <h1>Passenger::Application::Application::Session Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a>, including all inherited members.<p><table>
27
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#bc463c55e17fe5784f351ac699f20ce4">closeStream</a>()=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
28
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#f092d4757e2d460c6f6f979473c1c4ba">discardStream</a>()=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
29
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#19cdd7428efcff759bae674fafe2dc5b">getPid</a>() const =0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
30
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#fc8050e44db34aee17bc79520ba3c7dd">getStream</a>() const =0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
31
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#012b2ee56c8b514f800c1ce3cee8c11b">sendBodyBlock</a>(const char *block, unsigned int size)</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [inline, virtual]</code></td></tr>
32
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#fc3ecd1067d5bdb0e514c366de7bdcc9">sendHeaders</a>(const char *headers, unsigned int size)</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [inline, virtual]</code></td></tr>
33
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#5ad6f1c3bca11a1083d53e2aff9f81d9">sendHeaders</a>(const string &amp;headers)</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [inline, virtual]</code></td></tr>
34
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#b4487fdd198a3a2e2bde74e5d3c2396e">setReaderTimeout</a>(unsigned int msec)=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
35
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#e279c219606fd20048bde44a150c5b17">setWriterTimeout</a>(unsigned int msec)=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
36
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#95ea71f3a7e2cb1d66681285371cbabe">shutdownReader</a>()=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
37
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#bfb2a4f08a0fa24a97e75c9a96205bba">shutdownWriter</a>()=0</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [pure virtual]</code></td></tr>
38
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Application_1_1Session.html#a1659ee23386eec51cf1d297897e8e9f">~Session</a>()</td><td><a class="el" href="classPassenger_1_1Application_1_1Session.html">Passenger::Application::Application::Session</a></td><td><code> [inline, virtual]</code></td></tr>
39
- </table></div>
40
- <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
41
- <a href="http://www.doxygen.org/index.html">
42
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
43
- </body>
44
- </html>
@@ -1,403 +0,0 @@
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::Application::Application::Session Class Reference</title>
4
- <link href="tabs.css" rel="stylesheet" type="text/css">
5
- <link href="doxygen.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.5.8 -->
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="annotated.html"><span>Classes</span></a></li>
14
- <li><a href="files.html"><span>Files</span></a></li>
15
- </ul>
16
- </div>
17
- <div class="tabs">
18
- <ul>
19
- <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
20
- <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
21
- <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
- </ul>
23
- </div>
24
- <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1Application.html">Application</a>::<a class="el" href="classPassenger_1_1Application_1_1Session.html">Session</a>
25
- </div>
26
- </div>
27
- <div class="contents">
28
- <h1>Passenger::Application::Application::Session Class Reference</h1><!-- doxytag: class="Passenger::Application::Session" -->Represents the life time of a single request/response pair of a Ruby on Rails or Rack application.
29
- <a href="#_details">More...</a>
30
- <p>
31
- <code>#include &lt;<a class="el" href="Application_8h-source.html">Application.h</a>&gt;</code>
32
- <p>
33
- Inherited by Passenger::Application::Application::StandardSession, and Passenger::ApplicationPoolServer::ApplicationPoolServer::RemoteSession.
34
- <p>
35
-
36
- <p>
37
- <a href="classPassenger_1_1Application_1_1Session-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
38
- <tr><td></td></tr>
39
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
40
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1659ee23386eec51cf1d297897e8e9f"></a><!-- doxytag: member="Passenger::Application::Session::~Session" ref="a1659ee23386eec51cf1d297897e8e9f" args="()" -->
41
- virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#a1659ee23386eec51cf1d297897e8e9f">~Session</a> ()</td></tr>
42
-
43
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implementing classes might throw arbitrary exceptions. <br></td></tr>
44
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#fc3ecd1067d5bdb0e514c366de7bdcc9">sendHeaders</a> (const char *headers, unsigned int size)</td></tr>
45
-
46
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send HTTP request headers to the application. <a href="#fc3ecd1067d5bdb0e514c366de7bdcc9"></a><br></td></tr>
47
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#5ad6f1c3bca11a1083d53e2aff9f81d9">sendHeaders</a> (const string &amp;headers)</td></tr>
48
-
49
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience shortcut for <a class="el" href="classPassenger_1_1Application_1_1Session.html#fc3ecd1067d5bdb0e514c366de7bdcc9" title="Send HTTP request headers to the application.">sendHeaders(const char *, unsigned int)</a>. <a href="#5ad6f1c3bca11a1083d53e2aff9f81d9"></a><br></td></tr>
50
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#012b2ee56c8b514f800c1ce3cee8c11b">sendBodyBlock</a> (const char *block, unsigned int size)</td></tr>
51
-
52
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a chunk of HTTP request body data to the application. <a href="#012b2ee56c8b514f800c1ce3cee8c11b"></a><br></td></tr>
53
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#fc8050e44db34aee17bc79520ba3c7dd">getStream</a> () const =0</td></tr>
54
-
55
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the I/O stream's file descriptor. <a href="#fc8050e44db34aee17bc79520ba3c7dd"></a><br></td></tr>
56
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#b4487fdd198a3a2e2bde74e5d3c2396e">setReaderTimeout</a> (unsigned int msec)=0</td></tr>
57
-
58
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for reading data from the I/O stream. <a href="#b4487fdd198a3a2e2bde74e5d3c2396e"></a><br></td></tr>
59
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#e279c219606fd20048bde44a150c5b17">setWriterTimeout</a> (unsigned int msec)=0</td></tr>
60
-
61
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for writing data from the I/O stream. <a href="#e279c219606fd20048bde44a150c5b17"></a><br></td></tr>
62
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#95ea71f3a7e2cb1d66681285371cbabe">shutdownReader</a> ()=0</td></tr>
63
-
64
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicate that we don't want to read data anymore from the I/O stream. <a href="#95ea71f3a7e2cb1d66681285371cbabe"></a><br></td></tr>
65
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#bfb2a4f08a0fa24a97e75c9a96205bba">shutdownWriter</a> ()=0</td></tr>
66
-
67
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicate that we don't want to write data anymore to the I/O stream. <a href="#bfb2a4f08a0fa24a97e75c9a96205bba"></a><br></td></tr>
68
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#bc463c55e17fe5784f351ac699f20ce4">closeStream</a> ()=0</td></tr>
69
-
70
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the I/O stream. <a href="#bc463c55e17fe5784f351ac699f20ce4"></a><br></td></tr>
71
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f092d4757e2d460c6f6f979473c1c4ba"></a><!-- doxytag: member="Passenger::Application::Session::discardStream" ref="f092d4757e2d460c6f6f979473c1c4ba" args="()=0" -->
72
- virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#f092d4757e2d460c6f6f979473c1c4ba">discardStream</a> ()=0</td></tr>
73
-
74
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Discard the I/O stream's file descriptor, so that <a class="el" href="classPassenger_1_1Application_1_1Session.html" title="Represents the life time of a single request/response pair of a Ruby on Rails or...">Session</a> won't automatically closed it upon Session's destruction. <br></td></tr>
75
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="19cdd7428efcff759bae674fafe2dc5b"></a><!-- doxytag: member="Passenger::Application::Session::getPid" ref="19cdd7428efcff759bae674fafe2dc5b" args="() const =0" -->
76
- virtual pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application_1_1Session.html#19cdd7428efcff759bae674fafe2dc5b">getPid</a> () const =0</td></tr>
77
-
78
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the process ID of the application instance that belongs to this session. <br></td></tr>
79
- </table>
80
- <hr><a name="_details"></a><h2>Detailed Description</h2>
81
- Represents the life time of a single request/response pair of a Ruby on Rails or Rack application.
82
- <p>
83
- <a class="el" href="classPassenger_1_1Application_1_1Session.html" title="Represents the life time of a single request/response pair of a Ruby on Rails or...">Session</a> is used to forward a single HTTP request to a Ruby on Rails/Rack application. A <a class="el" href="classPassenger_1_1Application_1_1Session.html" title="Represents the life time of a single request/response pair of a Ruby on Rails or...">Session</a> has two communication channels: one for reading data from the application, and one for writing data to the application.<p>
84
- In general, a session object is to be used in the following manner:<p>
85
- <ol type=1>
86
- <li>Convert the HTTP request headers into a string, as expected by <a class="el" href="classPassenger_1_1Application_1_1Session.html#fc3ecd1067d5bdb0e514c366de7bdcc9" title="Send HTTP request headers to the application.">sendHeaders()</a>. Then send that string by calling <a class="el" href="classPassenger_1_1Application_1_1Session.html#fc3ecd1067d5bdb0e514c366de7bdcc9" title="Send HTTP request headers to the application.">sendHeaders()</a>.</li><li>In case of a POST of PUT request, send the HTTP request body by calling <a class="el" href="classPassenger_1_1Application_1_1Session.html#012b2ee56c8b514f800c1ce3cee8c11b" title="Send a chunk of HTTP request body data to the application.">sendBodyBlock()</a>, possibly multiple times.</li><li>Shutdown the writer channel since you're now done sending data.</li><li>The HTTP response can now be read through the reader channel (<a class="el" href="classPassenger_1_1Application_1_1Session.html#fc8050e44db34aee17bc79520ba3c7dd" title="Get the I/O stream&#39;s file descriptor.">getStream()</a>).</li><li>When the HTTP response has been read, the session must be closed. This is done by destroying the <a class="el" href="classPassenger_1_1Application_1_1Session.html" title="Represents the life time of a single request/response pair of a Ruby on Rails or...">Session</a> object.</li></ol>
87
- <p>
88
- A usage example is shown in <a class="el" href="classPassenger_1_1Application.html#34636f796ff3924ad5ec142aaa581379" title="Connect to this application instance with the purpose of sending a request to the...">Application::connect()</a>. <hr><h2>Member Function Documentation</h2>
89
- <a class="anchor" name="bc463c55e17fe5784f351ac699f20ce4"></a><!-- doxytag: member="Passenger::Application::Session::closeStream" ref="bc463c55e17fe5784f351ac699f20ce4" args="()=0" -->
90
- <div class="memitem">
91
- <div class="memproto">
92
- <table class="memname">
93
- <tr>
94
- <td class="memname">virtual void Passenger::Application::Application::Session::closeStream </td>
95
- <td>(</td>
96
- <td class="paramname"> </td>
97
- <td>&nbsp;)&nbsp;</td>
98
- <td><code> [pure virtual]</code></td>
99
- </tr>
100
- </table>
101
- </div>
102
- <div class="memdoc">
103
-
104
- <p>
105
- Close the I/O stream.
106
- <p>
107
- <dl compact><dt><b>Exceptions:</b></dt><dd>
108
- <table border="0" cellspacing="2" cellpadding="0">
109
- <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>Something went wrong. </td></tr>
110
- <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
111
- </table>
112
- </dl>
113
-
114
- </div>
115
- </div><p>
116
- <a class="anchor" name="fc8050e44db34aee17bc79520ba3c7dd"></a><!-- doxytag: member="Passenger::Application::Session::getStream" ref="fc8050e44db34aee17bc79520ba3c7dd" args="() const =0" -->
117
- <div class="memitem">
118
- <div class="memproto">
119
- <table class="memname">
120
- <tr>
121
- <td class="memname">virtual int Passenger::Application::Application::Session::getStream </td>
122
- <td>(</td>
123
- <td class="paramname"> </td>
124
- <td>&nbsp;)&nbsp;</td>
125
- <td> const<code> [pure virtual]</code></td>
126
- </tr>
127
- </table>
128
- </div>
129
- <div class="memdoc">
130
-
131
- <p>
132
- Get the I/O stream's file descriptor.
133
- <p>
134
- This steam is full-duplex, and will be automatically closed upon Session's destruction, unless <a class="el" href="classPassenger_1_1Application_1_1Session.html#f092d4757e2d460c6f6f979473c1c4ba" title="Discard the I/O stream&#39;s file descriptor, so that Session won&#39;t automatically...">discardStream()</a> is called.<p>
135
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>The stream has not been fully closed. </dd></dl>
136
-
137
- </div>
138
- </div><p>
139
- <a class="anchor" name="012b2ee56c8b514f800c1ce3cee8c11b"></a><!-- doxytag: member="Passenger::Application::Session::sendBodyBlock" ref="012b2ee56c8b514f800c1ce3cee8c11b" args="(const char *block, unsigned int size)" -->
140
- <div class="memitem">
141
- <div class="memproto">
142
- <table class="memname">
143
- <tr>
144
- <td class="memname">virtual void Passenger::Application::Application::Session::sendBodyBlock </td>
145
- <td>(</td>
146
- <td class="paramtype">const char *&nbsp;</td>
147
- <td class="paramname"> <em>block</em>, </td>
148
- </tr>
149
- <tr>
150
- <td class="paramkey"></td>
151
- <td></td>
152
- <td class="paramtype">unsigned int&nbsp;</td>
153
- <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
154
- </tr>
155
- <tr>
156
- <td></td>
157
- <td>)</td>
158
- <td></td><td></td><td><code> [inline, virtual]</code></td>
159
- </tr>
160
- </table>
161
- </div>
162
- <div class="memdoc">
163
-
164
- <p>
165
- Send a chunk of HTTP request body data to the application.
166
- <p>
167
- You can call this method as many times as is required to transfer the entire HTTP request body.<p>
168
- This method should only be called after a <a class="el" href="classPassenger_1_1Application_1_1Session.html#fc3ecd1067d5bdb0e514c366de7bdcc9" title="Send HTTP request headers to the application.">sendHeaders()</a>. Otherwise strange things may happen.<p>
169
- <dl compact><dt><b>Parameters:</b></dt><dd>
170
- <table border="0" cellspacing="2" cellpadding="0">
171
- <tr><td valign="top"></td><td valign="top"><em>block</em>&nbsp;</td><td>A block of HTTP request body data to send. </td></tr>
172
- <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The size, in bytes, of <code>block</code>. </td></tr>
173
- </table>
174
- </dl>
175
- <dl compact><dt><b>Exceptions:</b></dt><dd>
176
- <table border="0" cellspacing="2" cellpadding="0">
177
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a></em>&nbsp;</td><td>The writer channel has already been closed. </td></tr>
178
- <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>Something went wrong during writing. </td></tr>
179
- <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
180
- </table>
181
- </dl>
182
-
183
- </div>
184
- </div><p>
185
- <a class="anchor" name="5ad6f1c3bca11a1083d53e2aff9f81d9"></a><!-- doxytag: member="Passenger::Application::Session::sendHeaders" ref="5ad6f1c3bca11a1083d53e2aff9f81d9" args="(const string &amp;headers)" -->
186
- <div class="memitem">
187
- <div class="memproto">
188
- <table class="memname">
189
- <tr>
190
- <td class="memname">virtual void Passenger::Application::Application::Session::sendHeaders </td>
191
- <td>(</td>
192
- <td class="paramtype">const string &amp;&nbsp;</td>
193
- <td class="paramname"> <em>headers</em> </td>
194
- <td>&nbsp;)&nbsp;</td>
195
- <td><code> [inline, virtual]</code></td>
196
- </tr>
197
- </table>
198
- </div>
199
- <div class="memdoc">
200
-
201
- <p>
202
- Convenience shortcut for <a class="el" href="classPassenger_1_1Application_1_1Session.html#fc3ecd1067d5bdb0e514c366de7bdcc9" title="Send HTTP request headers to the application.">sendHeaders(const char *, unsigned int)</a>.
203
- <p>
204
- <dl compact><dt><b>Parameters:</b></dt><dd>
205
- <table border="0" cellspacing="2" cellpadding="0">
206
- <tr><td valign="top"></td><td valign="top"><em>headers</em>&nbsp;</td><td></td></tr>
207
- </table>
208
- </dl>
209
- <dl compact><dt><b>Exceptions:</b></dt><dd>
210
- <table border="0" cellspacing="2" cellpadding="0">
211
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a></em>&nbsp;</td><td>The writer channel has already been closed. </td></tr>
212
- <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>Something went wrong during writing. </td></tr>
213
- <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
214
- </table>
215
- </dl>
216
-
217
- </div>
218
- </div><p>
219
- <a class="anchor" name="fc3ecd1067d5bdb0e514c366de7bdcc9"></a><!-- doxytag: member="Passenger::Application::Session::sendHeaders" ref="fc3ecd1067d5bdb0e514c366de7bdcc9" args="(const char *headers, unsigned int size)" -->
220
- <div class="memitem">
221
- <div class="memproto">
222
- <table class="memname">
223
- <tr>
224
- <td class="memname">virtual void Passenger::Application::Application::Session::sendHeaders </td>
225
- <td>(</td>
226
- <td class="paramtype">const char *&nbsp;</td>
227
- <td class="paramname"> <em>headers</em>, </td>
228
- </tr>
229
- <tr>
230
- <td class="paramkey"></td>
231
- <td></td>
232
- <td class="paramtype">unsigned int&nbsp;</td>
233
- <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
234
- </tr>
235
- <tr>
236
- <td></td>
237
- <td>)</td>
238
- <td></td><td></td><td><code> [inline, virtual]</code></td>
239
- </tr>
240
- </table>
241
- </div>
242
- <div class="memdoc">
243
-
244
- <p>
245
- Send HTTP request headers to the application.
246
- <p>
247
- The HTTP headers must be converted into CGI headers, and then encoded into a string that matches this grammar:<p>
248
- <div class="fragment"><pre class="fragment">
249
- headers ::= header*
250
- header ::= name NUL value NUL
251
- name ::= notnull+
252
- value ::= notnull+
253
- notnull ::= "\x01" | "\x02" | "\x02" | ... | "\xFF"
254
- NUL = "\x00"
255
- </pre></div><p>
256
- This method should be the first one to be called during the lifetime of a <a class="el" href="classPassenger_1_1Application_1_1Session.html" title="Represents the life time of a single request/response pair of a Ruby on Rails or...">Session</a> object. Otherwise strange things may happen.<p>
257
- <dl compact><dt><b>Parameters:</b></dt><dd>
258
- <table border="0" cellspacing="2" cellpadding="0">
259
- <tr><td valign="top"></td><td valign="top"><em>headers</em>&nbsp;</td><td>The HTTP request headers, converted into CGI headers and encoded as a string, according to the description. </td></tr>
260
- <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The size, in bytes, of <code>headers</code>. </td></tr>
261
- </table>
262
- </dl>
263
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>headers != NULL </dd></dl>
264
- <dl compact><dt><b>Exceptions:</b></dt><dd>
265
- <table border="0" cellspacing="2" cellpadding="0">
266
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a></em>&nbsp;</td><td>The writer channel has already been closed. </td></tr>
267
- <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>Something went wrong during writing. </td></tr>
268
- <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
269
- </table>
270
- </dl>
271
-
272
- </div>
273
- </div><p>
274
- <a class="anchor" name="b4487fdd198a3a2e2bde74e5d3c2396e"></a><!-- doxytag: member="Passenger::Application::Session::setReaderTimeout" ref="b4487fdd198a3a2e2bde74e5d3c2396e" args="(unsigned int msec)=0" -->
275
- <div class="memitem">
276
- <div class="memproto">
277
- <table class="memname">
278
- <tr>
279
- <td class="memname">virtual void Passenger::Application::Application::Session::setReaderTimeout </td>
280
- <td>(</td>
281
- <td class="paramtype">unsigned int&nbsp;</td>
282
- <td class="paramname"> <em>msec</em> </td>
283
- <td>&nbsp;)&nbsp;</td>
284
- <td><code> [pure virtual]</code></td>
285
- </tr>
286
- </table>
287
- </div>
288
- <div class="memdoc">
289
-
290
- <p>
291
- Set the timeout value for reading data from the I/O stream.
292
- <p>
293
- If no data can be read within the timeout period, then the read call will fail with error EAGAIN or EWOULDBLOCK.<p>
294
- <dl compact><dt><b>Parameters:</b></dt><dd>
295
- <table border="0" cellspacing="2" cellpadding="0">
296
- <tr><td valign="top"></td><td valign="top"><em>msec</em>&nbsp;</td><td>The timeout, in milliseconds. If 0 is given, there will be no timeout. </td></tr>
297
- </table>
298
- </dl>
299
- <dl compact><dt><b>Exceptions:</b></dt><dd>
300
- <table border="0" cellspacing="2" cellpadding="0">
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>Cannot set the timeout. </td></tr>
302
- </table>
303
- </dl>
304
-
305
- </div>
306
- </div><p>
307
- <a class="anchor" name="e279c219606fd20048bde44a150c5b17"></a><!-- doxytag: member="Passenger::Application::Session::setWriterTimeout" ref="e279c219606fd20048bde44a150c5b17" args="(unsigned int msec)=0" -->
308
- <div class="memitem">
309
- <div class="memproto">
310
- <table class="memname">
311
- <tr>
312
- <td class="memname">virtual void Passenger::Application::Application::Session::setWriterTimeout </td>
313
- <td>(</td>
314
- <td class="paramtype">unsigned int&nbsp;</td>
315
- <td class="paramname"> <em>msec</em> </td>
316
- <td>&nbsp;)&nbsp;</td>
317
- <td><code> [pure virtual]</code></td>
318
- </tr>
319
- </table>
320
- </div>
321
- <div class="memdoc">
322
-
323
- <p>
324
- Set the timeout value for writing data from the I/O stream.
325
- <p>
326
- If no data can be written within the timeout period, then the write call will fail with error EAGAIN or EWOULDBLOCK.<p>
327
- <dl compact><dt><b>Parameters:</b></dt><dd>
328
- <table border="0" cellspacing="2" cellpadding="0">
329
- <tr><td valign="top"></td><td valign="top"><em>msec</em>&nbsp;</td><td>The timeout, in milliseconds. If 0 is given, there will be no timeout. </td></tr>
330
- </table>
331
- </dl>
332
- <dl compact><dt><b>Exceptions:</b></dt><dd>
333
- <table border="0" cellspacing="2" cellpadding="0">
334
- <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>Cannot set the timeout. </td></tr>
335
- </table>
336
- </dl>
337
-
338
- </div>
339
- </div><p>
340
- <a class="anchor" name="95ea71f3a7e2cb1d66681285371cbabe"></a><!-- doxytag: member="Passenger::Application::Session::shutdownReader" ref="95ea71f3a7e2cb1d66681285371cbabe" args="()=0" -->
341
- <div class="memitem">
342
- <div class="memproto">
343
- <table class="memname">
344
- <tr>
345
- <td class="memname">virtual void Passenger::Application::Application::Session::shutdownReader </td>
346
- <td>(</td>
347
- <td class="paramname"> </td>
348
- <td>&nbsp;)&nbsp;</td>
349
- <td><code> [pure virtual]</code></td>
350
- </tr>
351
- </table>
352
- </div>
353
- <div class="memdoc">
354
-
355
- <p>
356
- Indicate that we don't want to read data anymore from the I/O stream.
357
- <p>
358
- Calling this method after <a class="el" href="classPassenger_1_1Application_1_1Session.html#bc463c55e17fe5784f351ac699f20ce4" title="Close the I/O stream.">closeStream()</a> is called will have no effect.<p>
359
- <dl compact><dt><b>Exceptions:</b></dt><dd>
360
- <table border="0" cellspacing="2" cellpadding="0">
361
- <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>Something went wrong. </td></tr>
362
- <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
363
- </table>
364
- </dl>
365
-
366
- </div>
367
- </div><p>
368
- <a class="anchor" name="bfb2a4f08a0fa24a97e75c9a96205bba"></a><!-- doxytag: member="Passenger::Application::Session::shutdownWriter" ref="bfb2a4f08a0fa24a97e75c9a96205bba" args="()=0" -->
369
- <div class="memitem">
370
- <div class="memproto">
371
- <table class="memname">
372
- <tr>
373
- <td class="memname">virtual void Passenger::Application::Application::Session::shutdownWriter </td>
374
- <td>(</td>
375
- <td class="paramname"> </td>
376
- <td>&nbsp;)&nbsp;</td>
377
- <td><code> [pure virtual]</code></td>
378
- </tr>
379
- </table>
380
- </div>
381
- <div class="memdoc">
382
-
383
- <p>
384
- Indicate that we don't want to write data anymore to the I/O stream.
385
- <p>
386
- Calling this method after <a class="el" href="classPassenger_1_1Application_1_1Session.html#bc463c55e17fe5784f351ac699f20ce4" title="Close the I/O stream.">closeStream()</a> is called will have no effect.<p>
387
- <dl compact><dt><b>Exceptions:</b></dt><dd>
388
- <table border="0" cellspacing="2" cellpadding="0">
389
- <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>Something went wrong. </td></tr>
390
- <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
391
- </table>
392
- </dl>
393
-
394
- </div>
395
- </div><p>
396
- <hr>The documentation for this class was generated from the following file:<ul>
397
- <li><a class="el" href="Application_8h-source.html">Application.h</a></ul>
398
- </div>
399
- <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
400
- <a href="http://www.doxygen.org/index.html">
401
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
402
- </body>
403
- </html>