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,231 +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 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>
25
- </div>
26
- </div>
27
- <div class="contents">
28
- <h1>Passenger::Application 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::Application" -->Represents a single Ruby on Rails or Rack application instance.
32
- <a href="#_details">More...</a>
33
- <p>
34
- <code>#include &lt;<a class="el" href="Application_8h-source.html">Application.h</a>&gt;</code>
35
- <p>
36
-
37
- <p>
38
- <a href="classPassenger_1_1Application-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>Classes</h2></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_1Application_1_1Session.html">Session</a></td></tr>
42
-
43
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Represents the life time of a single request/response pair of a Ruby on Rails or Rack application. <a href="classPassenger_1_1Application_1_1Session.html#_details">More...</a><br></td></tr>
44
- <tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
45
- <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef shared_ptr&lt; <a class="el" href="classPassenger_1_1Application_1_1Session.html">Session</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">SessionPtr</a></td></tr>
46
-
47
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenient alias for <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> smart pointer. <a href="#d14f673494991460b16246a527ad8ad9"></a><br></td></tr>
48
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
49
- <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application.html#0ae83471a8c991b8cc8d460b44d237ea">Application</a> (const string &amp;theAppRoot, pid_t pid, const string &amp;listenSocketName, const string &amp;listenSocketType, int ownerPipe)</td></tr>
50
-
51
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a new <a class="el" href="classPassenger_1_1Application.html" title="Represents a single Ruby on Rails or Rack application instance.">Application</a> object. <a href="#0ae83471a8c991b8cc8d460b44d237ea"></a><br></td></tr>
52
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application.html#0a0665852e7ebc8fb8ab0772fa90bc56">getAppRoot</a> () const </td></tr>
53
-
54
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the application root for this application. <a href="#0a0665852e7ebc8fb8ab0772fa90bc56"></a><br></td></tr>
55
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="94d2cce1c2c1d3441325f1498a22bf02"></a><!-- doxytag: member="Passenger::Application::getPid" ref="94d2cce1c2c1d3441325f1498a22bf02" args="() const " -->
56
- pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application.html#94d2cce1c2c1d3441325f1498a22bf02">getPid</a> () const </td></tr>
57
-
58
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the process ID of this application instance. <br></td></tr>
59
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">SessionPtr</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1Application.html#34636f796ff3924ad5ec142aaa581379">connect</a> (const function&lt; void()&gt; &amp;closeCallback) const </td></tr>
60
-
61
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect to this application instance with the purpose of sending a request to the application. <a href="#34636f796ff3924ad5ec142aaa581379"></a><br></td></tr>
62
- </table>
63
- <hr><a name="_details"></a><h2>Detailed Description</h2>
64
- Represents a single Ruby on Rails or Rack application instance. <hr><h2>Member Typedef Documentation</h2>
65
- <a class="anchor" name="d14f673494991460b16246a527ad8ad9"></a><!-- doxytag: member="Passenger::Application::SessionPtr" ref="d14f673494991460b16246a527ad8ad9" args="" -->
66
- <div class="memitem">
67
- <div class="memproto">
68
- <table class="memname">
69
- <tr>
70
- <td class="memname">typedef shared_ptr&lt;<a class="el" href="classPassenger_1_1Application_1_1Session.html">Session</a>&gt; <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Passenger::Application::SessionPtr</a> </td>
71
- </tr>
72
- </table>
73
- </div>
74
- <div class="memdoc">
75
-
76
- <p>
77
- Convenient alias for <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> smart pointer.
78
- <p>
79
-
80
- </div>
81
- </div><p>
82
- <hr><h2>Constructor &amp; Destructor Documentation</h2>
83
- <a class="anchor" name="0ae83471a8c991b8cc8d460b44d237ea"></a><!-- doxytag: member="Passenger::Application::Application" ref="0ae83471a8c991b8cc8d460b44d237ea" args="(const string &amp;theAppRoot, pid_t pid, const string &amp;listenSocketName, const string &amp;listenSocketType, int ownerPipe)" -->
84
- <div class="memitem">
85
- <div class="memproto">
86
- <table class="memname">
87
- <tr>
88
- <td class="memname">Passenger::Application::Application </td>
89
- <td>(</td>
90
- <td class="paramtype">const string &amp;&nbsp;</td>
91
- <td class="paramname"> <em>theAppRoot</em>, </td>
92
- </tr>
93
- <tr>
94
- <td class="paramkey"></td>
95
- <td></td>
96
- <td class="paramtype">pid_t&nbsp;</td>
97
- <td class="paramname"> <em>pid</em>, </td>
98
- </tr>
99
- <tr>
100
- <td class="paramkey"></td>
101
- <td></td>
102
- <td class="paramtype">const string &amp;&nbsp;</td>
103
- <td class="paramname"> <em>listenSocketName</em>, </td>
104
- </tr>
105
- <tr>
106
- <td class="paramkey"></td>
107
- <td></td>
108
- <td class="paramtype">const string &amp;&nbsp;</td>
109
- <td class="paramname"> <em>listenSocketType</em>, </td>
110
- </tr>
111
- <tr>
112
- <td class="paramkey"></td>
113
- <td></td>
114
- <td class="paramtype">int&nbsp;</td>
115
- <td class="paramname"> <em>ownerPipe</em></td><td>&nbsp;</td>
116
- </tr>
117
- <tr>
118
- <td></td>
119
- <td>)</td>
120
- <td></td><td></td><td><code> [inline]</code></td>
121
- </tr>
122
- </table>
123
- </div>
124
- <div class="memdoc">
125
-
126
- <p>
127
- Construct a new <a class="el" href="classPassenger_1_1Application.html" title="Represents a single Ruby on Rails or Rack application instance.">Application</a> object.
128
- <p>
129
- <dl compact><dt><b>Parameters:</b></dt><dd>
130
- <table border="0" cellspacing="2" cellpadding="0">
131
- <tr><td valign="top"></td><td valign="top"><em>theAppRoot</em>&nbsp;</td><td>The application root of an application. In case of a Rails application, this is the folder that contains 'app/', 'public/', 'config/', etc. This must be a valid directory, but the path does not have to be absolute. </td></tr>
132
- <tr><td valign="top"></td><td valign="top"><em>pid</em>&nbsp;</td><td>The process ID of this application instance. </td></tr>
133
- <tr><td valign="top"></td><td valign="top"><em>listenSocketName</em>&nbsp;</td><td>The name of the listener socket of this application instance. </td></tr>
134
- <tr><td valign="top"></td><td valign="top"><em>listenSocketType</em>&nbsp;</td><td>The type of the listener socket, e.g. "unix" for Unix domain sockets. </td></tr>
135
- <tr><td valign="top"></td><td valign="top"><em>ownerPipe</em>&nbsp;</td><td>The owner pipe of this application instance. </td></tr>
136
- </table>
137
- </dl>
138
- <dl class="post" compact><dt><b>Postcondition:</b></dt><dd><a class="el" href="classPassenger_1_1Application.html#0a0665852e7ebc8fb8ab0772fa90bc56" title="Returns the application root for this application.">getAppRoot()</a> == theAppRoot &amp;&amp; <a class="el" href="classPassenger_1_1Application.html#94d2cce1c2c1d3441325f1498a22bf02" title="Returns the process ID of this application instance.">getPid()</a> == pid </dd></dl>
139
-
140
- </div>
141
- </div><p>
142
- <hr><h2>Member Function Documentation</h2>
143
- <a class="anchor" name="34636f796ff3924ad5ec142aaa581379"></a><!-- doxytag: member="Passenger::Application::connect" ref="34636f796ff3924ad5ec142aaa581379" args="(const function&lt; void()&gt; &amp;closeCallback) const " -->
144
- <div class="memitem">
145
- <div class="memproto">
146
- <table class="memname">
147
- <tr>
148
- <td class="memname"><a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">SessionPtr</a> Passenger::Application::connect </td>
149
- <td>(</td>
150
- <td class="paramtype">const function&lt; void()&gt; &amp;&nbsp;</td>
151
- <td class="paramname"> <em>closeCallback</em> </td>
152
- <td>&nbsp;)&nbsp;</td>
153
- <td> const<code> [inline]</code></td>
154
- </tr>
155
- </table>
156
- </div>
157
- <div class="memdoc">
158
-
159
- <p>
160
- Connect to this application instance with the purpose of sending a request to the application.
161
- <p>
162
- Once connected, a new session will be opened. This session represents the life time of a single request/response pair, and can be used to send the request data to the application instance, as well as receiving the response data.<p>
163
- The use of <a class="el" href="classPassenger_1_1Application.html#34636f796ff3924ad5ec142aaa581379" title="Connect to this application instance with the purpose of sending a request to the...">connect()</a> is demonstrated in the following example. <div class="fragment"><pre class="fragment"> <span class="comment">// Connect to the application and get the newly opened session.</span>
164
- <a class="code" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9" title="Convenient alias for Session smart pointer.">Application::SessionPtr</a> session(app-&gt;connect(<span class="stringliteral">"/home/webapps/foo"</span>));
165
-
166
- <span class="comment">// Send the request headers and request body data.</span>
167
- session-&gt;sendHeaders(...);
168
- session-&gt;sendBodyBlock(...);
169
- <span class="comment">// Done sending data, so we close the writer channel.</span>
170
- session-&gt;shutdownWriter();
171
-
172
- <span class="comment">// Now read the HTTP response.</span>
173
- <span class="keywordtype">string</span> responseData = readAllDataFromSocket(session-&gt;getReader());
174
- <span class="comment">// Done reading data, so we close the reader channel.</span>
175
- session-&gt;shutdownReader();
176
-
177
- <span class="comment">// This session has now finished, so we close the session by resetting</span>
178
- <span class="comment">// the smart pointer to NULL (thereby destroying the Session object).</span>
179
- session.reset();
180
-
181
- <span class="comment">// We can connect to an Application multiple times. Just make sure</span>
182
- <span class="comment">// the previous session is closed.</span>
183
- session = app-&gt;connect(<span class="stringliteral">"/home/webapps/bar"</span>)
184
- </pre></div><p>
185
- Note that a RoR application instance can only process one request at the same time, and thus only one session at the same time. It's unspecified whether Rack applications can handle multiple simultanous sessions.<p>
186
- You <b>must</b> close a session when you no longer need if. If you call <a class="el" href="classPassenger_1_1Application.html#34636f796ff3924ad5ec142aaa581379" title="Connect to this application instance with the purpose of sending a request to the...">connect()</a> without having properly closed a previous session, you might cause a deadlock because the application instance may be waiting for you to close the previous session.<p>
187
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>A smart pointer to 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, which represents the created session. </dd></dl>
188
- <dl compact><dt><b>Parameters:</b></dt><dd>
189
- <table border="0" cellspacing="2" cellpadding="0">
190
- <tr><td valign="top"></td><td valign="top"><em>closeCallback</em>&nbsp;</td><td>A function which will be called when the session has been closed. </td></tr>
191
- </table>
192
- </dl>
193
- <dl class="post" compact><dt><b>Postcondition:</b></dt><dd>this-&gt;getSessions() == old-&gt;getSessions() + 1 </dd></dl>
194
- <dl compact><dt><b>Exceptions:</b></dt><dd>
195
- <table border="0" cellspacing="2" cellpadding="0">
196
- <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 the connection process. </td></tr>
197
- <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 during the connection process. </td></tr>
198
- </table>
199
- </dl>
200
-
201
- </div>
202
- </div><p>
203
- <a class="anchor" name="0a0665852e7ebc8fb8ab0772fa90bc56"></a><!-- doxytag: member="Passenger::Application::getAppRoot" ref="0a0665852e7ebc8fb8ab0772fa90bc56" args="() const " -->
204
- <div class="memitem">
205
- <div class="memproto">
206
- <table class="memname">
207
- <tr>
208
- <td class="memname">string Passenger::Application::getAppRoot </td>
209
- <td>(</td>
210
- <td class="paramname"> </td>
211
- <td>&nbsp;)&nbsp;</td>
212
- <td> const<code> [inline]</code></td>
213
- </tr>
214
- </table>
215
- </div>
216
- <div class="memdoc">
217
-
218
- <p>
219
- Returns the application root for this application.
220
- <p>
221
- See the constructor for information about the application root.
222
- </div>
223
- </div><p>
224
- <hr>The documentation for this class was generated from the following file:<ul>
225
- <li><a class="el" href="Application_8h-source.html">Application.h</a></ul>
226
- </div>
227
- <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
228
- <a href="http://www.doxygen.org/index.html">
229
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
230
- </body>
231
- </html>
@@ -1,41 +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::ApplicationPool Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a>, including all inherited members.<p><table>
27
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">clear</a>()=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
28
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#c811d261345fcf579f049a2377b4b56b">connected</a>() const </td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [inline, virtual]</code></td></tr>
29
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67">get</a>(const PoolOptions &amp;options)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
30
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#b5cc9a7f0c1e7acb9d5815d4420e25ea">get</a>(const string &amp;appRoot)</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [inline, virtual]</code></td></tr>
31
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#06d1eae044d4d761ce77cf09049df8c8">getActive</a>() const =0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
32
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#93b0277beb510855f85fee5de5c369bb">getCount</a>() const =0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
33
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">getSpawnServerPid</a>() const =0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
34
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">setMax</a>(unsigned int max)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
35
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">setMaxPerApp</a>(unsigned int max)=0</td><td><a class="el" href="classPassenger_1_1ApplicationPool.html">Passenger::ApplicationPool</a></td><td><code> [pure virtual]</code></td></tr>
36
- </table></div>
37
- <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
38
- <a href="http://www.doxygen.org/index.html">
39
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
40
- </body>
41
- </html>
@@ -1,323 +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::ApplicationPool 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_1ApplicationPool.html">ApplicationPool</a>
25
- </div>
26
- </div>
27
- <div class="contents">
28
- <h1>Passenger::ApplicationPool 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::ApplicationPool" -->A persistent pool of Applications.
32
- <a href="#_details">More...</a>
33
- <p>
34
- <code>#include &lt;<a class="el" href="ApplicationPool_8h-source.html">ApplicationPool.h</a>&gt;</code>
35
- <p>
36
- <div class="dynheader">
37
- Inheritance diagram for Passenger::ApplicationPool:</div>
38
- <div class="dynsection">
39
- <p><center><img src="classPassenger_1_1ApplicationPool__inherit__graph.png" border="0" usemap="#Passenger_1_1ApplicationPool__inherit__map" alt="Inheritance graph"></center>
40
- <map name="Passenger_1_1ApplicationPool__inherit__map">
41
- <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"></map>
42
- <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center></div>
43
-
44
- <p>
45
- <a href="classPassenger_1_1ApplicationPool-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
46
- <tr><td></td></tr>
47
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
48
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#c811d261345fcf579f049a2377b4b56b">connected</a> () const </td></tr>
49
-
50
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks whether this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object is still connected to the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server. <a href="#c811d261345fcf579f049a2377b4b56b"></a><br></td></tr>
51
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Application::SessionPtr</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67">get</a> (const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &amp;options)=0</td></tr>
52
-
53
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a new session with the application specified by <code><a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3" title="The root directory of the application to spawn.">PoolOptions.appRoot</a></code>. <a href="#0b206eb4eb2869423d75c042a0653c67"></a><br></td></tr>
54
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b5cc9a7f0c1e7acb9d5815d4420e25ea"></a><!-- doxytag: member="Passenger::ApplicationPool::get" ref="b5cc9a7f0c1e7acb9d5815d4420e25ea" args="(const string &amp;appRoot)" -->
55
- virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Application::SessionPtr</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#b5cc9a7f0c1e7acb9d5815d4420e25ea">get</a> (const string &amp;appRoot)</td></tr>
56
-
57
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convenience shortcut for calling <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">get()</a> with default spawn options. <br></td></tr>
58
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#74db4d7a693d45b16320b2296a0c0997">clear</a> ()=0</td></tr>
59
-
60
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear all application instances that are currently in the pool. <a href="#74db4d7a693d45b16320b2296a0c0997"></a><br></td></tr>
61
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794">setMax</a> (unsigned int max)=0</td></tr>
62
-
63
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a hard limit on the number of application instances that this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> may spawn. <a href="#0e0f21972ab130c9c0f90c2212328794"></a><br></td></tr>
64
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#06d1eae044d4d761ce77cf09049df8c8">getActive</a> () const =0</td></tr>
65
-
66
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of active applications in the pool. <a href="#06d1eae044d4d761ce77cf09049df8c8"></a><br></td></tr>
67
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#93b0277beb510855f85fee5de5c369bb">getCount</a> () const =0</td></tr>
68
-
69
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of active applications in the pool. <a href="#93b0277beb510855f85fee5de5c369bb"></a><br></td></tr>
70
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#b0437434c79b5444ac0faf768f1410e8">setMaxPerApp</a> (unsigned int max)=0</td></tr>
71
-
72
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a hard limit on the number of application instances that a single application may spawn in this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>. <a href="#b0437434c79b5444ac0faf768f1410e8"></a><br></td></tr>
73
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual pid_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1ApplicationPool.html#d9149c3b434ef8e18fd15a77af1a6c2c">getSpawnServerPid</a> () const =0</td></tr>
74
-
75
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the process ID of the spawn server that is used. <a href="#d9149c3b434ef8e18fd15a77af1a6c2c"></a><br></td></tr>
76
- </table>
77
- <hr><a name="_details"></a><h2>Detailed Description</h2>
78
- A persistent pool of Applications.
79
- <p>
80
- Spawning application instances, especially Ruby on Rails ones, is a very expensive operation. Despite best efforts to make the operation less expensive (see <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a>), it remains expensive compared to the cost of processing an HTTP request/response. So, in order to solve this, some sort of caching/pooling mechanism will be required. <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> provides this.<p>
81
- Normally, one would use <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> to spawn a new RoR/Rack application instance, then use <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> to create a new session with that application instance, and then use the returned Session object to send the request and to read the HTTP response. <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> replaces the first step with a call to Application::get(). For example: <div class="fragment"><pre class="fragment"> ApplicationPool pool = some_function_which_creates_an_application_pool();
82
-
83
- <span class="comment">// Connect to the application and get the newly opened session.</span>
84
- <a class="code" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9" title="Convenient alias for Session smart pointer.">Application::SessionPtr</a> session(pool-&gt;get(<span class="stringliteral">"/home/webapps/foo"</span>));
85
-
86
- <span class="comment">// Send the request headers and request body data.</span>
87
- session-&gt;sendHeaders(...);
88
- session-&gt;sendBodyBlock(...);
89
- <span class="comment">// Done sending data, so we shutdown the writer stream.</span>
90
- session-&gt;shutdownWriter();
91
-
92
- <span class="comment">// Now read the HTTP response.</span>
93
- <span class="keywordtype">string</span> responseData = readAllDataFromSocket(session-&gt;getStream());
94
- <span class="comment">// Done reading data, so we shutdown the reader stream.</span>
95
- session-&gt;shutdownReader();
96
-
97
- <span class="comment">// This session has now finished, so we close the session by resetting</span>
98
- <span class="comment">// the smart pointer to NULL (thereby destroying the Session object).</span>
99
- session.reset();
100
-
101
- <span class="comment">// We can connect to an Application multiple times. Just make sure</span>
102
- <span class="comment">// the previous session is closed.</span>
103
- session = app-&gt;connect(<span class="stringliteral">"/home/webapps/bar"</span>)
104
- </pre></div><p>
105
- Internally, <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> will keep spawned applications instances in memory, and reuse them if possible. It wil* <dl compact><dt><b>Exceptions:</b></dt><dd>
106
- <table border="0" cellspacing="2" cellpadding="0">
107
- <tr><td valign="top"></td><td valign="top"><em>l</em>&nbsp;</td><td>try to keep spawning to a minimum. Furthermore, if an application instance hasn't been used for a while, it will be automatically shutdown in order to save memory. Restart requests are honored: if an application has the file 'restart.txt' in its 'tmp' folder, then <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">get()</a> will shutdown existing instances of that application and spawn a new instance (this is useful when a new version of an application has been deployed). And finally, one can set a hard limit on the maximum number of applications instances that may be spawned (see <a class="el" href="classPassenger_1_1ApplicationPool.html#0e0f21972ab130c9c0f90c2212328794" title="Set a hard limit on the number of application instances that this ApplicationPool...">ApplicationPool::setMax()</a>).</td></tr>
108
- </table>
109
- </dl>
110
- Note that <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> is just an interface (i.e. a pure virtual class). For concrete classes, see <a class="el" href="classPassenger_1_1StandardApplicationPool.html" title="A standard implementation of ApplicationPool for single-process environments.">StandardApplicationPool</a> and <a class="el" href="classPassenger_1_1ApplicationPoolServer.html" title="Multi-process usage support for ApplicationPool.">ApplicationPoolServer</a>. The exact pooling algorithm depends on the implementation class. <hr><h2>Member Function Documentation</h2>
111
- <a class="anchor" name="74db4d7a693d45b16320b2296a0c0997"></a><!-- doxytag: member="Passenger::ApplicationPool::clear" ref="74db4d7a693d45b16320b2296a0c0997" args="()=0" -->
112
- <div class="memitem">
113
- <div class="memproto">
114
- <table class="memname">
115
- <tr>
116
- <td class="memname">virtual void Passenger::ApplicationPool::clear </td>
117
- <td>(</td>
118
- <td class="paramname"> </td>
119
- <td>&nbsp;)&nbsp;</td>
120
- <td><code> [pure virtual]</code></td>
121
- </tr>
122
- </table>
123
- </div>
124
- <div class="memdoc">
125
-
126
- <p>
127
- Clear all application instances that are currently in the pool.
128
- <p>
129
- This method is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
130
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#bcf8faeb4f431ae07ea0e20270661d08">Passenger::StandardApplicationPool</a>.</p>
131
-
132
- </div>
133
- </div><p>
134
- <a class="anchor" name="c811d261345fcf579f049a2377b4b56b"></a><!-- doxytag: member="Passenger::ApplicationPool::connected" ref="c811d261345fcf579f049a2377b4b56b" args="() const " -->
135
- <div class="memitem">
136
- <div class="memproto">
137
- <table class="memname">
138
- <tr>
139
- <td class="memname">virtual bool Passenger::ApplicationPool::connected </td>
140
- <td>(</td>
141
- <td class="paramname"> </td>
142
- <td>&nbsp;)&nbsp;</td>
143
- <td> const<code> [inline, virtual]</code></td>
144
- </tr>
145
- </table>
146
- </div>
147
- <div class="memdoc">
148
-
149
- <p>
150
- Checks whether this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> object is still connected to the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server.
151
- <p>
152
- If that's not the case, then one should reconnect to the <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> server.<p>
153
- This method is only meaningful for instances of type ApplicationPoolServer::Client. The default implementation always returns true.
154
- </div>
155
- </div><p>
156
- <a class="anchor" name="0b206eb4eb2869423d75c042a0653c67"></a><!-- doxytag: member="Passenger::ApplicationPool::get" ref="0b206eb4eb2869423d75c042a0653c67" args="(const PoolOptions &amp;options)=0" -->
157
- <div class="memitem">
158
- <div class="memproto">
159
- <table class="memname">
160
- <tr>
161
- <td class="memname">virtual <a class="el" href="classPassenger_1_1Application.html#d14f673494991460b16246a527ad8ad9">Application::SessionPtr</a> Passenger::ApplicationPool::get </td>
162
- <td>(</td>
163
- <td class="paramtype">const <a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a> &amp;&nbsp;</td>
164
- <td class="paramname"> <em>options</em> </td>
165
- <td>&nbsp;)&nbsp;</td>
166
- <td><code> [pure virtual]</code></td>
167
- </tr>
168
- </table>
169
- </div>
170
- <div class="memdoc">
171
-
172
- <p>
173
- Open a new session with the application specified by <code><a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3" title="The root directory of the application to spawn.">PoolOptions.appRoot</a></code>.
174
- <p>
175
- See the class description for <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>, as well as <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>, on how to use the returned session object.<p>
176
- Internally, this method may either spawn a new application instance, or use an existing one.<p>
177
- <dl compact><dt><b>Parameters:</b></dt><dd>
178
- <table border="0" cellspacing="2" cellpadding="0">
179
- <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>An object containing information on which application to open a session with, as well as spawning details. Spawning details will be used if the pool decides that spawning a new application instance is necessary. See <a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a> and <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> for details. </td></tr>
180
- </table>
181
- </dl>
182
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>A session object. </dd></dl>
183
- <dl compact><dt><b>Exceptions:</b></dt><dd>
184
- <table border="0" cellspacing="2" cellpadding="0">
185
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SpawnException.html" title="Thrown when SpawnManager or ApplicationPool fails to spawn an application instance...">SpawnException</a></em>&nbsp;</td><td>An attempt was made to spawn a new application instance, but that attempt failed. </td></tr>
186
- <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1BusyException.html" title="The application pool is too busy and cannot fulfill a get() request.">BusyException</a></em>&nbsp;</td><td>The application pool is too busy right now, and cannot satisfy the request. One should either abort, or try again later. </td></tr>
187
- <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 else went wrong. </td></tr>
188
- <tr><td valign="top"></td><td valign="top"><em>thread_interrupted</em>&nbsp;</td><td></td></tr>
189
- </table>
190
- </dl>
191
- <dl class="note" compact><dt><b>Note:</b></dt><dd>Applications are uniquely identified with the application root string. So although <code>appRoot</code> does not have to be absolute, it should be. If one calls <code>get("/home/foo")</code> and <code>get("/home/../home/foo")</code>, then <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> will think they're 2 different applications, and thus will spawn 2 application instances. </dd></dl>
192
-
193
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#ffc8f3ef8b1d925d203794d191d7fef4">Passenger::StandardApplicationPool</a>.</p>
194
-
195
- </div>
196
- </div><p>
197
- <a class="anchor" name="06d1eae044d4d761ce77cf09049df8c8"></a><!-- doxytag: member="Passenger::ApplicationPool::getActive" ref="06d1eae044d4d761ce77cf09049df8c8" args="() const =0" -->
198
- <div class="memitem">
199
- <div class="memproto">
200
- <table class="memname">
201
- <tr>
202
- <td class="memname">virtual unsigned int Passenger::ApplicationPool::getActive </td>
203
- <td>(</td>
204
- <td class="paramname"> </td>
205
- <td>&nbsp;)&nbsp;</td>
206
- <td> const<code> [pure virtual]</code></td>
207
- </tr>
208
- </table>
209
- </div>
210
- <div class="memdoc">
211
-
212
- <p>
213
- Get the number of active applications in the pool.
214
- <p>
215
- This method exposes an implementation detail of the underlying pooling algorithm. It is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
216
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#7773c4a3dfbd88eac72401d063831788">Passenger::StandardApplicationPool</a>.</p>
217
-
218
- </div>
219
- </div><p>
220
- <a class="anchor" name="93b0277beb510855f85fee5de5c369bb"></a><!-- doxytag: member="Passenger::ApplicationPool::getCount" ref="93b0277beb510855f85fee5de5c369bb" args="() const =0" -->
221
- <div class="memitem">
222
- <div class="memproto">
223
- <table class="memname">
224
- <tr>
225
- <td class="memname">virtual unsigned int Passenger::ApplicationPool::getCount </td>
226
- <td>(</td>
227
- <td class="paramname"> </td>
228
- <td>&nbsp;)&nbsp;</td>
229
- <td> const<code> [pure virtual]</code></td>
230
- </tr>
231
- </table>
232
- </div>
233
- <div class="memdoc">
234
-
235
- <p>
236
- Get the number of active applications in the pool.
237
- <p>
238
- This method exposes an implementation detail of the underlying pooling algorithm. It is used by unit tests to verify that the implementation is correct, and thus should not be called directly.
239
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#cdbfe2b9ffacdab4438c879c2411bf02">Passenger::StandardApplicationPool</a>.</p>
240
-
241
- </div>
242
- </div><p>
243
- <a class="anchor" name="d9149c3b434ef8e18fd15a77af1a6c2c"></a><!-- doxytag: member="Passenger::ApplicationPool::getSpawnServerPid" ref="d9149c3b434ef8e18fd15a77af1a6c2c" args="() const =0" -->
244
- <div class="memitem">
245
- <div class="memproto">
246
- <table class="memname">
247
- <tr>
248
- <td class="memname">virtual pid_t Passenger::ApplicationPool::getSpawnServerPid </td>
249
- <td>(</td>
250
- <td class="paramname"> </td>
251
- <td>&nbsp;)&nbsp;</td>
252
- <td> const<code> [pure virtual]</code></td>
253
- </tr>
254
- </table>
255
- </div>
256
- <div class="memdoc">
257
-
258
- <p>
259
- Get the process ID of the spawn server that is used.
260
- <p>
261
- This method exposes an implementation detail. It is used by unit tests to verify that the implementation is correct, and thus should not be used directly.
262
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#6955152d237920988d20297d2fff5660">Passenger::StandardApplicationPool</a>.</p>
263
-
264
- </div>
265
- </div><p>
266
- <a class="anchor" name="0e0f21972ab130c9c0f90c2212328794"></a><!-- doxytag: member="Passenger::ApplicationPool::setMax" ref="0e0f21972ab130c9c0f90c2212328794" args="(unsigned int max)=0" -->
267
- <div class="memitem">
268
- <div class="memproto">
269
- <table class="memname">
270
- <tr>
271
- <td class="memname">virtual void Passenger::ApplicationPool::setMax </td>
272
- <td>(</td>
273
- <td class="paramtype">unsigned int&nbsp;</td>
274
- <td class="paramname"> <em>max</em> </td>
275
- <td>&nbsp;)&nbsp;</td>
276
- <td><code> [pure virtual]</code></td>
277
- </tr>
278
- </table>
279
- </div>
280
- <div class="memdoc">
281
-
282
- <p>
283
- Set a hard limit on the number of application instances that this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a> may spawn.
284
- <p>
285
- The exact behavior depends on the used algorithm, and is not specified by these API docs.<p>
286
- It is allowed to set a limit lower than the current number of spawned applications.
287
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#04ef8c92da189520ad2022f4f82e9553">Passenger::StandardApplicationPool</a>.</p>
288
-
289
- </div>
290
- </div><p>
291
- <a class="anchor" name="b0437434c79b5444ac0faf768f1410e8"></a><!-- doxytag: member="Passenger::ApplicationPool::setMaxPerApp" ref="b0437434c79b5444ac0faf768f1410e8" args="(unsigned int max)=0" -->
292
- <div class="memitem">
293
- <div class="memproto">
294
- <table class="memname">
295
- <tr>
296
- <td class="memname">virtual void Passenger::ApplicationPool::setMaxPerApp </td>
297
- <td>(</td>
298
- <td class="paramtype">unsigned int&nbsp;</td>
299
- <td class="paramname"> <em>max</em> </td>
300
- <td>&nbsp;)&nbsp;</td>
301
- <td><code> [pure virtual]</code></td>
302
- </tr>
303
- </table>
304
- </div>
305
- <div class="memdoc">
306
-
307
- <p>
308
- Set a hard limit on the number of application instances that a single application may spawn in this <a class="el" href="classPassenger_1_1ApplicationPool.html" title="A persistent pool of Applications.">ApplicationPool</a>.
309
- <p>
310
- The exact behavior depends on the used algorithm, and is not specified by these API docs.<p>
311
- It is allowed to set a limit lower than the current number of spawned applications.
312
- <p>Implemented in <a class="el" href="classPassenger_1_1StandardApplicationPool.html#3bafcda8d880f70561ad8a9da16e26ef">Passenger::StandardApplicationPool</a>.</p>
313
-
314
- </div>
315
- </div><p>
316
- <hr>The documentation for this class was generated from the following file:<ul>
317
- <li><a class="el" href="ApplicationPool_8h-source.html">ApplicationPool.h</a></ul>
318
- </div>
319
- <hr size="1"><address style="text-align: right;"><small>Generated on Wed Apr 8 22:35:12 2009 for Passenger by&nbsp;
320
- <a href="http://www.doxygen.org/index.html">
321
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
322
- </body>
323
- </html>