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: 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,23 +27,23 @@
24
27
  </div>
25
28
  </div>
26
29
  <div class="contents">
27
- <h1>Passenger::MessageServer Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a>, including all inherited members.<p><table>
28
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#4705130bf6626dd2201e7d73ead57b93">accountsDatabase</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
29
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#8f5df648df67f85ab0b7317be21f643f">addHandler</a>(HandlerPtr handler)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline]</code></td></tr>
30
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#6687fdc90ef1c361a69c0fdcde38bb42">authenticate</a>(FileDescriptor &amp;client)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline, protected]</code></td></tr>
31
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#c7d708f90b3a1b1ae5e7b215c688c95e">clientHandlingMainLoop</a>(FileDescriptor &amp;client)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline, protected]</code></td></tr>
32
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#bced7a8e542f6ab4a81ac1b11f8d163a">handlers</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
33
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#bf5075add15c5f32a60039bdcbe98926">loginTimeout</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
34
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#af639d8228da241b957c707ef0f04c91">mainLoop</a>()</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline]</code></td></tr>
35
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#4b6f33e66261116c2ec04b26e651dc18">MessageServer</a>(const string &amp;socketFilename, AccountsDatabasePtr accountsDatabase)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline]</code></td></tr>
36
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#ef3c642484fbbbfc46b7768c53a5c0d4">serverFd</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
37
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#91571b29a8a88f80bab68f8083f59291">setLoginTimeout</a>(unsigned long long timeout)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline]</code></td></tr>
38
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#18f4966401ab1f1ef245af922b382ce3">socketFilename</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
39
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#86f9ec99fe5dbed5c04d4b9e8f170995">startListening</a>()</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline, protected]</code></td></tr>
40
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#48ccf2c09c2c8b5dcfe3a0585dba67cf">threadGroup</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
30
+ <h1>Passenger::MessageServer Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a>, including all inherited members.<table>
31
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#a4705130bf6626dd2201e7d73ead57b93">accountsDatabase</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
32
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#a8f5df648df67f85ab0b7317be21f643f">addHandler</a>(HandlerPtr handler)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline]</code></td></tr>
33
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#a6687fdc90ef1c361a69c0fdcde38bb42">authenticate</a>(FileDescriptor &amp;client)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline, protected]</code></td></tr>
34
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#ac7d708f90b3a1b1ae5e7b215c688c95e">clientHandlingMainLoop</a>(FileDescriptor &amp;client)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline, protected]</code></td></tr>
35
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#abced7a8e542f6ab4a81ac1b11f8d163a">handlers</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
36
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#abf5075add15c5f32a60039bdcbe98926">loginTimeout</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
37
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#aaf639d8228da241b957c707ef0f04c91">mainLoop</a>()</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline]</code></td></tr>
38
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#a4b6f33e66261116c2ec04b26e651dc18">MessageServer</a>(const string &amp;socketFilename, AccountsDatabasePtr accountsDatabase)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline]</code></td></tr>
39
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#aef3c642484fbbbfc46b7768c53a5c0d4">serverFd</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
40
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#a91571b29a8a88f80bab68f8083f59291">setLoginTimeout</a>(unsigned long long timeout)</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline]</code></td></tr>
41
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#a18f4966401ab1f1ef245af922b382ce3">socketFilename</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
42
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#a86f9ec99fe5dbed5c04d4b9e8f170995">startListening</a>()</td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [inline, protected]</code></td></tr>
43
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageServer.html#a48ccf2c09c2c8b5dcfe3a0585dba67cf">threadGroup</a></td><td><a class="el" href="classPassenger_1_1MessageServer.html">Passenger::MessageServer</a></td><td><code> [protected]</code></td></tr>
41
44
  </table></div>
42
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:59 2010 for Passenger by&nbsp;
45
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
43
46
  <a href="http://www.doxygen.org/index.html">
44
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
47
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
45
48
  </body>
46
49
  </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::MessageServer 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,95 +29,79 @@
26
29
  </div>
27
30
  </div>
28
31
  <div class="contents">
29
- <h1>Passenger::MessageServer Class Reference<br>
32
+ <h1>Passenger::MessageServer 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::MessageServer" -->Simple pluggable request/response messaging server framework.
33
- <a href="#_details">More...</a>
34
- <p>
35
- <code>#include &lt;<a class="el" href="MessageServer_8h-source.html">MessageServer.h</a>&gt;</code>
36
- <p>
37
-
38
- <p>
39
- <a href="classPassenger_1_1MessageServer-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>Classes</h2></td></tr>
42
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer_1_1ClientContext.html">ClientContext</a></td></tr>
43
-
44
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Interface for client context objects. <a href="classPassenger_1_1MessageServer_1_1ClientContext.html#_details">More...</a><br></td></tr>
45
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer_1_1CommonClientContext.html">CommonClientContext</a></td></tr>
46
-
47
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A common client context, containing client-specific information used by <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> itself. <a href="classPassenger_1_1MessageServer_1_1CommonClientContext.html#_details">More...</a><br></td></tr>
48
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html">DisconnectEventBroadcastGuard</a></td></tr>
49
-
50
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls clientDisconnected() on all handlers when destroyed. <a href="structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html#_details">More...</a><br></td></tr>
51
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer_1_1Handler.html">Handler</a></td></tr>
52
-
53
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An abstract message handler class. <a href="classPassenger_1_1MessageServer_1_1Handler.html#_details">More...</a><br></td></tr>
54
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
55
- <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#4b6f33e66261116c2ec04b26e651dc18">MessageServer</a> (const string &amp;<a class="el" href="classPassenger_1_1MessageServer.html#18f4966401ab1f1ef245af922b382ce3">socketFilename</a>, AccountsDatabasePtr <a class="el" href="classPassenger_1_1MessageServer.html#4705130bf6626dd2201e7d73ead57b93">accountsDatabase</a>)</td></tr>
56
-
57
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> object. <a href="#4b6f33e66261116c2ec04b26e651dc18"></a><br></td></tr>
58
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#af639d8228da241b957c707ef0f04c91">mainLoop</a> ()</td></tr>
59
-
60
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Starts the server main loop. <a href="#af639d8228da241b957c707ef0f04c91"></a><br></td></tr>
61
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#8f5df648df67f85ab0b7317be21f643f">addHandler</a> (HandlerPtr handler)</td></tr>
62
-
63
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Registers a new handler. <a href="#8f5df648df67f85ab0b7317be21f643f"></a><br></td></tr>
64
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#91571b29a8a88f80bab68f8083f59291">setLoginTimeout</a> (unsigned long long timeout)</td></tr>
65
-
66
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum number of milliseconds that clients may spend on logging in. <a href="#91571b29a8a88f80bab68f8083f59291"></a><br></td></tr>
67
- <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
68
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#86f9ec99fe5dbed5c04d4b9e8f170995">startListening</a> ()</td></tr>
69
-
70
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a server socket and set it up for listening. <a href="#86f9ec99fe5dbed5c04d4b9e8f170995"></a><br></td></tr>
71
- <tr><td class="memItemLeft" nowrap align="right" valign="top">AccountPtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#6687fdc90ef1c361a69c0fdcde38bb42">authenticate</a> (<a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;client)</td></tr>
72
-
73
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Authenticate the given client and returns its account information. <a href="#6687fdc90ef1c361a69c0fdcde38bb42"></a><br></td></tr>
74
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c7d708f90b3a1b1ae5e7b215c688c95e"></a><!-- doxytag: member="Passenger::MessageServer::clientHandlingMainLoop" ref="c7d708f90b3a1b1ae5e7b215c688c95e" args="(FileDescriptor &amp;client)" -->
75
- void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#c7d708f90b3a1b1ae5e7b215c688c95e">clientHandlingMainLoop</a> (<a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;client)</td></tr>
76
-
77
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The main function for a thread which handles a client. <br></td></tr>
78
- <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
79
- <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#18f4966401ab1f1ef245af922b382ce3">socketFilename</a></td></tr>
80
-
81
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The filename of the server socket on which this <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> is listening. <a href="#18f4966401ab1f1ef245af922b382ce3"></a><br></td></tr>
82
- <tr><td class="memItemLeft" nowrap align="right" valign="top">AccountsDatabasePtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#4705130bf6626dd2201e7d73ead57b93">accountsDatabase</a></td></tr>
83
-
84
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An accounts database, used for authenticating clients. <a href="#4705130bf6626dd2201e7d73ead57b93"></a><br></td></tr>
85
- <tr><td class="memItemLeft" nowrap align="right" valign="top">vector&lt; HandlerPtr &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#bced7a8e542f6ab4a81ac1b11f8d163a">handlers</a></td></tr>
86
-
87
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The registered message handlers. <a href="#bced7a8e542f6ab4a81ac1b11f8d163a"></a><br></td></tr>
88
- <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#bf5075add15c5f32a60039bdcbe98926">loginTimeout</a></td></tr>
89
-
90
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The maximum number of milliseconds that client may spend on logging in. <a href="#bf5075add15c5f32a60039bdcbe98926"></a><br></td></tr>
91
- <tr><td class="memItemLeft" nowrap align="right" valign="top">dynamic_thread_group&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#48ccf2c09c2c8b5dcfe3a0585dba67cf">threadGroup</a></td></tr>
92
-
93
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The client threads. <a href="#48ccf2c09c2c8b5dcfe3a0585dba67cf"></a><br></td></tr>
94
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#ef3c642484fbbbfc46b7768c53a5c0d4">serverFd</a></td></tr>
95
-
96
- <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The server socket's file descriptor. <a href="#ef3c642484fbbbfc46b7768c53a5c0d4"></a><br></td></tr>
35
+ </h1><!-- doxytag: class="Passenger::MessageServer" -->
36
+ <p>Simple pluggable request/response messaging server framework.
37
+ <a href="#_details">More...</a></p>
38
+
39
+ <p><code>#include &lt;<a class="el" href="MessageServer_8h_source.html">MessageServer.h</a>&gt;</code></p>
40
+
41
+ <p><a href="classPassenger_1_1MessageServer-members.html">List of all members.</a></p>
42
+ <table border="0" cellpadding="0" cellspacing="0">
43
+ <tr><td colspan="2"><h2>Classes</h2></td></tr>
44
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer_1_1ClientContext.html">ClientContext</a></td></tr>
45
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Interface for client context objects. <a href="classPassenger_1_1MessageServer_1_1ClientContext.html#_details">More...</a><br/></td></tr>
46
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer_1_1CommonClientContext.html">CommonClientContext</a></td></tr>
47
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A common client context, containing client-specific information used by <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> itself. <a href="classPassenger_1_1MessageServer_1_1CommonClientContext.html#_details">More...</a><br/></td></tr>
48
+ <tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html">DisconnectEventBroadcastGuard</a></td></tr>
49
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calls clientDisconnected() on all handlers when destroyed. <a href="structPassenger_1_1MessageServer_1_1DisconnectEventBroadcastGuard.html#_details">More...</a><br/></td></tr>
50
+ <tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer_1_1Handler.html">Handler</a></td></tr>
51
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An abstract message handler class. <a href="classPassenger_1_1MessageServer_1_1Handler.html#_details">More...</a><br/></td></tr>
52
+ <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
53
+ <tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#a4b6f33e66261116c2ec04b26e651dc18">MessageServer</a> (const string &amp;<a class="el" href="classPassenger_1_1MessageServer.html#a18f4966401ab1f1ef245af922b382ce3">socketFilename</a>, AccountsDatabasePtr <a class="el" href="classPassenger_1_1MessageServer.html#a4705130bf6626dd2201e7d73ead57b93">accountsDatabase</a>)</td></tr>
54
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> object. <a href="#a4b6f33e66261116c2ec04b26e651dc18"></a><br/></td></tr>
55
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#aaf639d8228da241b957c707ef0f04c91">mainLoop</a> ()</td></tr>
56
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Starts the server main loop. <a href="#aaf639d8228da241b957c707ef0f04c91"></a><br/></td></tr>
57
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#a8f5df648df67f85ab0b7317be21f643f">addHandler</a> (HandlerPtr handler)</td></tr>
58
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Registers a new handler. <a href="#a8f5df648df67f85ab0b7317be21f643f"></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_1MessageServer.html#a91571b29a8a88f80bab68f8083f59291">setLoginTimeout</a> (unsigned long long timeout)</td></tr>
60
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the maximum number of milliseconds that clients may spend on logging in. <a href="#a91571b29a8a88f80bab68f8083f59291"></a><br/></td></tr>
61
+ <tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
62
+ <tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#a86f9ec99fe5dbed5c04d4b9e8f170995">startListening</a> ()</td></tr>
63
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a server socket and set it up for listening. <a href="#a86f9ec99fe5dbed5c04d4b9e8f170995"></a><br/></td></tr>
64
+ <tr><td class="memItemLeft" align="right" valign="top">AccountPtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#a6687fdc90ef1c361a69c0fdcde38bb42">authenticate</a> (<a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;client)</td></tr>
65
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Authenticate the given client and returns its account information. <a href="#a6687fdc90ef1c361a69c0fdcde38bb42"></a><br/></td></tr>
66
+ <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7d708f90b3a1b1ae5e7b215c688c95e"></a><!-- doxytag: member="Passenger::MessageServer::clientHandlingMainLoop" ref="ac7d708f90b3a1b1ae5e7b215c688c95e" args="(FileDescriptor &amp;client)" -->
67
+ void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#ac7d708f90b3a1b1ae5e7b215c688c95e">clientHandlingMainLoop</a> (<a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;client)</td></tr>
68
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The main function for a thread which handles a client. <br/></td></tr>
69
+ <tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
70
+ <tr><td class="memItemLeft" align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#a18f4966401ab1f1ef245af922b382ce3">socketFilename</a></td></tr>
71
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The filename of the server socket on which this <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> is listening. <a href="#a18f4966401ab1f1ef245af922b382ce3"></a><br/></td></tr>
72
+ <tr><td class="memItemLeft" align="right" valign="top">AccountsDatabasePtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#a4705130bf6626dd2201e7d73ead57b93">accountsDatabase</a></td></tr>
73
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An accounts database, used for authenticating clients. <a href="#a4705130bf6626dd2201e7d73ead57b93"></a><br/></td></tr>
74
+ <tr><td class="memItemLeft" align="right" valign="top">vector&lt; HandlerPtr &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#abced7a8e542f6ab4a81ac1b11f8d163a">handlers</a></td></tr>
75
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The registered message handlers. <a href="#abced7a8e542f6ab4a81ac1b11f8d163a"></a><br/></td></tr>
76
+ <tr><td class="memItemLeft" align="right" valign="top">unsigned long long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#abf5075add15c5f32a60039bdcbe98926">loginTimeout</a></td></tr>
77
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The maximum number of milliseconds that client may spend on logging in. <a href="#abf5075add15c5f32a60039bdcbe98926"></a><br/></td></tr>
78
+ <tr><td class="memItemLeft" align="right" valign="top">dynamic_thread_group&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#a48ccf2c09c2c8b5dcfe3a0585dba67cf">threadGroup</a></td></tr>
79
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The client threads. <a href="#a48ccf2c09c2c8b5dcfe3a0585dba67cf"></a><br/></td></tr>
80
+ <tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageServer.html#aef3c642484fbbbfc46b7768c53a5c0d4">serverFd</a></td></tr>
81
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The server socket's file descriptor. <a href="#aef3c642484fbbbfc46b7768c53a5c0d4"></a><br/></td></tr>
97
82
  </table>
98
- <hr><a name="_details"></a><h2>Detailed Description</h2>
99
- Simple pluggable request/response messaging server framework.
100
- <p>
101
- <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> implements a server with the following properties:<ul>
102
- <li>It listens on a Unix socket. Socket creation and destruction is automatically handled. The socket is world-writable because a username/password authentication scheme is used to enforce security.</li><li>Multithreaded: 1 thread per client.</li><li>Designed for simple request/response cycles. That is, a client sends a request, and the server may respond with arbitrary data. The server does not respond sporadically, i.e. it only responds after a request.</li><li>Requests are discrete <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> array messages, not byte streams.</li><li>Connections are authenticated. Connecting clients must send a username and password, which are then checked against an accounts database. The associated account is known throughout the entire connection life time so that it's possible to implement authorization features.</li></ul>
103
- <p>
104
- <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> does not process messages by itself. Instead, one registers handlers which handle message processing. This framework allows one to seperate message handling code by function, while allowing everything to listen on the same socket and to use a common request parsing and dispatching codebase.<p>
105
- A username/password authentication scheme was chosen over a file permission scheme because experience has shown that the latter is inadequate. For example, the web server may consist of multiple worker processes, each running as a different user. Although ACLs can solve this problem as well, not every platform supports ACLs by default.<p>
83
+ <hr/><a name="_details"></a><h2>Detailed Description</h2>
84
+ <p>Simple pluggable request/response messaging server framework. </p>
85
+ <p><a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> implements a server with the following properties:</p>
86
+ <ul>
87
+ <li>It listens on a Unix socket. Socket creation and destruction is automatically handled. The socket is world-writable because a username/password authentication scheme is used to enforce security.</li>
88
+ <li>Multithreaded: 1 thread per client.</li>
89
+ <li>Designed for simple request/response cycles. That is, a client sends a request, and the server may respond with arbitrary data. The server does not respond sporadically, i.e. it only responds after a request.</li>
90
+ <li>Requests are discrete <a class="el" href="classPassenger_1_1MessageChannel.html" title="Convenience class for I/O operations on file descriptors.">MessageChannel</a> array messages, not byte streams.</li>
91
+ <li>Connections are authenticated. Connecting clients must send a username and password, which are then checked against an accounts database. The associated account is known throughout the entire connection life time so that it's possible to implement authorization features.</li>
92
+ </ul>
93
+ <p><a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> does not process messages by itself. Instead, one registers handlers which handle message processing. This framework allows one to seperate message handling code by function, while allowing everything to listen on the same socket and to use a common request parsing and dispatching codebase.</p>
94
+ <p>A username/password authentication scheme was chosen over a file permission scheme because experience has shown that the latter is inadequate. For example, the web server may consist of multiple worker processes, each running as a different user. Although ACLs can solve this problem as well, not every platform supports ACLs by default.</p>
106
95
  <h2>Writing handlers</h2>
107
- <p>
108
- Handlers must inherit from <a class="el" href="classPassenger_1_1MessageServer_1_1Handler.html" title="An abstract message handler class.">MessageServer::Handler</a>. They may implement newClient() and must implement processMessage().<p>
109
- When a new client is accepted, <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> will call newClient() on all handlers. This method accepts one argument: a common client context object. This context object contains client-specific information, such as its file descriptor. It cannot be extended to store more information, but it is passed to every handler anyway, hence the word "common" in its name. newClient() is supposed to return a handler-specific client context object for storing its own information, or a null pointer if it doesn't need to store anything.<p>
110
- When a client sends a request, <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> iterates through all handlers and calls processMessage() on each one, passing it the common client context and the handler-specific client context. processMessage() may return either true or false; true indicates that the handler processed the message, false indicates that it did not. Iteration stops at the first handler that returns true. If all handlers return false, i.e. the client sent a message that no handler recognizes, then <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> will close the connection with the client.<p>
111
- Handlers do not need to be thread-safe as long as they only operate on data in the context objects. <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> ensures that context objects are not shared with other threads.<p>
96
+ <p>Handlers must inherit from <a class="el" href="classPassenger_1_1MessageServer_1_1Handler.html" title="An abstract message handler class.">MessageServer::Handler</a>. They may implement newClient() and must implement processMessage().</p>
97
+ <p>When a new client is accepted, <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> will call newClient() on all handlers. This method accepts one argument: a common client context object. This context object contains client-specific information, such as its file descriptor. It cannot be extended to store more information, but it is passed to every handler anyway, hence the word "common" in its name. newClient() is supposed to return a handler-specific client context object for storing its own information, or a null pointer if it doesn't need to store anything.</p>
98
+ <p>When a client sends a request, <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> iterates through all handlers and calls processMessage() on each one, passing it the common client context and the handler-specific client context. processMessage() may return either true or false; true indicates that the handler processed the message, false indicates that it did not. Iteration stops at the first handler that returns true. If all handlers return false, i.e. the client sent a message that no handler recognizes, then <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> will close the connection with the client.</p>
99
+ <p>Handlers do not need to be thread-safe as long as they only operate on data in the context objects. <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> ensures that context objects are not shared with other threads.</p>
112
100
  <h2>Usage example</h2>
113
- <p>
114
- This implements a simple ping server. Every time a "ping" request is sent, the server responds with "pong" along with the number of times it had already sent pong to the same client in the past.<p>
115
- <div class="fragment"><pre class="fragment"> <span class="keyword">class </span>PingHandler: <span class="keyword">public</span> <a class="code" href="classPassenger_1_1MessageServer.html#4b6f33e66261116c2ec04b26e651dc18" title="Creates a new MessageServer object.">MessageServer</a>::Handler {
101
+ <p>This implements a simple ping server. Every time a "ping" request is sent, the server responds with "pong" along with the number of times it had already sent pong to the same client in the past.</p>
102
+ <div class="fragment"><pre class="fragment"> <span class="keyword">class </span>PingHandler: <span class="keyword">public</span> <a class="code" href="classPassenger_1_1MessageServer.html#a4b6f33e66261116c2ec04b26e651dc18" title="Creates a new MessageServer object.">MessageServer</a>::Handler {
116
103
  <span class="keyword">public</span>:
117
- <span class="keyword">struct </span>MyContext: <span class="keyword">public</span> <a class="code" href="classPassenger_1_1MessageServer.html#4b6f33e66261116c2ec04b26e651dc18" title="Creates a new MessageServer object.">MessageServer</a>::ClientContext {
104
+ <span class="keyword">struct </span>MyContext: <span class="keyword">public</span> <a class="code" href="classPassenger_1_1MessageServer.html#a4b6f33e66261116c2ec04b26e651dc18" title="Creates a new MessageServer object.">MessageServer</a>::ClientContext {
118
105
  <span class="keywordtype">int</span> count;
119
106
 
120
107
  MyContext() {
@@ -130,9 +117,9 @@ This implements a simple ping server. Every time a "ping" request is sent, the s
130
117
  MessageServer::ClientContextPtr &amp;specificContext,
131
118
  <span class="keyword">const</span> vector&lt;string&gt; &amp;args)
132
119
  {
133
- <span class="keywordflow">if</span> (args[0] == <span class="stringliteral">"ping"</span>) {
120
+ <span class="keywordflow">if</span> (args[0] == <span class="stringliteral">&quot;ping&quot;</span>) {
134
121
  MyContext *myContext = (MyContext *) specificContext.get();
135
- commonContext.channel.write(<span class="stringliteral">"pong"</span>, <a class="code" href="group__Support.html#gf6fab368d70c18fdf16bf5a24f630407" title="Convert anything to a string.">toString</a>(specificContext-&gt;count).c_str(), NULL);
122
+ commonContext.channel.write(<span class="stringliteral">&quot;pong&quot;</span>, toString(specificContext-&gt;count).c_str(), NULL);
136
123
  specificContext-&gt;count++;
137
124
  <span class="keywordflow">return</span> <span class="keyword">true</span>;
138
125
  } <span class="keywordflow">else</span> {
@@ -143,17 +130,17 @@ This implements a simple ping server. Every time a "ping" request is sent, the s
143
130
 
144
131
  ...
145
132
 
146
- <a class="code" href="classPassenger_1_1MessageServer.html#4b6f33e66261116c2ec04b26e651dc18" title="Creates a new MessageServer object.">MessageServer</a> server(<span class="stringliteral">"server.sock"</span>);
133
+ <a class="code" href="classPassenger_1_1MessageServer.html#a4b6f33e66261116c2ec04b26e651dc18" title="Creates a new MessageServer object.">MessageServer</a> server(<span class="stringliteral">&quot;server.sock&quot;</span>);
147
134
  server.addHandler(MessageServer::HandlerPtr(<span class="keyword">new</span> PingHandler()));
148
135
  server.addHandler(MessageServer::HandlerPtr(<span class="keyword">new</span> PingHandler()));
149
136
  server.mainLoop();
150
- </pre></div> <hr><h2>Constructor &amp; Destructor Documentation</h2>
151
- <a class="anchor" name="4b6f33e66261116c2ec04b26e651dc18"></a><!-- doxytag: member="Passenger::MessageServer::MessageServer" ref="4b6f33e66261116c2ec04b26e651dc18" args="(const string &amp;socketFilename, AccountsDatabasePtr accountsDatabase)" -->
137
+ </pre></div> <hr/><h2>Constructor &amp; Destructor Documentation</h2>
138
+ <a class="anchor" id="a4b6f33e66261116c2ec04b26e651dc18"></a><!-- doxytag: member="Passenger::MessageServer::MessageServer" ref="a4b6f33e66261116c2ec04b26e651dc18" args="(const string &amp;socketFilename, AccountsDatabasePtr accountsDatabase)" -->
152
139
  <div class="memitem">
153
140
  <div class="memproto">
154
141
  <table class="memname">
155
142
  <tr>
156
- <td class="memname">Passenger::MessageServer::MessageServer </td>
143
+ <td class="memname">Passenger::MessageServer::MessageServer </td>
157
144
  <td>(</td>
158
145
  <td class="paramtype">const string &amp;&nbsp;</td>
159
146
  <td class="paramname"> <em>socketFilename</em>, </td>
@@ -173,36 +160,36 @@ This implements a simple ping server. Every time a "ping" request is sent, the s
173
160
  </div>
174
161
  <div class="memdoc">
175
162
 
176
- <p>
177
- Creates a new <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> object.
178
- <p>
179
- The actual server main loop is not started until you call <a class="el" href="classPassenger_1_1MessageServer.html#af639d8228da241b957c707ef0f04c91" title="Starts the server main loop.">mainLoop()</a>.<p>
180
- <dl compact><dt><b>Parameters:</b></dt><dd>
163
+ <p>Creates a new <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> object. </p>
164
+ <p>The actual server main loop is not started until you call <a class="el" href="classPassenger_1_1MessageServer.html#aaf639d8228da241b957c707ef0f04c91" title="Starts the server main loop.">mainLoop()</a>.</p>
165
+ <dl><dt><b>Parameters:</b></dt><dd>
181
166
  <table border="0" cellspacing="2" cellpadding="0">
182
167
  <tr><td valign="top"></td><td valign="top"><em>socketFilename</em>&nbsp;</td><td>The socket filename on which this <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> should be listening. </td></tr>
183
168
  <tr><td valign="top"></td><td valign="top"><em>accountsDatabase</em>&nbsp;</td><td>An accounts database for this server, used for authenticating clients. </td></tr>
184
169
  </table>
170
+ </dd>
185
171
  </dl>
186
- <dl compact><dt><b>Exceptions:</b></dt><dd>
172
+ <dl><dt><b>Exceptions:</b></dt><dd>
187
173
  <table border="0" cellspacing="2" cellpadding="0">
188
174
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1RuntimeException.html" title="A generic runtime exception.">RuntimeException</a></em>&nbsp;</td><td>Something went wrong while setting up the server socket. </td></tr>
189
175
  <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 while setting up the server socket. </td></tr>
190
176
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
191
177
  </table>
178
+ </dd>
192
179
  </dl>
193
180
 
194
181
  </div>
195
- </div><p>
196
- <hr><h2>Member Function Documentation</h2>
197
- <a class="anchor" name="8f5df648df67f85ab0b7317be21f643f"></a><!-- doxytag: member="Passenger::MessageServer::addHandler" ref="8f5df648df67f85ab0b7317be21f643f" args="(HandlerPtr handler)" -->
182
+ </div>
183
+ <hr/><h2>Member Function Documentation</h2>
184
+ <a class="anchor" id="a8f5df648df67f85ab0b7317be21f643f"></a><!-- doxytag: member="Passenger::MessageServer::addHandler" ref="a8f5df648df67f85ab0b7317be21f643f" args="(HandlerPtr handler)" -->
198
185
  <div class="memitem">
199
186
  <div class="memproto">
200
187
  <table class="memname">
201
188
  <tr>
202
- <td class="memname">void Passenger::MessageServer::addHandler </td>
189
+ <td class="memname">void Passenger::MessageServer::addHandler </td>
203
190
  <td>(</td>
204
191
  <td class="paramtype">HandlerPtr&nbsp;</td>
205
- <td class="paramname"> <em>handler</em> </td>
192
+ <td class="paramname"> <em>handler</em></td>
206
193
  <td>&nbsp;)&nbsp;</td>
207
194
  <td><code> [inline]</code></td>
208
195
  </tr>
@@ -210,22 +197,20 @@ The actual server main loop is not started until you call <a class="el" href="cl
210
197
  </div>
211
198
  <div class="memdoc">
212
199
 
213
- <p>
214
- Registers a new handler.
215
- <p>
216
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>The main loop isn't running. </dd></dl>
200
+ <p>Registers a new handler. </p>
201
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd>The main loop isn't running. </dd></dl>
217
202
 
218
203
  </div>
219
- </div><p>
220
- <a class="anchor" name="6687fdc90ef1c361a69c0fdcde38bb42"></a><!-- doxytag: member="Passenger::MessageServer::authenticate" ref="6687fdc90ef1c361a69c0fdcde38bb42" args="(FileDescriptor &amp;client)" -->
204
+ </div>
205
+ <a class="anchor" id="a6687fdc90ef1c361a69c0fdcde38bb42"></a><!-- doxytag: member="Passenger::MessageServer::authenticate" ref="a6687fdc90ef1c361a69c0fdcde38bb42" args="(FileDescriptor &amp;client)" -->
221
206
  <div class="memitem">
222
207
  <div class="memproto">
223
208
  <table class="memname">
224
209
  <tr>
225
- <td class="memname">AccountPtr Passenger::MessageServer::authenticate </td>
210
+ <td class="memname">AccountPtr Passenger::MessageServer::authenticate </td>
226
211
  <td>(</td>
227
212
  <td class="paramtype"><a class="el" href="classPassenger_1_1FileDescriptor.html">FileDescriptor</a> &amp;&nbsp;</td>
228
- <td class="paramname"> <em>client</em> </td>
213
+ <td class="paramname"> <em>client</em></td>
229
214
  <td>&nbsp;)&nbsp;</td>
230
215
  <td><code> [inline, protected]</code></td>
231
216
  </tr>
@@ -233,21 +218,19 @@ Registers a new handler.
233
218
  </div>
234
219
  <div class="memdoc">
235
220
 
236
- <p>
237
- Authenticate the given client and returns its account information.
238
- <p>
239
- <dl class="return" compact><dt><b>Returns:</b></dt><dd>A smart pointer to an Account object, or NULL if authentication failed. </dd></dl>
221
+ <p>Authenticate the given client and returns its account information. </p>
222
+ <dl class="return"><dt><b>Returns:</b></dt><dd>A smart pointer to an Account object, or NULL if authentication failed. </dd></dl>
240
223
 
241
224
  </div>
242
- </div><p>
243
- <a class="anchor" name="af639d8228da241b957c707ef0f04c91"></a><!-- doxytag: member="Passenger::MessageServer::mainLoop" ref="af639d8228da241b957c707ef0f04c91" args="()" -->
225
+ </div>
226
+ <a class="anchor" id="aaf639d8228da241b957c707ef0f04c91"></a><!-- doxytag: member="Passenger::MessageServer::mainLoop" ref="aaf639d8228da241b957c707ef0f04c91" args="()" -->
244
227
  <div class="memitem">
245
228
  <div class="memproto">
246
229
  <table class="memname">
247
230
  <tr>
248
- <td class="memname">void Passenger::MessageServer::mainLoop </td>
231
+ <td class="memname">void Passenger::MessageServer::mainLoop </td>
249
232
  <td>(</td>
250
- <td class="paramname"> </td>
233
+ <td class="paramname"></td>
251
234
  <td>&nbsp;)&nbsp;</td>
252
235
  <td><code> [inline]</code></td>
253
236
  </tr>
@@ -255,28 +238,27 @@ Authenticate the given client and returns its account information.
255
238
  </div>
256
239
  <div class="memdoc">
257
240
 
258
- <p>
259
- Starts the server main loop.
260
- <p>
261
- This method will loop forever until some other thread interrupts the calling thread, or until an exception is raised.<p>
262
- <dl compact><dt><b>Exceptions:</b></dt><dd>
241
+ <p>Starts the server main loop. </p>
242
+ <p>This method will loop forever until some other thread interrupts the calling thread, or until an exception is raised.</p>
243
+ <dl><dt><b>Exceptions:</b></dt><dd>
263
244
  <table border="0" cellspacing="2" cellpadding="0">
264
- <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>Unable to accept a new connection. If this is a non-fatal error then you may call <a class="el" href="classPassenger_1_1MessageServer.html#af639d8228da241b957c707ef0f04c91" title="Starts the server main loop.">mainLoop()</a> again to restart the server main loop. </td></tr>
245
+ <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>Unable to accept a new connection. If this is a non-fatal error then you may call <a class="el" href="classPassenger_1_1MessageServer.html#aaf639d8228da241b957c707ef0f04c91" title="Starts the server main loop.">mainLoop()</a> again to restart the server main loop. </td></tr>
265
246
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td>The calling thread has been interrupted. </td></tr>
266
247
  </table>
248
+ </dd>
267
249
  </dl>
268
250
 
269
251
  </div>
270
- </div><p>
271
- <a class="anchor" name="91571b29a8a88f80bab68f8083f59291"></a><!-- doxytag: member="Passenger::MessageServer::setLoginTimeout" ref="91571b29a8a88f80bab68f8083f59291" args="(unsigned long long timeout)" -->
252
+ </div>
253
+ <a class="anchor" id="a91571b29a8a88f80bab68f8083f59291"></a><!-- doxytag: member="Passenger::MessageServer::setLoginTimeout" ref="a91571b29a8a88f80bab68f8083f59291" args="(unsigned long long timeout)" -->
272
254
  <div class="memitem">
273
255
  <div class="memproto">
274
256
  <table class="memname">
275
257
  <tr>
276
- <td class="memname">void Passenger::MessageServer::setLoginTimeout </td>
258
+ <td class="memname">void Passenger::MessageServer::setLoginTimeout </td>
277
259
  <td>(</td>
278
260
  <td class="paramtype">unsigned long long&nbsp;</td>
279
- <td class="paramname"> <em>timeout</em> </td>
261
+ <td class="paramname"> <em>timeout</em></td>
280
262
  <td>&nbsp;)&nbsp;</td>
281
263
  <td><code> [inline]</code></td>
282
264
  </tr>
@@ -284,23 +266,22 @@ This method will loop forever until some other thread interrupts the calling thr
284
266
  </div>
285
267
  <div class="memdoc">
286
268
 
287
- <p>
288
- Sets the maximum number of milliseconds that clients may spend on logging in.
289
- <p>
290
- Clients that take longer are disconnected.<p>
291
- <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>timeout != 0 <p>
269
+ <p>Sets the maximum number of milliseconds that clients may spend on logging in. </p>
270
+ <p>Clients that take longer are disconnected.</p>
271
+ <dl class="pre"><dt><b>Precondition:</b></dt><dd>timeout != 0 </dd>
272
+ <dd>
292
273
  The main loop isn't running. </dd></dl>
293
274
 
294
275
  </div>
295
- </div><p>
296
- <a class="anchor" name="86f9ec99fe5dbed5c04d4b9e8f170995"></a><!-- doxytag: member="Passenger::MessageServer::startListening" ref="86f9ec99fe5dbed5c04d4b9e8f170995" args="()" -->
276
+ </div>
277
+ <a class="anchor" id="a86f9ec99fe5dbed5c04d4b9e8f170995"></a><!-- doxytag: member="Passenger::MessageServer::startListening" ref="a86f9ec99fe5dbed5c04d4b9e8f170995" args="()" -->
297
278
  <div class="memitem">
298
279
  <div class="memproto">
299
280
  <table class="memname">
300
281
  <tr>
301
- <td class="memname">void Passenger::MessageServer::startListening </td>
282
+ <td class="memname">void Passenger::MessageServer::startListening </td>
302
283
  <td>(</td>
303
- <td class="paramname"> </td>
284
+ <td class="paramname"></td>
304
285
  <td>&nbsp;)&nbsp;</td>
305
286
  <td><code> [inline, protected]</code></td>
306
287
  </tr>
@@ -308,131 +289,119 @@ The main loop isn't running. </dd></dl>
308
289
  </div>
309
290
  <div class="memdoc">
310
291
 
311
- <p>
312
- Create a server socket and set it up for listening.
313
- <p>
314
- This socket will be world-writable.<p>
315
- <dl compact><dt><b>Exceptions:</b></dt><dd>
292
+ <p>Create a server socket and set it up for listening. </p>
293
+ <p>This socket will be world-writable.</p>
294
+ <dl><dt><b>Exceptions:</b></dt><dd>
316
295
  <table border="0" cellspacing="2" cellpadding="0">
317
296
  <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1RuntimeException.html" title="A generic runtime exception.">RuntimeException</a></em>&nbsp;</td><td></td></tr>
318
297
  <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>
319
298
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
320
299
  </table>
300
+ </dd>
321
301
  </dl>
322
302
 
323
303
  </div>
324
- </div><p>
325
- <hr><h2>Member Data Documentation</h2>
326
- <a class="anchor" name="4705130bf6626dd2201e7d73ead57b93"></a><!-- doxytag: member="Passenger::MessageServer::accountsDatabase" ref="4705130bf6626dd2201e7d73ead57b93" args="" -->
304
+ </div>
305
+ <hr/><h2>Member Data Documentation</h2>
306
+ <a class="anchor" id="a4705130bf6626dd2201e7d73ead57b93"></a><!-- doxytag: member="Passenger::MessageServer::accountsDatabase" ref="a4705130bf6626dd2201e7d73ead57b93" args="" -->
327
307
  <div class="memitem">
328
308
  <div class="memproto">
329
309
  <table class="memname">
330
310
  <tr>
331
- <td class="memname">AccountsDatabasePtr <a class="el" href="classPassenger_1_1MessageServer.html#4705130bf6626dd2201e7d73ead57b93">Passenger::MessageServer::accountsDatabase</a><code> [protected]</code> </td>
311
+ <td class="memname">AccountsDatabasePtr <a class="el" href="classPassenger_1_1MessageServer.html#a4705130bf6626dd2201e7d73ead57b93">Passenger::MessageServer::accountsDatabase</a><code> [protected]</code></td>
332
312
  </tr>
333
313
  </table>
334
314
  </div>
335
315
  <div class="memdoc">
336
316
 
337
- <p>
338
- An accounts database, used for authenticating clients.
339
- <p>
317
+ <p>An accounts database, used for authenticating clients. </p>
340
318
 
341
319
  </div>
342
- </div><p>
343
- <a class="anchor" name="bced7a8e542f6ab4a81ac1b11f8d163a"></a><!-- doxytag: member="Passenger::MessageServer::handlers" ref="bced7a8e542f6ab4a81ac1b11f8d163a" args="" -->
320
+ </div>
321
+ <a class="anchor" id="abced7a8e542f6ab4a81ac1b11f8d163a"></a><!-- doxytag: member="Passenger::MessageServer::handlers" ref="abced7a8e542f6ab4a81ac1b11f8d163a" args="" -->
344
322
  <div class="memitem">
345
323
  <div class="memproto">
346
324
  <table class="memname">
347
325
  <tr>
348
- <td class="memname">vector&lt;HandlerPtr&gt; <a class="el" href="classPassenger_1_1MessageServer.html#bced7a8e542f6ab4a81ac1b11f8d163a">Passenger::MessageServer::handlers</a><code> [protected]</code> </td>
326
+ <td class="memname">vector&lt;HandlerPtr&gt; <a class="el" href="classPassenger_1_1MessageServer.html#abced7a8e542f6ab4a81ac1b11f8d163a">Passenger::MessageServer::handlers</a><code> [protected]</code></td>
349
327
  </tr>
350
328
  </table>
351
329
  </div>
352
330
  <div class="memdoc">
353
331
 
354
- <p>
355
- The registered message handlers.
356
- <p>
332
+ <p>The registered message handlers. </p>
357
333
 
358
334
  </div>
359
- </div><p>
360
- <a class="anchor" name="bf5075add15c5f32a60039bdcbe98926"></a><!-- doxytag: member="Passenger::MessageServer::loginTimeout" ref="bf5075add15c5f32a60039bdcbe98926" args="" -->
335
+ </div>
336
+ <a class="anchor" id="abf5075add15c5f32a60039bdcbe98926"></a><!-- doxytag: member="Passenger::MessageServer::loginTimeout" ref="abf5075add15c5f32a60039bdcbe98926" args="" -->
361
337
  <div class="memitem">
362
338
  <div class="memproto">
363
339
  <table class="memname">
364
340
  <tr>
365
- <td class="memname">unsigned long long <a class="el" href="classPassenger_1_1MessageServer.html#bf5075add15c5f32a60039bdcbe98926">Passenger::MessageServer::loginTimeout</a><code> [protected]</code> </td>
341
+ <td class="memname">unsigned long long <a class="el" href="classPassenger_1_1MessageServer.html#abf5075add15c5f32a60039bdcbe98926">Passenger::MessageServer::loginTimeout</a><code> [protected]</code></td>
366
342
  </tr>
367
343
  </table>
368
344
  </div>
369
345
  <div class="memdoc">
370
346
 
371
- <p>
372
- The maximum number of milliseconds that client may spend on logging in.
373
- <p>
374
- Clients that take longer are disconnected.<p>
375
- <dl class="invariant" compact><dt><b>Invariant:</b></dt><dd>loginTimeout != 0 </dd></dl>
347
+ <p>The maximum number of milliseconds that client may spend on logging in. </p>
348
+ <p>Clients that take longer are disconnected.</p>
349
+ <dl class="invariant"><dt><b>Invariant:</b></dt><dd>loginTimeout != 0 </dd></dl>
376
350
 
377
351
  </div>
378
- </div><p>
379
- <a class="anchor" name="ef3c642484fbbbfc46b7768c53a5c0d4"></a><!-- doxytag: member="Passenger::MessageServer::serverFd" ref="ef3c642484fbbbfc46b7768c53a5c0d4" args="" -->
352
+ </div>
353
+ <a class="anchor" id="aef3c642484fbbbfc46b7768c53a5c0d4"></a><!-- doxytag: member="Passenger::MessageServer::serverFd" ref="aef3c642484fbbbfc46b7768c53a5c0d4" args="" -->
380
354
  <div class="memitem">
381
355
  <div class="memproto">
382
356
  <table class="memname">
383
357
  <tr>
384
- <td class="memname">int <a class="el" href="classPassenger_1_1MessageServer.html#ef3c642484fbbbfc46b7768c53a5c0d4">Passenger::MessageServer::serverFd</a><code> [protected]</code> </td>
358
+ <td class="memname">int <a class="el" href="classPassenger_1_1MessageServer.html#aef3c642484fbbbfc46b7768c53a5c0d4">Passenger::MessageServer::serverFd</a><code> [protected]</code></td>
385
359
  </tr>
386
360
  </table>
387
361
  </div>
388
362
  <div class="memdoc">
389
363
 
390
- <p>
391
- The server socket's file descriptor.
392
- <p>
393
- <dl class="invariant" compact><dt><b>Invariant:</b></dt><dd>serverFd &gt;= 0 </dd></dl>
364
+ <p>The server socket's file descriptor. </p>
365
+ <dl class="invariant"><dt><b>Invariant:</b></dt><dd>serverFd &gt;= 0 </dd></dl>
394
366
 
395
367
  </div>
396
- </div><p>
397
- <a class="anchor" name="18f4966401ab1f1ef245af922b382ce3"></a><!-- doxytag: member="Passenger::MessageServer::socketFilename" ref="18f4966401ab1f1ef245af922b382ce3" args="" -->
368
+ </div>
369
+ <a class="anchor" id="a18f4966401ab1f1ef245af922b382ce3"></a><!-- doxytag: member="Passenger::MessageServer::socketFilename" ref="a18f4966401ab1f1ef245af922b382ce3" args="" -->
398
370
  <div class="memitem">
399
371
  <div class="memproto">
400
372
  <table class="memname">
401
373
  <tr>
402
- <td class="memname">string <a class="el" href="classPassenger_1_1MessageServer.html#18f4966401ab1f1ef245af922b382ce3">Passenger::MessageServer::socketFilename</a><code> [protected]</code> </td>
374
+ <td class="memname">string <a class="el" href="classPassenger_1_1MessageServer.html#a18f4966401ab1f1ef245af922b382ce3">Passenger::MessageServer::socketFilename</a><code> [protected]</code></td>
403
375
  </tr>
404
376
  </table>
405
377
  </div>
406
378
  <div class="memdoc">
407
379
 
408
- <p>
409
- The filename of the server socket on which this <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> is listening.
410
- <p>
380
+ <p>The filename of the server socket on which this <a class="el" href="classPassenger_1_1MessageServer.html" title="Simple pluggable request/response messaging server framework.">MessageServer</a> is listening. </p>
411
381
 
412
382
  </div>
413
- </div><p>
414
- <a class="anchor" name="48ccf2c09c2c8b5dcfe3a0585dba67cf"></a><!-- doxytag: member="Passenger::MessageServer::threadGroup" ref="48ccf2c09c2c8b5dcfe3a0585dba67cf" args="" -->
383
+ </div>
384
+ <a class="anchor" id="a48ccf2c09c2c8b5dcfe3a0585dba67cf"></a><!-- doxytag: member="Passenger::MessageServer::threadGroup" ref="a48ccf2c09c2c8b5dcfe3a0585dba67cf" args="" -->
415
385
  <div class="memitem">
416
386
  <div class="memproto">
417
387
  <table class="memname">
418
388
  <tr>
419
- <td class="memname">dynamic_thread_group <a class="el" href="classPassenger_1_1MessageServer.html#48ccf2c09c2c8b5dcfe3a0585dba67cf">Passenger::MessageServer::threadGroup</a><code> [protected]</code> </td>
389
+ <td class="memname">dynamic_thread_group <a class="el" href="classPassenger_1_1MessageServer.html#a48ccf2c09c2c8b5dcfe3a0585dba67cf">Passenger::MessageServer::threadGroup</a><code> [protected]</code></td>
420
390
  </tr>
421
391
  </table>
422
392
  </div>
423
393
  <div class="memdoc">
424
394
 
425
- <p>
426
- The client threads.
427
- <p>
395
+ <p>The client threads. </p>
428
396
 
429
397
  </div>
430
- </div><p>
431
- <hr>The documentation for this class was generated from the following file:<ul>
432
- <li><a class="el" href="MessageServer_8h-source.html">MessageServer.h</a></ul>
433
398
  </div>
434
- <hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 28 14:11:59 2010 for Passenger by&nbsp;
399
+ <hr/>The documentation for this class was generated from the following file:<ul>
400
+ <li><a class="el" href="MessageServer_8h_source.html">MessageServer.h</a></li>
401
+ </ul>
402
+ </div>
403
+ <hr size="1"/><address style="text-align: right;"><small>Generated by&nbsp;
435
404
  <a href="http://www.doxygen.org/index.html">
436
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
405
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2 </small></address>
437
406
  </body>
438
407
  </html>