passenger 2.0.6 → 2.1.2

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 (497) hide show
  1. data/DEVELOPERS.TXT +10 -4
  2. data/LICENSE +1 -1
  3. data/NEWS +0 -0
  4. data/Rakefile +183 -117
  5. data/benchmark/dispatcher.rb +5 -9
  6. data/bin/passenger-install-apache2-module +52 -18
  7. data/bin/passenger-memory-stats +67 -13
  8. data/bin/passenger-spawn-server +8 -4
  9. data/bin/passenger-status +21 -46
  10. data/bin/passenger-stress-test +5 -5
  11. data/debian/postinst +1 -1
  12. data/doc/ApplicationPool algorithm.txt +180 -128
  13. data/doc/Architectural overview.html +1 -778
  14. data/doc/Security of user switching support.html +1 -643
  15. data/doc/Users guide Apache.html +3127 -0
  16. data/doc/Users guide Nginx.html +1458 -0
  17. data/doc/Users guide.html +1404 -467
  18. data/doc/Users guide.txt +843 -105
  19. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +751 -641
  20. data/doc/cxxapi/ApplicationPool_8h-source.html +168 -171
  21. data/doc/cxxapi/Application_8h-source.html +494 -394
  22. data/doc/cxxapi/Bucket_8h-source.html +21 -15
  23. data/doc/cxxapi/CachedFileStat_8h-source.html +191 -0
  24. data/doc/cxxapi/Configuration_8h-source.html +311 -149
  25. data/doc/cxxapi/DirectoryMapper_8h-source.html +309 -0
  26. data/doc/cxxapi/DummySpawnManager_8h-source.html +3 -4
  27. data/doc/cxxapi/Exceptions_8h-source.html +182 -165
  28. data/doc/cxxapi/FileChecker_8h-source.html +130 -0
  29. data/doc/cxxapi/Hooks_8h-source.html +2 -3
  30. data/doc/cxxapi/Logging_8h-source.html +92 -89
  31. data/doc/cxxapi/MessageChannel_8h-source.html +585 -477
  32. data/doc/cxxapi/PoolOptions_8h-source.html +305 -0
  33. data/doc/cxxapi/SpawnManager_8h-source.html +515 -540
  34. data/doc/cxxapi/StandardApplicationPool_8h-source.html +779 -679
  35. data/doc/cxxapi/SystemTime_8h-source.html +104 -0
  36. data/doc/cxxapi/Utils_8h-source.html +331 -227
  37. data/doc/cxxapi/annotated.html +6 -7
  38. data/doc/cxxapi/classClient-members.html +1 -2
  39. data/doc/cxxapi/classClient.html +1 -2
  40. data/doc/cxxapi/classHooks-members.html +5 -2
  41. data/doc/cxxapi/classHooks.html +112 -2
  42. data/doc/cxxapi/classPassenger_1_1Application-members.html +2 -3
  43. data/doc/cxxapi/classPassenger_1_1Application.html +8 -9
  44. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
  45. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +42 -81
  46. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +1 -2
  47. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +3 -4
  48. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  49. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +3 -2
  50. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +74 -3
  51. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +1 -2
  52. data/doc/cxxapi/classPassenger_1_1BusyException.html +2 -3
  53. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +1 -2
  54. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +2 -3
  55. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +38 -0
  56. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +256 -0
  57. data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +1 -2
  58. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +2 -3
  59. data/doc/cxxapi/{classPassenger_1_1Thread-members.html → classPassenger_1_1FileChecker-members.html} +4 -5
  60. data/doc/cxxapi/classPassenger_1_1FileChecker.html +121 -0
  61. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +1 -2
  62. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +2 -3
  63. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  64. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +2 -3
  65. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +2 -3
  66. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  67. data/doc/cxxapi/classPassenger_1_1IOException-members.html +1 -2
  68. data/doc/cxxapi/classPassenger_1_1IOException.html +2 -3
  69. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  70. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +5 -2
  71. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +155 -5
  72. data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption-members.html → classPassenger_1_1RuntimeException-members.html} +2 -3
  73. data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption.html → classPassenger_1_1RuntimeException.html} +10 -8
  74. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -2
  75. data/doc/cxxapi/classPassenger_1_1SpawnException.html +2 -3
  76. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +2 -3
  77. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +15 -56
  78. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +5 -4
  79. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +20 -81
  80. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  81. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +2 -3
  82. data/doc/cxxapi/classPassenger_1_1SystemException.html +9 -10
  83. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  84. data/doc/cxxapi/{classboost_1_1this__thread_1_1disable__syscall__interruption-members.html → classPassenger_1_1SystemTime-members.html} +5 -3
  85. data/doc/cxxapi/classPassenger_1_1SystemTime.html +86 -0
  86. data/doc/cxxapi/classPassenger_1_1TempFile-members.html +2 -3
  87. data/doc/cxxapi/classPassenger_1_1TempFile.html +17 -9
  88. data/doc/cxxapi/definitions_8h-source.html +1 -2
  89. data/doc/cxxapi/files.html +6 -3
  90. data/doc/cxxapi/functions.html +98 -35
  91. data/doc/cxxapi/functions_func.html +60 -32
  92. data/doc/cxxapi/functions_type.html +1 -2
  93. data/doc/cxxapi/functions_vars.html +27 -2
  94. data/doc/cxxapi/graph_legend.html +1 -2
  95. data/doc/cxxapi/graph_legend.png +0 -0
  96. data/doc/cxxapi/group__Configuration.html +3 -4
  97. data/doc/cxxapi/group__Configuration.png +0 -0
  98. data/doc/cxxapi/group__Core.html +3 -4
  99. data/doc/cxxapi/group__Core.png +0 -0
  100. data/doc/cxxapi/group__Exceptions.html +4 -2
  101. data/doc/cxxapi/group__Hooks.html +1 -6
  102. data/doc/cxxapi/group__Hooks.png +0 -0
  103. data/doc/cxxapi/group__Support.html +259 -36
  104. data/doc/cxxapi/hierarchy.html +6 -7
  105. data/doc/cxxapi/inherit__graph__0.map +1 -1
  106. data/doc/cxxapi/inherit__graph__0.md5 +1 -1
  107. data/doc/cxxapi/inherit__graph__0.png +0 -0
  108. data/doc/cxxapi/inherit__graph__1.map +1 -1
  109. data/doc/cxxapi/inherit__graph__1.md5 +1 -1
  110. data/doc/cxxapi/inherit__graph__1.png +0 -0
  111. data/doc/cxxapi/inherit__graph__10.map +1 -1
  112. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  113. data/doc/cxxapi/inherit__graph__10.png +0 -0
  114. data/doc/cxxapi/inherit__graph__11.map +1 -1
  115. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  116. data/doc/cxxapi/inherit__graph__11.png +0 -0
  117. data/doc/cxxapi/inherit__graph__12.map +2 -1
  118. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  119. data/doc/cxxapi/inherit__graph__12.png +0 -0
  120. data/doc/cxxapi/inherit__graph__13.map +1 -1
  121. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  122. data/doc/cxxapi/inherit__graph__13.png +0 -0
  123. data/doc/cxxapi/inherit__graph__14.map +1 -2
  124. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  125. data/doc/cxxapi/inherit__graph__14.png +0 -0
  126. data/doc/cxxapi/inherit__graph__15.map +1 -1
  127. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  128. data/doc/cxxapi/inherit__graph__15.png +0 -0
  129. data/doc/cxxapi/inherit__graph__16.map +1 -1
  130. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  131. data/doc/cxxapi/inherit__graph__16.png +0 -0
  132. data/doc/cxxapi/inherit__graph__17.png +0 -0
  133. data/doc/cxxapi/inherit__graph__18.png +0 -0
  134. data/doc/cxxapi/inherit__graph__19.png +0 -0
  135. data/doc/cxxapi/inherit__graph__2.map +1 -1
  136. data/doc/cxxapi/inherit__graph__2.md5 +1 -1
  137. data/doc/cxxapi/inherit__graph__2.png +0 -0
  138. data/doc/cxxapi/inherit__graph__20.map +1 -1
  139. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  140. data/doc/cxxapi/inherit__graph__20.png +0 -0
  141. data/doc/cxxapi/inherit__graph__21.map +1 -1
  142. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  143. data/doc/cxxapi/inherit__graph__21.png +0 -0
  144. data/doc/cxxapi/inherit__graph__3.map +1 -1
  145. data/doc/cxxapi/inherit__graph__3.md5 +1 -1
  146. data/doc/cxxapi/inherit__graph__3.png +0 -0
  147. data/doc/cxxapi/inherit__graph__4.map +1 -1
  148. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  149. data/doc/cxxapi/inherit__graph__4.png +0 -0
  150. data/doc/cxxapi/inherit__graph__5.map +2 -1
  151. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  152. data/doc/cxxapi/inherit__graph__5.png +0 -0
  153. data/doc/cxxapi/inherit__graph__6.map +1 -1
  154. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  155. data/doc/cxxapi/inherit__graph__6.png +0 -0
  156. data/doc/cxxapi/inherit__graph__7.map +1 -1
  157. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  158. data/doc/cxxapi/inherit__graph__7.png +0 -0
  159. data/doc/cxxapi/inherit__graph__8.map +1 -1
  160. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  161. data/doc/cxxapi/inherit__graph__8.png +0 -0
  162. data/doc/cxxapi/inherit__graph__9.map +1 -2
  163. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  164. data/doc/cxxapi/inherit__graph__9.png +0 -0
  165. data/doc/cxxapi/inherits.html +30 -31
  166. data/doc/cxxapi/main.html +1 -2
  167. data/doc/cxxapi/modules.html +1 -2
  168. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +1 -2
  169. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +2 -3
  170. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +1 -2
  171. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +2 -3
  172. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +49 -0
  173. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +404 -0
  174. data/doc/cxxapi/tree.html +18 -20
  175. data/doc/images/conservative_spawning.png +0 -0
  176. data/doc/images/conservative_spawning.svg +248 -0
  177. data/doc/images/smart-lv2.png +0 -0
  178. data/doc/images/smart-lv2.svg +320 -0
  179. data/doc/rdoc/classes/ConditionVariable.html +68 -34
  180. data/doc/rdoc/classes/Exception.html +16 -16
  181. data/doc/rdoc/classes/GC.html +9 -9
  182. data/doc/rdoc/classes/IO.html +36 -17
  183. data/doc/rdoc/classes/PhusionPassenger.html +183 -0
  184. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +511 -0
  185. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer.html +285 -242
  186. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerAlreadyStarted.html +3 -3
  187. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerError.html +3 -3
  188. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerNotStarted.html +3 -3
  189. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/UnknownMessage.html +3 -3
  190. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +598 -0
  191. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +140 -0
  192. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +247 -0
  193. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +138 -0
  194. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AppInitError.html +36 -19
  195. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/Application.html +81 -96
  196. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/ConsoleTextTemplate.html +18 -18
  197. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/FrameworkInitError.html +20 -18
  198. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/HTMLTemplate.html +18 -18
  199. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/InitializationError.html +9 -9
  200. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  201. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/MessageChannel.html +93 -92
  202. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/NativeSupport.html +55 -25
  203. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  204. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +185 -0
  205. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +182 -0
  206. data/doc/rdoc/classes/PhusionPassenger/Railz.html +95 -0
  207. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +424 -0
  208. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +98 -0
  209. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +200 -0
  210. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +444 -0
  211. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +98 -0
  212. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +154 -0
  213. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +408 -0
  214. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/UnknownError.html +13 -13
  215. data/doc/rdoc/classes/PhusionPassenger/Utils.html +687 -0
  216. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/VersionNotFound.html +8 -8
  217. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  218. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +188 -0
  219. data/doc/rdoc/classes/PlatformInfo.html +663 -159
  220. data/doc/rdoc/classes/RakeExtensions.html +4 -4
  221. data/doc/rdoc/classes/Signal.html +134 -0
  222. data/doc/rdoc/created.rid +1 -1
  223. data/doc/rdoc/files/DEVELOPERS_TXT.html +15 -10
  224. data/doc/rdoc/files/README.html +5 -7
  225. data/doc/rdoc/files/ext/{passenger → phusion_passenger}/native_support_c.html +2 -2
  226. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_request_handler_rb.html +7 -9
  227. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +120 -0
  228. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_server_rb.html +7 -10
  229. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +99 -0
  230. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +92 -0
  231. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/application_rb.html +6 -8
  232. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/console_text_template_rb.html +5 -7
  233. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/constants_rb.html +4 -5
  234. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/dependencies_rb.html +6 -8
  235. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +116 -0
  236. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/exceptions_rb.html +5 -7
  237. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/html_template_rb.html +5 -7
  238. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/message_channel_rb.html +5 -7
  239. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/platform_info_rb.html +6 -7
  240. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +123 -0
  241. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +117 -0
  242. data/doc/rdoc/files/lib/{passenger/utils_rb.html → phusion_passenger/railz/application_spawner_rb.html} +24 -17
  243. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +126 -0
  244. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +139 -0
  245. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +118 -0
  246. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/simple_benchmarking_rb.html +5 -7
  247. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/spawn_manager_rb.html +40 -24
  248. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +169 -0
  249. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +120 -0
  250. data/doc/rdoc/files/lib/rake/extensions_rb.html +3 -4
  251. data/doc/rdoc/fr_class_index.html +37 -19
  252. data/doc/rdoc/fr_file_index.html +25 -14
  253. data/doc/rdoc/fr_method_index.html +145 -74
  254. data/ext/apache2/Application.h +145 -44
  255. data/ext/apache2/ApplicationPool.h +27 -29
  256. data/ext/apache2/ApplicationPoolServer.h +183 -72
  257. data/ext/apache2/ApplicationPoolServerExecutable.cpp +249 -42
  258. data/ext/apache2/Bucket.cpp +61 -9
  259. data/ext/apache2/Bucket.h +15 -8
  260. data/ext/apache2/CachedFileStat.cpp +114 -0
  261. data/ext/apache2/CachedFileStat.h +169 -0
  262. data/ext/apache2/Configuration.cpp +213 -22
  263. data/ext/apache2/Configuration.h +176 -13
  264. data/ext/apache2/DirectoryMapper.h +287 -0
  265. data/ext/apache2/Exceptions.h +30 -12
  266. data/ext/apache2/FileChecker.h +108 -0
  267. data/ext/apache2/Hooks.cpp +709 -493
  268. data/ext/apache2/LICENSE-CNRI.TXT +15 -0
  269. data/ext/apache2/Logging.h +26 -22
  270. data/ext/apache2/MessageChannel.h +124 -15
  271. data/ext/apache2/PoolOptions.h +283 -0
  272. data/ext/apache2/SpawnManager.h +75 -99
  273. data/ext/apache2/StandardApplicationPool.h +296 -195
  274. data/ext/apache2/SystemTime.cpp +28 -0
  275. data/ext/apache2/SystemTime.h +82 -0
  276. data/ext/apache2/Utils.cpp +172 -18
  277. data/ext/apache2/Utils.h +124 -19
  278. data/ext/boost/cstdint.hpp +4 -2
  279. data/ext/boost/current_function.hpp +67 -0
  280. data/ext/boost/detail/sp_counted_base.hpp +4 -4
  281. data/ext/boost/thread/exceptions.hpp +2 -1
  282. data/ext/boost/thread/pthread/thread.hpp +11 -3
  283. data/ext/boost/thread/pthread/thread_data.hpp +2 -1
  284. data/ext/oxt/backtrace.cpp +172 -0
  285. data/ext/oxt/backtrace.hpp +135 -0
  286. data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
  287. data/ext/oxt/detail/backtrace_enabled.hpp +155 -0
  288. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +82 -0
  289. data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
  290. data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
  291. data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
  292. data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
  293. data/ext/oxt/macros.hpp +58 -0
  294. data/ext/oxt/spin_lock.hpp +55 -0
  295. data/ext/{apache2/System.cpp → oxt/system_calls.cpp} +87 -52
  296. data/ext/oxt/system_calls.hpp +234 -0
  297. data/ext/oxt/thread.cpp +32 -0
  298. data/ext/oxt/thread.hpp +223 -0
  299. data/ext/oxt/tracable_exception.cpp +87 -0
  300. data/ext/oxt/tracable_exception.hpp +35 -0
  301. data/{lib/passenger/constants.rb → ext/phusion_passenger/extconf.rb} +14 -9
  302. data/ext/{passenger → phusion_passenger}/native_support.c +33 -6
  303. data/lib/{passenger → phusion_passenger}/abstract_request_handler.rb +209 -93
  304. data/lib/{passenger → phusion_passenger}/abstract_server.rb +23 -8
  305. data/lib/phusion_passenger/abstract_server_collection.rb +301 -0
  306. data/lib/phusion_passenger/admin_tools.rb +25 -0
  307. data/lib/phusion_passenger/admin_tools/control_process.rb +107 -0
  308. data/lib/{passenger → phusion_passenger}/application.rb +13 -16
  309. data/lib/{passenger → phusion_passenger}/console_text_template.rb +2 -2
  310. data/{ext/passenger/extconf.rb → lib/phusion_passenger/constants.rb} +5 -5
  311. data/lib/{passenger → phusion_passenger}/dependencies.rb +38 -32
  312. data/lib/phusion_passenger/events.rb +45 -0
  313. data/lib/{passenger → phusion_passenger}/exceptions.rb +12 -5
  314. data/lib/{passenger → phusion_passenger}/html_template.rb +2 -2
  315. data/lib/{passenger → phusion_passenger}/message_channel.rb +3 -2
  316. data/lib/phusion_passenger/platform_info.rb +500 -0
  317. data/lib/{passenger → phusion_passenger}/rack/application_spawner.rb +29 -22
  318. data/lib/{passenger → phusion_passenger}/rack/request_handler.rb +14 -9
  319. data/lib/{passenger → phusion_passenger}/railz/application_spawner.rb +94 -74
  320. data/lib/{passenger → phusion_passenger}/railz/cgi_fixed.rb +2 -2
  321. data/lib/{passenger → phusion_passenger}/railz/framework_spawner.rb +86 -98
  322. data/lib/{passenger → phusion_passenger}/railz/request_handler.rb +6 -6
  323. data/lib/{passenger → phusion_passenger}/simple_benchmarking.rb +0 -0
  324. data/lib/{passenger → phusion_passenger}/spawn_manager.rb +136 -128
  325. data/lib/{passenger → phusion_passenger}/templates/apache2_config_snippets.txt.erb +0 -0
  326. data/lib/{passenger → phusion_passenger}/templates/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
  327. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
  328. data/lib/{passenger → phusion_passenger}/templates/app_init_error.html.erb +0 -0
  329. data/lib/{passenger → phusion_passenger}/templates/database_error.html.erb +0 -0
  330. data/lib/{passenger → phusion_passenger}/templates/deployment_example.txt.erb +1 -1
  331. data/lib/{passenger → phusion_passenger}/templates/error_layout.css +0 -0
  332. data/lib/{passenger → phusion_passenger}/templates/error_layout.html.erb +0 -0
  333. data/lib/{passenger → phusion_passenger}/templates/framework_init_error.html.erb +0 -0
  334. data/lib/{passenger → phusion_passenger}/templates/general_error.html.erb +0 -0
  335. data/lib/{passenger → phusion_passenger}/templates/invalid_app_root.html.erb +1 -1
  336. data/lib/{passenger → phusion_passenger}/templates/load_error.html.erb +0 -0
  337. data/lib/{passenger → phusion_passenger}/templates/no_write_permission_to_passenger_root.txt.erb +0 -0
  338. data/lib/{passenger → phusion_passenger}/templates/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
  339. data/lib/{passenger → phusion_passenger}/templates/run_installer_as_root.txt.erb +0 -0
  340. data/lib/{passenger → phusion_passenger}/templates/version_not_found.html.erb +0 -0
  341. data/lib/{passenger → phusion_passenger}/templates/welcome.txt.erb +0 -0
  342. data/lib/{passenger → phusion_passenger}/utils.rb +210 -44
  343. data/lib/{passenger → phusion_passenger}/wsgi/application_spawner.rb +18 -15
  344. data/lib/{passenger → phusion_passenger}/wsgi/request_handler.py +7 -1
  345. data/man/passenger-memory-stats.8 +1 -1
  346. data/misc/render_error_pages.rb +1 -1
  347. data/test/ApplicationPoolServerTest.cpp +0 -28
  348. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +4 -0
  349. data/test/ApplicationPoolTest.cpp +307 -69
  350. data/test/CachedFileStatTest.cpp +262 -0
  351. data/test/FileCheckerTest.cpp +79 -0
  352. data/test/MessageChannelTest.cpp +3 -3
  353. data/test/PoolOptionsTest.cpp +37 -0
  354. data/test/SpawnManagerTest.cpp +4 -4
  355. data/test/StandardApplicationPoolTest.cpp +4 -0
  356. data/test/SystemTimeTest.cpp +37 -0
  357. data/test/UtilsTest.cpp +137 -0
  358. data/test/integration_tests.rb +270 -23
  359. data/test/oxt/backtrace_test.cpp +128 -0
  360. data/test/oxt/oxt_test_main.cpp +25 -0
  361. data/test/oxt/syscall_interruption_test.cpp +50 -0
  362. data/test/ruby/abstract_request_handler_spec.rb +83 -0
  363. data/test/ruby/abstract_server_collection_spec.rb +246 -0
  364. data/test/ruby/application_spec.rb +3 -3
  365. data/test/ruby/message_channel_spec.rb +2 -2
  366. data/test/ruby/rack/application_spawner_spec.rb +3 -5
  367. data/test/ruby/rails/application_spawner_spec.rb +54 -15
  368. data/test/ruby/rails/framework_spawner_spec.rb +6 -8
  369. data/test/ruby/rails/minimal_spawner_spec.rb +29 -0
  370. data/test/ruby/rails/spawner_error_handling_spec.rb +1 -1
  371. data/test/ruby/rails/spawner_privilege_lowering_spec.rb +3 -3
  372. data/test/ruby/spawn_manager_spec.rb +23 -12
  373. data/test/ruby/utils_spec.rb +36 -2
  374. data/test/ruby/wsgi/application_spawner_spec.rb +47 -0
  375. data/test/stub/apache2/httpd.conf.erb +3 -5
  376. data/test/stub/message_channel.rb +2 -2
  377. data/test/stub/message_channel_2.rb +2 -2
  378. data/test/stub/message_channel_3.rb +3 -3
  379. data/test/stub/minimal-railsapp/README +0 -0
  380. data/test/stub/minimal-railsapp/config/application.rb +0 -0
  381. data/test/stub/minimal-railsapp/config/environment.rb +0 -0
  382. data/test/stub/minimal-railsapp/vendor/rails/actionmailer/lib/action_mailer.rb +0 -0
  383. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_controller.rb +0 -0
  384. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_pack.rb +0 -0
  385. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_view.rb +0 -0
  386. data/test/stub/minimal-railsapp/vendor/rails/activerecord/lib/active_record.rb +0 -0
  387. data/test/stub/minimal-railsapp/vendor/rails/activeresource/lib/active_resource.rb +0 -0
  388. data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support.rb +0 -0
  389. data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -0
  390. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/dispatcher.rb +0 -0
  391. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/initializer.rb +0 -0
  392. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/ruby_version_check.rb +0 -0
  393. data/test/stub/rails_apps/foobar/app/controllers/foo_controller.rb +8 -0
  394. data/test/stub/rails_apps/foobar/config/environments/development.rb +1 -2
  395. data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +21 -1
  396. data/test/stub/rails_apps/mycook/sites/some.site/public/uploads.html +26 -0
  397. data/test/stub/rails_apps/mycook/sites/some.site/public/welcome/cached.html +26 -0
  398. data/test/stub/railsapp/app/controllers/application.rb +0 -0
  399. data/test/stub/railsapp/app/controllers/bar_controller_1.rb +0 -0
  400. data/test/stub/railsapp/app/controllers/bar_controller_2.rb +1 -1
  401. data/test/stub/railsapp/app/controllers/foo_controller.rb +4 -0
  402. data/test/stub/railsapp/app/helpers/application_helper.rb +0 -0
  403. data/test/stub/railsapp/config/boot.rb +0 -0
  404. data/test/stub/railsapp/config/database.yml +0 -0
  405. data/test/stub/railsapp/config/environment.rb +0 -0
  406. data/test/stub/railsapp/config/environments/development.rb +0 -0
  407. data/test/stub/railsapp/config/environments/production.rb +0 -0
  408. data/test/stub/railsapp/config/initializers/inflections.rb +0 -0
  409. data/test/stub/railsapp/config/initializers/mime_types.rb +0 -0
  410. data/test/stub/railsapp/config/routes.rb +0 -0
  411. data/test/stub/railsapp/public/useless.txt +0 -0
  412. data/test/stub/spawn_server.rb +3 -4
  413. data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
  414. data/test/support/apache2_controller.rb +57 -7
  415. data/test/support/tut.h +15 -0
  416. data/vendor/README +12 -0
  417. data/vendor/README_FOR_PACKAGERS +1 -0
  418. data/vendor/rack-0.9.1/AUTHORS +8 -0
  419. data/vendor/rack-0.9.1/COPYING +18 -0
  420. data/vendor/rack-0.9.1/ChangeLog +1423 -0
  421. data/vendor/rack-0.9.1/KNOWN-ISSUES +18 -0
  422. data/vendor/rack-0.9.1/README +306 -0
  423. data/vendor/rack-0.9.1/Rakefile +188 -0
  424. data/vendor/rack-0.9.1/SPEC +129 -0
  425. data/vendor/rack-0.9.1/lib/rack.rb +86 -0
  426. data/vendor/rack-0.9.1/lib/rack/adapter/camping.rb +22 -0
  427. data/vendor/rack-0.9.1/lib/rack/auth/abstract/handler.rb +28 -0
  428. data/vendor/rack-0.9.1/lib/rack/auth/abstract/request.rb +37 -0
  429. data/vendor/rack-0.9.1/lib/rack/auth/basic.rb +58 -0
  430. data/vendor/rack-0.9.1/lib/rack/auth/digest/md5.rb +124 -0
  431. data/vendor/rack-0.9.1/lib/rack/auth/digest/nonce.rb +51 -0
  432. data/vendor/rack-0.9.1/lib/rack/auth/digest/params.rb +55 -0
  433. data/vendor/rack-0.9.1/lib/rack/auth/digest/request.rb +40 -0
  434. data/vendor/rack-0.9.1/lib/rack/auth/openid.rb +438 -0
  435. data/vendor/rack-0.9.1/lib/rack/builder.rb +67 -0
  436. data/vendor/rack-0.9.1/lib/rack/cascade.rb +36 -0
  437. data/vendor/rack-0.9.1/lib/rack/commonlogger.rb +61 -0
  438. data/vendor/rack-0.9.1/lib/rack/conditionalget.rb +43 -0
  439. data/vendor/rack-0.9.1/lib/rack/content_length.rb +25 -0
  440. data/vendor/rack-0.9.1/lib/rack/deflater.rb +87 -0
  441. data/vendor/rack-0.9.1/lib/rack/directory.rb +150 -0
  442. data/vendor/rack-0.9.1/lib/rack/file.rb +85 -0
  443. data/vendor/rack-0.9.1/lib/rack/handler.rb +48 -0
  444. data/vendor/rack-0.9.1/lib/rack/handler/cgi.rb +57 -0
  445. data/vendor/rack-0.9.1/lib/rack/handler/evented_mongrel.rb +8 -0
  446. data/vendor/rack-0.9.1/lib/rack/handler/fastcgi.rb +86 -0
  447. data/vendor/rack-0.9.1/lib/rack/handler/lsws.rb +52 -0
  448. data/vendor/rack-0.9.1/lib/rack/handler/mongrel.rb +82 -0
  449. data/vendor/rack-0.9.1/lib/rack/handler/scgi.rb +57 -0
  450. data/vendor/rack-0.9.1/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  451. data/vendor/rack-0.9.1/lib/rack/handler/thin.rb +15 -0
  452. data/vendor/rack-0.9.1/lib/rack/handler/webrick.rb +61 -0
  453. data/vendor/rack-0.9.1/lib/rack/head.rb +19 -0
  454. data/vendor/rack-0.9.1/lib/rack/lint.rb +465 -0
  455. data/vendor/rack-0.9.1/lib/rack/lobster.rb +65 -0
  456. data/vendor/rack-0.9.1/lib/rack/methodoverride.rb +27 -0
  457. data/vendor/rack-0.9.1/lib/rack/mime.rb +204 -0
  458. data/vendor/rack-0.9.1/lib/rack/mock.rb +160 -0
  459. data/vendor/rack-0.9.1/lib/rack/recursive.rb +57 -0
  460. data/vendor/rack-0.9.1/lib/rack/reloader.rb +64 -0
  461. data/vendor/rack-0.9.1/lib/rack/request.rb +218 -0
  462. data/vendor/rack-0.9.1/lib/rack/response.rb +171 -0
  463. data/vendor/rack-0.9.1/lib/rack/session/abstract/id.rb +153 -0
  464. data/vendor/rack-0.9.1/lib/rack/session/cookie.rb +89 -0
  465. data/vendor/rack-0.9.1/lib/rack/session/memcache.rb +97 -0
  466. data/vendor/rack-0.9.1/lib/rack/session/pool.rb +73 -0
  467. data/vendor/rack-0.9.1/lib/rack/showexceptions.rb +348 -0
  468. data/vendor/rack-0.9.1/lib/rack/showstatus.rb +106 -0
  469. data/vendor/rack-0.9.1/lib/rack/static.rb +38 -0
  470. data/vendor/rack-0.9.1/lib/rack/urlmap.rb +48 -0
  471. data/vendor/rack-0.9.1/lib/rack/utils.rb +347 -0
  472. metadata +1197 -1055
  473. data/doc/cxxapi/System_8h-source.html +0 -251
  474. data/doc/cxxapi/classDirectoryMapper-members.html +0 -38
  475. data/doc/cxxapi/classDirectoryMapper.html +0 -203
  476. data/doc/cxxapi/classPassenger_1_1Thread.html +0 -100
  477. data/doc/cxxapi/classboost_1_1this__thread_1_1disable__syscall__interruption.html +0 -46
  478. data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption-members.html +0 -33
  479. data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption.html +0 -44
  480. data/doc/cxxapi/namespacePassenger.html +0 -208
  481. data/doc/cxxapi/namespacePassenger_1_1InterruptableCalls.html +0 -43
  482. data/doc/cxxapi/namespacemembers.html +0 -70
  483. data/doc/cxxapi/namespacemembers_func.html +0 -66
  484. data/doc/cxxapi/namespacemembers_type.html +0 -46
  485. data/doc/cxxapi/namespaces.html +0 -35
  486. data/doc/rdoc/classes/Passenger.html +0 -136
  487. data/doc/rdoc/classes/Passenger/AbstractRequestHandler.html +0 -402
  488. data/doc/rdoc/classes/Passenger/SpawnManager.html +0 -379
  489. data/doc/rdoc/classes/Passenger/Utils.html +0 -578
  490. data/ext/apache2/System.h +0 -228
  491. data/lib/passenger/platform_info.rb +0 -302
  492. data/lib/passenger/templates/app_exited_during_initialization.html.erb +0 -19
  493. data/test/stub/apache2/httpd.conf +0 -75
  494. data/test/stub/rails_apps/foobar/config/environments/test.rb +0 -22
  495. data/test/stub/rails_apps/mycook/config/environments/test.rb +0 -22
  496. data/test/stub/railsapp/config/environments/test.rb +0 -22
  497. data/test/stub/railsapp2/config/environments/test.rb +0 -22
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -26,7 +25,7 @@
26
25
  <div class="contents">
27
26
  <h1>Passenger::DummySpawnManager Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1DummySpawnManager.html">Passenger::DummySpawnManager</a>, including all inherited members.<p><table>
28
27
  </table></div>
29
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by&nbsp;
30
29
  <a href="http://www.doxygen.org/index.html">
31
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
32
31
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1DummySpawnManager.html">DummySpawnManager</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1DummySpawnManager.html">DummySpawnManager</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -44,7 +43,7 @@ Of course, don't forget to compile benchmark/DummyRequestHandler! <table border=
44
43
  <hr>The documentation for this class was generated from the following file:<ul>
45
44
  <li><a class="el" href="DummySpawnManager_8h-source.html">DummySpawnManager.h</a></ul>
46
45
  </div>
47
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
46
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:34 2009 for Passenger by&nbsp;
48
47
  <a href="http://www.doxygen.org/index.html">
49
48
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
50
49
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -24,11 +23,11 @@
24
23
  </div>
25
24
  </div>
26
25
  <div class="contents">
27
- <h1>Passenger::Thread Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1Thread.html">Passenger::Thread</a>, including all inherited members.<p><table>
28
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Thread.html#2212f1aee683798318ec2bcd57550407">interrupt</a>()</td><td><a class="el" href="classPassenger_1_1Thread.html">Passenger::Thread</a></td><td><code> [inline]</code></td></tr>
29
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1Thread.html#5bc65d2722d1425e574b3b8a97e60388">interruptAndJoin</a>()</td><td><a class="el" href="classPassenger_1_1Thread.html">Passenger::Thread</a></td><td><code> [inline]</code></td></tr>
26
+ <h1>Passenger::FileChecker Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1FileChecker.html">Passenger::FileChecker</a>, including all inherited members.<p><table>
27
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1FileChecker.html#832ff27b4b3e5db84a9d986285e7c270">changed</a>(unsigned int throttleRate=0)</td><td><a class="el" href="classPassenger_1_1FileChecker.html">Passenger::FileChecker</a></td><td><code> [inline]</code></td></tr>
28
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1FileChecker.html#64556bc7e06a32363dbd87451d459b71">FileChecker</a>(const string &amp;filename)</td><td><a class="el" href="classPassenger_1_1FileChecker.html">Passenger::FileChecker</a></td><td><code> [inline]</code></td></tr>
30
29
  </table></div>
31
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
30
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
32
31
  <a href="http://www.doxygen.org/index.html">
33
32
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
34
33
  </body>
@@ -0,0 +1,121 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Passenger::FileChecker Class Reference</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ <link href="tabs.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.5 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
14
+ <li><a href="files.html"><span>Files</span></a></li>
15
+ </ul>
16
+ </div>
17
+ <div class="tabs">
18
+ <ul>
19
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
20
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
21
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
+ </ul>
23
+ </div>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1FileChecker.html">FileChecker</a>
25
+ </div>
26
+ </div>
27
+ <div class="contents">
28
+ <h1>Passenger::FileChecker Class Reference</h1><!-- doxytag: class="Passenger::FileChecker" --><code>#include &lt;<a class="el" href="FileChecker_8h-source.html">FileChecker.h</a>&gt;</code>
29
+ <p>
30
+
31
+ <p>
32
+ <a href="classPassenger_1_1FileChecker-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
33
+ Utility class for checking for file changes.
34
+ <p>
35
+ Example:<p>
36
+ <div class="fragment"><pre class="fragment"> <a class="code" href="classPassenger_1_1FileChecker.html#64556bc7e06a32363dbd87451d459b71" title="Create a FileChecker object.">FileChecker</a> checker(<span class="stringliteral">"foo.txt"</span>);
37
+ checker.changed(); <span class="comment">// false</span>
38
+ writeToFile(<span class="stringliteral">"foo.txt"</span>);
39
+ checker.changed(); <span class="comment">// true</span>
40
+ checker.changed(); <span class="comment">// false</span>
41
+ </pre></div><p>
42
+ <a class="el" href="classPassenger_1_1FileChecker.html" title="Utility class for checking for file changes.">FileChecker</a> uses stat() to retrieve file information. <a class="el" href="classPassenger_1_1FileChecker.html" title="Utility class for checking for file changes.">FileChecker</a> also supports throttling in order to limit the number of stat() calls. This can improve performance on systems where disk I/O is a problem. <table border="0" cellpadding="0" cellspacing="0">
43
+ <tr><td></td></tr>
44
+ <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
45
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1FileChecker.html#64556bc7e06a32363dbd87451d459b71">FileChecker</a> (const string &amp;filename)</td></tr>
46
+
47
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a <a class="el" href="classPassenger_1_1FileChecker.html" title="Utility class for checking for file changes.">FileChecker</a> object. <a href="#64556bc7e06a32363dbd87451d459b71"></a><br></td></tr>
48
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1FileChecker.html#832ff27b4b3e5db84a9d986285e7c270">changed</a> (unsigned int throttleRate=0)</td></tr>
49
+
50
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks whether the file's timestamp has changed or has been created or removed since the last call to <a class="el" href="classPassenger_1_1FileChecker.html#832ff27b4b3e5db84a9d986285e7c270" title="Checks whether the file&#39;s timestamp has changed or has been created or removed...">changed()</a>. <a href="#832ff27b4b3e5db84a9d986285e7c270"></a><br></td></tr>
51
+ </table>
52
+ <hr><h2>Constructor &amp; Destructor Documentation</h2>
53
+ <a class="anchor" name="64556bc7e06a32363dbd87451d459b71"></a><!-- doxytag: member="Passenger::FileChecker::FileChecker" ref="64556bc7e06a32363dbd87451d459b71" args="(const string &amp;filename)" -->
54
+ <div class="memitem">
55
+ <div class="memproto">
56
+ <table class="memname">
57
+ <tr>
58
+ <td class="memname">Passenger::FileChecker::FileChecker </td>
59
+ <td>(</td>
60
+ <td class="paramtype">const string &amp;&nbsp;</td>
61
+ <td class="paramname"> <em>filename</em> </td>
62
+ <td>&nbsp;)&nbsp;</td>
63
+ <td width="100%"><code> [inline]</code></td>
64
+ </tr>
65
+ </table>
66
+ </div>
67
+ <div class="memdoc">
68
+
69
+ <p>
70
+ Create a <a class="el" href="classPassenger_1_1FileChecker.html" title="Utility class for checking for file changes.">FileChecker</a> object.
71
+ <p>
72
+ <dl compact><dt><b>Parameters:</b></dt><dd>
73
+ <table border="0" cellspacing="2" cellpadding="0">
74
+ <tr><td valign="top"></td><td valign="top"><em>filename</em>&nbsp;</td><td>The filename to check for. </td></tr>
75
+ </table>
76
+ </dl>
77
+
78
+ </div>
79
+ </div><p>
80
+ <hr><h2>Member Function Documentation</h2>
81
+ <a class="anchor" name="832ff27b4b3e5db84a9d986285e7c270"></a><!-- doxytag: member="Passenger::FileChecker::changed" ref="832ff27b4b3e5db84a9d986285e7c270" args="(unsigned int throttleRate=0)" -->
82
+ <div class="memitem">
83
+ <div class="memproto">
84
+ <table class="memname">
85
+ <tr>
86
+ <td class="memname">bool Passenger::FileChecker::changed </td>
87
+ <td>(</td>
88
+ <td class="paramtype">unsigned int&nbsp;</td>
89
+ <td class="paramname"> <em>throttleRate</em> = <code>0</code> </td>
90
+ <td>&nbsp;)&nbsp;</td>
91
+ <td width="100%"><code> [inline]</code></td>
92
+ </tr>
93
+ </table>
94
+ </div>
95
+ <div class="memdoc">
96
+
97
+ <p>
98
+ Checks whether the file's timestamp has changed or has been created or removed since the last call to <a class="el" href="classPassenger_1_1FileChecker.html#832ff27b4b3e5db84a9d986285e7c270" title="Checks whether the file&#39;s timestamp has changed or has been created or removed...">changed()</a>.
99
+ <p>
100
+ <dl compact><dt><b>Parameters:</b></dt><dd>
101
+ <table border="0" cellspacing="2" cellpadding="0">
102
+ <tr><td valign="top"></td><td valign="top"><em>throttleRate</em>&nbsp;</td><td>When set to a non-zero value, throttling will be enabled. stat() will be called at most once per throttleRate seconds. </td></tr>
103
+ </table>
104
+ </dl>
105
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
106
+ <table border="0" cellspacing="2" cellpadding="0">
107
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Something went wrong. </td></tr>
108
+ <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
109
+ </table>
110
+ </dl>
111
+
112
+ </div>
113
+ </div><p>
114
+ <hr>The documentation for this class was generated from the following file:<ul>
115
+ <li><a class="el" href="FileChecker_8h-source.html">FileChecker.h</a></ul>
116
+ </div>
117
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
118
+ <a href="http://www.doxygen.org/index.html">
119
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
120
+ </body>
121
+ </html>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -26,7 +25,7 @@
26
25
  <div class="contents">
27
26
  <h1>Passenger::FileNotFoundException Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1FileNotFoundException.html">Passenger::FileNotFoundException</a>, including all inherited members.<p><table>
28
27
  </table></div>
29
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
30
29
  <a href="http://www.doxygen.org/index.html">
31
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
32
31
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1FileNotFoundException.html">FileNotFoundException</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1FileNotFoundException.html">FileNotFoundException</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -44,7 +43,7 @@ Thrown when a certain file cannot be found. <table border="0" cellpadding="0" ce
44
43
  <hr>The documentation for this class was generated from the following file:<ul>
45
44
  <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
46
45
  </div>
47
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
46
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
48
47
  <a href="http://www.doxygen.org/index.html">
49
48
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
50
49
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -29,9 +28,9 @@
29
28
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1SystemException.html#ee7a6672bf79b72a4c3ee70c57d6a47c">code</a>() const </td><td><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td><code> [inline]</code></td></tr>
30
29
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1FileSystemException.html#7eef8fefd84a07efa9fe3a76129a4386">filename</a>() const </td><td><a class="el" href="classPassenger_1_1FileSystemException.html">Passenger::FileSystemException</a></td><td><code> [inline]</code></td></tr>
31
30
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1SystemException.html#0ef41d755fea2c9b1db2252e7c418dc8">sys</a>() const </td><td><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td><code> [inline]</code></td></tr>
32
- <tr class="memlist"><td><a class="el" href="classPassenger_1_1SystemException.html#4ee42f81106408c91726a62287e8471c">SystemException</a>(const string &amp;message, int errorCode)</td><td><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td><code> [inline]</code></td></tr>
31
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1SystemException.html#1f0f33c63934ee40c5cd9c338c8aa04b">SystemException</a>(const string &amp;briefMessage, int errorCode)</td><td><a class="el" href="classPassenger_1_1SystemException.html">Passenger::SystemException</a></td><td><code> [inline]</code></td></tr>
33
32
  </table></div>
34
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
33
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
35
34
  <a href="http://www.doxygen.org/index.html">
36
35
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
37
36
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1FileSystemException.html">FileSystemException</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1FileSystemException.html">FileSystemException</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -54,7 +53,7 @@ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cl
54
53
  <hr>The documentation for this class was generated from the following file:<ul>
55
54
  <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
56
55
  </div>
57
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
56
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
58
57
  <a href="http://www.doxygen.org/index.html">
59
58
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
60
59
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -26,7 +25,7 @@
26
25
  <div class="contents">
27
26
  <h1>Passenger::IOException Member List</h1>This is the complete list of members for <a class="el" href="classPassenger_1_1IOException.html">Passenger::IOException</a>, including all inherited members.<p><table>
28
27
  </table></div>
29
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
30
29
  <a href="http://www.doxygen.org/index.html">
31
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
32
31
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1IOException.html">IOException</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1IOException.html">IOException</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -47,7 +46,7 @@ Represents an error that occured during an I/O operation. <table border="0" cell
47
46
  <hr>The documentation for this class was generated from the following file:<ul>
48
47
  <li><a class="el" href="Exceptions_8h-source.html">Exceptions.h</a></ul>
49
48
  </div>
50
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
49
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
51
50
  <a href="http://www.doxygen.org/index.html">
52
51
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
53
52
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -32,7 +31,11 @@
32
31
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#1561b7e4a0f4d39ea431f456e5655488">readFileDescriptor</a>()</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
33
32
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#cd1d1bd1cc787784c8b54f5471fff479">readRaw</a>(void *buf, unsigned int size)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
34
33
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#4ce6a0e751b5e3563bee583c231569bc">readScalar</a>(string &amp;output)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
34
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#eb69bffbbb148c9bc8662e20b416c4e2">setReadTimeout</a>(unsigned int msec)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
35
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#77c5d7c47f387cf43992ebeb14e3c6c7">setWriteTimeout</a>(unsigned int msec)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
36
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d">write</a>(const StringArrayType &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
35
37
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#9ad7a978cf8409e01ab2f0a2b6be5a0a">write</a>(const list&lt; string &gt; &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
38
+ <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#6a9bc5d72715cb7ba0e437c8851ef487">write</a>(const vector&lt; string &gt; &amp;args)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
36
39
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#12cce3364023eacbe4fe09006cf3d38d">write</a>(const char *name,...)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
37
40
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#73e3f3cda384c085a2af0e820ccd3e98">writeFileDescriptor</a>(int fileDescriptor)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
38
41
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#069314e4c7e1fe8c8ab36e16d2cc5fef">writeRaw</a>(const char *data, unsigned int size)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
@@ -40,7 +43,7 @@
40
43
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#44e01a783c48abadeea0d915b9893bfb">writeScalar</a>(const string &amp;str)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
41
44
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1MessageChannel.html#80977020ef895f3ea790c5d28a333dda">writeScalar</a>(const char *data, unsigned int size)</td><td><a class="el" href="classPassenger_1_1MessageChannel.html">Passenger::MessageChannel</a></td><td><code> [inline]</code></td></tr>
42
45
  </table></div>
43
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
46
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
44
47
  <a href="http://www.doxygen.org/index.html">
45
48
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
46
49
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="classPassenger_1_1MessageChannel.html">MessageChannel</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="classPassenger_1_1MessageChannel.html">MessageChannel</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -74,9 +73,16 @@ Be careful with mixing the sending/receiving of array messages, scalar messages
74
73
  <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#06309e208fc5e10642a2e9bbe0f351eb">close</a> ()</td></tr>
75
74
 
76
75
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the underlying file descriptor. <a href="#06309e208fc5e10642a2e9bbe0f351eb"></a><br></td></tr>
76
+ <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename StringArrayType, typename StringArrayConstIteratorType&gt; </td></tr>
77
+ <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d">write</a> (const StringArrayType &amp;args)</td></tr>
78
+
79
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#150f68bc47e060dcc6ca35bee047914d"></a><br></td></tr>
77
80
  <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#9ad7a978cf8409e01ab2f0a2b6be5a0a">write</a> (const list&lt; string &gt; &amp;args)</td></tr>
78
81
 
79
82
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#9ad7a978cf8409e01ab2f0a2b6be5a0a"></a><br></td></tr>
83
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#6a9bc5d72715cb7ba0e437c8851ef487">write</a> (const vector&lt; string &gt; &amp;args)</td></tr>
84
+
85
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given elements, over the underlying file descriptor. <a href="#6a9bc5d72715cb7ba0e437c8851ef487"></a><br></td></tr>
80
86
  <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#12cce3364023eacbe4fe09006cf3d38d">write</a> (const char *name,...)</td></tr>
81
87
 
82
88
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send an array message, which consists of the given strings, over the underlying file descriptor. <a href="#12cce3364023eacbe4fe09006cf3d38d"></a><br></td></tr>
@@ -107,6 +113,12 @@ Be careful with mixing the sending/receiving of array messages, scalar messages
107
113
  <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#1561b7e4a0f4d39ea431f456e5655488">readFileDescriptor</a> ()</td></tr>
108
114
 
109
115
  <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Receive a file descriptor, which had been passed over the underlying file descriptor. <a href="#1561b7e4a0f4d39ea431f456e5655488"></a><br></td></tr>
116
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#eb69bffbbb148c9bc8662e20b416c4e2">setReadTimeout</a> (unsigned int msec)</td></tr>
117
+
118
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for reading data from this channel. <a href="#eb69bffbbb148c9bc8662e20b416c4e2"></a><br></td></tr>
119
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPassenger_1_1MessageChannel.html#77c5d7c47f387cf43992ebeb14e3c6c7">setWriteTimeout</a> (unsigned int msec)</td></tr>
120
+
121
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the timeout value for writing data to this channel. <a href="#77c5d7c47f387cf43992ebeb14e3c6c7"></a><br></td></tr>
110
122
  </table>
111
123
  <hr><h2>Constructor &amp; Destructor Documentation</h2>
112
124
  <a class="anchor" name="73e7c9a8e421d29558838176aff02ca4"></a><!-- doxytag: member="Passenger::MessageChannel::MessageChannel" ref="73e7c9a8e421d29558838176aff02ca4" args="()" -->
@@ -157,6 +169,43 @@ If this method is called multiple times, the file descriptor will only be closed
157
169
  </table>
158
170
  </dl>
159
171
 
172
+ </div>
173
+ </div><p>
174
+ <a class="anchor" name="150f68bc47e060dcc6ca35bee047914d"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="150f68bc47e060dcc6ca35bee047914d" args="(const StringArrayType &amp;args)" -->
175
+ <div class="memitem">
176
+ <div class="memproto">
177
+ <div class="memtemplate">
178
+ template&lt;typename StringArrayType, typename StringArrayConstIteratorType&gt; </div>
179
+ <table class="memname">
180
+ <tr>
181
+ <td class="memname">void Passenger::MessageChannel::write </td>
182
+ <td>(</td>
183
+ <td class="paramtype">const StringArrayType &amp;&nbsp;</td>
184
+ <td class="paramname"> <em>args</em> </td>
185
+ <td>&nbsp;)&nbsp;</td>
186
+ <td width="100%"><code> [inline]</code></td>
187
+ </tr>
188
+ </table>
189
+ </div>
190
+ <div class="memdoc">
191
+
192
+ <p>
193
+ Send an array message, which consists of the given elements, over the underlying file descriptor.
194
+ <p>
195
+ <dl compact><dt><b>Parameters:</b></dt><dd>
196
+ <table border="0" cellspacing="2" cellpadding="0">
197
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>An object which contains the message elements. This object must support STL-style iteration, and each iterator must have an std::string as value. Use the StringArrayType and StringArrayConstIteratorType template parameters to specify the exact type names. </td></tr>
198
+ </table>
199
+ </dl>
200
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
201
+ <table border="0" cellspacing="2" cellpadding="0">
202
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
203
+ <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
204
+ </table>
205
+ </dl>
206
+ <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
207
+ <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
208
+
160
209
  </div>
161
210
  </div><p>
162
211
  <a class="anchor" name="9ad7a978cf8409e01ab2f0a2b6be5a0a"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="9ad7a978cf8409e01ab2f0a2b6be5a0a" args="(const list&lt; string &gt; &amp;args)" -->
@@ -190,7 +239,42 @@ Send an array message, which consists of the given elements, over the underlying
190
239
  </table>
191
240
  </dl>
192
241
  <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
193
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#9ad7a978cf8409e01ab2f0a2b6be5a0a" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
242
+ <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
243
+
244
+ </div>
245
+ </div><p>
246
+ <a class="anchor" name="6a9bc5d72715cb7ba0e437c8851ef487"></a><!-- doxytag: member="Passenger::MessageChannel::write" ref="6a9bc5d72715cb7ba0e437c8851ef487" args="(const vector&lt; string &gt; &amp;args)" -->
247
+ <div class="memitem">
248
+ <div class="memproto">
249
+ <table class="memname">
250
+ <tr>
251
+ <td class="memname">void Passenger::MessageChannel::write </td>
252
+ <td>(</td>
253
+ <td class="paramtype">const vector&lt; string &gt; &amp;&nbsp;</td>
254
+ <td class="paramname"> <em>args</em> </td>
255
+ <td>&nbsp;)&nbsp;</td>
256
+ <td width="100%"><code> [inline]</code></td>
257
+ </tr>
258
+ </table>
259
+ </div>
260
+ <div class="memdoc">
261
+
262
+ <p>
263
+ Send an array message, which consists of the given elements, over the underlying file descriptor.
264
+ <p>
265
+ <dl compact><dt><b>Parameters:</b></dt><dd>
266
+ <table border="0" cellspacing="2" cellpadding="0">
267
+ <tr><td valign="top"></td><td valign="top"><em>args</em>&nbsp;</td><td>The message elements. </td></tr>
268
+ </table>
269
+ </dl>
270
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
271
+ <table border="0" cellspacing="2" cellpadding="0">
272
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>An error occured while writing the data to the file descriptor. </td></tr>
273
+ <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
274
+ </table>
275
+ </dl>
276
+ <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>None of the message elements may contain a NUL character (<code>'\0'</code>). </dd></dl>
277
+ <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#129659b60d1a663337873d2af944431e" title="Read an array message from the underlying file descriptor.">read()</a>, <a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write</a>(const char *, ...) </dd></dl>
194
278
 
195
279
  </div>
196
280
  </div><p>
@@ -466,7 +550,7 @@ Read an array message from the underlying file descriptor.
466
550
  <tr><td valign="top"></td><td valign="top"><em>boost::thread_interrupted</em>&nbsp;</td><td></td></tr>
467
551
  </table>
468
552
  </dl>
469
- <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#9ad7a978cf8409e01ab2f0a2b6be5a0a" title="Send an array message, which consists of the given elements, over the underlying...">write()</a> </dd></dl>
553
+ <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classPassenger_1_1MessageChannel.html#150f68bc47e060dcc6ca35bee047914d" title="Send an array message, which consists of the given elements, over the underlying...">write()</a> </dd></dl>
470
554
 
471
555
  </div>
472
556
  </div><p>
@@ -579,12 +663,78 @@ Receive a file descriptor, which had been passed over the underlying file descri
579
663
  </table>
580
664
  </dl>
581
665
 
666
+ </div>
667
+ </div><p>
668
+ <a class="anchor" name="eb69bffbbb148c9bc8662e20b416c4e2"></a><!-- doxytag: member="Passenger::MessageChannel::setReadTimeout" ref="eb69bffbbb148c9bc8662e20b416c4e2" args="(unsigned int msec)" -->
669
+ <div class="memitem">
670
+ <div class="memproto">
671
+ <table class="memname">
672
+ <tr>
673
+ <td class="memname">void Passenger::MessageChannel::setReadTimeout </td>
674
+ <td>(</td>
675
+ <td class="paramtype">unsigned int&nbsp;</td>
676
+ <td class="paramname"> <em>msec</em> </td>
677
+ <td>&nbsp;)&nbsp;</td>
678
+ <td width="100%"><code> [inline]</code></td>
679
+ </tr>
680
+ </table>
681
+ </div>
682
+ <div class="memdoc">
683
+
684
+ <p>
685
+ Set the timeout value for reading data from this channel.
686
+ <p>
687
+ If no data can be read within the timeout period, then a <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a> will be thrown by one of the read methods, with error code EAGAIN or EWOULDBLOCK.<p>
688
+ <dl compact><dt><b>Parameters:</b></dt><dd>
689
+ <table border="0" cellspacing="2" cellpadding="0">
690
+ <tr><td valign="top"></td><td valign="top"><em>msec</em>&nbsp;</td><td>The timeout, in milliseconds. If 0 is given, there will be no timeout. </td></tr>
691
+ </table>
692
+ </dl>
693
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
694
+ <table border="0" cellspacing="2" cellpadding="0">
695
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Cannot set the timeout. </td></tr>
696
+ </table>
697
+ </dl>
698
+
699
+ </div>
700
+ </div><p>
701
+ <a class="anchor" name="77c5d7c47f387cf43992ebeb14e3c6c7"></a><!-- doxytag: member="Passenger::MessageChannel::setWriteTimeout" ref="77c5d7c47f387cf43992ebeb14e3c6c7" args="(unsigned int msec)" -->
702
+ <div class="memitem">
703
+ <div class="memproto">
704
+ <table class="memname">
705
+ <tr>
706
+ <td class="memname">void Passenger::MessageChannel::setWriteTimeout </td>
707
+ <td>(</td>
708
+ <td class="paramtype">unsigned int&nbsp;</td>
709
+ <td class="paramname"> <em>msec</em> </td>
710
+ <td>&nbsp;)&nbsp;</td>
711
+ <td width="100%"><code> [inline]</code></td>
712
+ </tr>
713
+ </table>
714
+ </div>
715
+ <div class="memdoc">
716
+
717
+ <p>
718
+ Set the timeout value for writing data to this channel.
719
+ <p>
720
+ If no data can be written within the timeout period, then a <a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a> will be thrown, with error code EAGAIN or EWOULDBLOCK.<p>
721
+ <dl compact><dt><b>Parameters:</b></dt><dd>
722
+ <table border="0" cellspacing="2" cellpadding="0">
723
+ <tr><td valign="top"></td><td valign="top"><em>msec</em>&nbsp;</td><td>The timeout, in milliseconds. If 0 is given, there will be no timeout. </td></tr>
724
+ </table>
725
+ </dl>
726
+ <dl compact><dt><b>Exceptions:</b></dt><dd>
727
+ <table border="0" cellspacing="2" cellpadding="0">
728
+ <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classPassenger_1_1SystemException.html" title="Represents an error returned by a system call or a standard library call.">SystemException</a></em>&nbsp;</td><td>Cannot set the timeout. </td></tr>
729
+ </table>
730
+ </dl>
731
+
582
732
  </div>
583
733
  </div><p>
584
734
  <hr>The documentation for this class was generated from the following file:<ul>
585
735
  <li><a class="el" href="MessageChannel_8h-source.html">MessageChannel.h</a></ul>
586
736
  </div>
587
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
737
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
588
738
  <a href="http://www.doxygen.org/index.html">
589
739
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
590
740
  </body>