passenger 2.2.15 → 3.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (1338) hide show
  1. data/DEVELOPERS.TXT +21 -12
  2. data/LICENSE +1 -1
  3. data/NEWS +8 -1
  4. data/PACKAGING.TXT +25 -0
  5. data/Rakefile +28 -891
  6. data/bin/passenger +32 -0
  7. data/bin/passenger-config +5 -5
  8. data/bin/passenger-install-apache2-module +37 -24
  9. data/bin/passenger-install-nginx-module +48 -46
  10. data/bin/passenger-make-enterprisey +8 -9
  11. data/bin/passenger-memory-stats +20 -150
  12. data/bin/passenger-status +130 -44
  13. data/bin/passenger-stress-test +5 -4
  14. data/build/agents.rb +73 -0
  15. data/build/apache2.rb +165 -0
  16. data/build/basics.rb +81 -0
  17. data/build/common_library.rb +198 -0
  18. data/build/config.rb +35 -0
  19. data/{misc/rake/cplusplus.rb → build/cplusplus_support.rb} +1 -1
  20. data/build/cxx_tests.rb +205 -0
  21. data/build/documentation.rb +77 -0
  22. data/{misc/rake → build}/gempackagetask.rb +1 -1
  23. data/build/integration_tests.rb +57 -0
  24. data/build/misc.rb +146 -0
  25. data/build/nginx.rb +64 -0
  26. data/build/oxt_tests.rb +52 -0
  27. data/{misc/rake → build}/packagetask.rb +0 -0
  28. data/build/packaging.rb +189 -0
  29. data/{misc/rake/extensions.rb → build/rake_extensions.rb} +1 -1
  30. data/{misc/rake → build}/rdoctask.rb +0 -0
  31. data/build/ruby_extension.rb +46 -0
  32. data/build/ruby_tests.rb +42 -0
  33. data/build/test_basics.rb +31 -0
  34. data/doc/ApplicationPool algorithm.txt +447 -234
  35. data/doc/Architectural overview.html +47 -56
  36. data/doc/Doxyfile +1 -1
  37. data/doc/Security of user switching support.html +46 -57
  38. data/doc/Users guide Apache.html +1033 -306
  39. data/doc/Users guide Apache.txt +419 -99
  40. data/doc/Users guide Nginx.html +1252 -253
  41. data/doc/Users guide Nginx.txt +711 -87
  42. data/doc/Users guide Standalone.html +603 -0
  43. data/doc/Users guide Standalone.txt +40 -0
  44. data/doc/cxxapi/AbstractSpawnManager_8h_source.html +141 -0
  45. data/doc/cxxapi/Account_8h_source.html +206 -0
  46. data/doc/cxxapi/AccountsDatabase_8h_source.html +161 -0
  47. data/doc/cxxapi/AgentBase_8h_source.html +70 -0
  48. data/doc/cxxapi/AgentsStarter_8h_source.html +112 -0
  49. data/doc/cxxapi/BCrypt_8h_source.html +104 -0
  50. data/doc/cxxapi/Blowfish_8h_source.html +134 -0
  51. data/doc/cxxapi/Bucket_8h_source.html +4 -3
  52. data/doc/cxxapi/Constants_8h_source.html +79 -0
  53. data/doc/cxxapi/ContentHandler_8h_source.html +95 -0
  54. data/doc/cxxapi/DirectoryMapper_8h_source.html +9 -8
  55. data/doc/cxxapi/EventedClient_8h_source.html +629 -0
  56. data/doc/cxxapi/EventedMessageServer_8h_source.html +358 -0
  57. data/doc/cxxapi/EventedServer_8h_source.html +326 -0
  58. data/doc/cxxapi/Exceptions_8h_source.html +366 -0
  59. data/doc/cxxapi/FileDescriptor_8h_source.html +260 -0
  60. data/doc/cxxapi/Hooks_8h_source.html +2 -1
  61. data/doc/cxxapi/HttpStatusExtractor_8h_source.html +382 -0
  62. data/doc/cxxapi/Logging_8h_source.html +726 -0
  63. data/doc/cxxapi/MessageChannel_8h_source.html +852 -0
  64. data/doc/cxxapi/MessageClient_8h_source.html +328 -0
  65. data/doc/cxxapi/MessageReadersWriters_8h_source.html +539 -0
  66. data/doc/cxxapi/MessageServer_8h_source.html +606 -0
  67. data/doc/cxxapi/PoolOptions_8h_source.html +548 -0
  68. data/doc/cxxapi/Process_8h_source.html +286 -0
  69. data/doc/cxxapi/RandomGenerator_8h_source.html +191 -0
  70. data/doc/cxxapi/ResourceLocator_8h_source.html +115 -0
  71. data/doc/cxxapi/ScgiRequestParser_8h_source.html +406 -0
  72. data/doc/cxxapi/ServerInstanceDir_8h_source.html +374 -0
  73. data/doc/cxxapi/Session_8h_source.html +501 -0
  74. data/doc/cxxapi/SpawnManager_8h_source.html +647 -0
  75. data/doc/cxxapi/StaticContentHandler_8h_source.html +68 -0
  76. data/doc/cxxapi/StaticString_8h_source.html +254 -0
  77. data/doc/cxxapi/StringListCreator_8h_source.html +114 -0
  78. data/doc/cxxapi/Utils_8h_source.html +442 -0
  79. data/doc/cxxapi/annotated.html +46 -0
  80. data/doc/cxxapi/apache2_2Configuration_8h_source.html +82 -0
  81. data/doc/cxxapi/classAgentWatcher-members.html +30 -26
  82. data/doc/cxxapi/classAgentWatcher.html +168 -194
  83. data/doc/cxxapi/classClient-members.html +14 -11
  84. data/doc/cxxapi/classClient.html +35 -35
  85. data/doc/cxxapi/classHooks-members.html +2 -0
  86. data/doc/cxxapi/classHooks.html +2 -0
  87. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager-members.html +16 -13
  88. data/doc/cxxapi/classPassenger_1_1AbstractSpawnManager.html +78 -82
  89. data/doc/cxxapi/classPassenger_1_1ArgumentException-members.html +12 -9
  90. data/doc/cxxapi/classPassenger_1_1ArgumentException.html +26 -22
  91. data/doc/cxxapi/classPassenger_1_1ArrayMessage-members.html +37 -0
  92. data/doc/cxxapi/classPassenger_1_1ArrayMessage.html +113 -0
  93. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +14 -11
  94. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +41 -42
  95. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +12 -9
  96. data/doc/cxxapi/classPassenger_1_1BusyException.html +24 -20
  97. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +12 -9
  98. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +23 -19
  99. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +2 -0
  100. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +8 -6
  101. data/doc/cxxapi/classPassenger_1_1EOFException-members.html +12 -9
  102. data/doc/cxxapi/classPassenger_1_1EOFException.html +27 -23
  103. data/doc/cxxapi/classPassenger_1_1EventFd-members.html +12 -9
  104. data/doc/cxxapi/classPassenger_1_1EventFd.html +24 -21
  105. data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +54 -0
  106. data/doc/cxxapi/classPassenger_1_1EventedClient.html +436 -0
  107. data/doc/cxxapi/classPassenger_1_1EventedMessageServer-members.html +37 -0
  108. data/doc/cxxapi/classPassenger_1_1EventedMessageServer.html +59 -0
  109. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.map +3 -0
  110. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.md5 +1 -0
  111. data/doc/cxxapi/classPassenger_1_1EventedMessageServer__inherit__graph.png +0 -0
  112. data/doc/cxxapi/classPassenger_1_1EventedServer-members.html +37 -0
  113. data/doc/cxxapi/classPassenger_1_1EventedServer.html +93 -0
  114. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.map +3 -0
  115. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.md5 +1 -0
  116. data/doc/cxxapi/classPassenger_1_1EventedServer__inherit__graph.png +0 -0
  117. data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +16 -13
  118. data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +63 -70
  119. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +12 -9
  120. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +26 -22
  121. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +17 -14
  122. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +32 -30
  123. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor-members.html +15 -12
  124. data/doc/cxxapi/classPassenger_1_1HttpStatusExtractor.html +59 -59
  125. data/doc/cxxapi/classPassenger_1_1IOException-members.html +12 -9
  126. data/doc/cxxapi/classPassenger_1_1IOException.html +27 -23
  127. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +36 -33
  128. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +326 -344
  129. data/doc/cxxapi/classPassenger_1_1MessageServer-members.html +25 -22
  130. data/doc/cxxapi/classPassenger_1_1MessageServer.html +160 -191
  131. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext-members.html +12 -9
  132. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext.html +29 -27
  133. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.map +3 -1
  134. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.md5 +1 -1
  135. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1ClientContext__inherit__graph.png +0 -0
  136. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext-members.html +17 -14
  137. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext.html +69 -79
  138. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.map +3 -1
  139. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.md5 +1 -1
  140. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1CommonClientContext__inherit__graph.png +0 -0
  141. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler-members.html +15 -12
  142. data/doc/cxxapi/classPassenger_1_1MessageServer_1_1Handler.html +60 -63
  143. data/doc/cxxapi/classPassenger_1_1Process-members.html +20 -17
  144. data/doc/cxxapi/classPassenger_1_1Process.html +88 -95
  145. data/doc/cxxapi/classPassenger_1_1RandomGenerator-members.html +13 -10
  146. data/doc/cxxapi/classPassenger_1_1RandomGenerator.html +36 -35
  147. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +12 -9
  148. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +24 -20
  149. data/doc/cxxapi/classPassenger_1_1ScalarMessage-members.html +37 -0
  150. data/doc/cxxapi/classPassenger_1_1ScalarMessage.html +76 -0
  151. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser-members.html +26 -23
  152. data/doc/cxxapi/classPassenger_1_1ScgiRequestParser.html +121 -138
  153. data/doc/cxxapi/classPassenger_1_1SecurityException-members.html +12 -9
  154. data/doc/cxxapi/classPassenger_1_1SecurityException.html +26 -22
  155. data/doc/cxxapi/classPassenger_1_1Session-members.html +29 -26
  156. data/doc/cxxapi/classPassenger_1_1Session.html +219 -240
  157. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +14 -11
  158. data/doc/cxxapi/classPassenger_1_1SpawnException.html +36 -37
  159. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +18 -15
  160. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +115 -110
  161. data/doc/cxxapi/classPassenger_1_1StandardSession-members.html +30 -27
  162. data/doc/cxxapi/classPassenger_1_1StandardSession.html +163 -184
  163. data/doc/cxxapi/classPassenger_1_1StaticString-members.html +12 -9
  164. data/doc/cxxapi/classPassenger_1_1StaticString.html +27 -25
  165. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +16 -13
  166. data/doc/cxxapi/classPassenger_1_1SystemException.html +65 -67
  167. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException-members.html +16 -13
  168. data/doc/cxxapi/classPassenger_1_1TimeRetrievalException.html +27 -23
  169. data/doc/cxxapi/classPassenger_1_1TimeoutException-members.html +12 -9
  170. data/doc/cxxapi/classPassenger_1_1TimeoutException.html +24 -20
  171. data/doc/cxxapi/classPassenger_1_1Uint16Message-members.html +36 -0
  172. data/doc/cxxapi/classPassenger_1_1Uint16Message.html +51 -0
  173. data/doc/cxxapi/classPassenger_1_1Uint32Message-members.html +36 -0
  174. data/doc/cxxapi/classPassenger_1_1Uint32Message.html +51 -0
  175. data/doc/cxxapi/classServer-members.html +12 -9
  176. data/doc/cxxapi/classServer.html +23 -20
  177. data/doc/cxxapi/classServerInstanceDirToucher-members.html +12 -9
  178. data/doc/cxxapi/classServerInstanceDirToucher.html +21 -17
  179. data/doc/cxxapi/classes.html +18 -4
  180. data/doc/cxxapi/definitions_8h_source.html +1 -0
  181. data/doc/cxxapi/files.html +36 -1
  182. data/doc/cxxapi/functions.html +53 -21
  183. data/doc/cxxapi/functions_0x62.html +82 -0
  184. data/doc/cxxapi/functions_0x63.html +99 -0
  185. data/doc/cxxapi/functions_0x64.html +95 -0
  186. data/doc/cxxapi/functions_0x65.html +88 -0
  187. data/doc/cxxapi/functions_0x66.html +100 -0
  188. data/doc/cxxapi/functions_0x67.html +170 -0
  189. data/doc/cxxapi/functions_0x68.html +88 -0
  190. data/doc/cxxapi/functions_0x69.html +93 -0
  191. data/doc/cxxapi/functions_0x6b.html +80 -0
  192. data/doc/cxxapi/functions_0x6c.html +88 -0
  193. data/doc/cxxapi/functions_0x6d.html +88 -0
  194. data/doc/cxxapi/functions_0x6e.html +86 -0
  195. data/doc/cxxapi/functions_0x6f.html +94 -0
  196. data/doc/cxxapi/functions_0x70.html +94 -0
  197. data/doc/cxxapi/functions_0x72.html +110 -0
  198. data/doc/cxxapi/functions_0x73.html +171 -0
  199. data/doc/cxxapi/functions_0x74.html +85 -0
  200. data/doc/cxxapi/functions_0x75.html +85 -0
  201. data/doc/cxxapi/functions_0x77.html +92 -0
  202. data/doc/cxxapi/functions_0x7e.html +79 -0
  203. data/doc/cxxapi/functions_enum.html +14 -12
  204. data/doc/cxxapi/functions_eval.html +22 -16
  205. data/doc/cxxapi/functions_func.html +460 -1
  206. data/doc/cxxapi/functions_vars.html +163 -63
  207. data/doc/cxxapi/graph_legend.html +1 -0
  208. data/doc/cxxapi/graph_legend.png +0 -0
  209. data/doc/cxxapi/group__Core.html +2 -2
  210. data/doc/cxxapi/group__Core.map +1 -2
  211. data/doc/cxxapi/group__Core.png +0 -0
  212. data/doc/cxxapi/group__Exceptions.html +32 -40
  213. data/doc/cxxapi/group__Hooks.html +2 -1
  214. data/doc/cxxapi/group__Hooks.map +1 -1
  215. data/doc/cxxapi/group__Hooks.png +0 -0
  216. data/doc/cxxapi/group__Support.html +509 -0
  217. data/doc/cxxapi/hierarchy.html +66 -62
  218. data/doc/cxxapi/inherit__graph__10.map +3 -1
  219. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  220. data/doc/cxxapi/inherit__graph__10.png +0 -0
  221. data/doc/cxxapi/inherit__graph__11.map +4 -1
  222. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  223. data/doc/cxxapi/inherit__graph__11.png +0 -0
  224. data/doc/cxxapi/inherit__graph__12.map +3 -1
  225. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  226. data/doc/cxxapi/inherit__graph__12.png +0 -0
  227. data/doc/cxxapi/inherit__graph__13.map +3 -1
  228. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  229. data/doc/cxxapi/inherit__graph__13.png +0 -0
  230. data/doc/cxxapi/inherit__graph__14.map +3 -1
  231. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  232. data/doc/cxxapi/inherit__graph__14.png +0 -0
  233. data/doc/cxxapi/inherit__graph__15.map +5 -1
  234. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  235. data/doc/cxxapi/inherit__graph__15.png +0 -0
  236. data/doc/cxxapi/inherit__graph__16.map +3 -3
  237. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  238. data/doc/cxxapi/inherit__graph__16.png +0 -0
  239. data/doc/cxxapi/inherit__graph__17.map +3 -1
  240. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  241. data/doc/cxxapi/inherit__graph__17.png +0 -0
  242. data/doc/cxxapi/inherit__graph__18.map +4 -1
  243. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  244. data/doc/cxxapi/inherit__graph__18.png +0 -0
  245. data/doc/cxxapi/inherit__graph__19.map +3 -1
  246. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  247. data/doc/cxxapi/inherit__graph__19.png +0 -0
  248. data/doc/cxxapi/inherit__graph__20.map +3 -2
  249. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  250. data/doc/cxxapi/inherit__graph__20.png +0 -0
  251. data/doc/cxxapi/inherit__graph__21.map +3 -1
  252. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  253. data/doc/cxxapi/inherit__graph__21.png +0 -0
  254. data/doc/cxxapi/inherit__graph__22.map +3 -1
  255. data/doc/cxxapi/inherit__graph__22.md5 +1 -1
  256. data/doc/cxxapi/inherit__graph__22.png +0 -0
  257. data/doc/cxxapi/inherit__graph__23.map +3 -1
  258. data/doc/cxxapi/inherit__graph__23.md5 +1 -1
  259. data/doc/cxxapi/inherit__graph__23.png +0 -0
  260. data/doc/cxxapi/inherit__graph__24.map +3 -1
  261. data/doc/cxxapi/inherit__graph__24.md5 +1 -1
  262. data/doc/cxxapi/inherit__graph__24.png +0 -0
  263. data/doc/cxxapi/inherit__graph__25.map +3 -1
  264. data/doc/cxxapi/inherit__graph__25.md5 +1 -1
  265. data/doc/cxxapi/inherit__graph__25.png +0 -0
  266. data/doc/cxxapi/inherit__graph__26.map +3 -1
  267. data/doc/cxxapi/inherit__graph__26.md5 +1 -1
  268. data/doc/cxxapi/inherit__graph__26.png +0 -0
  269. data/doc/cxxapi/inherit__graph__27.map +3 -1
  270. data/doc/cxxapi/inherit__graph__27.md5 +1 -1
  271. data/doc/cxxapi/inherit__graph__27.png +0 -0
  272. data/doc/cxxapi/inherit__graph__28.map +4 -1
  273. data/doc/cxxapi/inherit__graph__28.md5 +1 -1
  274. data/doc/cxxapi/inherit__graph__28.png +0 -0
  275. data/doc/cxxapi/inherit__graph__29.map +3 -1
  276. data/doc/cxxapi/inherit__graph__29.md5 +1 -1
  277. data/doc/cxxapi/inherit__graph__29.png +0 -0
  278. data/doc/cxxapi/inherit__graph__30.map +3 -2
  279. data/doc/cxxapi/inherit__graph__30.md5 +1 -1
  280. data/doc/cxxapi/inherit__graph__30.png +0 -0
  281. data/doc/cxxapi/inherit__graph__31.map +3 -1
  282. data/doc/cxxapi/inherit__graph__31.md5 +1 -1
  283. data/doc/cxxapi/inherit__graph__31.png +0 -0
  284. data/doc/cxxapi/inherit__graph__32.map +5 -1
  285. data/doc/cxxapi/inherit__graph__32.md5 +1 -1
  286. data/doc/cxxapi/inherit__graph__32.png +0 -0
  287. data/doc/cxxapi/inherit__graph__33.map +3 -1
  288. data/doc/cxxapi/inherit__graph__33.md5 +1 -1
  289. data/doc/cxxapi/inherit__graph__33.png +0 -0
  290. data/doc/cxxapi/inherit__graph__34.map +3 -3
  291. data/doc/cxxapi/inherit__graph__34.md5 +1 -1
  292. data/doc/cxxapi/inherit__graph__34.png +0 -0
  293. data/doc/cxxapi/inherit__graph__35.map +3 -1
  294. data/doc/cxxapi/inherit__graph__35.md5 +1 -1
  295. data/doc/cxxapi/inherit__graph__35.png +0 -0
  296. data/doc/cxxapi/inherit__graph__36.map +3 -1
  297. data/doc/cxxapi/inherit__graph__36.md5 +1 -1
  298. data/doc/cxxapi/inherit__graph__36.png +0 -0
  299. data/doc/cxxapi/inherit__graph__37.map +3 -1
  300. data/doc/cxxapi/inherit__graph__37.md5 +1 -1
  301. data/doc/cxxapi/inherit__graph__37.png +0 -0
  302. data/doc/cxxapi/inherit__graph__4.map +3 -1
  303. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  304. data/doc/cxxapi/inherit__graph__4.png +0 -0
  305. data/doc/cxxapi/inherit__graph__5.map +3 -1
  306. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  307. data/doc/cxxapi/inherit__graph__5.png +0 -0
  308. data/doc/cxxapi/inherit__graph__6.map +3 -1
  309. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  310. data/doc/cxxapi/inherit__graph__6.png +0 -0
  311. data/doc/cxxapi/inherit__graph__7.map +3 -1
  312. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  313. data/doc/cxxapi/inherit__graph__7.png +0 -0
  314. data/doc/cxxapi/inherit__graph__8.map +3 -1
  315. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  316. data/doc/cxxapi/inherit__graph__8.png +0 -0
  317. data/doc/cxxapi/inherit__graph__9.map +3 -1
  318. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  319. data/doc/cxxapi/inherit__graph__9.png +0 -0
  320. data/doc/cxxapi/inherits.html +123 -126
  321. data/doc/cxxapi/main.html +1 -0
  322. data/doc/cxxapi/modules.html +2 -1
  323. data/doc/cxxapi/namespacePassenger.html +263 -492
  324. data/doc/cxxapi/namespacemembers.html +68 -96
  325. data/doc/cxxapi/namespacemembers_enum.html +14 -12
  326. data/doc/cxxapi/namespacemembers_eval.html +20 -15
  327. data/doc/cxxapi/namespacemembers_func.html +52 -88
  328. data/doc/cxxapi/namespacemembers_type.html +18 -14
  329. data/doc/cxxapi/namespaces.html +12 -9
  330. data/doc/cxxapi/nginx_2Configuration_8h_source.html +125 -0
  331. data/doc/cxxapi/ngx__http__passenger__module_8h_source.html +94 -0
  332. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard-members.html +12 -9
  333. data/doc/cxxapi/structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html +24 -22
  334. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +43 -38
  335. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +275 -325
  336. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash-members.html +12 -9
  337. data/doc/cxxapi/structPassenger_1_1StaticString_1_1Hash.html +24 -22
  338. data/doc/cxxapi/tree.html +152 -7
  339. data/doc/users_guide_snippets/{analysis_and_system_maintenance_tools.txt → analysis_and_system_maintenance.txt} +58 -1
  340. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +1 -2
  341. data/doc/users_guide_snippets/global_queueing_explained.txt +1 -5
  342. data/doc/users_guide_snippets/{rails_spawn_method.txt → passenger_spawn_method.txt} +9 -8
  343. data/doc/users_guide_snippets/tips.txt +12 -6
  344. data/doc/users_guide_snippets/under_the_hood/page_caching_support.txt +22 -0
  345. data/ext/apache2/Bucket.cpp +4 -4
  346. data/ext/apache2/Bucket.h +3 -3
  347. data/ext/apache2/Configuration.cpp +278 -381
  348. data/ext/apache2/Configuration.h +3 -357
  349. data/ext/apache2/Configuration.hpp +461 -0
  350. data/ext/apache2/DirectoryMapper.h +3 -3
  351. data/ext/apache2/HelperAgent.cpp +359 -0
  352. data/ext/apache2/Hooks.cpp +339 -226
  353. data/ext/apache2/Hooks.h +1 -1
  354. data/ext/apache2/mod_passenger.c +10 -4
  355. data/ext/boost/algorithm/string/case_conv.hpp +4 -4
  356. data/ext/boost/algorithm/string/concept.hpp +2 -2
  357. data/ext/boost/algorithm/string/detail/case_conv.hpp +18 -9
  358. data/ext/boost/algorithm/string/detail/find_format.hpp +44 -43
  359. data/ext/boost/algorithm/string/detail/find_format_all.hpp +56 -56
  360. data/ext/boost/algorithm/string/detail/find_format_store.hpp +7 -0
  361. data/ext/boost/algorithm/string/detail/finder.hpp +14 -14
  362. data/ext/boost/algorithm/string/detail/formatter.hpp +2 -2
  363. data/ext/boost/algorithm/string/detail/replace_storage.hpp +3 -3
  364. data/ext/boost/algorithm/string/detail/sequence.hpp +3 -3
  365. data/ext/boost/algorithm/string/erase.hpp +98 -98
  366. data/ext/boost/algorithm/string/find_format.hpp +56 -38
  367. data/ext/boost/algorithm/string/finder.hpp +6 -6
  368. data/ext/boost/algorithm/string/formatter.hpp +1 -1
  369. data/ext/boost/algorithm/string/replace.hpp +99 -99
  370. data/ext/boost/bind.hpp +5 -1670
  371. data/ext/boost/bind/bind.hpp +1751 -0
  372. data/ext/boost/bind/bind_mf2_cc.hpp +228 -0
  373. data/ext/boost/bind/mem_fn.hpp +389 -0
  374. data/ext/boost/bind/mem_fn_template.hpp +54 -27
  375. data/ext/boost/bind/placeholders.hpp +3 -2
  376. data/ext/boost/concept_check.hpp +10 -0
  377. data/ext/boost/config/abi/msvc_prefix.hpp +15 -1
  378. data/ext/boost/config/abi_prefix.hpp +1 -1
  379. data/ext/boost/config/abi_suffix.hpp +3 -2
  380. data/ext/boost/config/auto_link.hpp +6 -1
  381. data/ext/boost/config/compiler/borland.hpp +75 -17
  382. data/ext/boost/config/compiler/codegear.hpp +163 -0
  383. data/ext/boost/config/compiler/common_edg.hpp +35 -0
  384. data/ext/boost/config/compiler/digitalmars.hpp +26 -0
  385. data/ext/boost/config/compiler/gcc.hpp +69 -14
  386. data/ext/boost/config/compiler/hp_acc.hpp +32 -0
  387. data/ext/boost/config/compiler/intel.hpp +13 -2
  388. data/ext/boost/config/compiler/kai.hpp +0 -2
  389. data/ext/boost/config/compiler/metrowerks.hpp +29 -1
  390. data/ext/boost/config/compiler/mpw.hpp +30 -0
  391. data/ext/boost/config/compiler/pgi.hpp +37 -0
  392. data/ext/boost/config/compiler/sgi_mipspro.hpp +1 -0
  393. data/ext/boost/config/compiler/sunpro_cc.hpp +39 -7
  394. data/ext/boost/config/compiler/vacpp.hpp +31 -3
  395. data/ext/boost/config/compiler/visualc.hpp +72 -5
  396. data/ext/boost/config/no_tr1/cmath.hpp +28 -0
  397. data/ext/boost/config/platform/bsd.hpp +16 -3
  398. data/ext/boost/config/platform/hpux.hpp +3 -0
  399. data/ext/boost/config/platform/macos.hpp +8 -0
  400. data/ext/boost/config/platform/solaris.hpp +7 -0
  401. data/ext/boost/config/platform/vxworks.hpp +31 -0
  402. data/ext/boost/config/select_compiler_config.hpp +4 -0
  403. data/ext/boost/config/select_platform_config.hpp +6 -2
  404. data/ext/boost/config/select_stdlib_config.hpp +17 -8
  405. data/ext/boost/config/stdlib/dinkumware.hpp +34 -2
  406. data/ext/boost/config/stdlib/libcomo.hpp +25 -0
  407. data/ext/boost/config/stdlib/libstdcpp3.hpp +56 -2
  408. data/ext/boost/config/stdlib/modena.hpp +25 -0
  409. data/ext/boost/config/stdlib/msl.hpp +24 -0
  410. data/ext/boost/config/stdlib/roguewave.hpp +26 -0
  411. data/ext/boost/config/stdlib/sgi.hpp +25 -0
  412. data/ext/boost/config/stdlib/stlport.hpp +36 -1
  413. data/ext/boost/config/stdlib/vacpp.hpp +25 -0
  414. data/ext/boost/config/suffix.hpp +67 -32
  415. data/ext/boost/config/warning_disable.hpp +47 -0
  416. data/ext/boost/cstdint.hpp +62 -36
  417. data/ext/boost/date_time/c_time.hpp +28 -12
  418. data/ext/boost/date_time/compiler_config.hpp +27 -5
  419. data/ext/boost/date_time/constrained_value.hpp +36 -13
  420. data/ext/boost/date_time/date.hpp +44 -33
  421. data/ext/boost/date_time/date_duration.hpp +13 -14
  422. data/ext/boost/date_time/date_facet.hpp +215 -226
  423. data/ext/boost/date_time/date_generator_formatter.hpp +22 -20
  424. data/ext/boost/date_time/date_generator_parser.hpp +52 -51
  425. data/ext/boost/date_time/date_generators.hpp +16 -16
  426. data/ext/boost/date_time/date_parsing.hpp +115 -98
  427. data/ext/boost/date_time/filetime_functions.hpp +133 -41
  428. data/ext/boost/date_time/format_date_parser.hpp +22 -10
  429. data/ext/boost/date_time/gregorian/conversion.hpp +32 -39
  430. data/ext/boost/date_time/gregorian/greg_calendar.hpp +15 -14
  431. data/ext/boost/date_time/gregorian/greg_date.hpp +19 -18
  432. data/ext/boost/date_time/gregorian/greg_duration.hpp +106 -10
  433. data/ext/boost/date_time/gregorian/greg_duration_types.hpp +16 -7
  434. data/ext/boost/date_time/gregorian/greg_weekday.hpp +2 -2
  435. data/ext/boost/date_time/gregorian/gregorian_io.hpp +11 -4
  436. data/ext/boost/date_time/gregorian_calendar.hpp +8 -8
  437. data/ext/boost/date_time/gregorian_calendar.ipp +30 -30
  438. data/ext/boost/date_time/int_adapter.hpp +4 -2
  439. data/ext/boost/date_time/microsec_time_clock.hpp +39 -117
  440. data/ext/boost/date_time/period_parser.hpp +17 -15
  441. data/ext/boost/date_time/posix_time/conversion.hpp +28 -29
  442. data/ext/boost/date_time/posix_time/posix_time_config.hpp +19 -19
  443. data/ext/boost/date_time/posix_time/posix_time_io.hpp +31 -38
  444. data/ext/boost/date_time/posix_time/time_formatters.hpp +32 -32
  445. data/ext/boost/date_time/string_parse_tree.hpp +46 -46
  446. data/ext/boost/date_time/strings_from_facet.hpp +7 -5
  447. data/ext/boost/date_time/time.hpp +7 -6
  448. data/ext/boost/date_time/time_defs.hpp +12 -2
  449. data/ext/boost/date_time/time_duration.hpp +27 -26
  450. data/ext/boost/date_time/time_facet.hpp +386 -321
  451. data/ext/boost/date_time/time_formatting_streams.hpp +8 -5
  452. data/ext/boost/date_time/time_resolution_traits.hpp +29 -25
  453. data/ext/boost/date_time/time_system_split.hpp +7 -13
  454. data/ext/boost/date_time/wrapping_int.hpp +21 -15
  455. data/ext/boost/detail/call_traits.hpp +1 -1
  456. data/ext/boost/detail/endian.hpp +4 -4
  457. data/ext/boost/detail/no_exceptions_support.hpp +87 -0
  458. data/ext/boost/detail/sp_typeinfo.hpp +50 -4
  459. data/ext/boost/detail/workaround.hpp +63 -3
  460. data/ext/boost/enable_shared_from_this.hpp +4 -59
  461. data/ext/boost/exception/current_exception_cast.hpp +43 -0
  462. data/ext/boost/exception/detail/attribute_noreturn.hpp +17 -0
  463. data/ext/boost/exception/detail/error_info_impl.hpp +75 -0
  464. data/ext/boost/exception/detail/exception_ptr.hpp +490 -0
  465. data/ext/boost/exception/detail/is_output_streamable.hpp +47 -0
  466. data/ext/boost/exception/detail/object_hex_dump.hpp +50 -0
  467. data/ext/boost/exception/detail/type_info.hpp +79 -0
  468. data/ext/boost/exception/diagnostic_information.hpp +182 -0
  469. data/ext/boost/exception/exception.hpp +422 -0
  470. data/ext/boost/exception/get_error_info.hpp +130 -0
  471. data/ext/boost/exception/info.hpp +167 -0
  472. data/ext/boost/exception/to_string.hpp +83 -0
  473. data/ext/boost/exception/to_string_stub.hpp +109 -0
  474. data/ext/boost/exception_ptr.hpp +11 -0
  475. data/ext/boost/function/detail/prologue.hpp +2 -1
  476. data/ext/boost/function/function_base.hpp +270 -128
  477. data/ext/boost/function/function_fwd.hpp +70 -0
  478. data/ext/boost/function/function_template.hpp +319 -130
  479. data/ext/boost/get_pointer.hpp +5 -1
  480. data/ext/boost/integer.hpp +253 -0
  481. data/ext/boost/integer_fwd.hpp +174 -0
  482. data/ext/boost/integer_traits.hpp +26 -1
  483. data/ext/boost/io/ios_state.hpp +8 -0
  484. data/ext/boost/iterator/detail/config_def.hpp +4 -2
  485. data/ext/boost/iterator/iterator_adaptor.hpp +7 -2
  486. data/ext/boost/iterator/iterator_facade.hpp +1 -2
  487. data/ext/boost/lexical_cast.hpp +113 -105
  488. data/ext/boost/limits.hpp +1 -1
  489. data/ext/boost/mem_fn.hpp +5 -370
  490. data/ext/boost/memory_order.hpp +53 -0
  491. data/ext/boost/mpl/always.hpp +3 -3
  492. data/ext/boost/mpl/and.hpp +3 -3
  493. data/ext/boost/mpl/apply.hpp +3 -3
  494. data/ext/boost/mpl/apply_fwd.hpp +3 -3
  495. data/ext/boost/mpl/apply_wrap.hpp +37 -6
  496. data/ext/boost/mpl/arg.hpp +3 -3
  497. data/ext/boost/mpl/arg_fwd.hpp +3 -3
  498. data/ext/boost/mpl/assert.hpp +6 -6
  499. data/ext/boost/mpl/aux_/adl_barrier.hpp +3 -3
  500. data/ext/boost/mpl/aux_/arg_typedef.hpp +3 -3
  501. data/ext/boost/mpl/aux_/arity.hpp +3 -3
  502. data/ext/boost/mpl/aux_/arity_spec.hpp +3 -3
  503. data/ext/boost/mpl/aux_/common_name_wknd.hpp +3 -3
  504. data/ext/boost/mpl/aux_/config/adl.hpp +4 -4
  505. data/ext/boost/mpl/aux_/config/arrays.hpp +4 -4
  506. data/ext/boost/mpl/aux_/config/bcc.hpp +28 -0
  507. data/ext/boost/mpl/aux_/config/bind.hpp +4 -4
  508. data/ext/boost/mpl/aux_/config/compiler.hpp +8 -6
  509. data/ext/boost/mpl/aux_/config/ctps.hpp +3 -3
  510. data/ext/boost/mpl/aux_/config/dtp.hpp +5 -5
  511. data/ext/boost/mpl/aux_/config/eti.hpp +3 -3
  512. data/ext/boost/mpl/aux_/config/gcc.hpp +3 -3
  513. data/ext/boost/mpl/aux_/config/has_apply.hpp +3 -3
  514. data/ext/boost/mpl/aux_/config/has_xxx.hpp +3 -3
  515. data/ext/boost/mpl/aux_/config/integral.hpp +4 -4
  516. data/ext/boost/mpl/aux_/config/intel.hpp +3 -3
  517. data/ext/boost/mpl/aux_/config/lambda.hpp +3 -3
  518. data/ext/boost/mpl/aux_/config/msvc.hpp +3 -3
  519. data/ext/boost/mpl/aux_/config/msvc_typename.hpp +3 -3
  520. data/ext/boost/mpl/aux_/config/nttp.hpp +3 -3
  521. data/ext/boost/mpl/aux_/config/overload_resolution.hpp +3 -3
  522. data/ext/boost/mpl/aux_/config/pp_counter.hpp +3 -3
  523. data/ext/boost/mpl/aux_/config/preprocessor.hpp +4 -4
  524. data/ext/boost/mpl/aux_/config/static_constant.hpp +3 -3
  525. data/ext/boost/mpl/aux_/config/ttp.hpp +4 -4
  526. data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +3 -3
  527. data/ext/boost/mpl/aux_/config/workaround.hpp +3 -3
  528. data/ext/boost/mpl/aux_/full_lambda.hpp +3 -3
  529. data/ext/boost/mpl/aux_/has_apply.hpp +3 -3
  530. data/ext/boost/mpl/aux_/has_type.hpp +3 -3
  531. data/ext/boost/mpl/aux_/include_preprocessed.hpp +3 -3
  532. data/ext/boost/mpl/aux_/integral_wrapper.hpp +3 -3
  533. data/ext/boost/mpl/aux_/lambda_arity_param.hpp +3 -3
  534. data/ext/boost/mpl/aux_/lambda_support.hpp +4 -4
  535. data/ext/boost/mpl/aux_/msvc_never_true.hpp +3 -3
  536. data/ext/boost/mpl/aux_/na.hpp +3 -3
  537. data/ext/boost/mpl/aux_/na_assert.hpp +3 -3
  538. data/ext/boost/mpl/aux_/na_fwd.hpp +3 -3
  539. data/ext/boost/mpl/aux_/na_spec.hpp +3 -3
  540. data/ext/boost/mpl/aux_/nested_type_wknd.hpp +3 -3
  541. data/ext/boost/mpl/aux_/nttp_decl.hpp +3 -3
  542. data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +3 -3
  543. data/ext/boost/mpl/aux_/preprocessor/enum.hpp +3 -3
  544. data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +3 -3
  545. data/ext/boost/mpl/aux_/preprocessor/params.hpp +3 -3
  546. data/ext/boost/mpl/aux_/preprocessor/sub.hpp +3 -3
  547. data/ext/boost/mpl/aux_/static_cast.hpp +3 -3
  548. data/ext/boost/mpl/aux_/template_arity.hpp +3 -3
  549. data/ext/boost/mpl/aux_/template_arity_fwd.hpp +3 -3
  550. data/ext/boost/mpl/aux_/type_wrapper.hpp +3 -3
  551. data/ext/boost/mpl/aux_/value_wknd.hpp +3 -3
  552. data/ext/boost/mpl/aux_/yes_no.hpp +3 -3
  553. data/ext/boost/mpl/bind.hpp +3 -3
  554. data/ext/boost/mpl/bind_fwd.hpp +3 -3
  555. data/ext/boost/mpl/bool.hpp +3 -3
  556. data/ext/boost/mpl/bool_fwd.hpp +3 -3
  557. data/ext/boost/mpl/eval_if.hpp +3 -3
  558. data/ext/boost/mpl/has_xxx.hpp +10 -8
  559. data/ext/boost/mpl/identity.hpp +3 -3
  560. data/ext/boost/mpl/if.hpp +3 -3
  561. data/ext/boost/mpl/int.hpp +3 -3
  562. data/ext/boost/mpl/int_fwd.hpp +3 -3
  563. data/ext/boost/mpl/integral_c.hpp +3 -3
  564. data/ext/boost/mpl/integral_c_fwd.hpp +3 -3
  565. data/ext/boost/mpl/integral_c_tag.hpp +3 -3
  566. data/ext/boost/mpl/lambda.hpp +3 -3
  567. data/ext/boost/mpl/lambda_fwd.hpp +3 -3
  568. data/ext/boost/mpl/limits/arity.hpp +3 -3
  569. data/ext/boost/mpl/logical.hpp +3 -3
  570. data/ext/boost/mpl/next.hpp +3 -3
  571. data/ext/boost/mpl/next_prior.hpp +3 -3
  572. data/ext/boost/mpl/not.hpp +3 -3
  573. data/ext/boost/mpl/or.hpp +3 -3
  574. data/ext/boost/mpl/placeholders.hpp +3 -3
  575. data/ext/boost/mpl/protect.hpp +3 -3
  576. data/ext/boost/mpl/quote.hpp +18 -7
  577. data/ext/boost/mpl/size_t.hpp +3 -3
  578. data/ext/boost/mpl/size_t_fwd.hpp +3 -3
  579. data/ext/boost/mpl/void.hpp +3 -3
  580. data/ext/boost/mpl/void_fwd.hpp +3 -3
  581. data/ext/boost/non_type.hpp +27 -27
  582. data/ext/boost/operators.hpp +51 -18
  583. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  584. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  585. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  586. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  587. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  588. data/ext/boost/preprocessor/seq/cat.hpp +48 -0
  589. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  590. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  591. data/ext/boost/range/as_literal.hpp +10 -14
  592. data/ext/boost/range/begin.hpp +4 -4
  593. data/ext/boost/range/detail/implementation_help.hpp +4 -0
  594. data/ext/boost/range/end.hpp +4 -4
  595. data/ext/boost/range/iterator_range.hpp +31 -15
  596. data/ext/boost/ref.hpp +12 -1
  597. data/ext/boost/scoped_array.hpp +16 -0
  598. data/ext/boost/scoped_ptr.hpp +16 -0
  599. data/ext/boost/shared_ptr.hpp +2 -602
  600. data/ext/boost/{detail → smart_ptr}/bad_weak_ptr.hpp +4 -4
  601. data/ext/boost/{detail → smart_ptr/detail}/atomic_count.hpp +14 -19
  602. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_gcc.hpp +13 -9
  603. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_gcc_x86.hpp +5 -12
  604. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_pthreads.hpp +5 -5
  605. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_solaris.hpp +3 -3
  606. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_sync.hpp +9 -5
  607. data/ext/boost/{detail → smart_ptr/detail}/atomic_count_win32.hpp +3 -3
  608. data/ext/boost/smart_ptr/detail/operator_bool.hpp +56 -0
  609. data/ext/boost/{detail → smart_ptr/detail}/shared_count.hpp +86 -17
  610. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +76 -0
  611. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +70 -0
  612. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_acc_ia64.hpp +4 -4
  613. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_cw_ppc.hpp +4 -4
  614. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_cw_x86.hpp +4 -4
  615. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_ia64.hpp +4 -4
  616. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +172 -0
  617. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_ppc.hpp +4 -4
  618. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_sparc.hpp +7 -7
  619. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_gcc_x86.hpp +4 -4
  620. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_nt.hpp +4 -4
  621. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_pt.hpp +4 -4
  622. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_solaris.hpp +4 -4
  623. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +131 -0
  624. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_sync.hpp +8 -4
  625. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_base_w32.hpp +4 -4
  626. data/ext/boost/{detail → smart_ptr/detail}/sp_counted_impl.hpp +5 -5
  627. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +49 -0
  628. data/ext/boost/smart_ptr/detail/spinlock.hpp +53 -0
  629. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +85 -0
  630. data/ext/boost/smart_ptr/detail/spinlock_nt.hpp +89 -0
  631. data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +87 -0
  632. data/ext/boost/smart_ptr/detail/spinlock_pt.hpp +79 -0
  633. data/ext/boost/smart_ptr/detail/spinlock_sync.hpp +87 -0
  634. data/ext/boost/smart_ptr/detail/yield_k.hpp +149 -0
  635. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +79 -0
  636. data/ext/boost/smart_ptr/scoped_array.hpp +107 -0
  637. data/ext/boost/smart_ptr/scoped_ptr.hpp +131 -0
  638. data/ext/boost/smart_ptr/shared_ptr.hpp +701 -0
  639. data/ext/boost/smart_ptr/weak_ptr.hpp +230 -0
  640. data/ext/boost/src/pthread/thread.cpp +115 -203
  641. data/ext/boost/src/tss_null.cpp +1 -1
  642. data/ext/boost/static_assert.hpp +14 -4
  643. data/ext/boost/thread.hpp +7 -2
  644. data/ext/boost/thread/barrier.hpp +63 -0
  645. data/ext/boost/thread/detail/force_cast.hpp +39 -0
  646. data/ext/boost/thread/detail/move.hpp +29 -2
  647. data/ext/boost/thread/detail/platform.hpp +3 -3
  648. data/ext/boost/thread/detail/singleton.hpp +59 -0
  649. data/ext/boost/thread/detail/thread.hpp +496 -0
  650. data/ext/boost/thread/detail/thread_group.hpp +105 -0
  651. data/ext/boost/thread/detail/thread_heap_alloc.hpp +23 -0
  652. data/ext/boost/thread/detail/thread_interruption.hpp +35 -0
  653. data/ext/boost/thread/detail/tss_hooks.hpp +82 -0
  654. data/ext/boost/thread/exceptions.hpp +174 -60
  655. data/ext/boost/thread/future.hpp +1364 -0
  656. data/ext/boost/thread/locks.hpp +899 -32
  657. data/ext/boost/thread/once.hpp +4 -0
  658. data/ext/boost/thread/pthread/condition_variable.hpp +16 -21
  659. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +37 -3
  660. data/ext/boost/thread/pthread/mutex.hpp +20 -7
  661. data/ext/boost/thread/pthread/once.hpp +7 -2
  662. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +5 -1
  663. data/ext/boost/thread/pthread/recursive_mutex.hpp +22 -5
  664. data/ext/boost/thread/pthread/shared_mutex.hpp +303 -0
  665. data/ext/boost/thread/pthread/thread_data.hpp +37 -10
  666. data/ext/boost/thread/pthread/thread_heap_alloc.hpp +242 -0
  667. data/ext/boost/thread/pthread/timespec.hpp +11 -3
  668. data/ext/boost/thread/shared_mutex.hpp +21 -0
  669. data/ext/boost/thread/thread.hpp +8 -3
  670. data/ext/boost/thread/thread_time.hpp +4 -0
  671. data/ext/boost/thread/tss.hpp +106 -13
  672. data/ext/boost/thread/xtime.hpp +6 -2
  673. data/ext/boost/throw_exception.hpp +36 -7
  674. data/ext/boost/token_functions.hpp +1 -1
  675. data/ext/boost/tokenizer.hpp +1 -1
  676. data/ext/boost/type_traits/add_pointer.hpp +1 -1
  677. data/ext/boost/type_traits/add_volatile.hpp +47 -0
  678. data/ext/boost/type_traits/alignment_of.hpp +29 -1
  679. data/ext/boost/type_traits/config.hpp +1 -1
  680. data/ext/boost/type_traits/conversion_traits.hpp +1 -1
  681. data/ext/boost/type_traits/has_trivial_destructor.hpp +42 -0
  682. data/ext/boost/type_traits/intrinsics.hpp +88 -1
  683. data/ext/boost/type_traits/is_abstract.hpp +14 -5
  684. data/ext/boost/type_traits/is_arithmetic.hpp +8 -0
  685. data/ext/boost/type_traits/is_array.hpp +3 -2
  686. data/ext/boost/type_traits/is_base_and_derived.hpp +254 -0
  687. data/ext/boost/type_traits/is_base_of.hpp +51 -0
  688. data/ext/boost/type_traits/is_class.hpp +12 -0
  689. data/ext/boost/type_traits/is_const.hpp +6 -2
  690. data/ext/boost/type_traits/is_convertible.hpp +14 -2
  691. data/ext/boost/type_traits/is_enum.hpp +10 -1
  692. data/ext/boost/type_traits/is_function.hpp +11 -3
  693. data/ext/boost/type_traits/is_fundamental.hpp +45 -0
  694. data/ext/boost/type_traits/is_integral.hpp +5 -0
  695. data/ext/boost/type_traits/is_member_function_pointer.hpp +5 -3
  696. data/ext/boost/type_traits/is_member_pointer.hpp +4 -2
  697. data/ext/boost/type_traits/is_pointer.hpp +3 -1
  698. data/ext/boost/type_traits/is_reference.hpp +4 -2
  699. data/ext/boost/type_traits/is_signed.hpp +135 -0
  700. data/ext/boost/type_traits/is_unsigned.hpp +130 -0
  701. data/ext/boost/type_traits/is_void.hpp +5 -0
  702. data/ext/boost/type_traits/is_volatile.hpp +4 -2
  703. data/ext/boost/type_traits/make_unsigned.hpp +137 -0
  704. data/ext/boost/type_traits/remove_reference.hpp +1 -1
  705. data/ext/boost/type_traits/type_with_alignment.hpp +106 -1
  706. data/ext/boost/utility.hpp +2 -1
  707. data/ext/boost/utility/addressof.hpp +61 -17
  708. data/ext/boost/utility/binary.hpp +708 -0
  709. data/ext/boost/utility/enable_if.hpp +2 -2
  710. data/ext/boost/weak_ptr.hpp +4 -174
  711. data/ext/common/AbstractSpawnManager.h +110 -0
  712. data/ext/common/Account.h +175 -0
  713. data/ext/common/AccountsDatabase.cpp +81 -0
  714. data/ext/common/AccountsDatabase.h +130 -0
  715. data/ext/common/AgentBase.cpp +323 -0
  716. data/ext/common/{Version.h → AgentBase.h} +14 -6
  717. data/ext/common/AgentsStarter.cpp +154 -0
  718. data/ext/common/AgentsStarter.h +81 -0
  719. data/ext/common/AgentsStarter.hpp +619 -0
  720. data/ext/common/ApplicationPool/Client.h +796 -0
  721. data/ext/common/{ApplicationPool.h → ApplicationPool/Interface.h} +108 -18
  722. data/ext/common/ApplicationPool/Pool.h +1315 -0
  723. data/ext/common/ApplicationPool/Server.h +475 -0
  724. data/ext/common/BCrypt.cpp +343 -0
  725. data/ext/common/BCrypt.h +73 -0
  726. data/ext/common/Blowfish.c +685 -0
  727. data/ext/common/Blowfish.h +103 -0
  728. data/ext/common/Constants.h +48 -0
  729. data/ext/common/EventedClient.h +598 -0
  730. data/ext/common/EventedMessageServer.h +327 -0
  731. data/ext/common/EventedServer.h +295 -0
  732. data/ext/common/Exceptions.h +78 -1
  733. data/ext/common/FileDescriptor.h +229 -0
  734. data/ext/common/HelperAgent/BacktracesServer.h +59 -0
  735. data/ext/common/Logging.cpp +8 -9
  736. data/ext/common/Logging.h +593 -21
  737. data/ext/common/LoggingAgent/ChangeNotifier.h +63 -0
  738. data/ext/common/LoggingAgent/DataStoreId.h +177 -0
  739. data/ext/common/LoggingAgent/LoggingServer.h +1343 -0
  740. data/ext/common/LoggingAgent/Main.cpp +278 -0
  741. data/ext/common/LoggingAgent/RemoteSender.h +457 -0
  742. data/ext/common/MessageChannel.h +196 -34
  743. data/ext/common/MessageClient.h +297 -0
  744. data/ext/common/MessageReadersWriters.h +508 -0
  745. data/ext/common/MessageServer.h +575 -0
  746. data/ext/common/PoolOptions.h +279 -117
  747. data/ext/common/Process.h +255 -0
  748. data/ext/common/RandomGenerator.h +160 -0
  749. data/ext/common/ResourceLocator.h +84 -0
  750. data/ext/common/ServerInstanceDir.h +343 -0
  751. data/ext/common/Session.h +470 -0
  752. data/ext/common/SpawnManager.h +256 -201
  753. data/ext/common/StaticString.h +79 -4
  754. data/ext/common/StringListCreator.h +2 -2
  755. data/ext/common/Utils.cpp +385 -397
  756. data/ext/common/Utils.h +79 -165
  757. data/ext/common/{Base64.cpp → Utils/Base64.cpp} +0 -0
  758. data/ext/common/{Base64.h → Utils/Base64.h} +27 -1
  759. data/ext/common/Utils/BlockingQueue.h +136 -0
  760. data/ext/common/Utils/BlockingScalar.h +50 -0
  761. data/ext/common/{CachedFileStat.cpp → Utils/CachedFileStat.cpp} +1 -1
  762. data/ext/common/{CachedFileStat.h → Utils/CachedFileStat.h} +1 -1
  763. data/ext/common/{CachedFileStat.hpp → Utils/CachedFileStat.hpp} +1 -1
  764. data/ext/common/{FileChangeChecker.h → Utils/FileChangeChecker.h} +1 -1
  765. data/ext/common/Utils/FileHandleGuard.h +81 -0
  766. data/ext/common/Utils/IOUtils.cpp +754 -0
  767. data/ext/common/Utils/IOUtils.h +253 -0
  768. data/ext/common/Utils/MD5.cpp +406 -0
  769. data/ext/common/Utils/MD5.h +98 -0
  770. data/ext/common/Utils/MemZeroGuard.h +103 -0
  771. data/ext/common/Utils/ProcessMetricsCollector.h +462 -0
  772. data/ext/common/Utils/ScopeGuard.h +72 -0
  773. data/ext/common/Utils/StrIntUtils.cpp +329 -0
  774. data/ext/common/Utils/StrIntUtils.h +228 -0
  775. data/ext/common/{SystemTime.cpp → Utils/SystemTime.cpp} +5 -1
  776. data/ext/common/Utils/SystemTime.h +201 -0
  777. data/ext/common/{Timer.h → Utils/Timer.h} +58 -18
  778. data/ext/common/Utils/VariantMap.h +363 -0
  779. data/ext/common/Utils/foo.cpp +10 -0
  780. data/ext/common/Watchdog.cpp +1034 -0
  781. data/ext/google/COPYING +28 -0
  782. data/ext/google/ChangeLog +167 -0
  783. data/ext/google/dense_hash_map +310 -0
  784. data/ext/google/dense_hash_set +287 -0
  785. data/ext/google/sparse_hash_map +294 -0
  786. data/ext/google/sparse_hash_set +275 -0
  787. data/ext/google/sparsehash/densehashtable.h +1062 -0
  788. data/ext/google/sparsehash/sparseconfig.h +55 -0
  789. data/ext/google/sparsehash/sparsehashtable.h +1015 -0
  790. data/ext/google/sparsetable +1468 -0
  791. data/ext/google/type_traits.h +250 -0
  792. data/ext/libev/Changes +302 -0
  793. data/ext/libev/LICENSE +36 -0
  794. data/ext/libev/Makefile.am +18 -0
  795. data/ext/libev/Makefile.in +685 -0
  796. data/ext/libev/README +58 -0
  797. data/ext/libev/aclocal.m4 +7549 -0
  798. data/ext/libev/autogen.sh +6 -0
  799. data/ext/libev/config.guess +1526 -0
  800. data/ext/libev/config.h +122 -0
  801. data/ext/libev/config.h.in +121 -0
  802. data/ext/libev/config.sub +1658 -0
  803. data/ext/libev/configure +22156 -0
  804. data/ext/libev/configure.ac +18 -0
  805. data/ext/libev/ev++.h +800 -0
  806. data/ext/libev/ev.c +3694 -0
  807. data/ext/libev/ev.h +705 -0
  808. data/ext/libev/ev_epoll.c +228 -0
  809. data/ext/libev/ev_kqueue.c +196 -0
  810. data/ext/libev/ev_poll.c +144 -0
  811. data/ext/libev/ev_port.c +165 -0
  812. data/ext/libev/ev_select.c +308 -0
  813. data/ext/libev/ev_vars.h +187 -0
  814. data/ext/libev/ev_win32.c +153 -0
  815. data/ext/libev/ev_wrap.h +178 -0
  816. data/ext/libev/event.c +401 -0
  817. data/ext/libev/event.h +158 -0
  818. data/ext/libev/install-sh +294 -0
  819. data/ext/libev/libev.m4 +38 -0
  820. data/ext/libev/ltmain.sh +6871 -0
  821. data/ext/libev/missing +336 -0
  822. data/ext/libev/mkinstalldirs +111 -0
  823. data/ext/nginx/Configuration.c +532 -182
  824. data/ext/nginx/Configuration.h +33 -10
  825. data/ext/nginx/ContentHandler.c +188 -53
  826. data/ext/nginx/ContentHandler.h +1 -1
  827. data/ext/nginx/{HelperServer.cpp → HelperAgent.cpp} +433 -299
  828. data/ext/nginx/HttpStatusExtractor.h +1 -1
  829. data/ext/nginx/ScgiRequestParser.h +68 -11
  830. data/ext/nginx/StaticContentHandler.c +4 -1
  831. data/ext/nginx/StaticContentHandler.h +1 -1
  832. data/ext/nginx/config +5 -5
  833. data/ext/nginx/ngx_http_passenger_module.c +315 -469
  834. data/ext/nginx/ngx_http_passenger_module.h +8 -17
  835. data/ext/oxt/backtrace.cpp +49 -41
  836. data/ext/oxt/backtrace.hpp +1 -1
  837. data/ext/oxt/detail/backtrace_disabled.hpp +1 -1
  838. data/ext/oxt/detail/backtrace_enabled.hpp +16 -15
  839. data/ext/oxt/detail/spin_lock_darwin.hpp +69 -0
  840. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +3 -4
  841. data/ext/oxt/detail/spin_lock_portable.hpp +1 -1
  842. data/ext/oxt/detail/spin_lock_pthreads.hpp +1 -1
  843. data/ext/oxt/detail/tracable_exception_disabled.hpp +1 -1
  844. data/ext/oxt/detail/tracable_exception_enabled.hpp +1 -1
  845. data/ext/oxt/dynamic_thread_group.hpp +195 -0
  846. data/ext/oxt/macros.hpp +1 -1
  847. data/ext/oxt/spin_lock.hpp +4 -2
  848. data/ext/oxt/system_calls.cpp +129 -13
  849. data/ext/oxt/system_calls.hpp +16 -2
  850. data/ext/oxt/thread.cpp +1 -1
  851. data/ext/oxt/thread.hpp +49 -14
  852. data/ext/oxt/tracable_exception.cpp +5 -5
  853. data/ext/oxt/tracable_exception.hpp +1 -1
  854. data/ext/phusion_passenger/extconf.rb +7 -2
  855. data/ext/phusion_passenger/native_support.c +733 -33
  856. data/{bin → helper-scripts}/passenger-spawn-server +50 -12
  857. data/helper-scripts/prespawn +63 -0
  858. data/lib/phusion_passenger.rb +113 -0
  859. data/lib/phusion_passenger/abstract_installer.rb +50 -12
  860. data/lib/phusion_passenger/abstract_request_handler.rb +432 -171
  861. data/lib/phusion_passenger/abstract_server.rb +125 -122
  862. data/lib/phusion_passenger/abstract_server_collection.rb +51 -22
  863. data/lib/phusion_passenger/admin_tools.rb +1 -1
  864. data/lib/phusion_passenger/admin_tools/memory_stats.rb +299 -0
  865. data/lib/phusion_passenger/admin_tools/server_instance.rb +334 -0
  866. data/lib/phusion_passenger/analytics_logger.rb +342 -0
  867. data/lib/phusion_passenger/{application.rb → app_process.rb} +73 -24
  868. data/lib/phusion_passenger/classic_rails/application_spawner.rb +344 -0
  869. data/lib/phusion_passenger/{railz → classic_rails}/cgi_fixed.rb +2 -2
  870. data/lib/phusion_passenger/{railz → classic_rails}/framework_spawner.rb +75 -98
  871. data/lib/phusion_passenger/{railz → classic_rails}/request_handler.rb +8 -6
  872. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +65 -0
  873. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +48 -0
  874. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +59 -0
  875. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb +54 -0
  876. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +130 -0
  877. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +47 -0
  878. data/lib/phusion_passenger/classic_rails_extensions/init.rb +123 -0
  879. data/lib/phusion_passenger/console_text_template.rb +1 -1
  880. data/lib/phusion_passenger/constants.rb +9 -5
  881. data/lib/phusion_passenger/debug_logging.rb +104 -0
  882. data/lib/phusion_passenger/dependencies.rb +187 -4
  883. data/lib/phusion_passenger/exceptions.rb +4 -4
  884. data/lib/phusion_passenger/html_template.rb +6 -8
  885. data/lib/phusion_passenger/message_channel.rb +137 -21
  886. data/lib/phusion_passenger/message_client.rb +173 -0
  887. data/lib/phusion_passenger/native_support.rb +108 -0
  888. data/lib/phusion_passenger/packaging.rb +82 -13
  889. data/lib/phusion_passenger/platform_info.rb +84 -475
  890. data/lib/phusion_passenger/platform_info/apache.rb +329 -0
  891. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +187 -0
  892. data/lib/phusion_passenger/platform_info/compiler.rb +154 -0
  893. data/lib/phusion_passenger/{events.rb → platform_info/curl.rb} +26 -23
  894. data/lib/phusion_passenger/platform_info/documentation_tools.rb +35 -0
  895. data/lib/phusion_passenger/platform_info/linux.rb +77 -0
  896. data/lib/phusion_passenger/platform_info/operating_system.rb +51 -0
  897. data/lib/phusion_passenger/platform_info/ruby.rb +198 -0
  898. data/lib/phusion_passenger/platform_info/zlib.rb +38 -0
  899. data/lib/phusion_passenger/plugin.rb +96 -0
  900. data/lib/phusion_passenger/public_api.rb +112 -0
  901. data/lib/phusion_passenger/rack/application_spawner.rb +146 -71
  902. data/lib/phusion_passenger/rack/request_handler.rb +36 -13
  903. data/lib/phusion_passenger/rails3_extensions/init.rb +204 -0
  904. data/lib/phusion_passenger/simple_benchmarking.rb +1 -1
  905. data/lib/phusion_passenger/spawn_manager.rb +137 -141
  906. data/lib/phusion_passenger/standalone/app_finder.rb +153 -0
  907. data/lib/phusion_passenger/standalone/command.rb +237 -0
  908. data/lib/phusion_passenger/standalone/config_file.rb +119 -0
  909. data/lib/phusion_passenger/standalone/help_command.rb +57 -0
  910. data/lib/phusion_passenger/standalone/main.rb +101 -0
  911. data/lib/phusion_passenger/standalone/package_runtime_command.rb +92 -0
  912. data/lib/phusion_passenger/standalone/runtime_installer.rb +466 -0
  913. data/lib/phusion_passenger/standalone/start_command.rb +510 -0
  914. data/lib/phusion_passenger/standalone/status_command.rb +62 -0
  915. data/lib/phusion_passenger/standalone/stop_command.rb +74 -0
  916. data/lib/phusion_passenger/standalone/utils.rb +42 -0
  917. data/lib/phusion_passenger/standalone/version_command.rb +42 -0
  918. data/lib/phusion_passenger/templates/framework_init_error.html.erb +1 -1
  919. data/lib/phusion_passenger/templates/standalone/cannot_write_to_dir.txt.erb +11 -0
  920. data/lib/phusion_passenger/templates/standalone/config.erb +69 -0
  921. data/lib/phusion_passenger/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +17 -0
  922. data/lib/phusion_passenger/templates/standalone/run_installer_as_root.txt.erb +8 -0
  923. data/lib/phusion_passenger/templates/standalone/welcome.txt.erb +8 -0
  924. data/lib/phusion_passenger/templates/standalone_default_root/index.html +1 -0
  925. data/lib/phusion_passenger/templates/version_not_found.html.erb +2 -2
  926. data/lib/phusion_passenger/utils.rb +476 -125
  927. data/lib/phusion_passenger/utils/file_system_watcher.rb +186 -0
  928. data/lib/phusion_passenger/utils/hosts_file_parser.rb +130 -0
  929. data/lib/phusion_passenger/utils/tmpdir.rb +70 -0
  930. data/lib/phusion_passenger/utils/unseekable_socket.rb +196 -0
  931. data/lib/phusion_passenger/wsgi/application_spawner.rb +24 -20
  932. data/lib/phusion_passenger/wsgi/request_handler.py +1 -1
  933. data/misc/copy_boost_headers.rb +36 -9
  934. data/misc/find_owner_pipe_leaks.rb +1 -1
  935. data/misc/render_error_pages.rb +1 -1
  936. data/misc/union_station_gateway.crt +32 -0
  937. data/test/config.yml.example +24 -13
  938. data/test/cxx/ApplicationPool_PoolTest.cpp +33 -0
  939. data/test/cxx/ApplicationPool_PoolTestCases.cpp +1029 -0
  940. data/test/cxx/ApplicationPool_ServerTest.cpp +308 -0
  941. data/test/cxx/ApplicationPool_Server_PoolTest.cpp +80 -0
  942. data/test/{Base64Test.cpp → cxx/Base64Test.cpp} +4 -2
  943. data/test/{CachedFileStatTest.cpp → cxx/CachedFileStatTest.cpp} +3 -3
  944. data/test/{CxxTestMain.cpp → cxx/CxxTestMain.cpp} +6 -27
  945. data/test/cxx/EventedClientTest.cpp +386 -0
  946. data/test/{FileChangeCheckerTest.cpp → cxx/FileChangeCheckerTest.cpp} +3 -5
  947. data/test/cxx/FileDescriptorTest.cpp +69 -0
  948. data/test/{HttpStatusExtractorTest.cpp → cxx/HttpStatusExtractorTest.cpp} +1 -1
  949. data/test/cxx/IOUtilsTest.cpp +398 -0
  950. data/test/cxx/LoggingTest.cpp +914 -0
  951. data/test/cxx/MessageChannelTest.cpp +672 -0
  952. data/test/cxx/MessageReadersWritersTest.cpp +574 -0
  953. data/test/cxx/MessageServerTest.cpp +383 -0
  954. data/test/{PoolOptionsTest.cpp → cxx/PoolOptionsTest.cpp} +2 -3
  955. data/test/{ScgiRequestParserTest.cpp → cxx/ScgiRequestParserTest.cpp} +53 -1
  956. data/test/cxx/ServerInstanceDirTest.cpp +186 -0
  957. data/test/cxx/SpawnManagerTest.cpp +161 -0
  958. data/test/cxx/StaticStringTest.cpp +86 -0
  959. data/test/{SystemTimeTest.cpp → cxx/SystemTimeTest.cpp} +2 -2
  960. data/test/cxx/TestSupport.cpp +166 -0
  961. data/test/cxx/TestSupport.h +254 -0
  962. data/test/cxx/UtilsTest.cpp +521 -0
  963. data/test/cxx/VariantMapTest.cpp +179 -0
  964. data/test/integration_tests/apache2_tests.rb +198 -127
  965. data/test/integration_tests/cgi_environment_spec.rb +26 -0
  966. data/test/integration_tests/mycook_spec.rb +2 -28
  967. data/test/integration_tests/nginx_tests.rb +125 -16
  968. data/test/integration_tests/spec_helper.rb +19 -0
  969. data/test/oxt/backtrace_test.cpp +19 -59
  970. data/test/oxt/counter.hpp +55 -0
  971. data/test/oxt/dynamic_thread_group_test.cpp +131 -0
  972. data/test/oxt/oxt_test_main.cpp +2 -2
  973. data/test/oxt/spin_lock_test.cpp +59 -0
  974. data/test/oxt/syscall_interruption_test.cpp +1 -1
  975. data/test/ruby/abstract_request_handler_spec.rb +346 -25
  976. data/test/ruby/abstract_server_collection_spec.rb +4 -3
  977. data/test/ruby/abstract_server_spec.rb +37 -27
  978. data/test/ruby/admin_tools_spec.rb +362 -0
  979. data/test/ruby/analytics_logger_spec.rb +253 -0
  980. data/test/ruby/{application_spec.rb → app_process_spec.rb} +14 -14
  981. data/test/ruby/classic_rails/application_spawner_spec.rb +89 -0
  982. data/test/ruby/classic_rails/framework_spawner_spec.rb +92 -0
  983. data/test/ruby/debug_logging_spec.rb +141 -0
  984. data/test/ruby/message_channel_spec.rb +51 -25
  985. data/test/ruby/rack/application_spawner_spec.rb +99 -82
  986. data/test/ruby/shared/abstract_server_spec.rb +23 -0
  987. data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +375 -0
  988. data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +38 -0
  989. data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +19 -0
  990. data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +15 -0
  991. data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +27 -0
  992. data/test/ruby/shared/spawners/preloading_spawner_spec.rb +29 -0
  993. data/test/ruby/shared/spawners/reload_all_spec.rb +36 -0
  994. data/test/ruby/shared/spawners/reload_single_spec.rb +52 -0
  995. data/test/ruby/shared/spawners/spawn_server_spec.rb +28 -0
  996. data/test/ruby/shared/spawners/spawner_spec.rb +273 -0
  997. data/test/ruby/shared/utils/pseudo_io_spec.rb +60 -0
  998. data/test/ruby/spawn_manager_spec.rb +104 -175
  999. data/test/ruby/spec_helper.rb +104 -0
  1000. data/test/ruby/utils/file_system_watcher_spec.rb +221 -0
  1001. data/test/ruby/utils/hosts_file_parser.rb +258 -0
  1002. data/test/ruby/utils/unseekable_socket_spec.rb +66 -0
  1003. data/test/ruby/utils_spec.rb +410 -59
  1004. data/test/ruby/wsgi/application_spawner_spec.rb +16 -20
  1005. data/test/stub/apache2/httpd.conf.erb +11 -6
  1006. data/test/stub/message_channel.rb +3 -1
  1007. data/test/stub/message_channel_2.rb +3 -1
  1008. data/test/stub/message_channel_3.rb +5 -3
  1009. data/test/stub/nginx/nginx.conf.erb +3 -2
  1010. data/test/stub/rails_apps/1.2/empty/Rakefile +10 -0
  1011. data/test/stub/rails_apps/1.2/empty/app/controllers/application.rb +7 -0
  1012. data/test/stub/rails_apps/{foobar → 1.2/empty}/app/helpers/application_helper.rb +0 -0
  1013. data/test/stub/rails_apps/{mycook → 1.2/empty}/config/boot.rb +3 -3
  1014. data/test/stub/rails_apps/1.2/empty/config/database.yml +31 -0
  1015. data/test/stub/rails_apps/1.2/empty/config/environment.rb +66 -0
  1016. data/test/stub/rails_apps/1.2/empty/config/environments/development.rb +21 -0
  1017. data/test/stub/rails_apps/{foobar → 1.2/empty}/config/environments/production.rb +0 -0
  1018. data/test/stub/rails_apps/1.2/empty/config/environments/staging.rb +18 -0
  1019. data/test/stub/rails_apps/1.2/empty/config/environments/test.rb +19 -0
  1020. data/test/stub/rails_apps/1.2/empty/config/routes.rb +23 -0
  1021. data/test/stub/rails_apps/1.2/empty/doc/README_FOR_APP +2 -0
  1022. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/404.html +0 -0
  1023. data/test/stub/rails_apps/1.2/empty/public/500.html +30 -0
  1024. data/test/stub/rails_apps/1.2/empty/public/dispatch.cgi +10 -0
  1025. data/test/stub/rails_apps/1.2/empty/public/dispatch.fcgi +24 -0
  1026. data/test/stub/rails_apps/1.2/empty/public/dispatch.rb +10 -0
  1027. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/favicon.ico +0 -0
  1028. data/test/stub/rails_apps/{mycook → 1.2/empty}/public/images/rails.png +0 -0
  1029. data/test/stub/rails_apps/1.2/empty/public/robots.txt +1 -0
  1030. data/test/stub/rails_apps/1.2/empty/script/about +3 -0
  1031. data/test/stub/rails_apps/1.2/empty/script/breakpointer +3 -0
  1032. data/test/stub/rails_apps/1.2/empty/script/console +3 -0
  1033. data/test/stub/rails_apps/1.2/empty/script/destroy +3 -0
  1034. data/test/stub/rails_apps/1.2/empty/script/generate +3 -0
  1035. data/test/stub/rails_apps/1.2/empty/script/performance/benchmarker +3 -0
  1036. data/test/stub/rails_apps/1.2/empty/script/performance/profiler +3 -0
  1037. data/test/stub/rails_apps/1.2/empty/script/plugin +3 -0
  1038. data/test/stub/rails_apps/1.2/empty/script/process/inspector +3 -0
  1039. data/test/stub/rails_apps/1.2/empty/script/process/reaper +3 -0
  1040. data/test/stub/rails_apps/1.2/empty/script/process/spawner +3 -0
  1041. data/test/stub/rails_apps/1.2/empty/script/runner +3 -0
  1042. data/test/stub/rails_apps/1.2/empty/script/server +3 -0
  1043. data/test/stub/rails_apps/1.2/empty/test/test_helper.rb +28 -0
  1044. data/test/stub/rails_apps/2.0/empty/Rakefile +10 -0
  1045. data/test/stub/rails_apps/2.0/empty/app/controllers/application.rb +10 -0
  1046. data/test/stub/rails_apps/{mycook → 2.0/empty}/app/helpers/application_helper.rb +0 -0
  1047. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/boot.rb +3 -3
  1048. data/test/stub/rails_apps/2.0/empty/config/database.yml +31 -0
  1049. data/test/stub/rails_apps/2.0/empty/config/environment.rb +59 -0
  1050. data/test/stub/rails_apps/{mycook → 2.0/empty}/config/environments/development.rb +1 -1
  1051. data/test/stub/rails_apps/2.0/empty/config/environments/production.rb +18 -0
  1052. data/test/stub/rails_apps/2.0/empty/config/environments/staging.rb +18 -0
  1053. data/test/stub/rails_apps/2.0/empty/config/environments/test.rb +22 -0
  1054. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/initializers/inflections.rb +0 -0
  1055. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/initializers/mime_types.rb +0 -0
  1056. data/test/stub/rails_apps/{foobar → 2.0/empty}/config/routes.rb +0 -0
  1057. data/test/stub/rails_apps/2.0/empty/doc/README_FOR_APP +2 -0
  1058. data/test/stub/rails_apps/2.0/empty/public/404.html +30 -0
  1059. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/422.html +0 -0
  1060. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/500.html +0 -0
  1061. data/test/stub/rails_apps/2.0/empty/public/dispatch.cgi +10 -0
  1062. data/test/stub/rails_apps/2.0/empty/public/dispatch.fcgi +24 -0
  1063. data/test/stub/rails_apps/2.0/empty/public/dispatch.rb +10 -0
  1064. data/test/stub/rails_apps/2.0/empty/public/favicon.ico +0 -0
  1065. data/test/stub/rails_apps/2.0/empty/public/images/rails.png +0 -0
  1066. data/test/stub/rails_apps/{mycook → 2.0/empty}/public/robots.txt +0 -0
  1067. data/test/stub/rails_apps/2.0/empty/script/about +3 -0
  1068. data/test/stub/rails_apps/2.0/empty/script/console +3 -0
  1069. data/test/stub/rails_apps/2.0/empty/script/destroy +3 -0
  1070. data/test/stub/rails_apps/2.0/empty/script/generate +3 -0
  1071. data/test/stub/rails_apps/2.0/empty/script/performance/benchmarker +3 -0
  1072. data/test/stub/rails_apps/2.0/empty/script/performance/profiler +3 -0
  1073. data/test/stub/rails_apps/2.0/empty/script/performance/request +3 -0
  1074. data/test/stub/rails_apps/2.0/empty/script/plugin +3 -0
  1075. data/test/stub/rails_apps/2.0/empty/script/process/inspector +3 -0
  1076. data/test/stub/rails_apps/2.0/empty/script/process/reaper +3 -0
  1077. data/test/stub/rails_apps/2.0/empty/script/process/spawner +3 -0
  1078. data/test/stub/rails_apps/2.0/empty/script/runner +3 -0
  1079. data/test/stub/rails_apps/2.0/empty/script/server +3 -0
  1080. data/test/stub/rails_apps/2.0/empty/test/test_helper.rb +38 -0
  1081. data/test/stub/rails_apps/2.2/empty/Rakefile +10 -0
  1082. data/test/stub/rails_apps/2.2/empty/app/controllers/application.rb +15 -0
  1083. data/test/stub/rails_apps/2.2/empty/app/helpers/application_helper.rb +3 -0
  1084. data/test/stub/rails_apps/2.2/empty/config/boot.rb +109 -0
  1085. data/test/stub/rails_apps/2.2/empty/config/database.yml +31 -0
  1086. data/test/stub/rails_apps/2.2/empty/config/environment.rb +75 -0
  1087. data/test/stub/rails_apps/{foobar → 2.2/empty}/config/environments/development.rb +0 -0
  1088. data/test/stub/rails_apps/2.2/empty/config/environments/production.rb +24 -0
  1089. data/test/stub/rails_apps/2.2/empty/config/environments/staging.rb +24 -0
  1090. data/test/stub/rails_apps/2.2/empty/config/environments/test.rb +22 -0
  1091. data/test/stub/rails_apps/2.2/empty/config/initializers/inflections.rb +10 -0
  1092. data/test/stub/rails_apps/{mycook → 2.2/empty}/config/initializers/mime_types.rb +0 -0
  1093. data/test/stub/rails_apps/2.2/empty/config/initializers/new_rails_defaults.rb +17 -0
  1094. data/test/stub/rails_apps/2.2/empty/config/locales/en.yml +5 -0
  1095. data/test/stub/rails_apps/2.2/empty/config/routes.rb +43 -0
  1096. data/test/stub/rails_apps/2.2/empty/doc/README_FOR_APP +5 -0
  1097. data/test/stub/rails_apps/2.2/empty/public/404.html +30 -0
  1098. data/test/stub/rails_apps/2.2/empty/public/422.html +30 -0
  1099. data/test/stub/rails_apps/2.2/empty/public/500.html +33 -0
  1100. data/test/stub/rails_apps/2.2/empty/public/dispatch.cgi +10 -0
  1101. data/test/stub/rails_apps/2.2/empty/public/dispatch.fcgi +24 -0
  1102. data/test/stub/rails_apps/2.2/empty/public/dispatch.rb +10 -0
  1103. data/test/stub/rails_apps/2.2/empty/public/favicon.ico +0 -0
  1104. data/test/stub/rails_apps/2.2/empty/public/images/rails.png +0 -0
  1105. data/test/stub/rails_apps/2.2/empty/public/robots.txt +5 -0
  1106. data/test/stub/rails_apps/2.2/empty/script/about +4 -0
  1107. data/test/stub/rails_apps/2.2/empty/script/console +3 -0
  1108. data/test/stub/rails_apps/2.2/empty/script/dbconsole +3 -0
  1109. data/test/stub/rails_apps/2.2/empty/script/destroy +3 -0
  1110. data/test/stub/rails_apps/2.2/empty/script/generate +3 -0
  1111. data/test/stub/rails_apps/2.2/empty/script/performance/benchmarker +3 -0
  1112. data/test/stub/rails_apps/2.2/empty/script/performance/profiler +3 -0
  1113. data/test/stub/rails_apps/2.2/empty/script/performance/request +3 -0
  1114. data/test/stub/rails_apps/2.2/empty/script/plugin +3 -0
  1115. data/test/stub/rails_apps/2.2/empty/script/process/inspector +3 -0
  1116. data/test/stub/rails_apps/2.2/empty/script/process/reaper +3 -0
  1117. data/test/stub/rails_apps/2.2/empty/script/process/spawner +3 -0
  1118. data/test/stub/rails_apps/2.2/empty/script/runner +3 -0
  1119. data/test/stub/rails_apps/2.2/empty/script/server +3 -0
  1120. data/test/stub/rails_apps/2.2/empty/test/performance/browsing_test.rb +9 -0
  1121. data/test/stub/rails_apps/2.2/empty/test/test_helper.rb +38 -0
  1122. data/test/stub/rails_apps/2.3/empty/Rakefile +10 -0
  1123. data/test/stub/rails_apps/2.3/empty/app/controllers/application_controller.rb +10 -0
  1124. data/test/stub/rails_apps/2.3/empty/app/helpers/application_helper.rb +3 -0
  1125. data/test/stub/rails_apps/2.3/empty/config/boot.rb +110 -0
  1126. data/test/stub/rails_apps/2.3/empty/config/database.yml +31 -0
  1127. data/test/stub/rails_apps/2.3/empty/config/environment.rb +41 -0
  1128. data/test/stub/rails_apps/2.3/empty/config/environments/development.rb +17 -0
  1129. data/test/stub/rails_apps/2.3/empty/config/environments/production.rb +28 -0
  1130. data/test/stub/rails_apps/2.3/empty/config/environments/staging.rb +28 -0
  1131. data/test/stub/rails_apps/2.3/empty/config/environments/test.rb +28 -0
  1132. data/test/stub/rails_apps/2.3/empty/config/initializers/backtrace_silencers.rb +7 -0
  1133. data/test/stub/rails_apps/2.3/empty/config/initializers/inflections.rb +10 -0
  1134. data/test/stub/rails_apps/2.3/empty/config/initializers/mime_types.rb +5 -0
  1135. data/test/stub/rails_apps/2.3/empty/config/initializers/new_rails_defaults.rb +21 -0
  1136. data/test/stub/rails_apps/2.3/empty/config/initializers/session_store.rb +15 -0
  1137. data/test/stub/rails_apps/2.3/empty/config/locales/en.yml +5 -0
  1138. data/test/stub/rails_apps/2.3/empty/config/routes.rb +43 -0
  1139. data/test/stub/rails_apps/2.3/empty/db/seeds.rb +7 -0
  1140. data/test/stub/rails_apps/2.3/empty/doc/README_FOR_APP +2 -0
  1141. data/test/stub/rails_apps/2.3/empty/public/404.html +30 -0
  1142. data/test/stub/rails_apps/2.3/empty/public/422.html +30 -0
  1143. data/test/stub/rails_apps/2.3/empty/public/500.html +30 -0
  1144. data/test/stub/rails_apps/2.3/empty/public/favicon.ico +0 -0
  1145. data/test/stub/rails_apps/2.3/empty/public/images/rails.png +0 -0
  1146. data/test/stub/rails_apps/2.3/empty/public/robots.txt +5 -0
  1147. data/test/stub/rails_apps/2.3/empty/script/about +4 -0
  1148. data/test/stub/rails_apps/2.3/empty/script/console +3 -0
  1149. data/test/stub/rails_apps/2.3/empty/script/dbconsole +3 -0
  1150. data/test/stub/rails_apps/2.3/empty/script/destroy +3 -0
  1151. data/test/stub/rails_apps/2.3/empty/script/generate +3 -0
  1152. data/test/stub/rails_apps/2.3/empty/script/performance/benchmarker +3 -0
  1153. data/test/stub/rails_apps/2.3/empty/script/performance/profiler +3 -0
  1154. data/test/stub/rails_apps/2.3/empty/script/plugin +3 -0
  1155. data/test/stub/rails_apps/2.3/empty/script/runner +3 -0
  1156. data/test/stub/rails_apps/2.3/empty/script/server +3 -0
  1157. data/test/stub/rails_apps/2.3/empty/test/performance/browsing_test.rb +9 -0
  1158. data/test/stub/rails_apps/2.3/empty/test/test_helper.rb +38 -0
  1159. data/test/stub/rails_apps/2.3/foobar/Rakefile +10 -0
  1160. data/test/stub/rails_apps/{foobar/app/controllers/application.rb → 2.3/foobar/app/controllers/application_controller.rb} +0 -0
  1161. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/bar_controller_1.rb +0 -0
  1162. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/bar_controller_2.rb +0 -0
  1163. data/test/stub/rails_apps/{foobar → 2.3/foobar}/app/controllers/foo_controller.rb +0 -0
  1164. data/test/stub/rails_apps/2.3/foobar/app/helpers/application_helper.rb +3 -0
  1165. data/test/stub/rails_apps/2.3/foobar/config/boot.rb +110 -0
  1166. data/test/stub/rails_apps/{foobar → 2.3/foobar}/config/database.yml +0 -0
  1167. data/test/stub/rails_apps/{foobar → 2.3/foobar}/config/environment.rb +1 -1
  1168. data/test/stub/rails_apps/2.3/foobar/config/environments/development.rb +17 -0
  1169. data/test/stub/rails_apps/2.3/foobar/config/environments/production.rb +18 -0
  1170. data/test/stub/rails_apps/2.3/foobar/config/environments/staging.rb +18 -0
  1171. data/test/stub/rails_apps/{mycook → 2.3/foobar}/config/initializers/inflections.rb +0 -0
  1172. data/test/stub/rails_apps/2.3/foobar/config/initializers/mime_types.rb +5 -0
  1173. data/test/stub/rails_apps/2.3/foobar/config/routes.rb +35 -0
  1174. data/test/stub/rails_apps/2.3/foobar/script/about +3 -0
  1175. data/test/stub/rails_apps/2.3/foobar/script/console +3 -0
  1176. data/test/stub/rails_apps/2.3/foobar/script/dbconsole +3 -0
  1177. data/test/stub/rails_apps/2.3/foobar/script/destroy +3 -0
  1178. data/test/stub/rails_apps/2.3/foobar/script/generate +3 -0
  1179. data/test/stub/rails_apps/2.3/foobar/script/performance/benchmarker +3 -0
  1180. data/test/stub/rails_apps/2.3/foobar/script/performance/profiler +3 -0
  1181. data/test/stub/rails_apps/2.3/foobar/script/performance/request +3 -0
  1182. data/test/stub/rails_apps/2.3/foobar/script/plugin +3 -0
  1183. data/test/stub/rails_apps/2.3/foobar/script/process/inspector +3 -0
  1184. data/test/stub/rails_apps/2.3/foobar/script/process/reaper +3 -0
  1185. data/test/stub/rails_apps/2.3/foobar/script/process/spawner +3 -0
  1186. data/test/stub/rails_apps/2.3/foobar/script/runner +3 -0
  1187. data/test/stub/rails_apps/2.3/foobar/script/server +3 -0
  1188. data/test/stub/rails_apps/2.3/mycook/Rakefile +10 -0
  1189. data/test/stub/rails_apps/{mycook/app/controllers/application.rb → 2.3/mycook/app/controllers/application_controller.rb} +0 -0
  1190. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/recipes_controller.rb +0 -0
  1191. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/uploads_controller.rb +0 -0
  1192. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/controllers/welcome_controller.rb +0 -0
  1193. data/test/stub/rails_apps/2.3/mycook/app/helpers/application_helper.rb +3 -0
  1194. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/layouts/default.rhtml +0 -0
  1195. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/create.rhtml +0 -0
  1196. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/index.rhtml +0 -0
  1197. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/recipes/new.rhtml +0 -0
  1198. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/uploads/index.rhtml +0 -0
  1199. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/uploads/new.html.erb +0 -0
  1200. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/welcome/cached.rhtml +0 -0
  1201. data/test/stub/rails_apps/{mycook → 2.3/mycook}/app/views/welcome/index.rhtml +0 -0
  1202. data/test/stub/rails_apps/2.3/mycook/config/boot.rb +110 -0
  1203. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/database.yml +0 -0
  1204. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/environment.rb +1 -1
  1205. data/test/stub/rails_apps/2.3/mycook/config/environments/development.rb +18 -0
  1206. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/environments/production.rb +0 -0
  1207. data/test/stub/rails_apps/2.3/mycook/config/initializers/inflections.rb +10 -0
  1208. data/test/stub/rails_apps/2.3/mycook/config/initializers/mime_types.rb +5 -0
  1209. data/test/stub/rails_apps/{mycook → 2.3/mycook}/config/routes.rb +0 -0
  1210. data/test/stub/rails_apps/{mycook → 2.3/mycook}/log/useless.txt +0 -0
  1211. data/test/stub/rails_apps/2.3/mycook/public/404.html +30 -0
  1212. data/test/stub/rails_apps/2.3/mycook/public/422.html +30 -0
  1213. data/test/stub/rails_apps/2.3/mycook/public/500.html +30 -0
  1214. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.cgi +0 -0
  1215. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.fcgi +0 -0
  1216. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/dispatch.rb +1 -1
  1217. data/test/stub/rails_apps/2.3/mycook/public/favicon.ico +0 -0
  1218. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/angrywizard.gif +0 -0
  1219. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/cookbook.gif +0 -0
  1220. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/images/header.png +0 -0
  1221. data/test/stub/rails_apps/2.3/mycook/public/images/rails.png +0 -0
  1222. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/application.js +0 -0
  1223. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/controls.js +73 -73
  1224. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/dragdrop.js +166 -165
  1225. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/effects.js +174 -166
  1226. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/javascripts/prototype.js +362 -267
  1227. data/test/stub/rails_apps/2.3/mycook/public/robots.txt +5 -0
  1228. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/uploads.html +0 -0
  1229. data/test/stub/rails_apps/{mycook → 2.3/mycook}/public/welcome/cached.html +0 -0
  1230. data/test/stub/rails_apps/2.3/mycook/script/about +3 -0
  1231. data/test/stub/rails_apps/2.3/mycook/script/console +3 -0
  1232. data/test/stub/rails_apps/2.3/mycook/script/dbconsole +3 -0
  1233. data/test/stub/rails_apps/2.3/mycook/script/destroy +3 -0
  1234. data/test/stub/rails_apps/2.3/mycook/script/generate +3 -0
  1235. data/test/stub/rails_apps/2.3/mycook/script/performance/benchmarker +3 -0
  1236. data/test/stub/rails_apps/2.3/mycook/script/performance/profiler +3 -0
  1237. data/test/stub/rails_apps/2.3/mycook/script/performance/request +3 -0
  1238. data/test/stub/rails_apps/2.3/mycook/script/plugin +3 -0
  1239. data/test/stub/rails_apps/2.3/mycook/script/process/inspector +3 -0
  1240. data/test/stub/rails_apps/2.3/mycook/script/process/reaper +3 -0
  1241. data/test/stub/rails_apps/2.3/mycook/script/process/spawner +3 -0
  1242. data/test/stub/rails_apps/2.3/mycook/script/runner +3 -0
  1243. data/test/stub/rails_apps/2.3/mycook/script/server +3 -0
  1244. data/test/stub/rails_apps/{mycook → 2.3/mycook}/sites/some.site/public/uploads.html +0 -0
  1245. data/test/stub/rails_apps/{mycook → 2.3/mycook}/sites/some.site/public/welcome/cached.html +0 -0
  1246. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/cache/useless.txt +0 -0
  1247. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/pids/useless.txt +0 -0
  1248. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/sessions/useless.txt +0 -0
  1249. data/test/stub/rails_apps/{mycook → 2.3/mycook}/tmp/sockets/useless.txt +0 -0
  1250. data/test/stub/rails_apps/3.0/empty/Gemfile +22 -0
  1251. data/test/stub/rails_apps/3.0/empty/Rakefile +10 -0
  1252. data/test/stub/rails_apps/3.0/empty/app/controllers/application_controller.rb +4 -0
  1253. data/test/stub/rails_apps/3.0/empty/app/helpers/application_helper.rb +2 -0
  1254. data/test/stub/rails_apps/3.0/empty/app/views/layouts/application.html.erb +14 -0
  1255. data/test/stub/rails_apps/3.0/empty/config.ru +4 -0
  1256. data/test/stub/rails_apps/3.0/empty/config/application.rb +48 -0
  1257. data/test/stub/rails_apps/3.0/empty/config/boot.rb +13 -0
  1258. data/test/stub/rails_apps/3.0/empty/config/database.yml +22 -0
  1259. data/test/stub/rails_apps/3.0/empty/config/environment.rb +5 -0
  1260. data/test/stub/rails_apps/3.0/empty/config/environments/development.rb +19 -0
  1261. data/test/stub/rails_apps/3.0/empty/config/environments/production.rb +48 -0
  1262. data/test/stub/rails_apps/3.0/empty/config/environments/test.rb +32 -0
  1263. data/test/stub/rails_apps/3.0/empty/config/initializers/backtrace_silencers.rb +7 -0
  1264. data/test/stub/rails_apps/3.0/empty/config/initializers/inflections.rb +10 -0
  1265. data/test/stub/rails_apps/3.0/empty/config/initializers/mime_types.rb +5 -0
  1266. data/test/stub/rails_apps/3.0/empty/config/initializers/passenger.rb +1 -0
  1267. data/test/stub/rails_apps/3.0/empty/config/initializers/secret_token.rb +7 -0
  1268. data/test/stub/rails_apps/3.0/empty/config/initializers/session_store.rb +8 -0
  1269. data/test/stub/rails_apps/3.0/empty/config/locales/en.yml +5 -0
  1270. data/test/stub/rails_apps/3.0/empty/config/routes.rb +58 -0
  1271. data/test/stub/rails_apps/3.0/empty/db/seeds.rb +7 -0
  1272. data/test/stub/rails_apps/3.0/empty/doc/README_FOR_APP +2 -0
  1273. data/test/stub/rails_apps/3.0/empty/log/development.log +3 -0
  1274. data/test/stub/rails_apps/3.0/empty/public/404.html +26 -0
  1275. data/test/stub/rails_apps/3.0/empty/public/422.html +26 -0
  1276. data/test/stub/rails_apps/3.0/empty/public/500.html +26 -0
  1277. data/test/stub/rails_apps/3.0/empty/public/favicon.ico +0 -0
  1278. data/test/stub/rails_apps/3.0/empty/public/index.html +279 -0
  1279. data/test/stub/rails_apps/3.0/empty/public/robots.txt +5 -0
  1280. data/test/stub/rails_apps/3.0/empty/script/rails +9 -0
  1281. data/test/stub/rails_apps/3.0/empty/test/performance/browsing_test.rb +9 -0
  1282. data/test/stub/rails_apps/3.0/empty/test/test_helper.rb +13 -0
  1283. data/test/stub/spawn_server.rb +4 -2
  1284. data/test/stub/vendor_rails/minimal/actionpack/lib/action_controller.rb +3 -0
  1285. data/test/stub/vendor_rails/minimal/railties/lib/initializer.rb +7 -2
  1286. data/test/support/apache2_controller.rb +10 -2
  1287. data/test/support/nginx_controller.rb +3 -2
  1288. data/test/support/test_helper.rb +282 -46
  1289. data/test/{support → tut}/tut.h +6 -0
  1290. data/test/{support → tut}/tut_reporter.h +0 -0
  1291. metadata +824 -266
  1292. data/benchmark/ApplicationPool.cpp +0 -52
  1293. data/benchmark/accept_vs_socketpair_vs_named_pipes.rb +0 -126
  1294. data/benchmark/dispatcher.rb +0 -42
  1295. data/benchmark/overhead_of_password_checking.rb +0 -81
  1296. data/benchmark/socket_connections_vs_persistent_pipe.rb +0 -99
  1297. data/benchmark/unix_sockets_vs_pipes.rb +0 -83
  1298. data/ext/boost/LICENSE.TXT +0 -23
  1299. data/ext/boost/VERSION.TXT +0 -1
  1300. data/ext/boost/detail/sp_counted_base.hpp +0 -81
  1301. data/ext/boost/src/pthread/exceptions.cpp +0 -146
  1302. data/ext/boost/src/win32/exceptions.cpp +0 -124
  1303. data/ext/boost/src/win32/thread.cpp +0 -629
  1304. data/ext/boost/src/win32/timeconv.inl +0 -130
  1305. data/ext/boost/src/win32/tss_dll.cpp +0 -72
  1306. data/ext/boost/src/win32/tss_pe.cpp +0 -269
  1307. data/ext/boost/thread/pthread/thread.hpp +0 -339
  1308. data/ext/boost/thread/pthread/tss.hpp +0 -103
  1309. data/ext/common/Application.h +0 -511
  1310. data/ext/common/ApplicationPoolServer.h +0 -794
  1311. data/ext/common/ApplicationPoolServerExecutable.cpp +0 -743
  1312. data/ext/common/ApplicationPoolStatusReporter.h +0 -336
  1313. data/ext/common/DummySpawnManager.h +0 -108
  1314. data/ext/common/StandardApplicationPool.h +0 -821
  1315. data/ext/common/SystemTime.h +0 -88
  1316. data/lib/phusion_passenger/admin_tools/control_process.rb +0 -150
  1317. data/lib/phusion_passenger/railz/application_spawner.rb +0 -463
  1318. data/lib/phusion_passenger/templates/invalid_app_root.html.erb +0 -9
  1319. data/test/ApplicationPoolServerTest.cpp +0 -114
  1320. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +0 -33
  1321. data/test/ApplicationPoolTest.cpp +0 -599
  1322. data/test/MessageChannelTest.cpp +0 -320
  1323. data/test/SpawnManagerTest.cpp +0 -64
  1324. data/test/StandardApplicationPoolTest.cpp +0 -27
  1325. data/test/StaticStringTest.cpp +0 -51
  1326. data/test/UtilsTest.cpp +0 -257
  1327. data/test/ruby/rails/application_spawner_spec.rb +0 -159
  1328. data/test/ruby/rails/framework_spawner_spec.rb +0 -133
  1329. data/test/ruby/rails/minimal_spawner_spec.rb +0 -93
  1330. data/test/ruby/rails/spawner_error_handling_spec.rb +0 -107
  1331. data/test/ruby/rails/spawner_privilege_lowering_spec.rb +0 -97
  1332. data/test/ruby/spawn_server_spec.rb +0 -26
  1333. data/test/stub/MessageServer.dSYM/Contents/Info.plist +0 -25
  1334. data/test/stub/MessageServer.dSYM/Contents/Resources/DWARF/MessageServer +0 -0
  1335. data/test/support/Support.cpp +0 -84
  1336. data/test/support/Support.h +0 -118
  1337. data/test/support/config.rb +0 -38
  1338. data/test/support/run_rspec_tests.rb +0 -10
@@ -1,10 +1,13 @@
1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
- <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
3
5
  <title>Passenger: Passenger::IOException Class Reference</title>
4
- <link href="tabs.css" rel="stylesheet" type="text/css">
5
- <link href="doxygen.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.5.8 -->
6
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
7
+ <link href="doxygen.css" rel="stylesheet" type="text/css"/>
8
+ </head>
9
+ <body>
10
+ <!-- Generated by Doxygen 1.6.2 -->
8
11
  <div class="navigation" id="top">
9
12
  <div class="tabs">
10
13
  <ul>
@@ -26,32 +29,33 @@
26
29
  </div>
27
30
  </div>
28
31
  <div class="contents">
29
- <h1>Passenger::IOException Class Reference<br>
32
+ <h1>Passenger::IOException Class Reference<br/>
30
33
  <small>
31
34
  [<a class="el" href="group__Exceptions.html">Exceptions</a>]</small>
32
- </h1><!-- doxytag: class="Passenger::IOException" -->Represents an error that occured during an I/O operation.
33
- <a href="#_details">More...</a>
34
- <p>
35
- <code>#include &lt;<a class="el" href="Exceptions_8h-source.html">Exceptions.h</a>&gt;</code>
36
- <p>
35
+ </h1><!-- doxytag: class="Passenger::IOException" -->
36
+ <p>Represents an error that occured during an I/O operation.
37
+ <a href="#_details">More...</a></p>
38
+
39
+ <p><code>#include &lt;<a class="el" href="Exceptions_8h_source.html">Exceptions.h</a>&gt;</code></p>
37
40
  <div class="dynheader">
38
41
  Inheritance diagram for Passenger::IOException:</div>
39
42
  <div class="dynsection">
40
- <p><center><img src="classPassenger_1_1IOException__inherit__graph.png" border="0" usemap="#Passenger_1_1IOException__inherit__map" alt="Inheritance graph"></center>
41
- <map name="Passenger_1_1IOException__inherit__map">
43
+ <div class="center"><img src="classPassenger_1_1IOException__inherit__graph.png" border="0" usemap="#Passenger_1_1IOException_inherit__map" alt="Inheritance graph"/></div>
44
+ <map name="Passenger_1_1IOException_inherit__map" id="Passenger_1_1IOException_inherit__map">
42
45
  <area shape="rect" href="classPassenger_1_1EOFException.html" title="An unexpected end&#45;of&#45;file I/O error." alt="" coords="6,80,187,107"><area shape="rect" href="classPassenger_1_1FileNotFoundException.html" title="Thrown when a certain file cannot be found." alt="" coords="211,80,446,107"></map>
43
- <center><font size="2">[<a target="top" href="graph_legend.html">legend</a>]</font></center></div>
46
+ <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
44
47
 
45
- <p>
46
- <a href="classPassenger_1_1IOException-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
47
- <tr><td></td></tr>
48
+ <p><a href="classPassenger_1_1IOException-members.html">List of all members.</a></p>
49
+ <table border="0" cellpadding="0" cellspacing="0">
48
50
  </table>
49
- <hr><a name="_details"></a><h2>Detailed Description</h2>
50
- Represents an error that occured during an I/O operation. <hr>The documentation for this class was generated from the following file:<ul>
51
- <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
51
+ <hr/><a name="_details"></a><h2>Detailed Description</h2>
52
+ <p>Represents an error that occured during an I/O operation. </p>
53
+ <hr/>The documentation for this class was generated from the following file:<ul>
54
+ <li><a class="el" href="Exceptions_8h_source.html">Exceptions.h</a></li>
55
+ </ul>
52
56
  </div>
53
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:59 2010 for Passenger by&nbsp;
57
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
54
58
  <a href="http://www.doxygen.org/index.html">
55
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
59
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
56
60
  </body>
57
61
  </html>
@@ -1,10 +1,13 @@
1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
- <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
3
5
  <title>Passenger: Member List</title>
4
- <link href="tabs.css" rel="stylesheet" type="text/css">
5
- <link href="doxygen.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.5.8 -->
6
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
7
+ <link href="doxygen.css" rel="stylesheet" type="text/css"/>
8
+ </head>
9
+ <body>
10
+ <!-- Generated by Doxygen 1.6.2 -->
8
11
  <div class="navigation" id="top">
9
12
  <div class="tabs">
10
13
  <ul>
@@ -24,34 +27,34 @@
24
27
  </div>
25
28
  </div>
26
29
  <div class="contents">
27
- <h1>Passenger::MessageChannel Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a>, including all inherited members.<p><table>
28
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#06309e208fc5e10642a2e9bbe0f351eb">close</a>()</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
29
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a5ee9617bb17bdeaba30b757ecffa1b5">connected</a>() const </td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
30
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#0b1e25dd75783d9753f8a0d1dd42606a">filenum</a>() const </td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
31
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#73e7c9a8e421d29558838176aff02ca4">MessageChannel</a>()</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
32
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#486b6e74c4d0973eefbcfde65f898ca7">MessageChannel</a>(int fd)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
33
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e">read</a>(vector&lt; string &gt; &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
34
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#1a28ba9d078f38f2831673092ac9dcbc">readFileDescriptor</a>(bool negotiate=true)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
35
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#b471dc1888f030e20ed23068a160ec2a">readRaw</a>(void *buf, unsigned int size, unsigned long long *timeout=NULL)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
36
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#1f3cf672b566166ed920c2bba4d19604">readScalar</a>(string &amp;output, unsigned int maxSize=0, unsigned long long *timeout=NULL)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
37
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#7b0c67852ea8ab455af75b1037c7f8b6">readUint32</a>(unsigned int &amp;value, unsigned long long *timeout=NULL)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
38
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#eb69bffbbb148c9bc8662e20b416c4e2">setReadTimeout</a>(unsigned int msec)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
39
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#77c5d7c47f387cf43992ebeb14e3c6c7">setWriteTimeout</a>(unsigned int msec)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
40
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#c2407ed109785b49794989507c570149">waitUntilReadable</a>(unsigned long long *timeout)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
41
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d">write</a>(const StringArrayType &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
42
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#9ad7a978cf8409e01ab2f0a2b6be5a0a">write</a>(const list&lt; string &gt; &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
43
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#6a9bc5d72715cb7ba0e437c8851ef487">write</a>(const vector&lt; string &gt; &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
44
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#70cc924c1ce7e2cedcbab61155d3aec9">write</a>(const char *name, va_list &amp;ap)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
45
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#12cce3364023eacbe4fe09006cf3d38d">write</a>(const char *name,...)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
46
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#e0c558e07dcc91900016773b2bec38d8">writeFileDescriptor</a>(int fileDescriptor, bool negotiate=true)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
47
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#069314e4c7e1fe8c8ab36e16d2cc5fef">writeRaw</a>(const char *data, unsigned int size)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
48
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#cfa38f4f0e22ec16350b8cc159e8e364">writeRaw</a>(const string &amp;data)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
49
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#44e01a783c48abadeea0d915b9893bfb">writeScalar</a>(const string &amp;str)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
50
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#80977020ef895f3ea790c5d28a333dda">writeScalar</a>(const char *data, unsigned int size)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
51
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#bf02c51a74477650de8d5d5db661063b">writeUint32</a>(unsigned int value)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
30
+ <h1>Passenger::MessageChannel Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a>, including all inherited members.<table>
31
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a06309e208fc5e10642a2e9bbe0f351eb">close</a>()</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
32
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#aa5ee9617bb17bdeaba30b757ecffa1b5">connected</a>() const </td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
33
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a0b1e25dd75783d9753f8a0d1dd42606a">filenum</a>() const </td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
34
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a73e7c9a8e421d29558838176aff02ca4">MessageChannel</a>()</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
35
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a486b6e74c4d0973eefbcfde65f898ca7">MessageChannel</a>(int fd)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
36
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a129659b60d1a663337873d2af944431e">read</a>(vector&lt; string &gt; &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
37
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a1a28ba9d078f38f2831673092ac9dcbc">readFileDescriptor</a>(bool negotiate=true)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
38
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#ab471dc1888f030e20ed23068a160ec2a">readRaw</a>(void *buf, unsigned int size, unsigned long long *timeout=NULL)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
39
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a1f3cf672b566166ed920c2bba4d19604">readScalar</a>(string &amp;output, unsigned int maxSize=0, unsigned long long *timeout=NULL)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
40
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a7b0c67852ea8ab455af75b1037c7f8b6">readUint32</a>(unsigned int &amp;value, unsigned long long *timeout=NULL)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
41
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#aeb69bffbbb148c9bc8662e20b416c4e2">setReadTimeout</a>(unsigned int msec)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
42
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a77c5d7c47f387cf43992ebeb14e3c6c7">setWriteTimeout</a>(unsigned int msec)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
43
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#ac2407ed109785b49794989507c570149">waitUntilReadable</a>(unsigned long long *timeout)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
44
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a150f68bc47e060dcc6ca35bee047914d">write</a>(const StringArrayType &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
45
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a9ad7a978cf8409e01ab2f0a2b6be5a0a">write</a>(const list&lt; string &gt; &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
46
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a6a9bc5d72715cb7ba0e437c8851ef487">write</a>(const vector&lt; string &gt; &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
47
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a70cc924c1ce7e2cedcbab61155d3aec9">write</a>(const char *name, va_list &amp;ap)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
48
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a12cce3364023eacbe4fe09006cf3d38d">write</a>(const char *name,...)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
49
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#ae0c558e07dcc91900016773b2bec38d8">writeFileDescriptor</a>(int fileDescriptor, bool negotiate=true)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
50
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a069314e4c7e1fe8c8ab36e16d2cc5fef">writeRaw</a>(const char *data, unsigned int size)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
51
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#acfa38f4f0e22ec16350b8cc159e8e364">writeRaw</a>(const string &amp;data)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
52
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a44e01a783c48abadeea0d915b9893bfb">writeScalar</a>(const string &amp;str)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
53
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#a80977020ef895f3ea790c5d28a333dda">writeScalar</a>(const char *data, unsigned int size)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
54
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#abf02c51a74477650de8d5d5db661063b">writeUint32</a>(unsigned int value)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
52
55
  </table></div>
53
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:59 2010 for Passenger by&nbsp;
56
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
54
57
  <a href="http://www.doxygen.org/index.html">
55
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
58
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
56
59
  </body>
57
60
  </html>
@@ -1,10 +1,13 @@
1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
- <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
3
5
  <title>Passenger: Passenger::MessageChannel Class Reference</title>
4
- <link href="tabs.css" rel="stylesheet" type="text/css">
5
- <link href="doxygen.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.5.8 -->
6
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
7
+ <link href="doxygen.css" rel="stylesheet" type="text/css"/>
8
+ </head>
9
+ <body>
10
+ <!-- Generated by Doxygen 1.6.2 -->
8
11
  <div class="navigation" id="top">
9
12
  <div class="tabs">
10
13
  <ul>
@@ -26,133 +29,116 @@
26
29
  </div>
27
30
  </div>
28
31
  <div class="contents">
29
- <h1>Passenger::MessageChannel Class Reference<br>
32
+ <h1>Passenger::MessageChannel Class Reference<br/>
30
33
  <small>
31
34
  [<a class="el" href="group__Support.html">Apache-independent support classes and function</a>]</small>
32
- </h1><!-- doxytag: class="Passenger::MessageChannel" -->Convenience class for I/O operations on file descriptors.
33
- <a href="#_details">More...</a>
34
- <p>
35
- <code>#include &lt;<a class="el" href="MessageChannel_8h-source.html">MessageChannel.h</a>&gt;</code>
36
- <p>
37
-
38
- <p>
39
- <a href="classPassenger_1_1MessageChannel-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
40
- <tr><td></td></tr>
41
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
42
- <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#73e7c9a8e421d29558838176aff02ca4">MessageChannel</a> ()</td></tr>
43
-
44
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a new <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> with no underlying file descriptor. <a href="#73e7c9a8e421d29558838176aff02ca4"></a><br></td></tr>
45
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="486b6e74c4d0973eefbcfde65f898ca7"></a><!-- doxytag: member="Passenger::MessageChannel::MessageChannel" ref="486b6e74c4d0973eefbcfde65f898ca7" args="(int fd)" -->
46
- &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#486b6e74c4d0973eefbcfde65f898ca7">MessageChannel</a> (int fd)</td></tr>
47
-
48
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a new <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> with the given file descriptor. <br></td></tr>
49
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#0b1e25dd75783d9753f8a0d1dd42606a">filenum</a> () const </td></tr>
50
-
51
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the underlying file descriptor. <a href="#0b1e25dd75783d9753f8a0d1dd42606a"></a><br></td></tr>
52
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a5ee9617bb17bdeaba30b757ecffa1b5"></a><!-- doxytag: member="Passenger::MessageChannel::connected" ref="a5ee9617bb17bdeaba30b757ecffa1b5" args="() const " -->
53
- bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a5ee9617bb17bdeaba30b757ecffa1b5">connected</a> () const </td></tr>
54
-
55
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns whether <a class="el" href="classPassenger_1_1MessageChannel.html#06309e208fc5e10642a2e9bbe0f351eb" title="Close the underlying file descriptor.">close()</a> has been called. <br></td></tr>
56
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#06309e208fc5e10642a2e9bbe0f351eb">close</a> ()</td></tr>
57
-
58
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the underlying file descriptor. <a href="#06309e208fc5e10642a2e9bbe0f351eb"></a><br></td></tr>
59
- <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename StringArrayType , typename StringArrayConstIteratorType &gt; </td></tr>
60
- <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d">write</a> (const StringArrayType &amp;args)</td></tr>
61
-
62
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#150f68bc47e060dcc6ca35bee047914d"></a><br></td></tr>
63
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#9ad7a978cf8409e01ab2f0a2b6be5a0a">write</a> (const list&lt; string &gt; &amp;args)</td></tr>
64
-
65
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#9ad7a978cf8409e01ab2f0a2b6be5a0a"></a><br></td></tr>
66
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#6a9bc5d72715cb7ba0e437c8851ef487">write</a> (const vector&lt; string &gt; &amp;args)</td></tr>
67
-
68
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#6a9bc5d72715cb7ba0e437c8851ef487"></a><br></td></tr>
69
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#70cc924c1ce7e2cedcbab61155d3aec9">write</a> (const char *name, va_list &amp;ap)</td></tr>
70
-
71
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given strings, over the underlying file descriptor. <a href="#70cc924c1ce7e2cedcbab61155d3aec9"></a><br></td></tr>
72
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#12cce3364023eacbe4fe09006cf3d38d">write</a> (const char *name,...)</td></tr>
73
-
74
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given strings, over the underlying file descriptor. <a href="#12cce3364023eacbe4fe09006cf3d38d"></a><br></td></tr>
75
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#bf02c51a74477650de8d5d5db661063b">writeUint32</a> (unsigned int value)</td></tr>
76
-
77
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a 32-bit big-endian unsigned integer to the underlying file descriptor. <a href="#bf02c51a74477650de8d5d5db661063b"></a><br></td></tr>
78
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#44e01a783c48abadeea0d915b9893bfb">writeScalar</a> (const string &amp;str)</td></tr>
79
-
80
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a scalar message to the underlying file descriptor. <a href="#44e01a783c48abadeea0d915b9893bfb"></a><br></td></tr>
81
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#80977020ef895f3ea790c5d28a333dda">writeScalar</a> (const char *data, unsigned int size)</td></tr>
82
-
83
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a scalar message to the underlying file descriptor. <a href="#80977020ef895f3ea790c5d28a333dda"></a><br></td></tr>
84
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#069314e4c7e1fe8c8ab36e16d2cc5fef">writeRaw</a> (const char *data, unsigned int size)</td></tr>
85
-
86
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a block of data over the underlying file descriptor. <a href="#069314e4c7e1fe8c8ab36e16d2cc5fef"></a><br></td></tr>
87
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#cfa38f4f0e22ec16350b8cc159e8e364">writeRaw</a> (const string &amp;data)</td></tr>
88
-
89
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a block of data over the underlying file descriptor. <a href="#cfa38f4f0e22ec16350b8cc159e8e364"></a><br></td></tr>
90
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#e0c558e07dcc91900016773b2bec38d8">writeFileDescriptor</a> (int fileDescriptor, bool negotiate=true)</td></tr>
91
-
92
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pass a file descriptor. <a href="#e0c558e07dcc91900016773b2bec38d8"></a><br></td></tr>
93
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e">read</a> (vector&lt; string &gt; &amp;args)</td></tr>
94
-
95
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read an array message from the underlying file descriptor. <a href="#129659b60d1a663337873d2af944431e"></a><br></td></tr>
96
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#7b0c67852ea8ab455af75b1037c7f8b6">readUint32</a> (unsigned int &amp;value, unsigned long long *timeout=NULL)</td></tr>
97
-
98
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a 32-bit big-endian unsigned integer from the underlying file descriptor. <a href="#7b0c67852ea8ab455af75b1037c7f8b6"></a><br></td></tr>
99
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#1f3cf672b566166ed920c2bba4d19604">readScalar</a> (string &amp;output, unsigned int maxSize=0, unsigned long long *timeout=NULL)</td></tr>
100
-
101
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a scalar message from the underlying file descriptor. <a href="#1f3cf672b566166ed920c2bba4d19604"></a><br></td></tr>
102
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#b471dc1888f030e20ed23068a160ec2a">readRaw</a> (void *buf, unsigned int size, unsigned long long *timeout=NULL)</td></tr>
103
-
104
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read exactly <code>size</code> bytes of data from the underlying file descriptor, and put the result in <code>buf</code>. <a href="#b471dc1888f030e20ed23068a160ec2a"></a><br></td></tr>
105
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#c2407ed109785b49794989507c570149">waitUntilReadable</a> (unsigned long long *timeout)</td></tr>
106
-
107
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Waits at most <code>*timeout</code> milliseconds for the file descriptor to become readable. <a href="#c2407ed109785b49794989507c570149"></a><br></td></tr>
108
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#1a28ba9d078f38f2831673092ac9dcbc">readFileDescriptor</a> (bool negotiate=true)</td></tr>
109
-
110
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Receive a file descriptor, which had been passed over the underlying file descriptor. <a href="#1a28ba9d078f38f2831673092ac9dcbc"></a><br></td></tr>
111
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#eb69bffbbb148c9bc8662e20b416c4e2">setReadTimeout</a> (unsigned int msec)</td></tr>
112
-
113
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for reading data from this channel. <a href="#eb69bffbbb148c9bc8662e20b416c4e2"></a><br></td></tr>
114
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#77c5d7c47f387cf43992ebeb14e3c6c7">setWriteTimeout</a> (unsigned int msec)</td></tr>
115
-
116
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for writing data to this channel. <a href="#77c5d7c47f387cf43992ebeb14e3c6c7"></a><br></td></tr>
35
+ </h1><!-- doxytag: class="Passenger::MessageChannel" -->
36
+ <p>Convenience class for I/O operations on file descriptors.
37
+ <a href="#_details">More...</a></p>
38
+
39
+ <p><code>#include &lt;<a class="el" href="MessageChannel_8h_source.html">MessageChannel.h</a>&gt;</code></p>
40
+
41
+ <p><a href="classPassenger_1_1MessageChannel-members.html">List of all members.</a></p>
42
+ <table border="0" cellpadding="0" cellspacing="0">
43
+ <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
44
+ <tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a73e7c9a8e421d29558838176aff02ca4">MessageChannel</a> ()</td></tr>
45
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a new <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> with no underlying file descriptor. <a href="#a73e7c9a8e421d29558838176aff02ca4"></a><br/></td></tr>
46
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a486b6e74c4d0973eefbcfde65f898ca7"></a><!-- doxytag: member="Passenger::MessageChannel::MessageChannel" ref="a486b6e74c4d0973eefbcfde65f898ca7" args="(int fd)" -->
47
+ &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a486b6e74c4d0973eefbcfde65f898ca7">MessageChannel</a> (int fd)</td></tr>
48
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a new <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> with the given file descriptor. <br/></td></tr>
49
+ <tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a0b1e25dd75783d9753f8a0d1dd42606a">filenum</a> () const </td></tr>
50
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the underlying file descriptor. <a href="#a0b1e25dd75783d9753f8a0d1dd42606a"></a><br/></td></tr>
51
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5ee9617bb17bdeaba30b757ecffa1b5"></a><!-- doxytag: member="Passenger::MessageChannel::connected" ref="aa5ee9617bb17bdeaba30b757ecffa1b5" args="() const " -->
52
+ bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#aa5ee9617bb17bdeaba30b757ecffa1b5">connected</a> () const </td></tr>
53
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns whether <a class="el" href="classPassenger_1_1MessageChannel.html#a06309e208fc5e10642a2e9bbe0f351eb" title="Close the underlying file descriptor.">close()</a> has been called. <br/></td></tr>
54
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a06309e208fc5e10642a2e9bbe0f351eb">close</a> ()</td></tr>
55
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the underlying file descriptor. <a href="#a06309e208fc5e10642a2e9bbe0f351eb"></a><br/></td></tr>
56
+ <tr><td class="memTemplParams" colspan="2">template&lt;typename StringArrayType , typename StringArrayConstIteratorType &gt; </td></tr>
57
+ <tr><td class="memTemplItemLeft" align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a150f68bc47e060dcc6ca35bee047914d">write</a> (const StringArrayType &amp;args)</td></tr>
58
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#a150f68bc47e060dcc6ca35bee047914d"></a><br/></td></tr>
59
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a9ad7a978cf8409e01ab2f0a2b6be5a0a">write</a> (const list&lt; string &gt; &amp;args)</td></tr>
60
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#a9ad7a978cf8409e01ab2f0a2b6be5a0a"></a><br/></td></tr>
61
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a6a9bc5d72715cb7ba0e437c8851ef487">write</a> (const vector&lt; string &gt; &amp;args)</td></tr>
62
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#a6a9bc5d72715cb7ba0e437c8851ef487"></a><br/></td></tr>
63
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a70cc924c1ce7e2cedcbab61155d3aec9">write</a> (const char *name, va_list &amp;ap)</td></tr>
64
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given strings, over the underlying file descriptor. <a href="#a70cc924c1ce7e2cedcbab61155d3aec9"></a><br/></td></tr>
65
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a12cce3364023eacbe4fe09006cf3d38d">write</a> (const char *name,...)</td></tr>
66
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given strings, over the underlying file descriptor. <a href="#a12cce3364023eacbe4fe09006cf3d38d"></a><br/></td></tr>
67
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#abf02c51a74477650de8d5d5db661063b">writeUint32</a> (unsigned int value)</td></tr>
68
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a 32-bit big-endian unsigned integer to the underlying file descriptor. <a href="#abf02c51a74477650de8d5d5db661063b"></a><br/></td></tr>
69
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a44e01a783c48abadeea0d915b9893bfb">writeScalar</a> (const string &amp;str)</td></tr>
70
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a scalar message to the underlying file descriptor. <a href="#a44e01a783c48abadeea0d915b9893bfb"></a><br/></td></tr>
71
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a80977020ef895f3ea790c5d28a333dda">writeScalar</a> (const char *data, unsigned int size)</td></tr>
72
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a scalar message to the underlying file descriptor. <a href="#a80977020ef895f3ea790c5d28a333dda"></a><br/></td></tr>
73
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a069314e4c7e1fe8c8ab36e16d2cc5fef">writeRaw</a> (const char *data, unsigned int size)</td></tr>
74
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a block of data over the underlying file descriptor. <a href="#a069314e4c7e1fe8c8ab36e16d2cc5fef"></a><br/></td></tr>
75
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#acfa38f4f0e22ec16350b8cc159e8e364">writeRaw</a> (const string &amp;data)</td></tr>
76
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a block of data over the underlying file descriptor. <a href="#acfa38f4f0e22ec16350b8cc159e8e364"></a><br/></td></tr>
77
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#ae0c558e07dcc91900016773b2bec38d8">writeFileDescriptor</a> (int fileDescriptor, bool negotiate=true)</td></tr>
78
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pass a file descriptor. <a href="#ae0c558e07dcc91900016773b2bec38d8"></a><br/></td></tr>
79
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a129659b60d1a663337873d2af944431e">read</a> (vector&lt; string &gt; &amp;args)</td></tr>
80
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read an array message from the underlying file descriptor. <a href="#a129659b60d1a663337873d2af944431e"></a><br/></td></tr>
81
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a7b0c67852ea8ab455af75b1037c7f8b6">readUint32</a> (unsigned int &amp;value, unsigned long long *timeout=NULL)</td></tr>
82
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a 32-bit big-endian unsigned integer from the underlying file descriptor. <a href="#a7b0c67852ea8ab455af75b1037c7f8b6"></a><br/></td></tr>
83
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a1f3cf672b566166ed920c2bba4d19604">readScalar</a> (string &amp;output, unsigned int maxSize=0, unsigned long long *timeout=NULL)</td></tr>
84
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a scalar message from the underlying file descriptor. <a href="#a1f3cf672b566166ed920c2bba4d19604"></a><br/></td></tr>
85
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#ab471dc1888f030e20ed23068a160ec2a">readRaw</a> (void *buf, unsigned int size, unsigned long long *timeout=NULL)</td></tr>
86
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read exactly <code>size</code> bytes of data from the underlying file descriptor, and put the result in <code>buf</code>. <a href="#ab471dc1888f030e20ed23068a160ec2a"></a><br/></td></tr>
87
+ <tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#ac2407ed109785b49794989507c570149">waitUntilReadable</a> (unsigned long long *timeout)</td></tr>
88
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Waits at most <code>*timeout</code> milliseconds for the file descriptor to become readable. <a href="#ac2407ed109785b49794989507c570149"></a><br/></td></tr>
89
+ <tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a1a28ba9d078f38f2831673092ac9dcbc">readFileDescriptor</a> (bool negotiate=true)</td></tr>
90
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Receive a file descriptor, which had been passed over the underlying file descriptor. <a href="#a1a28ba9d078f38f2831673092ac9dcbc"></a><br/></td></tr>
91
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#aeb69bffbbb148c9bc8662e20b416c4e2">setReadTimeout</a> (unsigned int msec)</td></tr>
92
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for reading data from this channel. <a href="#aeb69bffbbb148c9bc8662e20b416c4e2"></a><br/></td></tr>
93
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#a77c5d7c47f387cf43992ebeb14e3c6c7">setWriteTimeout</a> (unsigned int msec)</td></tr>
94
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for writing data to this channel. <a href="#a77c5d7c47f387cf43992ebeb14e3c6c7"></a><br/></td></tr>
117
95
  </table>
118
- <hr><a name="_details"></a><h2>Detailed Description</h2>
119
- Convenience class for I/O operations on file descriptors.
120
- <p>
121
- This class provides convenience methods for:<ul>
122
- <li>sending and receiving raw data over a file descriptor.</li><li>sending and receiving messages over a file descriptor.</li><li>file descriptor passing over a Unix socket.</li><li>data size limit enforcement and time constraint enforcement. All of these methods use exceptions for error reporting.</li></ul>
123
- <p>
124
- There are two kinds of messages:<ul>
125
- <li>Array messages. These are just a list of strings, and the message itself has a specific length. The contained strings may not contain NUL characters (<code>'\0'</code>). Note that an array message must have at least one element.</li><li>Scalar messages. These are byte strings which may contain arbitrary binary data. Scalar messages also have a specific length. The protocol is designed to be low overhead, easy to implement and easy to parse.</li></ul>
126
- <p>
127
- <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> is to be wrapped around a file descriptor. For example: <div class="fragment"><pre class="fragment"> <span class="keywordtype">int</span> p[2];
96
+ <hr/><a name="_details"></a><h2>Detailed Description</h2>
97
+ <p>Convenience class for I/O operations on file descriptors. </p>
98
+ <p>This class provides convenience methods for:</p>
99
+ <ul>
100
+ <li>sending and receiving raw data over a file descriptor.</li>
101
+ <li>sending and receiving messages over a file descriptor.</li>
102
+ <li>file descriptor passing over a Unix socket.</li>
103
+ <li>data size limit enforcement and time constraint enforcement. All of these methods use exceptions for error reporting.</li>
104
+ </ul>
105
+ <p>There are two kinds of messages:</p>
106
+ <ul>
107
+ <li>Array messages. These are just a list of strings, and the message itself has a specific length. The contained strings may not contain NUL characters (<code>'\0'</code>). Note that an array message must have at least one element.</li>
108
+ <li>Scalar messages. These are byte strings which may contain arbitrary binary data. Scalar messages also have a specific length. The protocol is designed to be low overhead, easy to implement and easy to parse.</li>
109
+ </ul>
110
+ <p><a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> is to be wrapped around a file descriptor. For example: </p>
111
+ <div class="fragment"><pre class="fragment"> <span class="keywordtype">int</span> p[2];
128
112
  pipe(p);
129
- <a class="code" href="classPassenger_1_1MessageChannel.html#73e7c9a8e421d29558838176aff02ca4" title="Construct a new MessageChannel with no underlying file descriptor.">MessageChannel</a> channel1(p[0]);
130
- <a class="code" href="classPassenger_1_1MessageChannel.html#73e7c9a8e421d29558838176aff02ca4" title="Construct a new MessageChannel with no underlying file descriptor.">MessageChannel</a> channel2(p[1]);
113
+ <a class="code" href="classPassenger_1_1MessageChannel.html#a73e7c9a8e421d29558838176aff02ca4" title="Construct a new MessageChannel with no underlying file descriptor.">MessageChannel</a> channel1(p[0]);
114
+ <a class="code" href="classPassenger_1_1MessageChannel.html#a73e7c9a8e421d29558838176aff02ca4" title="Construct a new MessageChannel with no underlying file descriptor.">MessageChannel</a> channel2(p[1]);
131
115
 
132
116
  <span class="comment">// Send an array message.</span>
133
- channel2.write(<span class="stringliteral">"hello"</span>, <span class="stringliteral">"world !!"</span>, NULL);
117
+ channel2.write(<span class="stringliteral">&quot;hello&quot;</span>, <span class="stringliteral">&quot;world !!&quot;</span>, NULL);
134
118
  list&lt;string&gt; args;
135
- channel1.read(args); <span class="comment">// args now contains { "hello", "world !!" }</span>
119
+ channel1.read(args); <span class="comment">// args now contains { &quot;hello&quot;, &quot;world !!&quot; }</span>
136
120
 
137
121
  <span class="comment">// Send a scalar message.</span>
138
- channel2.writeScalar(<span class="stringliteral">"some long string which can contain arbitrary binary data"</span>);
122
+ channel2.writeScalar(<span class="stringliteral">&quot;some long string which can contain arbitrary binary data&quot;</span>);
139
123
  <span class="keywordtype">string</span> str;
140
124
  channel1.readScalar(str);
141
- </pre></div><p>
142
- The life time of a <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> is independent from that of the wrapped file descriptor. If a <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> object is destroyed, the file descriptor is not automatically closed. Call <a class="el" href="classPassenger_1_1MessageChannel.html#06309e208fc5e10642a2e9bbe0f351eb" title="Close the underlying file descriptor.">close()</a> if you want to close the file descriptor.<p>
143
- <dl class="note" compact><dt><b>Note:</b></dt><dd>I/O operations are not buffered. <p>
144
- Be careful with mixing the sending/receiving of array messages, scalar messages and file descriptors. If you send a collection of any of these in a specific order, then the receiving side must receive them in the exact some order. So suppose you first send a message, then a file descriptor, then a scalar, then the receiving side must first receive a message, then a file descriptor, then a scalar. If the receiving side does things in the wrong order then bad things will happen. <p>
145
- <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> is not thread-safe, but is reentrant. <p>
125
+ </pre></div><p>The life time of a <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> is independent from that of the wrapped file descriptor. If a <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> object is destroyed, the file descriptor is not automatically closed. Call <a class="el" href="classPassenger_1_1MessageChannel.html#a06309e208fc5e10642a2e9bbe0f351eb" title="Close the underlying file descriptor.">close()</a> if you want to close the file descriptor.</p>
126
+ <dl class="note"><dt><b>Note:</b></dt><dd>I/O operations are not buffered. </dd>
127
+ <dd>
128
+ Be careful with mixing the sending/receiving of array messages, scalar messages and file descriptors. If you send a collection of any of these in a specific order, then the receiving side must receive them in the exact some order. So suppose you first send a message, then a file descriptor, then a scalar, then the receiving side must first receive a message, then a file descriptor, then a scalar. If the receiving side does things in the wrong order then bad things will happen. </dd>
129
+ <dd>
130
+ <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> is not thread-safe, but is reentrant. </dd>
131
+ <dd>
146
132
  Some methods throw <a class="el" href="classPassenger_1_1SecurityException.html" title="Represents some kind of security error.">SecurityException</a> and <a class="el" href="classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired.">TimeoutException</a>. When these exceptions are thrown, the channel will be left in an inconsistent state because only parts of the data have been read. You should close the channel after having caught these exceptions. </dd></dl>
147
- <hr><h2>Constructor &amp; Destructor Documentation</h2>
148
- <a class="anchor" name="73e7c9a8e421d29558838176aff02ca4"></a><!-- doxytag: member="Passenger::MessageChannel::MessageChannel" ref="73e7c9a8e421d29558838176aff02ca4" args="()" -->
133
+ <hr/><h2>Constructor &amp; Destructor Documentation</h2>
134
+ <a class="anchor" id="a73e7c9a8e421d29558838176aff02ca4"></a><!-- doxytag: member="Passenger::MessageChannel::MessageChannel" ref="a73e7c9a8e421d29558838176aff02ca4" args="()" -->
149
135
  <div class="memitem">
150
136
  <div class="memproto">
151
137
  <table class="memname">
152
138
  <tr>
153
- <td class="memname">Passenger::MessageChannel::MessageChannel </td>
139
+ <td class="memname">Passenger::MessageChannel::MessageChannel </td>
154
140
  <td>(</td>
155
- <td class="paramname"> </td>
141
+ <td class="paramname"></td>
156
142
  <td>&nbsp;)&nbsp;</td>
157
143
  <td><code> [inline]</code></td>
158
144
  </tr>
@@ -160,21 +146,20 @@ Some methods throw <a class="el" href="classPassenger_1_1SecurityException.html"
160
146
  </div>
161
147
  <div class="memdoc">
162
148
 
163
- <p>
164
- Construct a new <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> with no underlying file descriptor.
165
- <p>
166
- Thus the resulting <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> object will not be usable. This constructor exists to allow one to declare an "empty" <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> variable which is to be initialized later.
149
+ <p>Construct a new <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> with no underlying file descriptor. </p>
150
+ <p>Thus the resulting <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> object will not be usable. This constructor exists to allow one to declare an "empty" <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> variable which is to be initialized later. </p>
151
+
152
+ </div>
167
153
  </div>
168
- </div><p>
169
- <hr><h2>Member Function Documentation</h2>
170
- <a class="anchor" name="06309e208fc5e10642a2e9bbe0f351eb"></a><!-- doxytag: member="Passenger::MessageChannel::close" ref="06309e208fc5e10642a2e9bbe0f351eb" args="()" -->
154
+ <hr/><h2>Member Function Documentation</h2>
155
+ <a class="anchor" id="a06309e208fc5e10642a2e9bbe0f351eb"></a><!-- doxytag: member="Passenger::MessageChannel::close" ref="a06309e208fc5e10642a2e9bbe0f351eb" args="()" -->
171
156
  <div class="memitem">
172
157
  <div class="memproto">
173
158
  <table class="memname">
174
159
  <tr>
175
- <td class="memname">void Passenger::MessageChannel::close </td>
160
+ <td class="memname">void Passenger::MessageChannel::close </td>
176
161
  <td>(</td>
177
- <td class="paramname"> </td>
162
+ <td class="paramname"></td>
178
163
  <td>&nbsp;)&nbsp;</td>
179
164
  <td><code> [inline]</code></td>
180
165
  </tr>
@@ -182,29 +167,29 @@ Thus the resulting <a class="el" href="classPassenger_1_1MessageChannel.html" ti
182
167
  </div>
183
168
  <div class="memdoc">
184
169
 
185
- <p>
186
- Close the underlying file descriptor.
187
- <p>
188
- If this method is called multiple times, the file descriptor will only be closed the first time.<p>
189
- <dl compact><dt><b>Exceptions:</b></dt><dd>
170
+ <p>Close the underlying file descriptor. </p>
171
+ <p>If this method is called multiple times, the file descriptor will only be closed the first time.</p>
172
+ <dl><dt><b>Exceptions:</b></dt><dd>
190
173
  <table border="0" cellspacing="2" cellpadding="0">
191
174
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td></td></tr>
192
175
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
193
176
  </table>
177
+ </dd>
194
178
  </dl>
195
- <dl class="post" compact><dt><b>Postcondition:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#0b1e25dd75783d9753f8a0d1dd42606a" title="Returns the underlying file descriptor.">filenum()</a> == -1 <p>
179
+ <dl class="post"><dt><b>Postcondition:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a0b1e25dd75783d9753f8a0d1dd42606a" title="Returns the underlying file descriptor.">filenum()</a> == -1 </dd>
180
+ <dd>
196
181
  !connected() </dd></dl>
197
182
 
198
183
  </div>
199
- </div><p>
200
- <a class="anchor" name="0b1e25dd75783d9753f8a0d1dd42606a"></a><!-- doxytag: member="Passenger::MessageChannel::filenum" ref="0b1e25dd75783d9753f8a0d1dd42606a" args="() const " -->
184
+ </div>
185
+ <a class="anchor" id="a0b1e25dd75783d9753f8a0d1dd42606a"></a><!-- doxytag: member="Passenger::MessageChannel::filenum" ref="a0b1e25dd75783d9753f8a0d1dd42606a" args="() const " -->
201
186
  <div class="memitem">
202
187
  <div class="memproto">
203
188
  <table class="memname">
204
189
  <tr>
205
- <td class="memname">int Passenger::MessageChannel::filenum </td>
190
+ <td class="memname">int Passenger::MessageChannel::filenum </td>
206
191
  <td>(</td>
207
- <td class="paramname"> </td>
192
+ <td class="paramname"></td>
208
193
  <td>&nbsp;)&nbsp;</td>
209
194
  <td> const<code> [inline]</code></td>
210
195
  </tr>
@@ -212,21 +197,20 @@ If this method is called multiple times, the file descriptor will only be closed
212
197
  </div>
213
198
  <div class="memdoc">
214
199
 
215
- <p>
216
- Returns the underlying file descriptor.
217
- <p>
218
- -1 if it has already been closed.
200
+ <p>Returns the underlying file descriptor. </p>
201
+ <p>-1 if it has already been closed. </p>
202
+
203
+ </div>
219
204
  </div>
220
- </div><p>
221
- <a class="anchor" name="129659b60d1a663337873d2af944431e"></a><!-- doxytag: member="Passenger::MessageChannel::read" ref="129659b60d1a663337873d2af944431e" args="(vector&lt; string &gt; &amp;args)" -->
205
+ <a class="anchor" id="a129659b60d1a663337873d2af944431e"></a><!-- doxytag: member="Passenger::MessageChannel::read" ref="a129659b60d1a663337873d2af944431e" args="(vector&lt; string &gt; &amp;args)" -->
222
206
  <div class="memitem">
223
207
  <div class="memproto">
224
208
  <table class="memname">
225
209
  <tr>
226
- <td class="memname">bool Passenger::MessageChannel::read </td>
210
+ <td class="memname">bool Passenger::MessageChannel::read </td>
227
211
  <td>(</td>
228
212
  <td class="paramtype">vector&lt; string &gt; &amp;&nbsp;</td>
229
- <td class="paramname"> <em>args</em> </td>
213
+ <td class="paramname"> <em>args</em></td>
230
214
  <td>&nbsp;)&nbsp;</td>
231
215
  <td><code> [inline]</code></td>
232
216
  </tr>
@@ -234,34 +218,34 @@ Returns the underlying file descriptor.
234
218
  </div>
235
219
  <div class="memdoc">
236
220
 
237
- <p>
238
- Read an array message from the underlying file descriptor.
239
- <p>
240
- <dl compact><dt><b>Parameters:</b></dt><dd>
221
+ <p>Read an array message from the underlying file descriptor. </p>
222
+ <dl><dt><b>Parameters:</b></dt><dd>
241
223
  <table border="0" cellspacing="2" cellpadding="0">
242
224
  <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>The message will be put in this variable. </td></tr>
243
225
  </table>
226
+ </dd>
244
227
  </dl>
245
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>Whether end-of-file has been reached. If so, then the contents of <code>args</code> will be undefined. </dd></dl>
246
- <dl compact><dt><b>Exceptions:</b></dt><dd>
228
+ <dl class="return"><dt><b>Returns:</b></dt><dd>Whether end-of-file has been reached. If so, then the contents of <code>args</code> will be undefined. </dd></dl>
229
+ <dl><dt><b>Exceptions:</b></dt><dd>
247
230
  <table border="0" cellspacing="2" cellpadding="0">
248
231
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>If an error occured while receiving the message. </td></tr>
249
232
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
250
233
  </table>
234
+ </dd>
251
235
  </dl>
252
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write()</a> </dd></dl>
236
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write()</a> </dd></dl>
253
237
 
254
238
  </div>
255
- </div><p>
256
- <a class="anchor" name="1a28ba9d078f38f2831673092ac9dcbc"></a><!-- doxytag: member="Passenger::MessageChannel::readFileDescriptor" ref="1a28ba9d078f38f2831673092ac9dcbc" args="(bool negotiate=true)" -->
239
+ </div>
240
+ <a class="anchor" id="a1a28ba9d078f38f2831673092ac9dcbc"></a><!-- doxytag: member="Passenger::MessageChannel::readFileDescriptor" ref="a1a28ba9d078f38f2831673092ac9dcbc" args="(bool negotiate=true)" -->
257
241
  <div class="memitem">
258
242
  <div class="memproto">
259
243
  <table class="memname">
260
244
  <tr>
261
- <td class="memname">int Passenger::MessageChannel::readFileDescriptor </td>
245
+ <td class="memname">int Passenger::MessageChannel::readFileDescriptor </td>
262
246
  <td>(</td>
263
247
  <td class="paramtype">bool&nbsp;</td>
264
- <td class="paramname"> <em>negotiate</em> = <code>true</code> </td>
248
+ <td class="paramname"> <em>negotiate</em> = <code>true</code></td>
265
249
  <td>&nbsp;)&nbsp;</td>
266
250
  <td><code> [inline]</code></td>
267
251
  </tr>
@@ -269,31 +253,31 @@ Read an array message from the underlying file descriptor.
269
253
  </div>
270
254
  <div class="memdoc">
271
255
 
272
- <p>
273
- Receive a file descriptor, which had been passed over the underlying file descriptor.
274
- <p>
275
- <dl compact><dt><b>Parameters:</b></dt><dd>
256
+ <p>Receive a file descriptor, which had been passed over the underlying file descriptor. </p>
257
+ <dl><dt><b>Parameters:</b></dt><dd>
276
258
  <table border="0" cellspacing="2" cellpadding="0">
277
259
  <tr><td valign="top"></td><td valign="top"><em>negotiate</em>&nbsp;</td><td>See Ruby's MessageChannel::send_io method's comments. </td></tr>
278
260
  </table>
261
+ </dd>
279
262
  </dl>
280
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>The passed file descriptor. </dd></dl>
281
- <dl compact><dt><b>Exceptions:</b></dt><dd>
263
+ <dl class="return"><dt><b>Returns:</b></dt><dd>The passed file descriptor. </dd></dl>
264
+ <dl><dt><b>Exceptions:</b></dt><dd>
282
265
  <table border="0" cellspacing="2" cellpadding="0">
283
266
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>If something went wrong during the receiving of a file descriptor. Perhaps the underlying file descriptor isn't a Unix socket. </td></tr>
284
267
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1IOException.html" title="Represents an error that occured during an I/O operation.">IOException</a></em>&nbsp;</td><td>Whatever was received doesn't seem to be a file descriptor. </td></tr>
285
268
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
286
269
  </table>
270
+ </dd>
287
271
  </dl>
288
272
 
289
273
  </div>
290
- </div><p>
291
- <a class="anchor" name="b471dc1888f030e20ed23068a160ec2a"></a><!-- doxytag: member="Passenger::MessageChannel::readRaw" ref="b471dc1888f030e20ed23068a160ec2a" args="(void *buf, unsigned int size, unsigned long long *timeout=NULL)" -->
274
+ </div>
275
+ <a class="anchor" id="ab471dc1888f030e20ed23068a160ec2a"></a><!-- doxytag: member="Passenger::MessageChannel::readRaw" ref="ab471dc1888f030e20ed23068a160ec2a" args="(void *buf, unsigned int size, unsigned long long *timeout=NULL)" -->
292
276
  <div class="memitem">
293
277
  <div class="memproto">
294
278
  <table class="memname">
295
279
  <tr>
296
- <td class="memname">bool Passenger::MessageChannel::readRaw </td>
280
+ <td class="memname">bool Passenger::MessageChannel::readRaw </td>
297
281
  <td>(</td>
298
282
  <td class="paramtype">void *&nbsp;</td>
299
283
  <td class="paramname"> <em>buf</em>, </td>
@@ -319,36 +303,36 @@ Receive a file descriptor, which had been passed over the underlying file descri
319
303
  </div>
320
304
  <div class="memdoc">
321
305
 
322
- <p>
323
- Read exactly <code>size</code> bytes of data from the underlying file descriptor, and put the result in <code>buf</code>.
324
- <p>
325
- If end-of-file has been reached, or if end-of-file was encountered before <code>size</code> bytes have been read, then <code>false</code> will be returned. Otherwise (i.e. if the read was successful), <code>true</code> will be returned.<p>
326
- <dl compact><dt><b>Parameters:</b></dt><dd>
306
+ <p>Read exactly <code>size</code> bytes of data from the underlying file descriptor, and put the result in <code>buf</code>. </p>
307
+ <p>If end-of-file has been reached, or if end-of-file was encountered before <code>size</code> bytes have been read, then <code>false</code> will be returned. Otherwise (i.e. if the read was successful), <code>true</code> will be returned.</p>
308
+ <dl><dt><b>Parameters:</b></dt><dd>
327
309
  <table border="0" cellspacing="2" cellpadding="0">
328
310
  <tr><td valign="top"></td><td valign="top"><em>buf</em>&nbsp;</td><td>The buffer to place the read data in. This buffer must be at least <code>size</code> bytes long. </td></tr>
329
311
  <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The number of bytes to read. </td></tr>
330
312
  <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>A pointer to an integer, which specifies the maximum number of milliseconds that may be spent on reading the <code>size</code> bytes of data. If the timeout expired then <a class="el" href="classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired.">TimeoutException</a> will be thrown. If this function returns without throwing an exception, then the total number of milliseconds spent on reading will be deducted from <code>timeout</code>. Pass NULL if you do not want to enforce a timeout. </td></tr>
331
313
  </table>
314
+ </dd>
332
315
  </dl>
333
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>Whether reading was successful or whether EOF was reached. </dd></dl>
334
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>buf != NULL </dd></dl>
335
- <dl compact><dt><b>Exceptions:</b></dt><dd>
316
+ <dl class="return"><dt><b>Returns:</b></dt><dd>Whether reading was successful or whether EOF was reached. </dd></dl>
317
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd>buf != NULL </dd></dl>
318
+ <dl><dt><b>Exceptions:</b></dt><dd>
336
319
  <table border="0" cellspacing="2" cellpadding="0">
337
320
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Something went wrong during reading. </td></tr>
338
321
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired.">TimeoutException</a></em>&nbsp;</td><td>Unable to read <code>size</code> bytes of data within <code>timeout</code> milliseconds. </td></tr>
339
322
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
340
323
  </table>
324
+ </dd>
341
325
  </dl>
342
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#069314e4c7e1fe8c8ab36e16d2cc5fef" title="Send a block of data over the underlying file descriptor.">writeRaw()</a> </dd></dl>
326
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a069314e4c7e1fe8c8ab36e16d2cc5fef" title="Send a block of data over the underlying file descriptor.">writeRaw()</a> </dd></dl>
343
327
 
344
328
  </div>
345
- </div><p>
346
- <a class="anchor" name="1f3cf672b566166ed920c2bba4d19604"></a><!-- doxytag: member="Passenger::MessageChannel::readScalar" ref="1f3cf672b566166ed920c2bba4d19604" args="(string &amp;output, unsigned int maxSize=0, unsigned long long *timeout=NULL)" -->
329
+ </div>
330
+ <a class="anchor" id="a1f3cf672b566166ed920c2bba4d19604"></a><!-- doxytag: member="Passenger::MessageChannel::readScalar" ref="a1f3cf672b566166ed920c2bba4d19604" args="(string &amp;output, unsigned int maxSize=0, unsigned long long *timeout=NULL)" -->
347
331
  <div class="memitem">
348
332
  <div class="memproto">
349
333
  <table class="memname">
350
334
  <tr>
351
- <td class="memname">bool Passenger::MessageChannel::readScalar </td>
335
+ <td class="memname">bool Passenger::MessageChannel::readScalar </td>
352
336
  <td>(</td>
353
337
  <td class="paramtype">string &amp;&nbsp;</td>
354
338
  <td class="paramname"> <em>output</em>, </td>
@@ -374,35 +358,35 @@ If end-of-file has been reached, or if end-of-file was encountered before <code>
374
358
  </div>
375
359
  <div class="memdoc">
376
360
 
377
- <p>
378
- Read a scalar message from the underlying file descriptor.
379
- <p>
380
- <dl compact><dt><b>Parameters:</b></dt><dd>
361
+ <p>Read a scalar message from the underlying file descriptor. </p>
362
+ <dl><dt><b>Parameters:</b></dt><dd>
381
363
  <table border="0" cellspacing="2" cellpadding="0">
382
364
  <tr><td valign="top"></td><td valign="top"><em>output</em>&nbsp;</td><td>The message will be put in here. </td></tr>
383
365
  <tr><td valign="top"></td><td valign="top"><em>maxSize</em>&nbsp;</td><td>The maximum number of bytes that may be read. If the scalar to read is larger than this, then a <a class="el" href="classPassenger_1_1SecurityException.html" title="Represents some kind of security error.">SecurityException</a> will be thrown. Set to 0 for no size limit. </td></tr>
384
366
  <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>A pointer to an integer, representing the maximum number of milliseconds to spend on reading the entire scalar. A <a class="el" href="classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired.">TimeoutException</a> will be thrown if unable to read the entire scalar within this time period. If no exception is thrown, the the amount of time spent on waiting will be deducted from <code>*timeout</code>. Pass NULL if you do not want to enforce any time limits. </td></tr>
385
367
  </table>
368
+ </dd>
386
369
  </dl>
387
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>Whether end-of-file was reached during reading. </dd></dl>
388
- <dl compact><dt><b>Exceptions:</b></dt><dd>
370
+ <dl class="return"><dt><b>Returns:</b></dt><dd>Whether end-of-file was reached during reading. </dd></dl>
371
+ <dl><dt><b>Exceptions:</b></dt><dd>
389
372
  <table border="0" cellspacing="2" cellpadding="0">
390
373
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while reading data from the file descriptor. </td></tr>
391
374
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SecurityException.html" title="Represents some kind of security error.">SecurityException</a></em>&nbsp;</td><td>There is more data to read than allowed by maxSize. </td></tr>
392
375
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired.">TimeoutException</a></em>&nbsp;</td><td>Unable to read the entire scalar within <code>timeout</code> milliseconds. </td></tr>
393
376
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
394
377
  </table>
378
+ </dd>
395
379
  </dl>
396
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#44e01a783c48abadeea0d915b9893bfb" title="Write a scalar message to the underlying file descriptor.">writeScalar()</a> </dd></dl>
380
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a44e01a783c48abadeea0d915b9893bfb" title="Write a scalar message to the underlying file descriptor.">writeScalar()</a> </dd></dl>
397
381
 
398
382
  </div>
399
- </div><p>
400
- <a class="anchor" name="7b0c67852ea8ab455af75b1037c7f8b6"></a><!-- doxytag: member="Passenger::MessageChannel::readUint32" ref="7b0c67852ea8ab455af75b1037c7f8b6" args="(unsigned int &amp;value, unsigned long long *timeout=NULL)" -->
383
+ </div>
384
+ <a class="anchor" id="a7b0c67852ea8ab455af75b1037c7f8b6"></a><!-- doxytag: member="Passenger::MessageChannel::readUint32" ref="a7b0c67852ea8ab455af75b1037c7f8b6" args="(unsigned int &amp;value, unsigned long long *timeout=NULL)" -->
401
385
  <div class="memitem">
402
386
  <div class="memproto">
403
387
  <table class="memname">
404
388
  <tr>
405
- <td class="memname">bool Passenger::MessageChannel::readUint32 </td>
389
+ <td class="memname">bool Passenger::MessageChannel::readUint32 </td>
406
390
  <td>(</td>
407
391
  <td class="paramtype">unsigned int &amp;&nbsp;</td>
408
392
  <td class="paramname"> <em>value</em>, </td>
@@ -422,34 +406,34 @@ Read a scalar message from the underlying file descriptor.
422
406
  </div>
423
407
  <div class="memdoc">
424
408
 
425
- <p>
426
- Read a 32-bit big-endian unsigned integer from the underlying file descriptor.
427
- <p>
428
- <dl compact><dt><b>Parameters:</b></dt><dd>
409
+ <p>Read a 32-bit big-endian unsigned integer from the underlying file descriptor. </p>
410
+ <dl><dt><b>Parameters:</b></dt><dd>
429
411
  <table border="0" cellspacing="2" cellpadding="0">
430
412
  <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>Upon success, the read value will be stored in here. </td></tr>
431
413
  <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>A pointer to an integer, representing the maximum number of milliseconds to spend on reading the entire integer. A <a class="el" href="classPassenger_1_1TimeoutException.html" title="An exception indicating that some timeout expired.">TimeoutException</a> will be thrown if the timeout expires. If no exception is thrown, the the amount of time spent on waiting will be deducted from <code>*timeout</code>. Pass NULL if you do not want to enforce any time limits. </td></tr>
432
414
  </table>
415
+ </dd>
433
416
  </dl>
434
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>True if a value was read, false if EOF was reached before all data can be read. </dd></dl>
435
- <dl compact><dt><b>Exceptions:</b></dt><dd>
417
+ <dl class="return"><dt><b>Returns:</b></dt><dd>True if a value was read, false if EOF was reached before all data can be read. </dd></dl>
418
+ <dl><dt><b>Exceptions:</b></dt><dd>
436
419
  <table border="0" cellspacing="2" cellpadding="0">
437
420
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occurred while reading data from the file descriptor. </td></tr>
438
421
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
439
422
  </table>
423
+ </dd>
440
424
  </dl>
441
425
 
442
426
  </div>
443
- </div><p>
444
- <a class="anchor" name="eb69bffbbb148c9bc8662e20b416c4e2"></a><!-- doxytag: member="Passenger::MessageChannel::setReadTimeout" ref="eb69bffbbb148c9bc8662e20b416c4e2" args="(unsigned int msec)" -->
427
+ </div>
428
+ <a class="anchor" id="aeb69bffbbb148c9bc8662e20b416c4e2"></a><!-- doxytag: member="Passenger::MessageChannel::setReadTimeout" ref="aeb69bffbbb148c9bc8662e20b416c4e2" args="(unsigned int msec)" -->
445
429
  <div class="memitem">
446
430
  <div class="memproto">
447
431
  <table class="memname">
448
432
  <tr>
449
- <td class="memname">void Passenger::MessageChannel::setReadTimeout </td>
433
+ <td class="memname">void Passenger::MessageChannel::setReadTimeout </td>
450
434
  <td>(</td>
451
435
  <td class="paramtype">unsigned int&nbsp;</td>
452
- <td class="paramname"> <em>msec</em> </td>
436
+ <td class="paramname"> <em>msec</em></td>
453
437
  <td>&nbsp;)&nbsp;</td>
454
438
  <td><code> [inline]</code></td>
455
439
  </tr>
@@ -457,32 +441,32 @@ Read a 32-bit big-endian unsigned integer from the underlying file descriptor.
457
441
  </div>
458
442
  <div class="memdoc">
459
443
 
460
- <p>
461
- Set the timeout value for reading data from this channel.
462
- <p>
463
- If no data can be read within the timeout period, then a <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a> will be thrown by one of the read methods, with error code EAGAIN or EWOULDBLOCK.<p>
464
- <dl compact><dt><b>Parameters:</b></dt><dd>
444
+ <p>Set the timeout value for reading data from this channel. </p>
445
+ <p>If no data can be read within the timeout period, then a <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a> will be thrown by one of the read methods, with error code EAGAIN or EWOULDBLOCK.</p>
446
+ <dl><dt><b>Parameters:</b></dt><dd>
465
447
  <table border="0" cellspacing="2" cellpadding="0">
466
448
  <tr><td valign="top"></td><td valign="top"><em>msec</em>&nbsp;</td><td>The timeout, in milliseconds. If 0 is given, there will be no timeout. </td></tr>
467
449
  </table>
450
+ </dd>
468
451
  </dl>
469
- <dl compact><dt><b>Exceptions:</b></dt><dd>
452
+ <dl><dt><b>Exceptions:</b></dt><dd>
470
453
  <table border="0" cellspacing="2" cellpadding="0">
471
454
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Cannot set the timeout. </td></tr>
472
455
  </table>
456
+ </dd>
473
457
  </dl>
474
458
 
475
459
  </div>
476
- </div><p>
477
- <a class="anchor" name="77c5d7c47f387cf43992ebeb14e3c6c7"></a><!-- doxytag: member="Passenger::MessageChannel::setWriteTimeout" ref="77c5d7c47f387cf43992ebeb14e3c6c7" args="(unsigned int msec)" -->
460
+ </div>
461
+ <a class="anchor" id="a77c5d7c47f387cf43992ebeb14e3c6c7"></a><!-- doxytag: member="Passenger::MessageChannel::setWriteTimeout" ref="a77c5d7c47f387cf43992ebeb14e3c6c7" args="(unsigned int msec)" -->
478
462
  <div class="memitem">
479
463
  <div class="memproto">
480
464
  <table class="memname">
481
465
  <tr>
482
- <td class="memname">void Passenger::MessageChannel::setWriteTimeout </td>
466
+ <td class="memname">void Passenger::MessageChannel::setWriteTimeout </td>
483
467
  <td>(</td>
484
468
  <td class="paramtype">unsigned int&nbsp;</td>
485
- <td class="paramname"> <em>msec</em> </td>
469
+ <td class="paramname"> <em>msec</em></td>
486
470
  <td>&nbsp;)&nbsp;</td>
487
471
  <td><code> [inline]</code></td>
488
472
  </tr>
@@ -490,32 +474,32 @@ If no data can be read within the timeout period, then a <a class="el" href="cla
490
474
  </div>
491
475
  <div class="memdoc">
492
476
 
493
- <p>
494
- Set the timeout value for writing data to this channel.
495
- <p>
496
- If no data can be written within the timeout period, then a <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a> will be thrown, with error code EAGAIN or EWOULDBLOCK.<p>
497
- <dl compact><dt><b>Parameters:</b></dt><dd>
477
+ <p>Set the timeout value for writing data to this channel. </p>
478
+ <p>If no data can be written within the timeout period, then a <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a> will be thrown, with error code EAGAIN or EWOULDBLOCK.</p>
479
+ <dl><dt><b>Parameters:</b></dt><dd>
498
480
  <table border="0" cellspacing="2" cellpadding="0">
499
481
  <tr><td valign="top"></td><td valign="top"><em>msec</em>&nbsp;</td><td>The timeout, in milliseconds. If 0 is given, there will be no timeout. </td></tr>
500
482
  </table>
483
+ </dd>
501
484
  </dl>
502
- <dl compact><dt><b>Exceptions:</b></dt><dd>
485
+ <dl><dt><b>Exceptions:</b></dt><dd>
503
486
  <table border="0" cellspacing="2" cellpadding="0">
504
487
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Cannot set the timeout. </td></tr>
505
488
  </table>
489
+ </dd>
506
490
  </dl>
507
491
 
508
492
  </div>
509
- </div><p>
510
- <a class="anchor" name="c2407ed109785b49794989507c570149"></a><!-- doxytag: member="Passenger::MessageChannel::waitUntilReadable" ref="c2407ed109785b49794989507c570149" args="(unsigned long long *timeout)" -->
493
+ </div>
494
+ <a class="anchor" id="ac2407ed109785b49794989507c570149"></a><!-- doxytag: member="Passenger::MessageChannel::waitUntilReadable" ref="ac2407ed109785b49794989507c570149" args="(unsigned long long *timeout)" -->
511
495
  <div class="memitem">
512
496
  <div class="memproto">
513
497
  <table class="memname">
514
498
  <tr>
515
- <td class="memname">bool Passenger::MessageChannel::waitUntilReadable </td>
499
+ <td class="memname">bool Passenger::MessageChannel::waitUntilReadable </td>
516
500
  <td>(</td>
517
501
  <td class="paramtype">unsigned long long *&nbsp;</td>
518
- <td class="paramname"> <em>timeout</em> </td>
502
+ <td class="paramname"> <em>timeout</em></td>
519
503
  <td>&nbsp;)&nbsp;</td>
520
504
  <td><code> [inline]</code></td>
521
505
  </tr>
@@ -523,27 +507,26 @@ If no data can be written within the timeout period, then a <a class="el" href="
523
507
  </div>
524
508
  <div class="memdoc">
525
509
 
526
- <p>
527
- Waits at most <code>*timeout</code> milliseconds for the file descriptor to become readable.
528
- <p>
529
- Returns true if it become readable within the timeout, false if the timeout expired.<p>
530
- <code>*timeout</code> may be 0, in which case this method will check whether the file descriptor is readable, and immediately returns without waiting.<p>
531
- If no exception is thrown, this method deducts the number of milliseconds that has passed from <code>*timeout</code>.<p>
532
- <dl compact><dt><b>Exceptions:</b></dt><dd>
510
+ <p>Waits at most <code>*timeout</code> milliseconds for the file descriptor to become readable. </p>
511
+ <p>Returns true if it become readable within the timeout, false if the timeout expired.</p>
512
+ <p><code>*timeout</code> may be 0, in which case this method will check whether the file descriptor is readable, and immediately returns without waiting.</p>
513
+ <p>If no exception is thrown, this method deducts the number of milliseconds that has passed from <code>*timeout</code>.</p>
514
+ <dl><dt><b>Exceptions:</b></dt><dd>
533
515
  <table border="0" cellspacing="2" cellpadding="0">
534
516
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td></td></tr>
535
517
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
536
518
  </table>
519
+ </dd>
537
520
  </dl>
538
521
 
539
522
  </div>
540
- </div><p>
541
- <a class="anchor" name="12cce3364023eacbe4fe09006cf3d38d"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="12cce3364023eacbe4fe09006cf3d38d" args="(const char *name,...)" -->
523
+ </div>
524
+ <a class="anchor" id="a12cce3364023eacbe4fe09006cf3d38d"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="a12cce3364023eacbe4fe09006cf3d38d" args="(const char *name,...)" -->
542
525
  <div class="memitem">
543
526
  <div class="memproto">
544
527
  <table class="memname">
545
528
  <tr>
546
- <td class="memname">void Passenger::MessageChannel::write </td>
529
+ <td class="memname">void Passenger::MessageChannel::write </td>
547
530
  <td>(</td>
548
531
  <td class="paramtype">const char *&nbsp;</td>
549
532
  <td class="paramname"> <em>name</em>, </td>
@@ -563,32 +546,32 @@ If no exception is thrown, this method deducts the number of milliseconds that h
563
546
  </div>
564
547
  <div class="memdoc">
565
548
 
566
- <p>
567
- Send an array message, which consists of the given strings, over the underlying file descriptor.
568
- <p>
569
- <dl compact><dt><b>Parameters:</b></dt><dd>
549
+ <p>Send an array message, which consists of the given strings, over the underlying file descriptor. </p>
550
+ <dl><dt><b>Parameters:</b></dt><dd>
570
551
  <table border="0" cellspacing="2" cellpadding="0">
571
552
  <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>The first element of the message to send. </td></tr>
572
553
  <tr><td valign="top"></td><td valign="top"><em>...</em>&nbsp;</td><td>Other elements of the message. These *must* be strings, i.e. of type char*. It is also required to terminate this list with a NULL. </td></tr>
573
554
  </table>
555
+ </dd>
574
556
  </dl>
575
- <dl compact><dt><b>Exceptions:</b></dt><dd>
557
+ <dl><dt><b>Exceptions:</b></dt><dd>
576
558
  <table border="0" cellspacing="2" cellpadding="0">
577
559
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
578
560
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
579
561
  </table>
562
+ </dd>
580
563
  </dl>
581
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
582
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#9ad7a978cf8409e01ab2f0a2b6be5a0a" title="Send an array message, which consists of the given elements, over the underlying...">write(const list&lt;string&gt; &amp;)</a> </dd></dl>
564
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
565
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#a9ad7a978cf8409e01ab2f0a2b6be5a0a" title="Send an array message, which consists of the given elements, over the underlying...">write(const list&lt;string&gt; &amp;)</a> </dd></dl>
583
566
 
584
567
  </div>
585
- </div><p>
586
- <a class="anchor" name="70cc924c1ce7e2cedcbab61155d3aec9"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="70cc924c1ce7e2cedcbab61155d3aec9" args="(const char *name, va_list &amp;ap)" -->
568
+ </div>
569
+ <a class="anchor" id="a70cc924c1ce7e2cedcbab61155d3aec9"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="a70cc924c1ce7e2cedcbab61155d3aec9" args="(const char *name, va_list &amp;ap)" -->
587
570
  <div class="memitem">
588
571
  <div class="memproto">
589
572
  <table class="memname">
590
573
  <tr>
591
- <td class="memname">void Passenger::MessageChannel::write </td>
574
+ <td class="memname">void Passenger::MessageChannel::write </td>
592
575
  <td>(</td>
593
576
  <td class="paramtype">const char *&nbsp;</td>
594
577
  <td class="paramname"> <em>name</em>, </td>
@@ -608,29 +591,28 @@ Send an array message, which consists of the given strings, over the underlying
608
591
  </div>
609
592
  <div class="memdoc">
610
593
 
611
- <p>
612
- Send an array message, which consists of the given strings, over the underlying file descriptor.
613
- <p>
614
- Like <code>write(const char *name, ...)</code> but takes a va_list instead.<p>
615
- <dl compact><dt><b>Exceptions:</b></dt><dd>
594
+ <p>Send an array message, which consists of the given strings, over the underlying file descriptor. </p>
595
+ <p>Like <code>write(const char *name, ...)</code> but takes a va_list instead.</p>
596
+ <dl><dt><b>Exceptions:</b></dt><dd>
616
597
  <table border="0" cellspacing="2" cellpadding="0">
617
598
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
618
599
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
619
600
  </table>
601
+ </dd>
620
602
  </dl>
621
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
603
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
622
604
 
623
605
  </div>
624
- </div><p>
625
- <a class="anchor" name="6a9bc5d72715cb7ba0e437c8851ef487"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="6a9bc5d72715cb7ba0e437c8851ef487" args="(const vector&lt; string &gt; &amp;args)" -->
606
+ </div>
607
+ <a class="anchor" id="a6a9bc5d72715cb7ba0e437c8851ef487"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="a6a9bc5d72715cb7ba0e437c8851ef487" args="(const vector&lt; string &gt; &amp;args)" -->
626
608
  <div class="memitem">
627
609
  <div class="memproto">
628
610
  <table class="memname">
629
611
  <tr>
630
- <td class="memname">void Passenger::MessageChannel::write </td>
612
+ <td class="memname">void Passenger::MessageChannel::write </td>
631
613
  <td>(</td>
632
614
  <td class="paramtype">const vector&lt; string &gt; &amp;&nbsp;</td>
633
- <td class="paramname"> <em>args</em> </td>
615
+ <td class="paramname"> <em>args</em></td>
634
616
  <td>&nbsp;)&nbsp;</td>
635
617
  <td><code> [inline]</code></td>
636
618
  </tr>
@@ -638,34 +620,34 @@ Like <code>write(const char *name, ...)</code> but takes a va_list instead.<p>
638
620
  </div>
639
621
  <div class="memdoc">
640
622
 
641
- <p>
642
- Send an array message, which consists of the given elements, over the underlying file descriptor.
643
- <p>
644
- <dl compact><dt><b>Parameters:</b></dt><dd>
623
+ <p>Send an array message, which consists of the given elements, over the underlying file descriptor. </p>
624
+ <dl><dt><b>Parameters:</b></dt><dd>
645
625
  <table border="0" cellspacing="2" cellpadding="0">
646
626
  <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>The message elements. </td></tr>
647
627
  </table>
628
+ </dd>
648
629
  </dl>
649
- <dl compact><dt><b>Exceptions:</b></dt><dd>
630
+ <dl><dt><b>Exceptions:</b></dt><dd>
650
631
  <table border="0" cellspacing="2" cellpadding="0">
651
632
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
652
633
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
653
634
  </table>
635
+ </dd>
654
636
  </dl>
655
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
656
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
637
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
638
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#a150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
657
639
 
658
640
  </div>
659
- </div><p>
660
- <a class="anchor" name="9ad7a978cf8409e01ab2f0a2b6be5a0a"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="9ad7a978cf8409e01ab2f0a2b6be5a0a" args="(const list&lt; string &gt; &amp;args)" -->
641
+ </div>
642
+ <a class="anchor" id="a9ad7a978cf8409e01ab2f0a2b6be5a0a"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="a9ad7a978cf8409e01ab2f0a2b6be5a0a" args="(const list&lt; string &gt; &amp;args)" -->
661
643
  <div class="memitem">
662
644
  <div class="memproto">
663
645
  <table class="memname">
664
646
  <tr>
665
- <td class="memname">void Passenger::MessageChannel::write </td>
647
+ <td class="memname">void Passenger::MessageChannel::write </td>
666
648
  <td>(</td>
667
649
  <td class="paramtype">const list&lt; string &gt; &amp;&nbsp;</td>
668
- <td class="paramname"> <em>args</em> </td>
650
+ <td class="paramname"> <em>args</em></td>
669
651
  <td>&nbsp;)&nbsp;</td>
670
652
  <td><code> [inline]</code></td>
671
653
  </tr>
@@ -673,36 +655,36 @@ Send an array message, which consists of the given elements, over the underlying
673
655
  </div>
674
656
  <div class="memdoc">
675
657
 
676
- <p>
677
- Send an array message, which consists of the given elements, over the underlying file descriptor.
678
- <p>
679
- <dl compact><dt><b>Parameters:</b></dt><dd>
658
+ <p>Send an array message, which consists of the given elements, over the underlying file descriptor. </p>
659
+ <dl><dt><b>Parameters:</b></dt><dd>
680
660
  <table border="0" cellspacing="2" cellpadding="0">
681
661
  <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>The message elements. </td></tr>
682
662
  </table>
663
+ </dd>
683
664
  </dl>
684
- <dl compact><dt><b>Exceptions:</b></dt><dd>
665
+ <dl><dt><b>Exceptions:</b></dt><dd>
685
666
  <table border="0" cellspacing="2" cellpadding="0">
686
667
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
687
668
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
688
669
  </table>
670
+ </dd>
689
671
  </dl>
690
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
691
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
672
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
673
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#a150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
692
674
 
693
675
  </div>
694
- </div><p>
695
- <a class="anchor" name="150f68bc47e060dcc6ca35bee047914d"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="150f68bc47e060dcc6ca35bee047914d" args="(const StringArrayType &amp;args)" -->
676
+ </div>
677
+ <a class="anchor" id="a150f68bc47e060dcc6ca35bee047914d"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="a150f68bc47e060dcc6ca35bee047914d" args="(const StringArrayType &amp;args)" -->
696
678
  <div class="memitem">
697
679
  <div class="memproto">
698
680
  <div class="memtemplate">
699
681
  template&lt;typename StringArrayType , typename StringArrayConstIteratorType &gt; </div>
700
682
  <table class="memname">
701
683
  <tr>
702
- <td class="memname">void Passenger::MessageChannel::write </td>
684
+ <td class="memname">void Passenger::MessageChannel::write </td>
703
685
  <td>(</td>
704
686
  <td class="paramtype">const StringArrayType &amp;&nbsp;</td>
705
- <td class="paramname"> <em>args</em> </td>
687
+ <td class="paramname"> <em>args</em></td>
706
688
  <td>&nbsp;)&nbsp;</td>
707
689
  <td><code> [inline]</code></td>
708
690
  </tr>
@@ -710,31 +692,31 @@ template&lt;typename StringArrayType , typename StringArrayConstIteratorType &gt
710
692
  </div>
711
693
  <div class="memdoc">
712
694
 
713
- <p>
714
- Send an array message, which consists of the given elements, over the underlying file descriptor.
715
- <p>
716
- <dl compact><dt><b>Parameters:</b></dt><dd>
695
+ <p>Send an array message, which consists of the given elements, over the underlying file descriptor. </p>
696
+ <dl><dt><b>Parameters:</b></dt><dd>
717
697
  <table border="0" cellspacing="2" cellpadding="0">
718
698
  <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>An object which contains the message elements. This object must support STL-style iteration, and each iterator must have an std::string as value. Use the StringArrayType and StringArrayConstIteratorType template parameters to specify the exact type names. </td></tr>
719
699
  </table>
700
+ </dd>
720
701
  </dl>
721
- <dl compact><dt><b>Exceptions:</b></dt><dd>
702
+ <dl><dt><b>Exceptions:</b></dt><dd>
722
703
  <table border="0" cellspacing="2" cellpadding="0">
723
704
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
724
705
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
725
706
  </table>
707
+ </dd>
726
708
  </dl>
727
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
728
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
709
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
710
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#a150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
729
711
 
730
712
  </div>
731
- </div><p>
732
- <a class="anchor" name="e0c558e07dcc91900016773b2bec38d8"></a><!-- doxytag: member="Passenger::MessageChannel::writeFileDescriptor" ref="e0c558e07dcc91900016773b2bec38d8" args="(int fileDescriptor, bool negotiate=true)" -->
713
+ </div>
714
+ <a class="anchor" id="ae0c558e07dcc91900016773b2bec38d8"></a><!-- doxytag: member="Passenger::MessageChannel::writeFileDescriptor" ref="ae0c558e07dcc91900016773b2bec38d8" args="(int fileDescriptor, bool negotiate=true)" -->
733
715
  <div class="memitem">
734
716
  <div class="memproto">
735
717
  <table class="memname">
736
718
  <tr>
737
- <td class="memname">void Passenger::MessageChannel::writeFileDescriptor </td>
719
+ <td class="memname">void Passenger::MessageChannel::writeFileDescriptor </td>
738
720
  <td>(</td>
739
721
  <td class="paramtype">int&nbsp;</td>
740
722
  <td class="paramname"> <em>fileDescriptor</em>, </td>
@@ -754,36 +736,36 @@ Send an array message, which consists of the given elements, over the underlying
754
736
  </div>
755
737
  <div class="memdoc">
756
738
 
757
- <p>
758
- Pass a file descriptor.
759
- <p>
760
- This only works if the underlying file descriptor is a Unix socket.<p>
761
- <dl compact><dt><b>Parameters:</b></dt><dd>
739
+ <p>Pass a file descriptor. </p>
740
+ <p>This only works if the underlying file descriptor is a Unix socket.</p>
741
+ <dl><dt><b>Parameters:</b></dt><dd>
762
742
  <table border="0" cellspacing="2" cellpadding="0">
763
743
  <tr><td valign="top"></td><td valign="top"><em>fileDescriptor</em>&nbsp;</td><td>The file descriptor to pass. </td></tr>
764
744
  <tr><td valign="top"></td><td valign="top"><em>negotiate</em>&nbsp;</td><td>See Ruby's MessageChannel::send_io method's comments. </td></tr>
765
745
  </table>
746
+ </dd>
766
747
  </dl>
767
- <dl compact><dt><b>Exceptions:</b></dt><dd>
748
+ <dl><dt><b>Exceptions:</b></dt><dd>
768
749
  <table border="0" cellspacing="2" cellpadding="0">
769
750
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Something went wrong during file descriptor passing. </td></tr>
770
751
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
771
752
  </table>
753
+ </dd>
772
754
  </dl>
773
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd><code>fileDescriptor &gt;= 0</code> </dd></dl>
774
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#1a28ba9d078f38f2831673092ac9dcbc" title="Receive a file descriptor, which had been passed over the underlying file descriptor...">readFileDescriptor()</a> </dd></dl>
755
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd><code>fileDescriptor &gt;= 0</code> </dd></dl>
756
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a1a28ba9d078f38f2831673092ac9dcbc" title="Receive a file descriptor, which had been passed over the underlying file descriptor...">readFileDescriptor()</a> </dd></dl>
775
757
 
776
758
  </div>
777
- </div><p>
778
- <a class="anchor" name="cfa38f4f0e22ec16350b8cc159e8e364"></a><!-- doxytag: member="Passenger::MessageChannel::writeRaw" ref="cfa38f4f0e22ec16350b8cc159e8e364" args="(const string &amp;data)" -->
759
+ </div>
760
+ <a class="anchor" id="acfa38f4f0e22ec16350b8cc159e8e364"></a><!-- doxytag: member="Passenger::MessageChannel::writeRaw" ref="acfa38f4f0e22ec16350b8cc159e8e364" args="(const string &amp;data)" -->
779
761
  <div class="memitem">
780
762
  <div class="memproto">
781
763
  <table class="memname">
782
764
  <tr>
783
- <td class="memname">void Passenger::MessageChannel::writeRaw </td>
765
+ <td class="memname">void Passenger::MessageChannel::writeRaw </td>
784
766
  <td>(</td>
785
767
  <td class="paramtype">const string &amp;&nbsp;</td>
786
- <td class="paramname"> <em>data</em> </td>
768
+ <td class="paramname"> <em>data</em></td>
787
769
  <td>&nbsp;)&nbsp;</td>
788
770
  <td><code> [inline]</code></td>
789
771
  </tr>
@@ -791,32 +773,32 @@ This only works if the underlying file descriptor is a Unix socket.<p>
791
773
  </div>
792
774
  <div class="memdoc">
793
775
 
794
- <p>
795
- Send a block of data over the underlying file descriptor.
796
- <p>
797
- This method blocks until everything is sent.<p>
798
- <dl class="note" compact><dt><b>Note:</b></dt><dd>Security guarantee: this method will not copy the data in memory, so it's safe to use this method to write passwords to the underlying file descriptor.</dd></dl>
799
- <dl compact><dt><b>Parameters:</b></dt><dd>
776
+ <p>Send a block of data over the underlying file descriptor. </p>
777
+ <p>This method blocks until everything is sent.</p>
778
+ <dl class="note"><dt><b>Note:</b></dt><dd>Security guarantee: this method will not copy the data in memory, so it's safe to use this method to write passwords to the underlying file descriptor.</dd></dl>
779
+ <dl><dt><b>Parameters:</b></dt><dd>
800
780
  <table border="0" cellspacing="2" cellpadding="0">
801
781
  <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The data to send. </td></tr>
802
782
  </table>
783
+ </dd>
803
784
  </dl>
804
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd><code>data != NULL</code> </dd></dl>
805
- <dl compact><dt><b>Exceptions:</b></dt><dd>
785
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd><code>data != NULL</code> </dd></dl>
786
+ <dl><dt><b>Exceptions:</b></dt><dd>
806
787
  <table border="0" cellspacing="2" cellpadding="0">
807
788
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
808
789
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
809
790
  </table>
791
+ </dd>
810
792
  </dl>
811
793
 
812
794
  </div>
813
- </div><p>
814
- <a class="anchor" name="069314e4c7e1fe8c8ab36e16d2cc5fef"></a><!-- doxytag: member="Passenger::MessageChannel::writeRaw" ref="069314e4c7e1fe8c8ab36e16d2cc5fef" args="(const char *data, unsigned int size)" -->
795
+ </div>
796
+ <a class="anchor" id="a069314e4c7e1fe8c8ab36e16d2cc5fef"></a><!-- doxytag: member="Passenger::MessageChannel::writeRaw" ref="a069314e4c7e1fe8c8ab36e16d2cc5fef" args="(const char *data, unsigned int size)" -->
815
797
  <div class="memitem">
816
798
  <div class="memproto">
817
799
  <table class="memname">
818
800
  <tr>
819
- <td class="memname">void Passenger::MessageChannel::writeRaw </td>
801
+ <td class="memname">void Passenger::MessageChannel::writeRaw </td>
820
802
  <td>(</td>
821
803
  <td class="paramtype">const char *&nbsp;</td>
822
804
  <td class="paramname"> <em>data</em>, </td>
@@ -836,34 +818,34 @@ This method blocks until everything is sent.<p>
836
818
  </div>
837
819
  <div class="memdoc">
838
820
 
839
- <p>
840
- Send a block of data over the underlying file descriptor.
841
- <p>
842
- This method blocks until everything is sent.<p>
843
- <dl class="note" compact><dt><b>Note:</b></dt><dd>Security guarantee: this method will not copy the data in memory, so it's safe to use this method to write passwords to the underlying file descriptor.</dd></dl>
844
- <dl compact><dt><b>Parameters:</b></dt><dd>
821
+ <p>Send a block of data over the underlying file descriptor. </p>
822
+ <p>This method blocks until everything is sent.</p>
823
+ <dl class="note"><dt><b>Note:</b></dt><dd>Security guarantee: this method will not copy the data in memory, so it's safe to use this method to write passwords to the underlying file descriptor.</dd></dl>
824
+ <dl><dt><b>Parameters:</b></dt><dd>
845
825
  <table border="0" cellspacing="2" cellpadding="0">
846
826
  <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The data to send. </td></tr>
847
827
  <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The number of bytes in <code>data</code>. </td></tr>
848
828
  </table>
829
+ </dd>
849
830
  </dl>
850
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd><code>data != NULL</code> </dd></dl>
851
- <dl compact><dt><b>Exceptions:</b></dt><dd>
831
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd><code>data != NULL</code> </dd></dl>
832
+ <dl><dt><b>Exceptions:</b></dt><dd>
852
833
  <table border="0" cellspacing="2" cellpadding="0">
853
834
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
854
835
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
855
836
  </table>
837
+ </dd>
856
838
  </dl>
857
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#b471dc1888f030e20ed23068a160ec2a" title="Read exactly size bytes of data from the underlying file descriptor, and put the...">readRaw()</a> </dd></dl>
839
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#ab471dc1888f030e20ed23068a160ec2a" title="Read exactly size bytes of data from the underlying file descriptor, and put the...">readRaw()</a> </dd></dl>
858
840
 
859
841
  </div>
860
- </div><p>
861
- <a class="anchor" name="80977020ef895f3ea790c5d28a333dda"></a><!-- doxytag: member="Passenger::MessageChannel::writeScalar" ref="80977020ef895f3ea790c5d28a333dda" args="(const char *data, unsigned int size)" -->
842
+ </div>
843
+ <a class="anchor" id="a80977020ef895f3ea790c5d28a333dda"></a><!-- doxytag: member="Passenger::MessageChannel::writeScalar" ref="a80977020ef895f3ea790c5d28a333dda" args="(const char *data, unsigned int size)" -->
862
844
  <div class="memitem">
863
845
  <div class="memproto">
864
846
  <table class="memname">
865
847
  <tr>
866
- <td class="memname">void Passenger::MessageChannel::writeScalar </td>
848
+ <td class="memname">void Passenger::MessageChannel::writeScalar </td>
867
849
  <td>(</td>
868
850
  <td class="paramtype">const char *&nbsp;</td>
869
851
  <td class="paramname"> <em>data</em>, </td>
@@ -883,36 +865,36 @@ This method blocks until everything is sent.<p>
883
865
  </div>
884
866
  <div class="memdoc">
885
867
 
886
- <p>
887
- Write a scalar message to the underlying file descriptor.
888
- <p>
889
- <dl class="note" compact><dt><b>Note:</b></dt><dd>Security guarantee: this method will not copy the data in memory, so it's safe to use this method to write passwords to the underlying file descriptor.</dd></dl>
890
- <dl compact><dt><b>Parameters:</b></dt><dd>
868
+ <p>Write a scalar message to the underlying file descriptor. </p>
869
+ <dl class="note"><dt><b>Note:</b></dt><dd>Security guarantee: this method will not copy the data in memory, so it's safe to use this method to write passwords to the underlying file descriptor.</dd></dl>
870
+ <dl><dt><b>Parameters:</b></dt><dd>
891
871
  <table border="0" cellspacing="2" cellpadding="0">
892
872
  <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>The scalar message's content. </td></tr>
893
873
  <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>The number of bytes in <code>data</code>. </td></tr>
894
874
  </table>
875
+ </dd>
895
876
  </dl>
896
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd><code>data != NULL</code> </dd></dl>
897
- <dl compact><dt><b>Exceptions:</b></dt><dd>
877
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd><code>data != NULL</code> </dd></dl>
878
+ <dl><dt><b>Exceptions:</b></dt><dd>
898
879
  <table border="0" cellspacing="2" cellpadding="0">
899
880
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
900
881
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
901
882
  </table>
883
+ </dd>
902
884
  </dl>
903
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#1f3cf672b566166ed920c2bba4d19604" title="Read a scalar message from the underlying file descriptor.">readScalar()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#44e01a783c48abadeea0d915b9893bfb" title="Write a scalar message to the underlying file descriptor.">writeScalar(const string &amp;)</a> </dd></dl>
885
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a1f3cf672b566166ed920c2bba4d19604" title="Read a scalar message from the underlying file descriptor.">readScalar()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#a44e01a783c48abadeea0d915b9893bfb" title="Write a scalar message to the underlying file descriptor.">writeScalar(const string &amp;)</a> </dd></dl>
904
886
 
905
887
  </div>
906
- </div><p>
907
- <a class="anchor" name="44e01a783c48abadeea0d915b9893bfb"></a><!-- doxytag: member="Passenger::MessageChannel::writeScalar" ref="44e01a783c48abadeea0d915b9893bfb" args="(const string &amp;str)" -->
888
+ </div>
889
+ <a class="anchor" id="a44e01a783c48abadeea0d915b9893bfb"></a><!-- doxytag: member="Passenger::MessageChannel::writeScalar" ref="a44e01a783c48abadeea0d915b9893bfb" args="(const string &amp;str)" -->
908
890
  <div class="memitem">
909
891
  <div class="memproto">
910
892
  <table class="memname">
911
893
  <tr>
912
- <td class="memname">void Passenger::MessageChannel::writeScalar </td>
894
+ <td class="memname">void Passenger::MessageChannel::writeScalar </td>
913
895
  <td>(</td>
914
896
  <td class="paramtype">const string &amp;&nbsp;</td>
915
- <td class="paramname"> <em>str</em> </td>
897
+ <td class="paramname"> <em>str</em></td>
916
898
  <td>&nbsp;)&nbsp;</td>
917
899
  <td><code> [inline]</code></td>
918
900
  </tr>
@@ -920,34 +902,34 @@ Write a scalar message to the underlying file descriptor.
920
902
  </div>
921
903
  <div class="memdoc">
922
904
 
923
- <p>
924
- Write a scalar message to the underlying file descriptor.
925
- <p>
926
- <dl class="note" compact><dt><b>Note:</b></dt><dd>Security guarantee: this method will not copy the data in memory, so it's safe to use this method to write passwords to the underlying file descriptor.</dd></dl>
927
- <dl compact><dt><b>Parameters:</b></dt><dd>
905
+ <p>Write a scalar message to the underlying file descriptor. </p>
906
+ <dl class="note"><dt><b>Note:</b></dt><dd>Security guarantee: this method will not copy the data in memory, so it's safe to use this method to write passwords to the underlying file descriptor.</dd></dl>
907
+ <dl><dt><b>Parameters:</b></dt><dd>
928
908
  <table border="0" cellspacing="2" cellpadding="0">
929
909
  <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>The scalar message's content. </td></tr>
930
910
  </table>
911
+ </dd>
931
912
  </dl>
932
- <dl compact><dt><b>Exceptions:</b></dt><dd>
913
+ <dl><dt><b>Exceptions:</b></dt><dd>
933
914
  <table border="0" cellspacing="2" cellpadding="0">
934
915
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
935
916
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
936
917
  </table>
918
+ </dd>
937
919
  </dl>
938
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#1f3cf672b566166ed920c2bba4d19604" title="Read a scalar message from the underlying file descriptor.">readScalar()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#80977020ef895f3ea790c5d28a333dda" title="Write a scalar message to the underlying file descriptor.">writeScalar(const char *, unsigned int)</a> </dd></dl>
920
+ <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#a1f3cf672b566166ed920c2bba4d19604" title="Read a scalar message from the underlying file descriptor.">readScalar()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#a80977020ef895f3ea790c5d28a333dda" title="Write a scalar message to the underlying file descriptor.">writeScalar(const char *, unsigned int)</a> </dd></dl>
939
921
 
940
922
  </div>
941
- </div><p>
942
- <a class="anchor" name="bf02c51a74477650de8d5d5db661063b"></a><!-- doxytag: member="Passenger::MessageChannel::writeUint32" ref="bf02c51a74477650de8d5d5db661063b" args="(unsigned int value)" -->
923
+ </div>
924
+ <a class="anchor" id="abf02c51a74477650de8d5d5db661063b"></a><!-- doxytag: member="Passenger::MessageChannel::writeUint32" ref="abf02c51a74477650de8d5d5db661063b" args="(unsigned int value)" -->
943
925
  <div class="memitem">
944
926
  <div class="memproto">
945
927
  <table class="memname">
946
928
  <tr>
947
- <td class="memname">void Passenger::MessageChannel::writeUint32 </td>
929
+ <td class="memname">void Passenger::MessageChannel::writeUint32 </td>
948
930
  <td>(</td>
949
931
  <td class="paramtype">unsigned int&nbsp;</td>
950
- <td class="paramname"> <em>value</em> </td>
932
+ <td class="paramname"> <em>value</em></td>
951
933
  <td>&nbsp;)&nbsp;</td>
952
934
  <td><code> [inline]</code></td>
953
935
  </tr>
@@ -955,23 +937,23 @@ Write a scalar message to the underlying file descriptor.
955
937
  </div>
956
938
  <div class="memdoc">
957
939
 
958
- <p>
959
- Write a 32-bit big-endian unsigned integer to the underlying file descriptor.
960
- <p>
961
- <dl compact><dt><b>Exceptions:</b></dt><dd>
940
+ <p>Write a 32-bit big-endian unsigned integer to the underlying file descriptor. </p>
941
+ <dl><dt><b>Exceptions:</b></dt><dd>
962
942
  <table border="0" cellspacing="2" cellpadding="0">
963
943
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occurred while writing the data to the file descriptor. </td></tr>
964
944
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
965
945
  </table>
946
+ </dd>
966
947
  </dl>
967
948
 
968
949
  </div>
969
- </div><p>
970
- <hr>The documentation for this class was generated from the following file:<ul>
971
- <li><a class="el" href="MessageChannel_8h-source.html">MessageChannel.h</a></ul>
972
950
  </div>
973
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:59 2010 for Passenger by&nbsp;
951
+ <hr/>The documentation for this class was generated from the following file:<ul>
952
+ <li><a class="el" href="MessageChannel_8h_source.html">MessageChannel.h</a></li>
953
+ </ul>
954
+ </div>
955
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
974
956
  <a href="http://www.doxygen.org/index.html">
975
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
957
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
976
958
  </body>
977
959
  </html>