passenger 2.2.11 → 2.2.12

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 (287) hide show
  1. data/NEWS +29 -0
  2. data/bin/passenger-install-nginx-module +1 -1
  3. data/doc/Users guide Apache.html +38 -7
  4. data/doc/Users guide Nginx.html +36 -5
  5. data/doc/cxxapi/AbstractSpawnManager_8h-source.html +1 -1
  6. data/doc/cxxapi/Account_8h-source.html +1 -1
  7. data/doc/cxxapi/AccountsDatabase_8h-source.html +1 -1
  8. data/doc/cxxapi/AgentsStarter_8h-source.html +1 -1
  9. data/doc/cxxapi/BCrypt_8h-source.html +1 -1
  10. data/doc/cxxapi/Blowfish_8h-source.html +1 -1
  11. data/doc/cxxapi/Bucket_8h-source.html +5 -4
  12. data/doc/cxxapi/Constants_8h-source.html +2 -2
  13. data/doc/cxxapi/ContentHandler_8h-source.html +1 -1
  14. data/doc/cxxapi/DirectoryMapper_8h-source.html +10 -9
  15. data/doc/cxxapi/EventedServer_8h-source.html +415 -0
  16. data/doc/cxxapi/Exceptions_8h-source.html +1 -1
  17. data/doc/cxxapi/FileDescriptor_8h-source.html +1 -1
  18. data/doc/cxxapi/Hooks_8h-source.html +3 -2
  19. data/doc/cxxapi/HttpStatusExtractor_8h-source.html +324 -323
  20. data/doc/cxxapi/Logging_8h-source.html +643 -546
  21. data/doc/cxxapi/MessageChannel_8h-source.html +429 -404
  22. data/doc/cxxapi/MessageClient_8h-source.html +1 -1
  23. data/doc/cxxapi/MessageReadersWriters_8h-source.html +451 -0
  24. data/doc/cxxapi/MessageServer_8h-source.html +1 -1
  25. data/doc/cxxapi/PoolOptions_8h-source.html +287 -279
  26. data/doc/cxxapi/Process_8h-source.html +178 -167
  27. data/doc/cxxapi/RandomGenerator_8h-source.html +45 -18
  28. data/doc/cxxapi/ResourceLocator_8h-source.html +3 -3
  29. data/doc/cxxapi/ScgiRequestParser_8h-source.html +344 -343
  30. data/doc/cxxapi/ServerInstanceDir_8h-source.html +1 -1
  31. data/doc/cxxapi/Session_8h-source.html +387 -374
  32. data/doc/cxxapi/SpawnManager_8h-source.html +547 -538
  33. data/doc/cxxapi/StaticContentHandler_8h-source.html +1 -1
  34. data/doc/cxxapi/StaticString_8h-source.html +1 -1
  35. data/doc/cxxapi/StringListCreator_8h-source.html +1 -1
  36. data/doc/cxxapi/Utils_8h-source.html +545 -520
  37. data/doc/cxxapi/annotated.html +11 -8
  38. data/doc/cxxapi/apache2_2Configuration_8h-source.html +1 -1
  39. data/doc/cxxapi/classAgentWatcher-members.html +1 -1
  40. data/doc/cxxapi/classAgentWatcher.html +1 -1
  41. data/doc/cxxapi/classClient-members.html +1 -1
  42. data/doc/cxxapi/classClient.html +1 -1
  43. data/doc/cxxapi/classHooks-members.html +16 -13
  44. data/doc/cxxapi/classHooks.html +69 -73
  45. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +1 -1
  46. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +1 -1
  47. data/doc/cxxapi/classPassenger_1_1ArgumentException-members.html +1 -1
  48. data/doc/cxxapi/classPassenger_1_1ArgumentException.html +1 -1
  49. data/doc/cxxapi/classPassenger_1_1ArrayReader-members.html +33 -0
  50. data/doc/cxxapi/classPassenger_1_1ArrayReader.html +47 -0
  51. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +1 -1
  52. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +1 -1
  53. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +1 -1
  54. data/doc/cxxapi/classPassenger_1_1BusyException.html +1 -1
  55. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +1 -1
  56. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +1 -1
  57. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +18 -15
  58. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +89 -99
  59. data/doc/cxxapi/classPassenger_1_1EOFException-members.html +1 -1
  60. data/doc/cxxapi/classPassenger_1_1EOFException.html +1 -1
  61. data/doc/cxxapi/classPassenger_1_1EventFd-members.html +1 -1
  62. data/doc/cxxapi/classPassenger_1_1EventFd.html +1 -1
  63. data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +1 -1
  64. data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +1 -1
  65. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +1 -1
  66. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +1 -1
  67. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +1 -1
  68. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +1 -1
  69. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html +1 -1
  70. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +2 -2
  71. data/doc/cxxapi/classPassenger_1_1IOException-members.html +1 -1
  72. data/doc/cxxapi/classPassenger_1_1IOException.html +1 -1
  73. data/doc/cxxapi/classPassenger_1_1MemZeroGuard-members.html +1 -1
  74. data/doc/cxxapi/classPassenger_1_1MemZeroGuard.html +1 -1
  75. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +1 -1
  76. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +1 -1
  77. data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +1 -1
  78. data/doc/cxxapi/classPassenger_1_1MessageServer.html +1 -1
  79. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +1 -1
  80. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +1 -1
  81. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +1 -1
  82. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +1 -1
  83. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +1 -1
  84. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +1 -1
  85. data/doc/cxxapi/classPassenger_1_1Process-members.html +4 -3
  86. data/doc/cxxapi/classPassenger_1_1Process.html +40 -9
  87. data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +2 -1
  88. data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +29 -2
  89. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +1 -1
  90. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +1 -1
  91. data/doc/cxxapi/classPassenger_1_1ScalarReader-members.html +33 -0
  92. data/doc/cxxapi/classPassenger_1_1ScalarReader.html +47 -0
  93. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +1 -1
  94. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +1 -1
  95. data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +1 -1
  96. data/doc/cxxapi/classPassenger_1_1SecurityException.html +1 -1
  97. data/doc/cxxapi/classPassenger_1_1Session-members.html +1 -1
  98. data/doc/cxxapi/classPassenger_1_1Session.html +2 -2
  99. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -1
  100. data/doc/cxxapi/classPassenger_1_1SpawnException.html +1 -1
  101. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +2 -2
  102. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +6 -18
  103. data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +1 -1
  104. data/doc/cxxapi/classPassenger_1_1StandardSession.html +1 -1
  105. data/doc/cxxapi/classPassenger_1_1StaticString-members.html +1 -1
  106. data/doc/cxxapi/classPassenger_1_1StaticString.html +1 -1
  107. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +1 -1
  108. data/doc/cxxapi/classPassenger_1_1SystemException.html +1 -1
  109. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +1 -1
  110. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +1 -1
  111. data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +1 -1
  112. data/doc/cxxapi/classPassenger_1_1TimeoutException.html +1 -1
  113. data/doc/cxxapi/classPassenger_1_1Uint16Reader-members.html +33 -0
  114. data/doc/cxxapi/classPassenger_1_1Uint16Reader.html +47 -0
  115. data/doc/cxxapi/classPassenger_1_1Uint32Reader-members.html +33 -0
  116. data/doc/cxxapi/classPassenger_1_1Uint32Reader.html +47 -0
  117. data/doc/cxxapi/classServer-members.html +1 -1
  118. data/doc/cxxapi/classServer.html +1 -1
  119. data/doc/cxxapi/classServerInstanceDirToucher-members.html +1 -1
  120. data/doc/cxxapi/classServerInstanceDirToucher.html +1 -1
  121. data/doc/cxxapi/classes.html +13 -10
  122. data/doc/cxxapi/definitions_8h-source.html +2 -1
  123. data/doc/cxxapi/doxygen.css +91 -0
  124. data/doc/cxxapi/files.html +16 -13
  125. data/doc/cxxapi/functions.html +32 -21
  126. data/doc/cxxapi/functions_enum.html +1 -1
  127. data/doc/cxxapi/functions_eval.html +1 -1
  128. data/doc/cxxapi/functions_func.html +32 -21
  129. data/doc/cxxapi/functions_vars.html +3 -1
  130. data/doc/cxxapi/graph_legend.html +20 -15
  131. data/doc/cxxapi/graph_legend.png +0 -0
  132. data/doc/cxxapi/group__Configuration.html +51 -64
  133. data/doc/cxxapi/group__Configuration.png +0 -0
  134. data/doc/cxxapi/group__Core.html +24 -26
  135. data/doc/cxxapi/group__Core.png +0 -0
  136. data/doc/cxxapi/group__Exceptions.html +1 -1
  137. data/doc/cxxapi/group__Hooks.html +17 -15
  138. data/doc/cxxapi/group__Hooks.png +0 -0
  139. data/doc/cxxapi/group__Support.html +11 -9
  140. data/doc/cxxapi/hierarchy.html +6 -1
  141. data/doc/cxxapi/index.html +10 -5
  142. data/doc/cxxapi/inherit__graph__10.map +1 -1
  143. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  144. data/doc/cxxapi/inherit__graph__10.png +0 -0
  145. data/doc/cxxapi/inherit__graph__11.map +1 -1
  146. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  147. data/doc/cxxapi/inherit__graph__11.png +0 -0
  148. data/doc/cxxapi/inherit__graph__12.map +1 -1
  149. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  150. data/doc/cxxapi/inherit__graph__12.png +0 -0
  151. data/doc/cxxapi/inherit__graph__13.map +1 -1
  152. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  153. data/doc/cxxapi/inherit__graph__13.png +0 -0
  154. data/doc/cxxapi/inherit__graph__14.map +1 -3
  155. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  156. data/doc/cxxapi/inherit__graph__14.png +0 -0
  157. data/doc/cxxapi/inherit__graph__15.map +1 -1
  158. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  159. data/doc/cxxapi/inherit__graph__15.png +0 -0
  160. data/doc/cxxapi/inherit__graph__16.map +3 -1
  161. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  162. data/doc/cxxapi/inherit__graph__16.png +0 -0
  163. data/doc/cxxapi/inherit__graph__17.map +1 -1
  164. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  165. data/doc/cxxapi/inherit__graph__17.png +0 -0
  166. data/doc/cxxapi/inherit__graph__18.map +1 -2
  167. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  168. data/doc/cxxapi/inherit__graph__18.png +0 -0
  169. data/doc/cxxapi/inherit__graph__19.map +1 -1
  170. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  171. data/doc/cxxapi/inherit__graph__19.png +0 -0
  172. data/doc/cxxapi/inherit__graph__20.map +2 -1
  173. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  174. data/doc/cxxapi/inherit__graph__20.png +0 -0
  175. data/doc/cxxapi/inherit__graph__21.map +1 -1
  176. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  177. data/doc/cxxapi/inherit__graph__21.png +0 -0
  178. data/doc/cxxapi/inherit__graph__22.map +1 -1
  179. data/doc/cxxapi/inherit__graph__22.md5 +1 -1
  180. data/doc/cxxapi/inherit__graph__22.png +0 -0
  181. data/doc/cxxapi/inherit__graph__23.map +1 -1
  182. data/doc/cxxapi/inherit__graph__23.md5 +1 -1
  183. data/doc/cxxapi/inherit__graph__23.png +0 -0
  184. data/doc/cxxapi/inherit__graph__24.map +1 -1
  185. data/doc/cxxapi/inherit__graph__24.md5 +1 -1
  186. data/doc/cxxapi/inherit__graph__24.png +0 -0
  187. data/doc/cxxapi/inherit__graph__25.map +1 -1
  188. data/doc/cxxapi/inherit__graph__25.md5 +1 -1
  189. data/doc/cxxapi/inherit__graph__25.png +0 -0
  190. data/doc/cxxapi/inherit__graph__26.map +1 -1
  191. data/doc/cxxapi/inherit__graph__26.md5 +1 -1
  192. data/doc/cxxapi/inherit__graph__26.png +0 -0
  193. data/doc/cxxapi/inherit__graph__27.map +1 -2
  194. data/doc/cxxapi/inherit__graph__27.md5 +1 -1
  195. data/doc/cxxapi/inherit__graph__27.png +0 -0
  196. data/doc/cxxapi/inherit__graph__28.map +1 -1
  197. data/doc/cxxapi/inherit__graph__28.md5 +1 -1
  198. data/doc/cxxapi/inherit__graph__28.png +0 -0
  199. data/doc/cxxapi/inherit__graph__29.map +1 -1
  200. data/doc/cxxapi/inherit__graph__29.md5 +1 -1
  201. data/doc/cxxapi/inherit__graph__29.png +0 -0
  202. data/doc/cxxapi/inherit__graph__30.map +2 -1
  203. data/doc/cxxapi/inherit__graph__30.md5 +1 -1
  204. data/doc/cxxapi/inherit__graph__30.png +0 -0
  205. data/doc/cxxapi/inherit__graph__31.map +1 -3
  206. data/doc/cxxapi/inherit__graph__31.md5 +1 -1
  207. data/doc/cxxapi/inherit__graph__31.png +0 -0
  208. data/doc/cxxapi/inherit__graph__32.map +1 -1
  209. data/doc/cxxapi/inherit__graph__32.md5 +1 -1
  210. data/doc/cxxapi/inherit__graph__32.png +0 -0
  211. data/doc/cxxapi/inherit__graph__33.map +1 -1
  212. data/doc/cxxapi/inherit__graph__33.md5 +1 -1
  213. data/doc/cxxapi/inherit__graph__33.png +0 -0
  214. data/doc/cxxapi/inherit__graph__34.map +3 -1
  215. data/doc/cxxapi/inherit__graph__34.md5 +1 -1
  216. data/doc/cxxapi/inherit__graph__34.png +0 -0
  217. data/doc/cxxapi/inherit__graph__35.map +1 -1
  218. data/doc/cxxapi/inherit__graph__35.md5 +1 -1
  219. data/doc/cxxapi/inherit__graph__35.png +0 -0
  220. data/doc/cxxapi/inherit__graph__36.map +1 -1
  221. data/doc/cxxapi/inherit__graph__36.md5 +1 -1
  222. data/doc/cxxapi/inherit__graph__36.png +0 -0
  223. data/doc/cxxapi/inherit__graph__37.map +1 -0
  224. data/doc/cxxapi/inherit__graph__37.md5 +1 -0
  225. data/doc/cxxapi/inherit__graph__37.png +0 -0
  226. data/doc/cxxapi/inherit__graph__38.map +1 -0
  227. data/doc/cxxapi/inherit__graph__38.md5 +1 -0
  228. data/doc/cxxapi/inherit__graph__38.png +0 -0
  229. data/doc/cxxapi/inherit__graph__39.map +1 -0
  230. data/doc/cxxapi/inherit__graph__39.md5 +1 -0
  231. data/doc/cxxapi/inherit__graph__39.png +0 -0
  232. data/doc/cxxapi/inherit__graph__5.map +1 -1
  233. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  234. data/doc/cxxapi/inherit__graph__5.png +0 -0
  235. data/doc/cxxapi/inherit__graph__6.map +1 -1
  236. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  237. data/doc/cxxapi/inherit__graph__6.png +0 -0
  238. data/doc/cxxapi/inherit__graph__7.map +1 -1
  239. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  240. data/doc/cxxapi/inherit__graph__7.png +0 -0
  241. data/doc/cxxapi/inherit__graph__8.map +1 -1
  242. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  243. data/doc/cxxapi/inherit__graph__8.png +0 -0
  244. data/doc/cxxapi/inherit__graph__9.map +1 -1
  245. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  246. data/doc/cxxapi/inherit__graph__9.png +0 -0
  247. data/doc/cxxapi/inherits.html +46 -31
  248. data/doc/cxxapi/main.html +12 -11
  249. data/doc/cxxapi/modules.html +16 -13
  250. data/doc/cxxapi/namespacePassenger.html +82 -5
  251. data/doc/cxxapi/namespacemembers.html +5 -3
  252. data/doc/cxxapi/namespacemembers_enum.html +1 -1
  253. data/doc/cxxapi/namespacemembers_eval.html +1 -1
  254. data/doc/cxxapi/namespacemembers_func.html +5 -3
  255. data/doc/cxxapi/namespacemembers_type.html +1 -1
  256. data/doc/cxxapi/namespaces.html +2 -2
  257. data/doc/cxxapi/nginx_2Configuration_8h-source.html +43 -42
  258. data/doc/cxxapi/ngx__http__passenger__module_8h-source.html +1 -1
  259. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +1 -1
  260. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +1 -1
  261. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01StaticString_01_4_01_4-members.html +33 -0
  262. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01StaticString_01_4_01_4.html +52 -0
  263. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +1 -1
  264. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +1 -1
  265. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +1 -1
  266. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +1 -1
  267. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +3 -2
  268. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +25 -5
  269. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +1 -1
  270. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +1 -1
  271. data/doc/cxxapi/tabs.css +1 -1
  272. data/doc/cxxapi/tree.html +20 -17
  273. data/doc/users_guide_snippets/tips.txt +28 -0
  274. data/ext/apache2/Hooks.cpp +19 -2
  275. data/ext/common/Utils.cpp +15 -4
  276. data/ext/common/Version.h +1 -1
  277. data/ext/nginx/StaticContentHandler.c +6 -3
  278. data/ext/phusion_passenger/native_support.c +25 -0
  279. data/lib/phusion_passenger/abstract_request_handler.rb +1 -0
  280. data/lib/phusion_passenger/constants.rb +1 -1
  281. data/lib/phusion_passenger/events.rb +3 -0
  282. data/lib/phusion_passenger/platform_info.rb +2 -1
  283. data/lib/phusion_passenger/rack/application_spawner.rb +2 -0
  284. data/lib/phusion_passenger/railz/application_spawner.rb +8 -0
  285. data/lib/phusion_passenger/utils.rb +69 -9
  286. data/lib/phusion_passenger/utils/rewindable_input.rb +10 -6
  287. metadata +55 -17
@@ -600,7 +600,7 @@
600
600
  <a name="l00578"></a>00578
601
601
  <a name="l00579"></a>00579 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_MESSAGE_SERVER_H_ */</span>
602
602
  </pre></div></div>
603
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Feb 21 12:22:45 2010 for Passenger by&nbsp;
603
+ <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:56 2010 for Passenger by&nbsp;
604
604
  <a href="http://www.doxygen.org/index.html">
605
605
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
606
606
  </body>
@@ -217,286 +217,294 @@
217
217
  <a name="l00195"></a>00195 <span class="comment"> */</span>
218
218
  <a name="l00196"></a><a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab">00196</a> Account::Rights <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a>;
219
219
  <a name="l00197"></a>00197 <span class="comment"></span>
220
- <a name="l00198"></a>00198 <span class="comment"> /**</span>
221
- <a name="l00199"></a>00199 <span class="comment"> * An analytics log object to log things to. May be the null pointer,</span>
222
- <a name="l00200"></a>00200 <span class="comment"> * in which case analytics logging is disabled.</span>
223
- <a name="l00201"></a>00201 <span class="comment"> */</span>
224
- <a name="l00202"></a><a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612">00202</a> AnalyticsLogPtr <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>;
225
- <a name="l00203"></a>00203 <span class="comment"></span>
226
- <a name="l00204"></a>00204 <span class="comment"> /**</span>
227
- <a name="l00205"></a>00205 <span class="comment"> * Whether the session returned by ApplicationPool::Interface::get()</span>
228
- <a name="l00206"></a>00206 <span class="comment"> * should be automatically initiated. Defaults to true.</span>
229
- <a name="l00207"></a>00207 <span class="comment"> */</span>
230
- <a name="l00208"></a><a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076">00208</a> <span class="keywordtype">bool</span> <a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a>;
231
- <a name="l00209"></a>00209 <span class="comment"></span>
232
- <a name="l00210"></a>00210 <span class="comment"> /**</span>
233
- <a name="l00211"></a>00211 <span class="comment"> * Whether application processes should print exceptions that occurred during</span>
234
- <a name="l00212"></a>00212 <span class="comment"> * application initialization. Defaults to true.</span>
235
- <a name="l00213"></a>00213 <span class="comment"> */</span>
236
- <a name="l00214"></a><a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b">00214</a> <span class="keywordtype">bool</span> <a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a>;
237
- <a name="l00215"></a>00215
238
- <a name="l00216"></a>00216 <span class="comment">/*********************************/</span>
239
- <a name="l00217"></a>00217 <span class="comment"></span>
240
- <a name="l00218"></a>00218 <span class="comment"> /**</span>
241
- <a name="l00219"></a>00219 <span class="comment"> * Creates a new PoolOptions object with the default values filled in.</span>
242
- <a name="l00220"></a>00220 <span class="comment"> * One must still set appRoot manually, after having used this constructor.</span>
243
- <a name="l00221"></a>00221 <span class="comment"> */</span>
244
- <a name="l00222"></a><a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4">00222</a> <a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4" title="Creates a new PoolOptions object with the default values filled in.">PoolOptions</a>() {
245
- <a name="l00223"></a>00223 <a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a> = <span class="stringliteral">"rails"</span>;
246
- <a name="l00224"></a>00224 <a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a> = <span class="stringliteral">"production"</span>;
247
- <a name="l00225"></a>00225 <a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a> = <span class="stringliteral">"smart-lv2"</span>;
248
- <a name="l00226"></a>00226 <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a> = -1;
249
- <a name="l00227"></a>00227 <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a> = -1;
250
- <a name="l00228"></a>00228 <a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a> = <span class="stringliteral">"/"</span>;
251
- <a name="l00229"></a>00229 <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a> = 0;
252
- <a name="l00230"></a>00230 <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a> = 0;
253
- <a name="l00231"></a>00231 <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a> = <span class="keyword">false</span>;
254
- <a name="l00232"></a>00232 <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a> = 0;
255
- <a name="l00233"></a>00233 <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a> = DEFAULT_BACKEND_ACCOUNT_RIGHTS;
256
- <a name="l00234"></a>00234 <a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a> = <span class="keyword">true</span>;
257
- <a name="l00235"></a>00235 <a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a> = <span class="keyword">true</span>;
258
- <a name="l00236"></a>00236
259
- <a name="l00237"></a>00237 <span class="comment">/*********************************/</span>
260
- <a name="l00238"></a>00238 }
261
- <a name="l00239"></a>00239 <span class="comment"></span>
262
- <a name="l00240"></a>00240 <span class="comment"> /**</span>
263
- <a name="l00241"></a>00241 <span class="comment"> * Creates a new PoolOptions object with the given values.</span>
264
- <a name="l00242"></a>00242 <span class="comment"> */</span>
265
- <a name="l00243"></a><a class="code" href="structPassenger_1_1PoolOptions.html#3e80ba601729a1a1eedc33cbc2217949">00243</a> <a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4" title="Creates a new PoolOptions object with the default values filled in.">PoolOptions</a>(<span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3" title="The root directory of the application to spawn.">appRoot</a>,
266
- <a name="l00244"></a>00244 <span class="keywordtype">string</span> <a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a> = <span class="stringliteral">""</span>,
267
- <a name="l00245"></a>00245 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a> = <span class="stringliteral">"rails"</span>,
268
- <a name="l00246"></a>00246 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a> = <span class="stringliteral">"production"</span>,
269
- <a name="l00247"></a>00247 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a> = <span class="stringliteral">"smart-lv2"</span>,
270
- <a name="l00248"></a>00248 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a> = <span class="stringliteral">""</span>,
271
- <a name="l00249"></a>00249 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a> = <span class="stringliteral">""</span>,
272
- <a name="l00250"></a>00250 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a> = <span class="stringliteral">""</span>,
273
- <a name="l00251"></a>00251 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a> = <span class="stringliteral">""</span>,
274
- <a name="l00252"></a>00252 <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a> = -1,
275
- <a name="l00253"></a>00253 <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a> = -1,
276
- <a name="l00254"></a>00254 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a> = <span class="stringliteral">"/"</span>,
277
- <a name="l00255"></a>00255 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a> = 0,
278
- <a name="l00256"></a>00256 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a> = 0,
279
- <a name="l00257"></a>00257 <span class="keywordtype">bool</span> <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a> = <span class="keyword">false</span>,
280
- <a name="l00258"></a>00258 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a> = 0,
281
- <a name="l00259"></a>00259 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a> = <span class="stringliteral">""</span>,
282
- <a name="l00260"></a>00260 Account::Rights <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a> = DEFAULT_BACKEND_ACCOUNT_RIGHTS,
283
- <a name="l00261"></a>00261 <span class="keyword">const</span> AnalyticsLogPtr &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a> = AnalyticsLogPtr()
284
- <a name="l00262"></a>00262 ) {
285
- <a name="l00263"></a>00263 this-&gt;appRoot = appRoot;
286
- <a name="l00264"></a>00264 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a>;
287
- <a name="l00265"></a>00265 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a>;
288
- <a name="l00266"></a>00266 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a>;
289
- <a name="l00267"></a>00267 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a>;
290
- <a name="l00268"></a>00268 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a>;
291
- <a name="l00269"></a>00269 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a>;
292
- <a name="l00270"></a>00270 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a>;
293
- <a name="l00271"></a>00271 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a>;
294
- <a name="l00272"></a>00272 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a>;
295
- <a name="l00273"></a>00273 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a>;
296
- <a name="l00274"></a>00274 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a>;
297
- <a name="l00275"></a>00275 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a>;
298
- <a name="l00276"></a>00276 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a>;
299
- <a name="l00277"></a>00277 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a>;
300
- <a name="l00278"></a>00278 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a>;
301
- <a name="l00279"></a>00279 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a>;
302
- <a name="l00280"></a>00280 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a>;
303
- <a name="l00281"></a>00281 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>;
304
- <a name="l00282"></a>00282 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a> = <span class="keyword">true</span>;
305
- <a name="l00283"></a>00283 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a> = <span class="keyword">true</span>;
306
- <a name="l00284"></a>00284
307
- <a name="l00285"></a>00285 <span class="comment">/*********************************/</span>
308
- <a name="l00286"></a>00286 }
309
- <a name="l00287"></a>00287 <span class="comment"></span>
310
- <a name="l00288"></a>00288 <span class="comment"> /**</span>
311
- <a name="l00289"></a>00289 <span class="comment"> * Creates a new PoolOptions object from the given string vector.</span>
312
- <a name="l00290"></a>00290 <span class="comment"> * This vector contains information that's written to by toVector().</span>
313
- <a name="l00291"></a>00291 <span class="comment"> *</span>
314
- <a name="l00292"></a>00292 <span class="comment"> * For example:</span>
315
- <a name="l00293"></a>00293 <span class="comment"> * @code</span>
316
- <a name="l00294"></a>00294 <span class="comment"> * PoolOptions options(...);</span>
317
- <a name="l00295"></a>00295 <span class="comment"> * vector&lt;string&gt; vec;</span>
318
- <a name="l00296"></a>00296 <span class="comment"> *</span>
319
- <a name="l00297"></a>00297 <span class="comment"> * vec.push_back("my");</span>
320
- <a name="l00298"></a>00298 <span class="comment"> * vec.push_back("data");</span>
321
- <a name="l00299"></a>00299 <span class="comment"> * options.toVector(vec); // PoolOptions information will start at index 2.</span>
322
- <a name="l00300"></a>00300 <span class="comment"> *</span>
323
- <a name="l00301"></a>00301 <span class="comment"> * PoolOptions copy(vec, 2);</span>
324
- <a name="l00302"></a>00302 <span class="comment"> * @endcode</span>
325
- <a name="l00303"></a>00303 <span class="comment"> *</span>
326
- <a name="l00304"></a>00304 <span class="comment"> * @param vec The vector containing spawn options information.</span>
327
- <a name="l00305"></a>00305 <span class="comment"> * @param startIndex The index in vec at which the information starts.</span>
328
- <a name="l00306"></a>00306 <span class="comment"> * @param analyticsLogger If given, and the vector contains logging information,</span>
329
- <a name="l00307"></a>00307 <span class="comment"> * then the 'log' member will be constructed using this logger.</span>
330
- <a name="l00308"></a>00308 <span class="comment"> */</span>
331
- <a name="l00309"></a><a class="code" href="structPassenger_1_1PoolOptions.html#0caa024c33da2f68b5c79b41122397b3">00309</a> <a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4" title="Creates a new PoolOptions object with the default values filled in.">PoolOptions</a>(<span class="keyword">const</span> vector&lt;string&gt; &amp;vec, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> startIndex = 0,
332
- <a name="l00310"></a>00310 AnalyticsLoggerPtr analyticsLogger = AnalyticsLoggerPtr()
333
- <a name="l00311"></a>00311 ) {
334
- <a name="l00312"></a>00312 <span class="keywordtype">int</span> offset = 1;
335
- <a name="l00313"></a>00313 <span class="keywordtype">bool</span> hasEnvVars;
336
- <a name="l00314"></a>00314
337
- <a name="l00315"></a>00315 appRoot = vec[startIndex + offset]; offset += 2;
338
- <a name="l00316"></a>00316 <a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a> = vec[startIndex + offset]; offset += 2;
339
- <a name="l00317"></a>00317 <a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a> = vec[startIndex + offset]; offset += 2;
340
- <a name="l00318"></a>00318 <a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a> = vec[startIndex + offset]; offset += 2;
341
- <a name="l00319"></a>00319 <a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a> = vec[startIndex + offset]; offset += 2;
342
- <a name="l00320"></a>00320 <a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a> = vec[startIndex + offset]; offset += 2;
343
- <a name="l00321"></a>00321 <a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a> = vec[startIndex + offset]; offset += 2;
344
- <a name="l00322"></a>00322 <a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a> = vec[startIndex + offset]; offset += 2;
345
- <a name="l00323"></a>00323 <a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a> = vec[startIndex + offset]; offset += 2;
346
- <a name="l00324"></a>00324 <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
347
- <a name="l00325"></a>00325 <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
348
- <a name="l00326"></a>00326 <a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a> = vec[startIndex + offset]; offset += 2;
349
- <a name="l00327"></a>00327 <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
350
- <a name="l00328"></a>00328 <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
351
- <a name="l00329"></a>00329 <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a> = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
352
- <a name="l00330"></a>00330 <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
353
- <a name="l00331"></a>00331 <a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a> = vec[startIndex + offset]; offset += 2;
354
- <a name="l00332"></a>00332 <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a> = (Account::Rights) <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]);
355
- <a name="l00333"></a>00333 offset += 2;
356
- <a name="l00334"></a>00334 <span class="keywordflow">if</span> (vec[startIndex + offset - 1] == <span class="stringliteral">"analytics_log_group_name"</span>) {
357
- <a name="l00335"></a>00335 <span class="keywordflow">if</span> (analyticsLogger != NULL) {
358
- <a name="l00336"></a>00336 <span class="keywordtype">string</span> groupName = vec[startIndex + offset];
359
- <a name="l00337"></a>00337 <span class="keywordtype">string</span> txnId = vec[startIndex + offset + 2];
360
- <a name="l00338"></a>00338 <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a> = analyticsLogger-&gt;continueTransaction(groupName, txnId);
361
- <a name="l00339"></a>00339 }
362
- <a name="l00340"></a>00340 offset += 4;
363
- <a name="l00341"></a>00341 }
364
- <a name="l00342"></a>00342 <a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a> = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
365
- <a name="l00343"></a>00343 <a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a> = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
366
- <a name="l00344"></a>00344 hasEnvVars = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
367
- <a name="l00345"></a>00345 <span class="keywordflow">if</span> (hasEnvVars) {
368
- <a name="l00346"></a>00346 <a class="code" href="structPassenger_1_1PoolOptions.html#aa4f5d4ae1534ada8613fbe497a38924" title="Environment variables which should be passed to the spawned application process.">environmentVariables</a> = <a class="code" href="group__Support.html#g41b6c4a82fed72531a147de0505a8396" title="Convenience shortcut for creating a shared_ptr.">ptr</a>(<span class="keyword">new</span> SimpleStringListCreator(vec[startIndex + offset]));
369
- <a name="l00347"></a>00347 }
370
- <a name="l00348"></a>00348 offset += 2;
371
- <a name="l00349"></a>00349
372
- <a name="l00350"></a>00350 <span class="comment">/*********************************/</span>
373
- <a name="l00351"></a>00351 }
374
- <a name="l00352"></a>00352 <span class="comment"></span>
375
- <a name="l00353"></a>00353 <span class="comment"> /**</span>
376
- <a name="l00354"></a>00354 <span class="comment"> * Append the information in this PoolOptions object to the given</span>
377
- <a name="l00355"></a>00355 <span class="comment"> * string vector. The resulting array could, for example, be used</span>
378
- <a name="l00356"></a>00356 <span class="comment"> * as a message to be sent to the spawn server.</span>
379
- <a name="l00357"></a>00357 <span class="comment"> *</span>
380
- <a name="l00358"></a>00358 <span class="comment"> * @param vec The vector to store the information in.</span>
381
- <a name="l00359"></a>00359 <span class="comment"> * @param storeEnvVars Whether to store environment variable information into vec as well.</span>
382
- <a name="l00360"></a>00360 <span class="comment"> * @throws Anything thrown by environmentVariables-&gt;getItems().</span>
383
- <a name="l00361"></a>00361 <span class="comment"> */</span>
384
- <a name="l00362"></a><a class="code" href="structPassenger_1_1PoolOptions.html#437e077b0ab037f4e86680e9164a694e">00362</a> <span class="keywordtype">void</span> <a class="code" href="structPassenger_1_1PoolOptions.html#437e077b0ab037f4e86680e9164a694e" title="Append the information in this PoolOptions object to the given string vector.">toVector</a>(vector&lt;string&gt; &amp;vec, <span class="keywordtype">bool</span> storeEnvVars = <span class="keyword">true</span>)<span class="keyword"> const </span>{
385
- <a name="l00363"></a>00363 <span class="keywordflow">if</span> (vec.capacity() &lt; vec.size() + 40) {
386
- <a name="l00364"></a>00364 vec.reserve(vec.size() + 40);
387
- <a name="l00365"></a>00365 }
388
- <a name="l00366"></a>00366 appendKeyValue (vec, <span class="stringliteral">"app_root"</span>, appRoot);
389
- <a name="l00367"></a>00367 appendKeyValue (vec, <span class="stringliteral">"app_group_name"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#43eb2294bff16bbcbafec569babca883" title="Returns the app group name.">getAppGroupName</a>());
390
- <a name="l00368"></a>00368 appendKeyValue (vec, <span class="stringliteral">"app_type"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a>);
391
- <a name="l00369"></a>00369 appendKeyValue (vec, <span class="stringliteral">"environment"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a>);
392
- <a name="l00370"></a>00370 appendKeyValue (vec, <span class="stringliteral">"spawn_method"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a>);
393
- <a name="l00371"></a>00371 appendKeyValue (vec, <span class="stringliteral">"user"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a>);
394
- <a name="l00372"></a>00372 appendKeyValue (vec, <span class="stringliteral">"group"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a>);
395
- <a name="l00373"></a>00373 appendKeyValue (vec, <span class="stringliteral">"default_user"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a>);
396
- <a name="l00374"></a>00374 appendKeyValue (vec, <span class="stringliteral">"default_group"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a>);
397
- <a name="l00375"></a>00375 appendKeyValue2(vec, <span class="stringliteral">"framework_spawner_timeout"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a>);
398
- <a name="l00376"></a>00376 appendKeyValue2(vec, <span class="stringliteral">"app_spawner_timeout"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a>);
399
- <a name="l00377"></a>00377 appendKeyValue (vec, <span class="stringliteral">"base_uri"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a>);
400
- <a name="l00378"></a>00378 appendKeyValue3(vec, <span class="stringliteral">"max_requests"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a>);
401
- <a name="l00379"></a>00379 appendKeyValue3(vec, <span class="stringliteral">"min_processes"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a>);
402
- <a name="l00380"></a>00380 appendKeyValue4(vec, <span class="stringliteral">"use_global_queue"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a>);
403
- <a name="l00381"></a>00381 appendKeyValue3(vec, <span class="stringliteral">"stat_throttle_rate"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a>);
404
- <a name="l00382"></a>00382 appendKeyValue (vec, <span class="stringliteral">"restart_dir"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a>);
405
- <a name="l00383"></a>00383 appendKeyValue3(vec, <span class="stringliteral">"rights"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a>);
406
- <a name="l00384"></a>00384 <span class="keywordflow">if</span> (<a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>) {
407
- <a name="l00385"></a>00385 appendKeyValue(vec, <span class="stringliteral">"analytics_log_group_name"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>-&gt;getGroupName());
408
- <a name="l00386"></a>00386 appendKeyValue(vec, <span class="stringliteral">"analytics_log_id"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>-&gt;getTxnId());
409
- <a name="l00387"></a>00387 }
410
- <a name="l00388"></a>00388 appendKeyValue4(vec, <span class="stringliteral">"initiate_session"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a>);
411
- <a name="l00389"></a>00389 appendKeyValue4(vec, <span class="stringliteral">"print_exceptions"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a>);
412
- <a name="l00390"></a>00390 <span class="keywordflow">if</span> (storeEnvVars) {
413
- <a name="l00391"></a>00391 appendKeyValue(vec, <span class="stringliteral">"has_environment_variables"</span>, <span class="stringliteral">"true"</span>);
414
- <a name="l00392"></a>00392 appendKeyValue(vec, <span class="stringliteral">"environment_variables"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#cb2df1a0b558e7fa457e46373c17b679" title="Serializes the items in environmentVariables into a string, which can be used to...">serializeEnvironmentVariables</a>());
415
- <a name="l00393"></a>00393 } <span class="keywordflow">else</span> {
416
- <a name="l00394"></a>00394 appendKeyValue(vec, <span class="stringliteral">"has_environment_variables"</span>, <span class="stringliteral">"false"</span>);
417
- <a name="l00395"></a>00395 appendKeyValue(vec, <span class="stringliteral">"environment_variables"</span>, <span class="stringliteral">""</span>);
418
- <a name="l00396"></a>00396 }
419
- <a name="l00397"></a>00397
420
- <a name="l00398"></a>00398 <span class="comment">/*********************************/</span>
421
- <a name="l00399"></a>00399 }
422
- <a name="l00400"></a>00400 <span class="comment"></span>
423
- <a name="l00401"></a>00401 <span class="comment"> /**</span>
424
- <a name="l00402"></a>00402 <span class="comment"> * Returns the app group name. If there is no explicitly set app group name</span>
425
- <a name="l00403"></a>00403 <span class="comment"> * then the app root is considered to be the app group name.</span>
426
- <a name="l00404"></a>00404 <span class="comment"> */</span>
427
- <a name="l00405"></a><a class="code" href="structPassenger_1_1PoolOptions.html#43eb2294bff16bbcbafec569babca883">00405</a> <span class="keywordtype">string</span> <a class="code" href="structPassenger_1_1PoolOptions.html#43eb2294bff16bbcbafec569babca883" title="Returns the app group name.">getAppGroupName</a>()<span class="keyword"> const </span>{
428
- <a name="l00406"></a>00406 <span class="keywordflow">if</span> (<a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a>.empty()) {
429
- <a name="l00407"></a>00407 <span class="keywordflow">return</span> appRoot;
430
- <a name="l00408"></a>00408 } <span class="keywordflow">else</span> {
431
- <a name="l00409"></a>00409 <span class="keywordflow">return</span> <a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a>;
432
- <a name="l00410"></a>00410 }
433
- <a name="l00411"></a>00411 }
434
- <a name="l00412"></a>00412 <span class="comment"></span>
435
- <a name="l00413"></a>00413 <span class="comment"> /**</span>
436
- <a name="l00414"></a>00414 <span class="comment"> * Serializes the items in environmentVariables into a string, which</span>
437
- <a name="l00415"></a>00415 <span class="comment"> * can be used to create a SimpleStringListCreator object.</span>
438
- <a name="l00416"></a>00416 <span class="comment"> *</span>
439
- <a name="l00417"></a>00417 <span class="comment"> * @throws Anything thrown by environmentVariables-&gt;getItems().</span>
440
- <a name="l00418"></a>00418 <span class="comment"> */</span>
441
- <a name="l00419"></a><a class="code" href="structPassenger_1_1PoolOptions.html#cb2df1a0b558e7fa457e46373c17b679">00419</a> <span class="keywordtype">string</span> <a class="code" href="structPassenger_1_1PoolOptions.html#cb2df1a0b558e7fa457e46373c17b679" title="Serializes the items in environmentVariables into a string, which can be used to...">serializeEnvironmentVariables</a>()<span class="keyword"> const </span>{
442
- <a name="l00420"></a>00420 vector&lt;string&gt;::const_iterator it, end;
443
- <a name="l00421"></a>00421 <span class="keywordtype">string</span> result;
444
- <a name="l00422"></a>00422
445
- <a name="l00423"></a>00423 <span class="keywordflow">if</span> (<a class="code" href="structPassenger_1_1PoolOptions.html#aa4f5d4ae1534ada8613fbe497a38924" title="Environment variables which should be passed to the spawned application process.">environmentVariables</a>) {
446
- <a name="l00424"></a>00424 result.reserve(1024);
447
- <a name="l00425"></a>00425
448
- <a name="l00426"></a>00426 StringListPtr items = <a class="code" href="structPassenger_1_1PoolOptions.html#aa4f5d4ae1534ada8613fbe497a38924" title="Environment variables which should be passed to the spawned application process.">environmentVariables</a>-&gt;getItems();
449
- <a name="l00427"></a>00427 end = items-&gt;end();
450
- <a name="l00428"></a>00428
451
- <a name="l00429"></a>00429 <span class="keywordflow">for</span> (it = items-&gt;begin(); it != end; it++) {
452
- <a name="l00430"></a>00430 result.append(*it);
453
- <a name="l00431"></a>00431 result.append(1, <span class="charliteral">'\0'</span>);
454
- <a name="l00432"></a>00432 it++;
455
- <a name="l00433"></a>00433 result.append(*it);
456
- <a name="l00434"></a>00434 result.append(1, <span class="charliteral">'\0'</span>);
457
- <a name="l00435"></a>00435 }
458
- <a name="l00436"></a>00436 }
459
- <a name="l00437"></a>00437 <span class="keywordflow">return</span> Base64::encode(result);
460
- <a name="l00438"></a>00438 }
461
- <a name="l00439"></a>00439
462
- <a name="l00440"></a>00440 <span class="keyword">private</span>:
463
- <a name="l00441"></a>00441 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
464
- <a name="l00442"></a>00442 appendKeyValue(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;value) {
465
- <a name="l00443"></a>00443 vec.push_back(key);
466
- <a name="l00444"></a>00444 vec.push_back(const_cast&lt;string &amp;&gt;(value));
467
- <a name="l00445"></a>00445 }
468
- <a name="l00446"></a>00446
469
- <a name="l00447"></a>00447 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
470
- <a name="l00448"></a>00448 appendKeyValue(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">char</span> *value) {
471
- <a name="l00449"></a>00449 vec.push_back(key);
472
- <a name="l00450"></a>00450 vec.push_back(value);
473
- <a name="l00451"></a>00451 }
474
- <a name="l00452"></a>00452
475
- <a name="l00453"></a>00453 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
476
- <a name="l00454"></a>00454 appendKeyValue2(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">long</span> value) {
477
- <a name="l00455"></a>00455 vec.push_back(key);
478
- <a name="l00456"></a>00456 vec.push_back(<a class="code" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString</a>(value));
479
- <a name="l00457"></a>00457 }
480
- <a name="l00458"></a>00458
481
- <a name="l00459"></a>00459 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
482
- <a name="l00460"></a>00460 appendKeyValue3(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value) {
483
- <a name="l00461"></a>00461 vec.push_back(key);
484
- <a name="l00462"></a>00462 vec.push_back(<a class="code" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString</a>(value));
485
- <a name="l00463"></a>00463 }
486
- <a name="l00464"></a>00464
487
- <a name="l00465"></a>00465 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
488
- <a name="l00466"></a>00466 appendKeyValue4(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">bool</span> value) {
489
- <a name="l00467"></a>00467 vec.push_back(key);
490
- <a name="l00468"></a>00468 vec.push_back(value ? <span class="stringliteral">"true"</span> : <span class="stringliteral">"false"</span>);
491
- <a name="l00469"></a>00469 }
492
- <a name="l00470"></a>00470 };
493
- <a name="l00471"></a>00471
494
- <a name="l00472"></a>00472 } <span class="comment">// namespace Passenger</span>
495
- <a name="l00473"></a>00473
496
- <a name="l00474"></a>00474 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_SPAWN_OPTIONS_H_ */</span>
497
- <a name="l00475"></a>00475
220
+ <a name="l00198"></a>00198 <span class="comment"> /** Whether debugger support should be enabled. */</span>
221
+ <a name="l00199"></a><a class="code" href="structPassenger_1_1PoolOptions.html#7ac23dee2503de627fe4a3ea346c3739">00199</a> <span class="keywordtype">bool</span> <a class="code" href="structPassenger_1_1PoolOptions.html#7ac23dee2503de627fe4a3ea346c3739" title="Whether debugger support should be enabled.">debugger</a>;
222
+ <a name="l00200"></a>00200 <span class="comment"></span>
223
+ <a name="l00201"></a>00201 <span class="comment"> /**</span>
224
+ <a name="l00202"></a>00202 <span class="comment"> * An analytics log object to log things to. May be the null pointer,</span>
225
+ <a name="l00203"></a>00203 <span class="comment"> * in which case analytics logging is disabled.</span>
226
+ <a name="l00204"></a>00204 <span class="comment"> */</span>
227
+ <a name="l00205"></a><a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612">00205</a> AnalyticsLogPtr <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>;
228
+ <a name="l00206"></a>00206 <span class="comment"></span>
229
+ <a name="l00207"></a>00207 <span class="comment"> /**</span>
230
+ <a name="l00208"></a>00208 <span class="comment"> * Whether the session returned by ApplicationPool::Interface::get()</span>
231
+ <a name="l00209"></a>00209 <span class="comment"> * should be automatically initiated. Defaults to true.</span>
232
+ <a name="l00210"></a>00210 <span class="comment"> */</span>
233
+ <a name="l00211"></a><a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076">00211</a> <span class="keywordtype">bool</span> <a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a>;
234
+ <a name="l00212"></a>00212 <span class="comment"></span>
235
+ <a name="l00213"></a>00213 <span class="comment"> /**</span>
236
+ <a name="l00214"></a>00214 <span class="comment"> * Whether application processes should print exceptions that occurred during</span>
237
+ <a name="l00215"></a>00215 <span class="comment"> * application initialization. Defaults to true.</span>
238
+ <a name="l00216"></a>00216 <span class="comment"> */</span>
239
+ <a name="l00217"></a><a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b">00217</a> <span class="keywordtype">bool</span> <a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a>;
240
+ <a name="l00218"></a>00218
241
+ <a name="l00219"></a>00219 <span class="comment">/*********************************/</span>
242
+ <a name="l00220"></a>00220 <span class="comment"></span>
243
+ <a name="l00221"></a>00221 <span class="comment"> /**</span>
244
+ <a name="l00222"></a>00222 <span class="comment"> * Creates a new PoolOptions object with the default values filled in.</span>
245
+ <a name="l00223"></a>00223 <span class="comment"> * One must still set appRoot manually, after having used this constructor.</span>
246
+ <a name="l00224"></a>00224 <span class="comment"> */</span>
247
+ <a name="l00225"></a><a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4">00225</a> <a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4" title="Creates a new PoolOptions object with the default values filled in.">PoolOptions</a>() {
248
+ <a name="l00226"></a>00226 <a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a> = <span class="stringliteral">"rails"</span>;
249
+ <a name="l00227"></a>00227 <a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a> = <span class="stringliteral">"production"</span>;
250
+ <a name="l00228"></a>00228 <a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a> = <span class="stringliteral">"smart-lv2"</span>;
251
+ <a name="l00229"></a>00229 <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a> = -1;
252
+ <a name="l00230"></a>00230 <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a> = -1;
253
+ <a name="l00231"></a>00231 <a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a> = <span class="stringliteral">"/"</span>;
254
+ <a name="l00232"></a>00232 <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a> = 0;
255
+ <a name="l00233"></a>00233 <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a> = 0;
256
+ <a name="l00234"></a>00234 <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a> = <span class="keyword">false</span>;
257
+ <a name="l00235"></a>00235 <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a> = 0;
258
+ <a name="l00236"></a>00236 <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a> = DEFAULT_BACKEND_ACCOUNT_RIGHTS;
259
+ <a name="l00237"></a>00237 <a class="code" href="structPassenger_1_1PoolOptions.html#7ac23dee2503de627fe4a3ea346c3739" title="Whether debugger support should be enabled.">debugger</a> = <span class="keyword">false</span>;
260
+ <a name="l00238"></a>00238 <a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a> = <span class="keyword">true</span>;
261
+ <a name="l00239"></a>00239 <a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a> = <span class="keyword">true</span>;
262
+ <a name="l00240"></a>00240
263
+ <a name="l00241"></a>00241 <span class="comment">/*********************************/</span>
264
+ <a name="l00242"></a>00242 }
265
+ <a name="l00243"></a>00243 <span class="comment"></span>
266
+ <a name="l00244"></a>00244 <span class="comment"> /**</span>
267
+ <a name="l00245"></a>00245 <span class="comment"> * Creates a new PoolOptions object with the given values.</span>
268
+ <a name="l00246"></a>00246 <span class="comment"> */</span>
269
+ <a name="l00247"></a><a class="code" href="structPassenger_1_1PoolOptions.html#435aca3700e957a4eb7afbe7dc50cd3d">00247</a> <a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4" title="Creates a new PoolOptions object with the default values filled in.">PoolOptions</a>(<span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3" title="The root directory of the application to spawn.">appRoot</a>,
270
+ <a name="l00248"></a>00248 <span class="keywordtype">string</span> <a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a> = <span class="stringliteral">""</span>,
271
+ <a name="l00249"></a>00249 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a> = <span class="stringliteral">"rails"</span>,
272
+ <a name="l00250"></a>00250 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a> = <span class="stringliteral">"production"</span>,
273
+ <a name="l00251"></a>00251 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a> = <span class="stringliteral">"smart-lv2"</span>,
274
+ <a name="l00252"></a>00252 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a> = <span class="stringliteral">""</span>,
275
+ <a name="l00253"></a>00253 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a> = <span class="stringliteral">""</span>,
276
+ <a name="l00254"></a>00254 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a> = <span class="stringliteral">""</span>,
277
+ <a name="l00255"></a>00255 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a> = <span class="stringliteral">""</span>,
278
+ <a name="l00256"></a>00256 <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a> = -1,
279
+ <a name="l00257"></a>00257 <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a> = -1,
280
+ <a name="l00258"></a>00258 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a> = <span class="stringliteral">"/"</span>,
281
+ <a name="l00259"></a>00259 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a> = 0,
282
+ <a name="l00260"></a>00260 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a> = 0,
283
+ <a name="l00261"></a>00261 <span class="keywordtype">bool</span> <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a> = <span class="keyword">false</span>,
284
+ <a name="l00262"></a>00262 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a> = 0,
285
+ <a name="l00263"></a>00263 <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a> = <span class="stringliteral">""</span>,
286
+ <a name="l00264"></a>00264 Account::Rights <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a> = DEFAULT_BACKEND_ACCOUNT_RIGHTS,
287
+ <a name="l00265"></a>00265 <span class="keywordtype">bool</span> <a class="code" href="structPassenger_1_1PoolOptions.html#7ac23dee2503de627fe4a3ea346c3739" title="Whether debugger support should be enabled.">debugger</a> = <span class="keyword">false</span>,
288
+ <a name="l00266"></a>00266 <span class="keyword">const</span> AnalyticsLogPtr &amp;<a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a> = AnalyticsLogPtr()
289
+ <a name="l00267"></a>00267 ) {
290
+ <a name="l00268"></a>00268 this-&gt;appRoot = appRoot;
291
+ <a name="l00269"></a>00269 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a>;
292
+ <a name="l00270"></a>00270 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a>;
293
+ <a name="l00271"></a>00271 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a>;
294
+ <a name="l00272"></a>00272 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a>;
295
+ <a name="l00273"></a>00273 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a>;
296
+ <a name="l00274"></a>00274 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a>;
297
+ <a name="l00275"></a>00275 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a>;
298
+ <a name="l00276"></a>00276 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a>;
299
+ <a name="l00277"></a>00277 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a>;
300
+ <a name="l00278"></a>00278 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a>;
301
+ <a name="l00279"></a>00279 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a>;
302
+ <a name="l00280"></a>00280 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a>;
303
+ <a name="l00281"></a>00281 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a>;
304
+ <a name="l00282"></a>00282 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a>;
305
+ <a name="l00283"></a>00283 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a>;
306
+ <a name="l00284"></a>00284 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a>;
307
+ <a name="l00285"></a>00285 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a>;
308
+ <a name="l00286"></a>00286 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#7ac23dee2503de627fe4a3ea346c3739" title="Whether debugger support should be enabled.">debugger</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#7ac23dee2503de627fe4a3ea346c3739" title="Whether debugger support should be enabled.">debugger</a>;
309
+ <a name="l00287"></a>00287 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a> = <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>;
310
+ <a name="l00288"></a>00288 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a> = <span class="keyword">true</span>;
311
+ <a name="l00289"></a>00289 this-&gt;<a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a> = <span class="keyword">true</span>;
312
+ <a name="l00290"></a>00290
313
+ <a name="l00291"></a>00291 <span class="comment">/*********************************/</span>
314
+ <a name="l00292"></a>00292 }
315
+ <a name="l00293"></a>00293 <span class="comment"></span>
316
+ <a name="l00294"></a>00294 <span class="comment"> /**</span>
317
+ <a name="l00295"></a>00295 <span class="comment"> * Creates a new PoolOptions object from the given string vector.</span>
318
+ <a name="l00296"></a>00296 <span class="comment"> * This vector contains information that's written to by toVector().</span>
319
+ <a name="l00297"></a>00297 <span class="comment"> *</span>
320
+ <a name="l00298"></a>00298 <span class="comment"> * For example:</span>
321
+ <a name="l00299"></a>00299 <span class="comment"> * @code</span>
322
+ <a name="l00300"></a>00300 <span class="comment"> * PoolOptions options(...);</span>
323
+ <a name="l00301"></a>00301 <span class="comment"> * vector&lt;string&gt; vec;</span>
324
+ <a name="l00302"></a>00302 <span class="comment"> *</span>
325
+ <a name="l00303"></a>00303 <span class="comment"> * vec.push_back("my");</span>
326
+ <a name="l00304"></a>00304 <span class="comment"> * vec.push_back("data");</span>
327
+ <a name="l00305"></a>00305 <span class="comment"> * options.toVector(vec); // PoolOptions information will start at index 2.</span>
328
+ <a name="l00306"></a>00306 <span class="comment"> *</span>
329
+ <a name="l00307"></a>00307 <span class="comment"> * PoolOptions copy(vec, 2);</span>
330
+ <a name="l00308"></a>00308 <span class="comment"> * @endcode</span>
331
+ <a name="l00309"></a>00309 <span class="comment"> *</span>
332
+ <a name="l00310"></a>00310 <span class="comment"> * @param vec The vector containing spawn options information.</span>
333
+ <a name="l00311"></a>00311 <span class="comment"> * @param startIndex The index in vec at which the information starts.</span>
334
+ <a name="l00312"></a>00312 <span class="comment"> * @param analyticsLogger If given, and the vector contains logging information,</span>
335
+ <a name="l00313"></a>00313 <span class="comment"> * then the 'log' member will be constructed using this logger.</span>
336
+ <a name="l00314"></a>00314 <span class="comment"> */</span>
337
+ <a name="l00315"></a><a class="code" href="structPassenger_1_1PoolOptions.html#0caa024c33da2f68b5c79b41122397b3">00315</a> <a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4" title="Creates a new PoolOptions object with the default values filled in.">PoolOptions</a>(<span class="keyword">const</span> vector&lt;string&gt; &amp;vec, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> startIndex = 0,
338
+ <a name="l00316"></a>00316 AnalyticsLoggerPtr analyticsLogger = AnalyticsLoggerPtr()
339
+ <a name="l00317"></a>00317 ) {
340
+ <a name="l00318"></a>00318 <span class="keywordtype">int</span> offset = 1;
341
+ <a name="l00319"></a>00319 <span class="keywordtype">bool</span> hasEnvVars;
342
+ <a name="l00320"></a>00320
343
+ <a name="l00321"></a>00321 appRoot = vec[startIndex + offset]; offset += 2;
344
+ <a name="l00322"></a>00322 <a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a> = vec[startIndex + offset]; offset += 2;
345
+ <a name="l00323"></a>00323 <a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a> = vec[startIndex + offset]; offset += 2;
346
+ <a name="l00324"></a>00324 <a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a> = vec[startIndex + offset]; offset += 2;
347
+ <a name="l00325"></a>00325 <a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a> = vec[startIndex + offset]; offset += 2;
348
+ <a name="l00326"></a>00326 <a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a> = vec[startIndex + offset]; offset += 2;
349
+ <a name="l00327"></a>00327 <a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a> = vec[startIndex + offset]; offset += 2;
350
+ <a name="l00328"></a>00328 <a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a> = vec[startIndex + offset]; offset += 2;
351
+ <a name="l00329"></a>00329 <a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a> = vec[startIndex + offset]; offset += 2;
352
+ <a name="l00330"></a>00330 <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
353
+ <a name="l00331"></a>00331 <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
354
+ <a name="l00332"></a>00332 <a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a> = vec[startIndex + offset]; offset += 2;
355
+ <a name="l00333"></a>00333 <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
356
+ <a name="l00334"></a>00334 <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
357
+ <a name="l00335"></a>00335 <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a> = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
358
+ <a name="l00336"></a>00336 <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a> = <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]); offset += 2;
359
+ <a name="l00337"></a>00337 <a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a> = vec[startIndex + offset]; offset += 2;
360
+ <a name="l00338"></a>00338 <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a> = (Account::Rights) <a class="code" href="group__Support.html#g7b50461f1bc2b370c956967870da2762" title="Converts the given string to a long integer.">atol</a>(vec[startIndex + offset]);
361
+ <a name="l00339"></a>00339 offset += 2;
362
+ <a name="l00340"></a>00340 <a class="code" href="structPassenger_1_1PoolOptions.html#7ac23dee2503de627fe4a3ea346c3739" title="Whether debugger support should be enabled.">debugger</a> = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
363
+ <a name="l00341"></a>00341 <span class="keywordflow">if</span> (vec[startIndex + offset - 1] == <span class="stringliteral">"analytics_log_group_name"</span>) {
364
+ <a name="l00342"></a>00342 <span class="keywordflow">if</span> (analyticsLogger != NULL) {
365
+ <a name="l00343"></a>00343 <span class="keywordtype">string</span> groupName = vec[startIndex + offset];
366
+ <a name="l00344"></a>00344 <span class="keywordtype">string</span> txnId = vec[startIndex + offset + 2];
367
+ <a name="l00345"></a>00345 <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a> = analyticsLogger-&gt;continueTransaction(groupName, txnId);
368
+ <a name="l00346"></a>00346 }
369
+ <a name="l00347"></a>00347 offset += 4;
370
+ <a name="l00348"></a>00348 }
371
+ <a name="l00349"></a>00349 <a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a> = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
372
+ <a name="l00350"></a>00350 <a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a> = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
373
+ <a name="l00351"></a>00351 hasEnvVars = vec[startIndex + offset] == <span class="stringliteral">"true"</span>; offset += 2;
374
+ <a name="l00352"></a>00352 <span class="keywordflow">if</span> (hasEnvVars) {
375
+ <a name="l00353"></a>00353 <a class="code" href="structPassenger_1_1PoolOptions.html#aa4f5d4ae1534ada8613fbe497a38924" title="Environment variables which should be passed to the spawned application process.">environmentVariables</a> = <a class="code" href="group__Support.html#g41b6c4a82fed72531a147de0505a8396" title="Convenience shortcut for creating a shared_ptr.">ptr</a>(<span class="keyword">new</span> SimpleStringListCreator(vec[startIndex + offset]));
376
+ <a name="l00354"></a>00354 }
377
+ <a name="l00355"></a>00355 offset += 2;
378
+ <a name="l00356"></a>00356
379
+ <a name="l00357"></a>00357 <span class="comment">/*********************************/</span>
380
+ <a name="l00358"></a>00358 }
381
+ <a name="l00359"></a>00359 <span class="comment"></span>
382
+ <a name="l00360"></a>00360 <span class="comment"> /**</span>
383
+ <a name="l00361"></a>00361 <span class="comment"> * Append the information in this PoolOptions object to the given</span>
384
+ <a name="l00362"></a>00362 <span class="comment"> * string vector. The resulting array could, for example, be used</span>
385
+ <a name="l00363"></a>00363 <span class="comment"> * as a message to be sent to the spawn server.</span>
386
+ <a name="l00364"></a>00364 <span class="comment"> *</span>
387
+ <a name="l00365"></a>00365 <span class="comment"> * @param vec The vector to store the information in.</span>
388
+ <a name="l00366"></a>00366 <span class="comment"> * @param storeEnvVars Whether to store environment variable information into vec as well.</span>
389
+ <a name="l00367"></a>00367 <span class="comment"> * @throws Anything thrown by environmentVariables-&gt;getItems().</span>
390
+ <a name="l00368"></a>00368 <span class="comment"> */</span>
391
+ <a name="l00369"></a><a class="code" href="structPassenger_1_1PoolOptions.html#437e077b0ab037f4e86680e9164a694e">00369</a> <span class="keywordtype">void</span> <a class="code" href="structPassenger_1_1PoolOptions.html#437e077b0ab037f4e86680e9164a694e" title="Append the information in this PoolOptions object to the given string vector.">toVector</a>(vector&lt;string&gt; &amp;vec, <span class="keywordtype">bool</span> storeEnvVars = <span class="keyword">true</span>)<span class="keyword"> const </span>{
392
+ <a name="l00370"></a>00370 <span class="keywordflow">if</span> (vec.capacity() &lt; vec.size() + 40) {
393
+ <a name="l00371"></a>00371 vec.reserve(vec.size() + 40);
394
+ <a name="l00372"></a>00372 }
395
+ <a name="l00373"></a>00373 appendKeyValue (vec, <span class="stringliteral">"app_root"</span>, appRoot);
396
+ <a name="l00374"></a>00374 appendKeyValue (vec, <span class="stringliteral">"app_group_name"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#43eb2294bff16bbcbafec569babca883" title="Returns the app group name.">getAppGroupName</a>());
397
+ <a name="l00375"></a>00375 appendKeyValue (vec, <span class="stringliteral">"app_type"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9" title="The application type.">appType</a>);
398
+ <a name="l00376"></a>00376 appendKeyValue (vec, <span class="stringliteral">"environment"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc" title="The RAILS_ENV/RACK_ENV environment that should be used.">environment</a>);
399
+ <a name="l00377"></a>00377 appendKeyValue (vec, <span class="stringliteral">"spawn_method"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e" title="Method with which application processes should be spawned.">spawnMethod</a>);
400
+ <a name="l00378"></a>00378 appendKeyValue (vec, <span class="stringliteral">"user"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#7bb617271b0a61645b17b9815ebf300c" title="See overview.">user</a>);
401
+ <a name="l00379"></a>00379 appendKeyValue (vec, <span class="stringliteral">"group"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#6292899199727c513fd641d313c42372" title="See class overview.">group</a>);
402
+ <a name="l00380"></a>00380 appendKeyValue (vec, <span class="stringliteral">"default_user"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#f9e15d356066ebd5f1454dca7937374f" title="See class overview.">defaultUser</a>);
403
+ <a name="l00381"></a>00381 appendKeyValue (vec, <span class="stringliteral">"default_group"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#fdbe6d3418132ff3ca17427778e0948c" title="See class overview.">defaultGroup</a>);
404
+ <a name="l00382"></a>00382 appendKeyValue2(vec, <span class="stringliteral">"framework_spawner_timeout"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70" title="The idle timeout, in seconds, of framework spawners.">frameworkSpawnerTimeout</a>);
405
+ <a name="l00383"></a>00383 appendKeyValue2(vec, <span class="stringliteral">"app_spawner_timeout"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf" title="The idle timeout, in seconds, of application spawners.">appSpawnerTimeout</a>);
406
+ <a name="l00384"></a>00384 appendKeyValue (vec, <span class="stringliteral">"base_uri"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#85c99df1b3d74b47c73049e20f0a7192" title="The base URI on which the application runs.">baseURI</a>);
407
+ <a name="l00385"></a>00385 appendKeyValue3(vec, <span class="stringliteral">"max_requests"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0" title="The maximum number of requests that the spawned application may process before exiting...">maxRequests</a>);
408
+ <a name="l00386"></a>00386 appendKeyValue3(vec, <span class="stringliteral">"min_processes"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#9d887031bbee2ad75ed88c8533ce41c1" title="The minimum number of processes for the current group that the application pool&amp;#39;s...">minProcesses</a>);
409
+ <a name="l00387"></a>00387 appendKeyValue4(vec, <span class="stringliteral">"use_global_queue"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e" title="Whether to use a global queue instead of a per-backend process queue.">useGlobalQueue</a>);
410
+ <a name="l00388"></a>00388 appendKeyValue3(vec, <span class="stringliteral">"stat_throttle_rate"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d" title="A throttling rate for file stats.">statThrottleRate</a>);
411
+ <a name="l00389"></a>00389 appendKeyValue (vec, <span class="stringliteral">"restart_dir"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5" title="The directory which contains restart.txt and always_restart.txt.">restartDir</a>);
412
+ <a name="l00390"></a>00390 appendKeyValue3(vec, <span class="stringliteral">"rights"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#45665fffc8a20ea60a3fcafaff8627ab" title="Any rights that the spawned application process may have.">rights</a>);
413
+ <a name="l00391"></a>00391 appendKeyValue4(vec, <span class="stringliteral">"debugger"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#7ac23dee2503de627fe4a3ea346c3739" title="Whether debugger support should be enabled.">debugger</a>);
414
+ <a name="l00392"></a>00392 <span class="keywordflow">if</span> (<a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>) {
415
+ <a name="l00393"></a>00393 appendKeyValue(vec, <span class="stringliteral">"analytics_log_group_name"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>-&gt;getGroupName());
416
+ <a name="l00394"></a>00394 appendKeyValue(vec, <span class="stringliteral">"analytics_log_id"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#ce54185a9981f103a036a7ac3e768612" title="An analytics log object to log things to.">log</a>-&gt;getTxnId());
417
+ <a name="l00395"></a>00395 }
418
+ <a name="l00396"></a>00396 appendKeyValue4(vec, <span class="stringliteral">"initiate_session"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#1709d96d9d5d59ce79c90434a45cb076" title="Whether the session returned by ApplicationPool::Interface::get() should be automatically...">initiateSession</a>);
419
+ <a name="l00397"></a>00397 appendKeyValue4(vec, <span class="stringliteral">"print_exceptions"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#d3d545cee2806198797fc6b4197ff87b" title="Whether application processes should print exceptions that occurred during application...">printExceptions</a>);
420
+ <a name="l00398"></a>00398 <span class="keywordflow">if</span> (storeEnvVars) {
421
+ <a name="l00399"></a>00399 appendKeyValue(vec, <span class="stringliteral">"has_environment_variables"</span>, <span class="stringliteral">"true"</span>);
422
+ <a name="l00400"></a>00400 appendKeyValue(vec, <span class="stringliteral">"environment_variables"</span>, <a class="code" href="structPassenger_1_1PoolOptions.html#cb2df1a0b558e7fa457e46373c17b679" title="Serializes the items in environmentVariables into a string, which can be used to...">serializeEnvironmentVariables</a>());
423
+ <a name="l00401"></a>00401 } <span class="keywordflow">else</span> {
424
+ <a name="l00402"></a>00402 appendKeyValue(vec, <span class="stringliteral">"has_environment_variables"</span>, <span class="stringliteral">"false"</span>);
425
+ <a name="l00403"></a>00403 appendKeyValue(vec, <span class="stringliteral">"environment_variables"</span>, <span class="stringliteral">""</span>);
426
+ <a name="l00404"></a>00404 }
427
+ <a name="l00405"></a>00405
428
+ <a name="l00406"></a>00406 <span class="comment">/*********************************/</span>
429
+ <a name="l00407"></a>00407 }
430
+ <a name="l00408"></a>00408 <span class="comment"></span>
431
+ <a name="l00409"></a>00409 <span class="comment"> /**</span>
432
+ <a name="l00410"></a>00410 <span class="comment"> * Returns the app group name. If there is no explicitly set app group name</span>
433
+ <a name="l00411"></a>00411 <span class="comment"> * then the app root is considered to be the app group name.</span>
434
+ <a name="l00412"></a>00412 <span class="comment"> */</span>
435
+ <a name="l00413"></a><a class="code" href="structPassenger_1_1PoolOptions.html#43eb2294bff16bbcbafec569babca883">00413</a> <span class="keywordtype">string</span> <a class="code" href="structPassenger_1_1PoolOptions.html#43eb2294bff16bbcbafec569babca883" title="Returns the app group name.">getAppGroupName</a>()<span class="keyword"> const </span>{
436
+ <a name="l00414"></a>00414 <span class="keywordflow">if</span> (<a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a>.empty()) {
437
+ <a name="l00415"></a>00415 <span class="keywordflow">return</span> appRoot;
438
+ <a name="l00416"></a>00416 } <span class="keywordflow">else</span> {
439
+ <a name="l00417"></a>00417 <span class="keywordflow">return</span> <a class="code" href="structPassenger_1_1PoolOptions.html#dce57f30c4f33d8b55726d0eaa15addf" title="A name used by ApplicationPool to uniquely identify an application.">appGroupName</a>;
440
+ <a name="l00418"></a>00418 }
441
+ <a name="l00419"></a>00419 }
442
+ <a name="l00420"></a>00420 <span class="comment"></span>
443
+ <a name="l00421"></a>00421 <span class="comment"> /**</span>
444
+ <a name="l00422"></a>00422 <span class="comment"> * Serializes the items in environmentVariables into a string, which</span>
445
+ <a name="l00423"></a>00423 <span class="comment"> * can be used to create a SimpleStringListCreator object.</span>
446
+ <a name="l00424"></a>00424 <span class="comment"> *</span>
447
+ <a name="l00425"></a>00425 <span class="comment"> * @throws Anything thrown by environmentVariables-&gt;getItems().</span>
448
+ <a name="l00426"></a>00426 <span class="comment"> */</span>
449
+ <a name="l00427"></a><a class="code" href="structPassenger_1_1PoolOptions.html#cb2df1a0b558e7fa457e46373c17b679">00427</a> <span class="keywordtype">string</span> <a class="code" href="structPassenger_1_1PoolOptions.html#cb2df1a0b558e7fa457e46373c17b679" title="Serializes the items in environmentVariables into a string, which can be used to...">serializeEnvironmentVariables</a>()<span class="keyword"> const </span>{
450
+ <a name="l00428"></a>00428 vector&lt;string&gt;::const_iterator it, end;
451
+ <a name="l00429"></a>00429 <span class="keywordtype">string</span> result;
452
+ <a name="l00430"></a>00430
453
+ <a name="l00431"></a>00431 <span class="keywordflow">if</span> (<a class="code" href="structPassenger_1_1PoolOptions.html#aa4f5d4ae1534ada8613fbe497a38924" title="Environment variables which should be passed to the spawned application process.">environmentVariables</a>) {
454
+ <a name="l00432"></a>00432 result.reserve(1024);
455
+ <a name="l00433"></a>00433
456
+ <a name="l00434"></a>00434 StringListPtr items = <a class="code" href="structPassenger_1_1PoolOptions.html#aa4f5d4ae1534ada8613fbe497a38924" title="Environment variables which should be passed to the spawned application process.">environmentVariables</a>-&gt;getItems();
457
+ <a name="l00435"></a>00435 end = items-&gt;end();
458
+ <a name="l00436"></a>00436
459
+ <a name="l00437"></a>00437 <span class="keywordflow">for</span> (it = items-&gt;begin(); it != end; it++) {
460
+ <a name="l00438"></a>00438 result.append(*it);
461
+ <a name="l00439"></a>00439 result.append(1, <span class="charliteral">'\0'</span>);
462
+ <a name="l00440"></a>00440 it++;
463
+ <a name="l00441"></a>00441 result.append(*it);
464
+ <a name="l00442"></a>00442 result.append(1, <span class="charliteral">'\0'</span>);
465
+ <a name="l00443"></a>00443 }
466
+ <a name="l00444"></a>00444 }
467
+ <a name="l00445"></a>00445 <span class="keywordflow">return</span> Base64::encode(result);
468
+ <a name="l00446"></a>00446 }
469
+ <a name="l00447"></a>00447
470
+ <a name="l00448"></a>00448 <span class="keyword">private</span>:
471
+ <a name="l00449"></a>00449 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
472
+ <a name="l00450"></a>00450 appendKeyValue(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">string</span> &amp;value) {
473
+ <a name="l00451"></a>00451 vec.push_back(key);
474
+ <a name="l00452"></a>00452 vec.push_back(const_cast&lt;string &amp;&gt;(value));
475
+ <a name="l00453"></a>00453 }
476
+ <a name="l00454"></a>00454
477
+ <a name="l00455"></a>00455 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
478
+ <a name="l00456"></a>00456 appendKeyValue(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">char</span> *value) {
479
+ <a name="l00457"></a>00457 vec.push_back(key);
480
+ <a name="l00458"></a>00458 vec.push_back(value);
481
+ <a name="l00459"></a>00459 }
482
+ <a name="l00460"></a>00460
483
+ <a name="l00461"></a>00461 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
484
+ <a name="l00462"></a>00462 appendKeyValue2(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">long</span> value) {
485
+ <a name="l00463"></a>00463 vec.push_back(key);
486
+ <a name="l00464"></a>00464 vec.push_back(<a class="code" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString</a>(value));
487
+ <a name="l00465"></a>00465 }
488
+ <a name="l00466"></a>00466
489
+ <a name="l00467"></a>00467 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
490
+ <a name="l00468"></a>00468 appendKeyValue3(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value) {
491
+ <a name="l00469"></a>00469 vec.push_back(key);
492
+ <a name="l00470"></a>00470 vec.push_back(<a class="code" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString</a>(value));
493
+ <a name="l00471"></a>00471 }
494
+ <a name="l00472"></a>00472
495
+ <a name="l00473"></a>00473 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span>
496
+ <a name="l00474"></a>00474 appendKeyValue4(vector&lt;string&gt; &amp;vec, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">bool</span> value) {
497
+ <a name="l00475"></a>00475 vec.push_back(key);
498
+ <a name="l00476"></a>00476 vec.push_back(value ? <span class="stringliteral">"true"</span> : <span class="stringliteral">"false"</span>);
499
+ <a name="l00477"></a>00477 }
500
+ <a name="l00478"></a>00478 };
501
+ <a name="l00479"></a>00479
502
+ <a name="l00480"></a>00480 } <span class="comment">// namespace Passenger</span>
503
+ <a name="l00481"></a>00481
504
+ <a name="l00482"></a>00482 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_SPAWN_OPTIONS_H_ */</span>
505
+ <a name="l00483"></a>00483
498
506
  </pre></div></div>
499
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Feb 21 12:22:46 2010 for Passenger by&nbsp;
507
+ <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:56 2010 for Passenger by&nbsp;
500
508
  <a href="http://www.doxygen.org/index.html">
501
509
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
502
510
  </body>