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
@@ -5,10 +5,12 @@
5
5
  * Subject to the Boost Software License, Version 1.0. (See accompanying
6
6
  * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
7
7
  * Author: Jeff Garland, Bart Garst
8
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
8
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
9
9
  */
10
10
 
11
- #include "boost/detail/workaround.hpp"
11
+ #include <cstdlib>
12
+ #include <boost/config.hpp>
13
+ #include <boost/detail/workaround.hpp>
12
14
 
13
15
  // With boost release 1.33, date_time will be using a different,
14
16
  // more flexible, IO system. This new system is not compatible with
@@ -26,7 +28,7 @@
26
28
 
27
29
  // This file performs some local compiler configurations
28
30
 
29
- #include "boost/date_time/locale_config.hpp" //set up locale configurations
31
+ #include <boost/date_time/locale_config.hpp> //set up locale configurations
30
32
 
31
33
  //Set up a configuration parameter for platforms that have
32
34
  //GetTimeOfDay
@@ -49,7 +51,7 @@
49
51
  #endif
50
52
 
51
53
  // include these types before we try to re-define them
52
- #include "boost/cstdint.hpp"
54
+ #include <boost/cstdint.hpp>
53
55
 
54
56
  //Define INT64_C for compilers that don't have it
55
57
  #if (!defined(INT64_C))
@@ -85,12 +87,32 @@ namespace std {
85
87
  #define BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS
86
88
  #endif
87
89
 
90
+ // The macro marks up places where compiler complains for missing return statement or
91
+ // uninitialized variables after calling to boost::throw_exception.
92
+ // BOOST_UNREACHABLE_RETURN doesn't work since even compilers that support
93
+ // unreachable statements detection emit such warnings.
94
+ #if defined(_MSC_VER)
95
+ // Use special MSVC extension to markup unreachable code
96
+ # define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) __assume(false)
97
+ #elif !defined(BOOST_NO_UNREACHABLE_RETURN_DETECTION)
98
+ // Call to a non-returning function should suppress the warning
99
+ # if defined(BOOST_NO_STDC_NAMESPACE)
100
+ namespace std {
101
+ using ::abort;
102
+ }
103
+ # endif // defined(BOOST_NO_STDC_NAMESPACE)
104
+ # define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) std::abort()
105
+ #else
106
+ // For other poor compilers the specified expression is compiled. Usually, this would be a return statement.
107
+ # define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) x
108
+ #endif
109
+
88
110
  /* The following handles the definition of the necessary macros
89
111
  * for dll building on Win32 platforms.
90
112
  *
91
113
  * For code that will be placed in the date_time .dll,
92
114
  * it must be properly prefixed with BOOST_DATE_TIME_DECL.
93
- * The corresponding .cpp file must have BOOST_DATE_TIME_SOURCES
115
+ * The corresponding .cpp file must have BOOST_DATE_TIME_SOURCE
94
116
  * defined before including its header. For examples see:
95
117
  * greg_month.hpp & greg_month.cpp
96
118
  *
@@ -6,10 +6,15 @@
6
6
  * Boost Software License, Version 1.0. (See accompanying
7
7
  * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
8
8
  * Author: Jeff Garland
9
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
9
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
10
10
  */
11
11
 
12
+ #include <exception>
13
+ #include <stdexcept>
12
14
  #include <boost/config.hpp>
15
+ #include <boost/throw_exception.hpp>
16
+ #include <boost/mpl/if.hpp>
17
+ #include <boost/type_traits/is_base_of.hpp>
13
18
 
14
19
  namespace boost {
15
20
 
@@ -38,21 +43,21 @@ namespace CV {
38
43
  public:
39
44
  typedef typename value_policies::value_type value_type;
40
45
  // typedef except_type exception_type;
41
- constrained_value(value_type value)
46
+ constrained_value(value_type value) : value_((min)())
42
47
  {
43
48
  assign(value);
44
- };
45
- constrained_value& operator=(value_type v)
46
- {
49
+ }
50
+ constrained_value& operator=(value_type v)
51
+ {
47
52
  assign(v);
48
53
  return *this;
49
- }
54
+ }
50
55
  //! Return the max allowed value (traits method)
51
- static value_type max BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::max)();};
56
+ static value_type max BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::max)();}
52
57
  //! Return the min allowed value (traits method)
53
- static value_type min BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::min)();};
58
+ static value_type min BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::min)();}
54
59
  //! Coerce into the representation type
55
- operator value_type() const {return value_;};
60
+ operator value_type() const {return value_;}
56
61
  protected:
57
62
  value_type value_;
58
63
  private:
@@ -69,7 +74,6 @@ namespace CV {
69
74
  return;
70
75
  }
71
76
  value_ = value;
72
-
73
77
  }
74
78
  };
75
79
 
@@ -78,13 +82,32 @@ namespace CV {
78
82
  rep_type max_value, class exception_type>
79
83
  class simple_exception_policy
80
84
  {
85
+ struct exception_wrapper : public exception_type
86
+ {
87
+ // In order to support throw_exception mechanism in the BOOST_NO_EXCEPTIONS mode,
88
+ // we'll have to provide a way to acquire std::exception from the exception being thrown.
89
+ // However, we cannot derive from it, since it would make it interceptable by this class,
90
+ // which might not be what the user wanted.
91
+ operator std::out_of_range () const
92
+ {
93
+ // TODO: Make the message more descriptive by using arguments to on_error
94
+ return std::out_of_range("constrained value boundary has been violated");
95
+ }
96
+ };
97
+
98
+ typedef typename mpl::if_<
99
+ is_base_of< std::exception, exception_type >,
100
+ exception_type,
101
+ exception_wrapper
102
+ >::type actual_exception_type;
103
+
81
104
  public:
82
105
  typedef rep_type value_type;
83
- static rep_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return min_value; };
84
- static rep_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return max_value;};
106
+ static rep_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return min_value; }
107
+ static rep_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return max_value; }
85
108
  static void on_error(rep_type, rep_type, violation_enum)
86
109
  {
87
- throw exception_type();
110
+ boost::throw_exception(actual_exception_type());
88
111
  }
89
112
  };
90
113
 
@@ -2,43 +2,43 @@
2
2
  #define DATE_TIME_DATE_HPP___
3
3
 
4
4
  /* Copyright (c) 2002,2003 CrystalClear Software, Inc.
5
- * Use, modification and distribution is subject to the
5
+ * Use, modification and distribution is subject to the
6
6
  * Boost Software License, Version 1.0. (See accompanying
7
7
  * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
8
8
  * Author: Jeff Garland, Bart Garst
9
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
9
+ * $Date: 2010-01-10 14:17:23 -0500 (Sun, 10 Jan 2010) $
10
10
  */
11
11
 
12
- #include "boost/date_time/year_month_day.hpp"
13
- #include "boost/date_time/special_defs.hpp"
14
- #include "boost/operators.hpp"
12
+ #include <boost/operators.hpp>
13
+ #include <boost/date_time/year_month_day.hpp>
14
+ #include <boost/date_time/special_defs.hpp>
15
15
 
16
16
  namespace boost {
17
17
  namespace date_time {
18
18
 
19
19
  //!Representation of timepoint at the one day level resolution.
20
- /*!
20
+ /*!
21
21
  The date template represents an interface shell for a date class
22
22
  that is based on a year-month-day system such as the gregorian
23
23
  or iso systems. It provides basic operations to enable calculation
24
- and comparisons.
24
+ and comparisons.
25
25
 
26
26
  <b>Theory</b>
27
27
 
28
- This date representation fundamentally departs from the C tm struct
28
+ This date representation fundamentally departs from the C tm struct
29
29
  approach. The goal for this type is to provide efficient date
30
30
  operations (add, subtract) and storage (minimize space to represent)
31
31
  in a concrete class. Thus, the date uses a count internally to
32
- represent a particular date. The calendar parameter defines
32
+ represent a particular date. The calendar parameter defines
33
33
  the policies for converting the the year-month-day and internal
34
34
  counted form here. Applications that need to perform heavy
35
35
  formatting of the same date repeatedly will perform better
36
36
  by using the year-month-day representation.
37
-
37
+
38
38
  Internally the date uses a day number to represent the date.
39
- This is a monotonic time representation. This representation
39
+ This is a monotonic time representation. This representation
40
40
  allows for fast comparison as well as simplifying
41
- the creation of writing numeric operations. Essentially, the
41
+ the creation of writing numeric operations. Essentially, the
42
42
  internal day number is like adjusted julian day. The adjustment
43
43
  is determined by the Epoch date which is represented as day 1 of
44
44
  the calendar. Day 0 is reserved for negative infinity so that
@@ -48,11 +48,11 @@ namespace date_time {
48
48
  day representations.
49
49
  */
50
50
 
51
-
52
- template<class T, class calendar, class duration_type_>
53
- class date : private
54
- boost::less_than_comparable<T
55
- , boost::equality_comparable<T
51
+
52
+ template<class T, class calendar, class duration_type_>
53
+ class date : private
54
+ boost::less_than_comparable<T
55
+ , boost::equality_comparable<T
56
56
  > >
57
57
  {
58
58
  public:
@@ -67,26 +67,26 @@ namespace date_time {
67
67
  typedef typename calendar::date_rep_type date_rep_type;
68
68
  typedef typename calendar::date_int_type date_int_type;
69
69
  typedef typename calendar::day_of_week_type day_of_week_type;
70
- date(year_type y, month_type m, day_type d)
70
+ date(year_type y, month_type m, day_type d)
71
71
  : days_(calendar::day_number(ymd_type(y, m, d)))
72
72
  {}
73
- date(const ymd_type& ymd)
73
+ date(const ymd_type& ymd)
74
74
  : days_(calendar::day_number(ymd))
75
- {}
75
+ {}
76
76
  //let the compiler write copy, assignment, and destructor
77
77
  year_type year() const
78
78
  {
79
- ymd_type ymd = calendar::from_day_number(days_);
79
+ ymd_type ymd = calendar::from_day_number(days_);
80
80
  return ymd.year;
81
81
  }
82
82
  month_type month() const
83
83
  {
84
- ymd_type ymd = calendar::from_day_number(days_);
84
+ ymd_type ymd = calendar::from_day_number(days_);
85
85
  return ymd.month;
86
86
  }
87
87
  day_type day() const
88
88
  {
89
- ymd_type ymd = calendar::from_day_number(days_);
89
+ ymd_type ymd = calendar::from_day_number(days_);
90
90
  return ymd.day;
91
91
  }
92
92
  day_of_week_type day_of_week() const
@@ -138,10 +138,21 @@ namespace date_time {
138
138
  }
139
139
  duration_type operator-(const date_type& d) const
140
140
  {
141
- date_rep_type val = date_rep_type(days_) - date_rep_type(d.days_);
142
- return duration_type(val.as_number());
141
+ if (!this->is_special() && !d.is_special())
142
+ {
143
+ // The duration underlying type may be wider than the date underlying type.
144
+ // Thus we calculate the difference in terms of two durations from some common fixed base date.
145
+ typedef typename duration_type::duration_rep_type duration_rep_type;
146
+ return duration_type(static_cast< duration_rep_type >(days_) - static_cast< duration_rep_type >(d.days_));
147
+ }
148
+ else
149
+ {
150
+ // In this case the difference will be a special value, too
151
+ date_rep_type val = date_rep_type(days_) - date_rep_type(d.days_);
152
+ return duration_type(val.as_special());
153
+ }
143
154
  }
144
-
155
+
145
156
  date_type operator-(const duration_type& dd) const
146
157
  {
147
158
  if(dd.is_special())
@@ -155,10 +166,10 @@ namespace date_time {
155
166
  *this = *this - dd;
156
167
  return date_type(days_);
157
168
  }
158
- date_rep_type day_count() const
169
+ date_rep_type day_count() const
159
170
  {
160
171
  return days_;
161
- };
172
+ }
162
173
  //allow internal access from operators
163
174
  date_type operator+(const duration_type& dd) const
164
175
  {
@@ -170,25 +181,25 @@ namespace date_time {
170
181
  }
171
182
  date_type operator+=(const duration_type& dd)
172
183
  {
173
- *this = *this + dd;
184
+ *this = *this + dd;
174
185
  return date_type(days_);
175
186
  }
176
187
 
177
188
  //see reference
178
189
  protected:
179
- /*! This is a private constructor which allows for the creation of new
180
- dates. It is not exposed to users since that would require class
190
+ /*! This is a private constructor which allows for the creation of new
191
+ dates. It is not exposed to users since that would require class
181
192
  users to understand the inner workings of the date class.
182
193
  */
183
194
  explicit date(date_int_type days) : days_(days) {};
184
195
  explicit date(date_rep_type days) : days_(days.as_number()) {};
185
196
  date_int_type days_;
186
-
197
+
187
198
  };
188
199
 
189
200
 
190
201
 
191
-
202
+
192
203
  } } // namespace date_time
193
204
 
194
205
 
@@ -6,11 +6,12 @@
6
6
  * Boost Software License, Version 1.0. (See accompanying
7
7
  * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
8
8
  * Author: Jeff Garland, Bart Garst
9
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
9
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
10
10
  */
11
11
 
12
12
 
13
13
  #include <boost/operators.hpp>
14
+ #include <boost/date_time/special_defs.hpp>
14
15
 
15
16
  namespace boost {
16
17
  namespace date_time {
@@ -19,11 +20,12 @@ namespace date_time {
19
20
  //! Duration type with date level resolution
20
21
  template<class duration_rep_traits>
21
22
  class date_duration : private
22
- boost::less_than_comparable<date_duration< duration_rep_traits>
23
- , boost::equality_comparable< date_duration< duration_rep_traits>
24
- , boost::addable< date_duration< duration_rep_traits>
25
- , boost::subtractable< date_duration< duration_rep_traits>
26
- > > > >
23
+ boost::less_than_comparable1< date_duration< duration_rep_traits >
24
+ , boost::equality_comparable1< date_duration< duration_rep_traits >
25
+ , boost::addable1< date_duration< duration_rep_traits >
26
+ , boost::subtractable1< date_duration< duration_rep_traits >
27
+ , boost::dividable2< date_duration< duration_rep_traits >, int
28
+ > > > > >
27
29
  {
28
30
  public:
29
31
  typedef typename duration_rep_traits::int_type duration_rep_type;
@@ -80,40 +82,37 @@ namespace date_time {
80
82
  * so this will not compile */
81
83
 
82
84
  //! Subtract another duration -- result is signed
83
- date_duration operator-=(const date_duration& rhs)
85
+ date_duration& operator-=(const date_duration& rhs)
84
86
  {
85
87
  //days_ -= rhs.days_;
86
88
  days_ = days_ - rhs.days_;
87
89
  return *this;
88
90
  }
89
91
  //! Add a duration -- result is signed
90
- date_duration operator+=(const date_duration& rhs)
92
+ date_duration& operator+=(const date_duration& rhs)
91
93
  {
92
94
  days_ = days_ + rhs.days_;
93
95
  return *this;
94
96
  }
95
97
 
96
98
  //! unary- Allows for dd = -date_duration(2); -> dd == -2
97
- date_duration operator-()const
99
+ date_duration operator-() const
98
100
  {
99
101
  return date_duration<duration_rep_traits>(get_rep() * (-1));
100
102
  }
101
103
  //! Division operations on a duration with an integer.
102
- date_duration<duration_rep_traits> operator/=(int divisor)
104
+ date_duration& operator/=(int divisor)
103
105
  {
104
106
  days_ = days_ / divisor;
105
107
  return *this;
106
108
  }
107
- date_duration<duration_rep_traits> operator/(int divisor)
108
- {
109
- return date_duration<duration_rep_traits>(days_ / divisor);
110
- }
111
109
 
112
110
  //! return sign information
113
111
  bool is_negative() const
114
112
  {
115
113
  return days_ < 0;
116
114
  }
115
+
117
116
  private:
118
117
  duration_rep days_;
119
118
  };
@@ -2,28 +2,32 @@
2
2
  #define _DATE_TIME_DATE_FACET__HPP___
3
3
 
4
4
  /* Copyright (c) 2004-2005 CrystalClear Software, Inc.
5
- * Use, modification and distribution is subject to the
5
+ * Use, modification and distribution is subject to the
6
6
  * Boost Software License, Version 1.0. (See accompanying
7
7
  * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
8
8
  * Author: Martin Andrian, Jeff Garland, Bart Garst
9
- * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
9
+ * $Date: 2009-06-04 07:40:18 -0400 (Thu, 04 Jun 2009) $
10
10
  */
11
11
 
12
-
13
- #include "boost/algorithm/string/replace.hpp"
14
- #include "boost/date_time/period.hpp"
15
- #include "boost/date_time/special_values_formatter.hpp"
16
- #include "boost/date_time/period_formatter.hpp"
17
- #include "boost/date_time/period_parser.hpp"
18
- #include "boost/date_time/date_generator_formatter.hpp"
19
- #include "boost/date_time/date_generator_parser.hpp"
20
- #include "boost/date_time/format_date_parser.hpp"
12
+ #include <locale>
21
13
  #include <string>
22
14
  #include <vector>
15
+ #include <iterator> // ostreambuf_iterator
16
+ #include <boost/throw_exception.hpp>
17
+ #include <boost/algorithm/string/replace.hpp>
18
+ #include <boost/date_time/compiler_config.hpp>
19
+ #include <boost/date_time/period.hpp>
20
+ #include <boost/date_time/special_defs.hpp>
21
+ #include <boost/date_time/special_values_formatter.hpp>
22
+ #include <boost/date_time/period_formatter.hpp>
23
+ #include <boost/date_time/period_parser.hpp>
24
+ #include <boost/date_time/date_generator_formatter.hpp>
25
+ #include <boost/date_time/date_generator_parser.hpp>
26
+ #include <boost/date_time/format_date_parser.hpp>
23
27
 
24
28
  namespace boost { namespace date_time {
25
29
 
26
-
30
+
27
31
  /*! Class that provides format based I/O facet for date types.
28
32
  *
29
33
  * This class allows the formatting of dates by using format string.
@@ -40,7 +44,7 @@ namespace boost { namespace date_time {
40
44
  * Default weekday format == %a
41
45
  */
42
46
  template <class date_type,
43
- class CharT,
47
+ class CharT,
44
48
  class OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > >
45
49
  class date_facet : public std::locale::facet {
46
50
  public:
@@ -77,9 +81,9 @@ namespace boost { namespace date_time {
77
81
  #if defined (__SUNPRO_CC) && defined (_RWSTD_VER)
78
82
  std::locale::id& __get_id (void) const { return id; }
79
83
  #endif
80
-
81
- explicit date_facet(::size_t a_ref = 0)
82
- : std::locale::facet(a_ref),
84
+
85
+ explicit date_facet(::size_t a_ref = 0)
86
+ : std::locale::facet(a_ref),
83
87
  //m_format(standard_format_specifier)
84
88
  m_format(default_date_format),
85
89
  m_month_format(short_month_format),
@@ -88,22 +92,22 @@ namespace boost { namespace date_time {
88
92
 
89
93
  explicit date_facet(const char_type* format_str,
90
94
  const input_collection_type& short_names,
91
- ::size_t ref_count = 0)
92
- : std::locale::facet(ref_count),
95
+ ::size_t ref_count = 0)
96
+ : std::locale::facet(ref_count),
93
97
  m_format(format_str),
94
98
  m_month_format(short_month_format),
95
99
  m_weekday_format(short_weekday_format),
96
- m_month_short_names(short_names)
100
+ m_month_short_names(short_names)
97
101
  {}
98
102
 
99
-
100
- explicit date_facet(const char_type* format_str,
101
- period_formatter_type per_formatter = period_formatter_type(),
103
+
104
+ explicit date_facet(const char_type* format_str,
105
+ period_formatter_type per_formatter = period_formatter_type(),
102
106
  special_values_formatter_type sv_formatter = special_values_formatter_type(),
103
107
  date_gen_formatter_type dg_formatter = date_gen_formatter_type(),
104
108
  ::size_t ref_count = 0)
105
- : std::locale::facet(ref_count),
106
- m_format(format_str),
109
+ : std::locale::facet(ref_count),
110
+ m_format(format_str),
107
111
  m_month_format(short_month_format),
108
112
  m_weekday_format(short_weekday_format),
109
113
  m_period_formatter(per_formatter),
@@ -127,11 +131,11 @@ namespace boost { namespace date_time {
127
131
  void weekday_format(const char_type* const format_str) {
128
132
  m_weekday_format = format_str;
129
133
  }
130
-
134
+
131
135
  void period_formatter(period_formatter_type per_formatter) {
132
136
  m_period_formatter= per_formatter;
133
137
  }
134
- void special_values_formatter(const special_values_formatter_type& svf)
138
+ void special_values_formatter(const special_values_formatter_type& svf)
135
139
  {
136
140
  m_special_values_formatter = svf;
137
141
  }
@@ -160,24 +164,24 @@ namespace boost { namespace date_time {
160
164
  m_date_gen_formatter.elements(new_strings, beg_pos);
161
165
  }
162
166
 
163
- OutItrT put(OutItrT next,
164
- std::ios_base& a_ios,
165
- char_type fill_char,
166
- const date_type& d) const
167
+ OutItrT put(OutItrT next,
168
+ std::ios_base& a_ios,
169
+ char_type fill_char,
170
+ const date_type& d) const
167
171
  {
168
- if (d.is_special()) {
172
+ if (d.is_special()) {
169
173
  return do_put_special(next, a_ios, fill_char, d.as_special());
170
174
  }
171
175
  //The following line of code required the date to support a to_tm function
172
176
  return do_put_tm(next, a_ios, fill_char, to_tm(d), m_format);
173
177
  }
174
178
 
175
- OutItrT put(OutItrT next,
176
- std::ios_base& a_ios,
177
- char_type fill_char,
178
- const duration_type& dd) const
179
+ OutItrT put(OutItrT next,
180
+ std::ios_base& a_ios,
181
+ char_type fill_char,
182
+ const duration_type& dd) const
179
183
  {
180
- if (dd.is_special()) {
184
+ if (dd.is_special()) {
181
185
  return do_put_special(next, a_ios, fill_char, dd.get_rep().as_special());
182
186
  }
183
187
 
@@ -195,164 +199,148 @@ namespace boost { namespace date_time {
195
199
  }
196
200
 
197
201
 
198
- OutItrT put(OutItrT next,
199
- std::ios_base& a_ios,
200
- char_type fill_char,
201
- const month_type& m) const
202
+ OutItrT put(OutItrT next,
203
+ std::ios_base& a_ios,
204
+ char_type fill_char,
205
+ const month_type& m) const
202
206
  {
203
- //if (d.is_special()) {
207
+ //if (d.is_special()) {
204
208
  // return do_put_special(next, a_ios, fill_char, d.as_special());
205
209
  //}
206
210
  //The following line of code required the date to support a to_tm function
207
- tm dtm;
208
- init_tm(dtm);
209
- dtm.tm_mon = m -1;
211
+ std::tm dtm = {};
212
+ dtm.tm_mon = m - 1;
210
213
  return do_put_tm(next, a_ios, fill_char, dtm, m_month_format);
211
214
  }
212
215
 
213
216
  //! puts the day of month
214
- OutItrT put(OutItrT next,
215
- std::ios_base& a_ios,
216
- char_type fill_char,
217
- const day_type& day) const
217
+ OutItrT put(OutItrT next,
218
+ std::ios_base& a_ios,
219
+ char_type fill_char,
220
+ const day_type& day) const
218
221
  {
219
- tm dtm;
220
- init_tm(dtm);
222
+ std::tm dtm = {};
221
223
  dtm.tm_mday = day.as_number();
222
224
  char_type tmp[3] = {'%','d'};
223
225
  string_type temp_format(tmp);
224
226
  return do_put_tm(next, a_ios, fill_char, dtm, temp_format);
225
227
  }
226
228
 
227
- OutItrT put(OutItrT next,
228
- std::ios_base& a_ios,
229
- char_type fill_char,
230
- const day_of_week_type& dow) const
229
+ OutItrT put(OutItrT next,
230
+ std::ios_base& a_ios,
231
+ char_type fill_char,
232
+ const day_of_week_type& dow) const
231
233
  {
232
- //if (d.is_special()) {
234
+ //if (d.is_special()) {
233
235
  // return do_put_special(next, a_ios, fill_char, d.as_special());
234
236
  //}
235
237
  //The following line of code required the date to support a to_tm function
236
- tm dtm;
237
- init_tm(dtm);
238
+ std::tm dtm = {};
238
239
  dtm.tm_wday = dow;
239
240
  return do_put_tm(next, a_ios, fill_char, dtm, m_weekday_format);
240
241
  }
241
242
 
242
243
 
243
- OutItrT put(OutItrT next,
244
- std::ios_base& a_ios,
245
- char_type fill_char,
246
- const period_type& p) const
244
+ OutItrT put(OutItrT next,
245
+ std::ios_base& a_ios,
246
+ char_type fill_char,
247
+ const period_type& p) const
247
248
  {
248
249
  return m_period_formatter.put_period(next, a_ios, fill_char, p, *this);
249
250
  }
250
251
 
251
- OutItrT put(OutItrT next,
252
- std::ios_base& a_ios,
253
- char_type fill_char,
254
- const partial_date_type& pd) const
252
+ OutItrT put(OutItrT next,
253
+ std::ios_base& a_ios,
254
+ char_type fill_char,
255
+ const partial_date_type& pd) const
255
256
  {
256
257
  return m_date_gen_formatter.put_partial_date(next, a_ios, fill_char, pd, *this);
257
258
  }
258
259
 
259
- OutItrT put(OutItrT next,
260
- std::ios_base& a_ios,
261
- char_type fill_char,
262
- const nth_kday_type& nkd) const
260
+ OutItrT put(OutItrT next,
261
+ std::ios_base& a_ios,
262
+ char_type fill_char,
263
+ const nth_kday_type& nkd) const
263
264
  {
264
265
  return m_date_gen_formatter.put_nth_kday(next, a_ios, fill_char, nkd, *this);
265
266
  }
266
267
 
267
- OutItrT put(OutItrT next,
268
- std::ios_base& a_ios,
269
- char_type fill_char,
270
- const first_kday_type& fkd) const
268
+ OutItrT put(OutItrT next,
269
+ std::ios_base& a_ios,
270
+ char_type fill_char,
271
+ const first_kday_type& fkd) const
271
272
  {
272
273
  return m_date_gen_formatter.put_first_kday(next, a_ios, fill_char, fkd, *this);
273
274
  }
274
275
 
275
- OutItrT put(OutItrT next,
276
- std::ios_base& a_ios,
277
- char_type fill_char,
278
- const last_kday_type& lkd) const
276
+ OutItrT put(OutItrT next,
277
+ std::ios_base& a_ios,
278
+ char_type fill_char,
279
+ const last_kday_type& lkd) const
279
280
  {
280
281
  return m_date_gen_formatter.put_last_kday(next, a_ios, fill_char, lkd, *this);
281
282
  }
282
283
 
283
- OutItrT put(OutItrT next,
284
- std::ios_base& a_ios,
285
- char_type fill_char,
286
- const kday_before_type& fkb) const
284
+ OutItrT put(OutItrT next,
285
+ std::ios_base& a_ios,
286
+ char_type fill_char,
287
+ const kday_before_type& fkb) const
287
288
  {
288
289
  return m_date_gen_formatter.put_kday_before(next, a_ios, fill_char, fkb, *this);
289
290
  }
290
291
 
291
- OutItrT put(OutItrT next,
292
- std::ios_base& a_ios,
293
- char_type fill_char,
294
- const kday_after_type& fka) const
292
+ OutItrT put(OutItrT next,
293
+ std::ios_base& a_ios,
294
+ char_type fill_char,
295
+ const kday_after_type& fka) const
295
296
  {
296
297
  return m_date_gen_formatter.put_kday_after(next, a_ios, fill_char, fka, *this);
297
298
  }
298
-
299
+
299
300
  protected:
300
- //! Helper function to initialize all fields in a tm struct
301
- tm init_tm(tm& tm_value) const
302
- {
303
- tm_value.tm_sec = 0; /* seconds */
304
- tm_value.tm_min = 0; /* minutes */
305
- tm_value.tm_hour = 0; /* hours */
306
- tm_value.tm_mday = 0; /* day of the month */
307
- tm_value.tm_mon = 0; /* month */
308
- tm_value.tm_year = 0; /* year */
309
- tm_value.tm_wday = 0; /* day of the week */
310
- tm_value.tm_yday = 0; /* day in the year */
311
- tm_value.tm_isdst = 0; /* daylight saving time */
312
- return tm_value;
313
- }
314
- virtual OutItrT do_put_special(OutItrT next,
315
- std::ios_base& /*a_ios*/,
316
- char_type /*fill_char*/,
317
- const boost::date_time::special_values sv) const
301
+ virtual OutItrT do_put_special(OutItrT next,
302
+ std::ios_base& /*a_ios*/,
303
+ char_type /*fill_char*/,
304
+ const boost::date_time::special_values sv) const
318
305
  {
319
306
  m_special_values_formatter.put_special(next, sv);
320
307
  return next;
321
308
  }
322
- virtual OutItrT do_put_tm(OutItrT next,
323
- std::ios_base& a_ios,
324
- char_type fill_char,
309
+ virtual OutItrT do_put_tm(OutItrT next,
310
+ std::ios_base& a_ios,
311
+ char_type fill_char,
325
312
  const tm& tm_value,
326
- string_type a_format) const
313
+ string_type a_format) const
327
314
  {
328
315
  // update format string with custom names
329
316
  if (m_weekday_long_names.size()) {
330
- boost::algorithm::replace_all(a_format,
331
- long_weekday_format,
317
+ boost::algorithm::replace_all(a_format,
318
+ long_weekday_format,
332
319
  m_weekday_long_names[tm_value.tm_wday]);
333
320
  }
334
321
  if (m_weekday_short_names.size()) {
335
- boost::algorithm::replace_all(a_format,
336
- short_weekday_format,
322
+ boost::algorithm::replace_all(a_format,
323
+ short_weekday_format,
337
324
  m_weekday_short_names[tm_value.tm_wday]);
338
325
 
339
326
  }
340
327
  if (m_month_long_names.size()) {
341
- boost::algorithm::replace_all(a_format,
342
- long_month_format,
328
+ boost::algorithm::replace_all(a_format,
329
+ long_month_format,
343
330
  m_month_long_names[tm_value.tm_mon]);
344
331
  }
345
332
  if (m_month_short_names.size()) {
346
- boost::algorithm::replace_all(a_format,
347
- short_month_format,
333
+ boost::algorithm::replace_all(a_format,
334
+ short_month_format,
348
335
  m_month_short_names[tm_value.tm_mon]);
349
336
  }
350
337
  // use time_put facet to create final string
351
- return std::use_facet<std::time_put<CharT> >(a_ios.getloc()).put(next, a_ios,
352
- fill_char,
338
+ const char_type* p_format = a_format.c_str();
339
+ return std::use_facet<std::time_put<CharT> >(a_ios.getloc()).put(next, a_ios,
340
+ fill_char,
353
341
  &tm_value,
354
- &*a_format.begin(),
355
- &*a_format.begin()+a_format.size());
342
+ p_format,
343
+ p_format + a_format.size());
356
344
  }
357
345
  protected:
358
346
  string_type m_format;
@@ -371,51 +359,51 @@ namespace boost { namespace date_time {
371
359
  template <class date_type, class CharT, class OutItrT>
372
360
  std::locale::id date_facet<date_type, CharT, OutItrT>::id;
373
361
 
374
- template <class date_type, class CharT, class OutItrT>
375
- const typename date_facet<date_type, CharT, OutItrT>::char_type
362
+ template <class date_type, class CharT, class OutItrT>
363
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
376
364
  date_facet<date_type, CharT, OutItrT>::long_weekday_format[3] = {'%','A'};
377
365
 
378
- template <class date_type, class CharT, class OutItrT>
379
- const typename date_facet<date_type, CharT, OutItrT>::char_type
366
+ template <class date_type, class CharT, class OutItrT>
367
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
380
368
  date_facet<date_type, CharT, OutItrT>::short_weekday_format[3] = {'%','a'};
381
369
 
382
- template <class date_type, class CharT, class OutItrT>
383
- const typename date_facet<date_type, CharT, OutItrT>::char_type
370
+ template <class date_type, class CharT, class OutItrT>
371
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
384
372
  date_facet<date_type, CharT, OutItrT>::long_month_format[3] = {'%','B'};
385
373
 
386
- template <class date_type, class CharT, class OutItrT>
387
- const typename date_facet<date_type, CharT, OutItrT>::char_type
374
+ template <class date_type, class CharT, class OutItrT>
375
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
388
376
  date_facet<date_type, CharT, OutItrT>::short_month_format[3] = {'%','b'};
389
377
 
390
- template <class date_type, class CharT, class OutItrT>
391
- const typename date_facet<date_type, CharT, OutItrT>::char_type
378
+ template <class date_type, class CharT, class OutItrT>
379
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
392
380
  date_facet<date_type, CharT, OutItrT>::default_period_separator[4] = { ' ', '/', ' '};
393
381
 
394
- template <class date_type, class CharT, class OutItrT>
395
- const typename date_facet<date_type, CharT, OutItrT>::char_type
396
- date_facet<date_type, CharT, OutItrT>::standard_format_specifier[3] =
382
+ template <class date_type, class CharT, class OutItrT>
383
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
384
+ date_facet<date_type, CharT, OutItrT>::standard_format_specifier[3] =
397
385
  {'%', 'x' };
398
386
 
399
- template <class date_type, class CharT, class OutItrT>
400
- const typename date_facet<date_type, CharT, OutItrT>::char_type
401
- date_facet<date_type, CharT, OutItrT>::iso_format_specifier[7] =
387
+ template <class date_type, class CharT, class OutItrT>
388
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
389
+ date_facet<date_type, CharT, OutItrT>::iso_format_specifier[7] =
402
390
  {'%', 'Y', '%', 'm', '%', 'd' };
403
391
 
404
- template <class date_type, class CharT, class OutItrT>
405
- const typename date_facet<date_type, CharT, OutItrT>::char_type
406
- date_facet<date_type, CharT, OutItrT>::iso_format_extended_specifier[9] =
392
+ template <class date_type, class CharT, class OutItrT>
393
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
394
+ date_facet<date_type, CharT, OutItrT>::iso_format_extended_specifier[9] =
407
395
  {'%', 'Y', '-', '%', 'm', '-', '%', 'd' };
408
396
 
409
- template <class date_type, class CharT, class OutItrT>
410
- const typename date_facet<date_type, CharT, OutItrT>::char_type
411
- date_facet<date_type, CharT, OutItrT>::default_date_format[9] =
397
+ template <class date_type, class CharT, class OutItrT>
398
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
399
+ date_facet<date_type, CharT, OutItrT>::default_date_format[9] =
412
400
  {'%','Y','-','%','b','-','%','d'};
413
401
 
414
402
 
415
403
 
416
404
  //! Input facet
417
405
  template <class date_type,
418
- class CharT,
406
+ class CharT,
419
407
  class InItrT = std::istreambuf_iterator<CharT, std::char_traits<CharT> > >
420
408
  class date_input_facet : public std::locale::facet {
421
409
  public:
@@ -429,7 +417,7 @@ namespace boost { namespace date_time {
429
417
  typedef std::basic_string<CharT> string_type;
430
418
  typedef CharT char_type;
431
419
  typedef boost::date_time::period_parser<date_type, CharT> period_parser_type;
432
- typedef boost::date_time::special_values_parser<date_type,CharT> special_values_parser_type;
420
+ typedef boost::date_time::special_values_parser<date_type,CharT> special_values_parser_type;
433
421
  typedef std::vector<std::basic_string<CharT> > input_collection_type;
434
422
  typedef format_date_parser<date_type, CharT> format_date_parser_type;
435
423
  // date_generators stuff goes here
@@ -453,9 +441,9 @@ namespace boost { namespace date_time {
453
441
  static const char_type iso_format_extended_specifier[9];
454
442
  static const char_type default_date_format[9]; // YYYY-Mon-DD
455
443
  static std::locale::id id;
456
-
457
- explicit date_input_facet(::size_t a_ref = 0)
458
- : std::locale::facet(a_ref),
444
+
445
+ explicit date_input_facet(::size_t a_ref = 0)
446
+ : std::locale::facet(a_ref),
459
447
  m_format(default_date_format),
460
448
  m_month_format(short_month_format),
461
449
  m_weekday_format(short_weekday_format),
@@ -465,8 +453,8 @@ namespace boost { namespace date_time {
465
453
  {}
466
454
 
467
455
  explicit date_input_facet(const string_type& format_str,
468
- ::size_t a_ref = 0)
469
- : std::locale::facet(a_ref),
456
+ ::size_t a_ref = 0)
457
+ : std::locale::facet(a_ref),
470
458
  m_format(format_str),
471
459
  m_month_format(short_month_format),
472
460
  m_weekday_format(short_weekday_format),
@@ -513,7 +501,7 @@ namespace boost { namespace date_time {
513
501
  void year_format(const char_type* const format_str) {
514
502
  m_year_format = format_str;
515
503
  }
516
-
504
+
517
505
  void period_parser(period_parser_type per_parser) {
518
506
  m_period_parser = per_parser;
519
507
  }
@@ -549,7 +537,7 @@ namespace boost { namespace date_time {
549
537
  const string_type& before,
550
538
  const string_type& after,
551
539
  const string_type& of)
552
-
540
+
553
541
  {
554
542
  m_date_gen_parser.element_strings(first,second,third,fourth,fifth,last,before,after,of);
555
543
  }
@@ -559,68 +547,68 @@ namespace boost { namespace date_time {
559
547
  m_sv_parser = sv_parser;
560
548
  }
561
549
 
562
- InItrT get(InItrT& from,
563
- InItrT& to,
564
- std::ios_base& /*a_ios*/,
550
+ InItrT get(InItrT& from,
551
+ InItrT& to,
552
+ std::ios_base& /*a_ios*/,
565
553
  date_type& d) const
566
554
  {
567
555
  d = m_parser.parse_date(from, to, m_format, m_sv_parser);
568
556
  return from;
569
557
  }
570
- InItrT get(InItrT& from,
571
- InItrT& to,
572
- std::ios_base& /*a_ios*/,
558
+ InItrT get(InItrT& from,
559
+ InItrT& to,
560
+ std::ios_base& /*a_ios*/,
573
561
  month_type& m) const
574
562
  {
575
563
  m = m_parser.parse_month(from, to, m_month_format);
576
564
  return from;
577
565
  }
578
- InItrT get(InItrT& from,
579
- InItrT& to,
580
- std::ios_base& /*a_ios*/,
566
+ InItrT get(InItrT& from,
567
+ InItrT& to,
568
+ std::ios_base& /*a_ios*/,
581
569
  day_of_week_type& wd) const
582
570
  {
583
571
  wd = m_parser.parse_weekday(from, to, m_weekday_format);
584
572
  return from;
585
573
  }
586
574
  //! Expects 1 or 2 digit day range: 1-31
587
- InItrT get(InItrT& from,
588
- InItrT& to,
589
- std::ios_base& /*a_ios*/,
575
+ InItrT get(InItrT& from,
576
+ InItrT& to,
577
+ std::ios_base& /*a_ios*/,
590
578
  day_type& d) const
591
579
  {
592
580
  d = m_parser.parse_var_day_of_month(from, to);
593
581
  return from;
594
582
  }
595
- InItrT get(InItrT& from,
596
- InItrT& to,
597
- std::ios_base& /*a_ios*/,
583
+ InItrT get(InItrT& from,
584
+ InItrT& to,
585
+ std::ios_base& /*a_ios*/,
598
586
  year_type& y) const
599
587
  {
600
588
  y = m_parser.parse_year(from, to, m_year_format);
601
589
  return from;
602
590
  }
603
- InItrT get(InItrT& from,
604
- InItrT& to,
605
- std::ios_base& a_ios,
591
+ InItrT get(InItrT& from,
592
+ InItrT& to,
593
+ std::ios_base& a_ios,
606
594
  duration_type& dd) const
607
595
  {
608
596
  // skip leading whitespace
609
- while(std::isspace(*from) && from != to) { ++from; }
610
-
611
- /* num_get.get() will always consume the first character if it
612
- * is a sign indicator (+/-). Special value strings may begin
597
+ while(std::isspace(*from) && from != to) { ++from; }
598
+
599
+ /* num_get.get() will always consume the first character if it
600
+ * is a sign indicator (+/-). Special value strings may begin
613
601
  * with one of these signs so we'll need a copy of it
614
602
  * in case num_get.get() fails. */
615
- char_type c = '\0';
603
+ char_type c = '\0';
616
604
  // TODO Are these characters somewhere in the locale?
617
- if(*from == '-' || *from == '+') {
605
+ if(*from == '-' || *from == '+') {
618
606
  c = *from;
619
607
  }
620
608
  typedef std::num_get<CharT, InItrT> num_get;
621
609
  typename duration_type::duration_rep_type val = 0;
622
610
  std::ios_base::iostate err = std::ios_base::goodbit;
623
-
611
+
624
612
  if (std::has_facet<num_get>(a_ios.getloc())) {
625
613
  from = std::use_facet<num_get>(a_ios.getloc()).get(from, to, a_ios, err, val);
626
614
  }
@@ -638,67 +626,68 @@ namespace boost { namespace date_time {
638
626
  }
639
627
  m_sv_parser.match(from, to, mr);
640
628
  if(mr.current_match == match_results::PARSE_ERROR) {
641
- throw std::ios_base::failure("Parse failed. No match found for '" + mr.cache + "'");
629
+ boost::throw_exception(std::ios_base::failure("Parse failed. No match found for '" + mr.cache + "'"));
630
+ BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(return from); // should never reach
642
631
  }
643
- dd = duration_type(static_cast<special_values>(mr.current_match));
632
+ dd = duration_type(static_cast<special_values>(mr.current_match));
644
633
  }
645
634
  else {
646
635
  dd = duration_type(val);
647
636
  }
648
637
  return from;
649
638
  }
650
- InItrT get(InItrT& from,
651
- InItrT& to,
652
- std::ios_base& a_ios,
639
+ InItrT get(InItrT& from,
640
+ InItrT& to,
641
+ std::ios_base& a_ios,
653
642
  period_type& p) const
654
643
  {
655
- p = m_period_parser.get_period(from, to, a_ios, p, duration_type::unit(), *this);
644
+ p = m_period_parser.get_period(from, to, a_ios, p, duration_type::unit(), *this);
656
645
  return from;
657
646
  }
658
- InItrT get(InItrT& from,
659
- InItrT& to,
660
- std::ios_base& a_ios,
647
+ InItrT get(InItrT& from,
648
+ InItrT& to,
649
+ std::ios_base& a_ios,
661
650
  nth_kday_type& nkd) const
662
651
  {
663
652
  nkd = m_date_gen_parser.get_nth_kday_type(from, to, a_ios, *this);
664
653
  return from;
665
654
  }
666
- InItrT get(InItrT& from,
667
- InItrT& to,
668
- std::ios_base& a_ios,
655
+ InItrT get(InItrT& from,
656
+ InItrT& to,
657
+ std::ios_base& a_ios,
669
658
  partial_date_type& pd) const
670
659
  {
671
660
 
672
661
  pd = m_date_gen_parser.get_partial_date_type(from, to, a_ios, *this);
673
662
  return from;
674
663
  }
675
- InItrT get(InItrT& from,
676
- InItrT& to,
677
- std::ios_base& a_ios,
664
+ InItrT get(InItrT& from,
665
+ InItrT& to,
666
+ std::ios_base& a_ios,
678
667
  first_kday_type& fkd) const
679
668
  {
680
669
  fkd = m_date_gen_parser.get_first_kday_type(from, to, a_ios, *this);
681
670
  return from;
682
671
  }
683
- InItrT get(InItrT& from,
684
- InItrT& to,
685
- std::ios_base& a_ios,
672
+ InItrT get(InItrT& from,
673
+ InItrT& to,
674
+ std::ios_base& a_ios,
686
675
  last_kday_type& lkd) const
687
676
  {
688
677
  lkd = m_date_gen_parser.get_last_kday_type(from, to, a_ios, *this);
689
678
  return from;
690
679
  }
691
- InItrT get(InItrT& from,
692
- InItrT& to,
693
- std::ios_base& a_ios,
680
+ InItrT get(InItrT& from,
681
+ InItrT& to,
682
+ std::ios_base& a_ios,
694
683
  kday_before_type& fkb) const
695
684
  {
696
685
  fkb = m_date_gen_parser.get_kday_before_type(from, to, a_ios, *this);
697
686
  return from;
698
687
  }
699
- InItrT get(InItrT& from,
700
- InItrT& to,
701
- std::ios_base& a_ios,
688
+ InItrT get(InItrT& from,
689
+ InItrT& to,
690
+ std::ios_base& a_ios,
702
691
  kday_after_type& fka) const
703
692
  {
704
693
  fka = m_date_gen_parser.get_kday_after_type(from, to, a_ios, *this);
@@ -721,52 +710,52 @@ namespace boost { namespace date_time {
721
710
  template <class date_type, class CharT, class OutItrT>
722
711
  std::locale::id date_input_facet<date_type, CharT, OutItrT>::id;
723
712
 
724
- template <class date_type, class CharT, class OutItrT>
725
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
713
+ template <class date_type, class CharT, class OutItrT>
714
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
726
715
  date_input_facet<date_type, CharT, OutItrT>::long_weekday_format[3] = {'%','A'};
727
716
 
728
- template <class date_type, class CharT, class OutItrT>
729
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
717
+ template <class date_type, class CharT, class OutItrT>
718
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
730
719
  date_input_facet<date_type, CharT, OutItrT>::short_weekday_format[3] = {'%','a'};
731
720
 
732
- template <class date_type, class CharT, class OutItrT>
733
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
721
+ template <class date_type, class CharT, class OutItrT>
722
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
734
723
  date_input_facet<date_type, CharT, OutItrT>::long_month_format[3] = {'%','B'};
735
724
 
736
- template <class date_type, class CharT, class OutItrT>
737
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
725
+ template <class date_type, class CharT, class OutItrT>
726
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
738
727
  date_input_facet<date_type, CharT, OutItrT>::short_month_format[3] = {'%','b'};
739
728
 
740
- template <class date_type, class CharT, class OutItrT>
741
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
729
+ template <class date_type, class CharT, class OutItrT>
730
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
742
731
  date_input_facet<date_type, CharT, OutItrT>::four_digit_year_format[3] = {'%','Y'};
743
732
 
744
- template <class date_type, class CharT, class OutItrT>
745
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
733
+ template <class date_type, class CharT, class OutItrT>
734
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
746
735
  date_input_facet<date_type, CharT, OutItrT>::two_digit_year_format[3] = {'%','y'};
747
736
 
748
- template <class date_type, class CharT, class OutItrT>
749
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
737
+ template <class date_type, class CharT, class OutItrT>
738
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
750
739
  date_input_facet<date_type, CharT, OutItrT>::default_period_separator[4] = { ' ', '/', ' '};
751
740
 
752
- template <class date_type, class CharT, class OutItrT>
753
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
754
- date_input_facet<date_type, CharT, OutItrT>::standard_format_specifier[3] =
741
+ template <class date_type, class CharT, class OutItrT>
742
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
743
+ date_input_facet<date_type, CharT, OutItrT>::standard_format_specifier[3] =
755
744
  {'%', 'x' };
756
745
 
757
- template <class date_type, class CharT, class OutItrT>
758
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
759
- date_input_facet<date_type, CharT, OutItrT>::iso_format_specifier[7] =
746
+ template <class date_type, class CharT, class OutItrT>
747
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
748
+ date_input_facet<date_type, CharT, OutItrT>::iso_format_specifier[7] =
760
749
  {'%', 'Y', '%', 'm', '%', 'd' };
761
750
 
762
- template <class date_type, class CharT, class OutItrT>
763
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
764
- date_input_facet<date_type, CharT, OutItrT>::iso_format_extended_specifier[9] =
751
+ template <class date_type, class CharT, class OutItrT>
752
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
753
+ date_input_facet<date_type, CharT, OutItrT>::iso_format_extended_specifier[9] =
765
754
  {'%', 'Y', '-', '%', 'm', '-', '%', 'd' };
766
755
 
767
- template <class date_type, class CharT, class OutItrT>
768
- const typename date_input_facet<date_type, CharT, OutItrT>::char_type
769
- date_input_facet<date_type, CharT, OutItrT>::default_date_format[9] =
756
+ template <class date_type, class CharT, class OutItrT>
757
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
758
+ date_input_facet<date_type, CharT, OutItrT>::default_date_format[9] =
770
759
  {'%','Y','-','%','b','-','%','d'};
771
760
 
772
761
  } } // namespaces