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.
- data/DEVELOPERS.TXT +10 -4
- data/LICENSE +1 -1
- data/NEWS +0 -0
- data/Rakefile +183 -117
- data/benchmark/dispatcher.rb +5 -9
- data/bin/passenger-install-apache2-module +52 -18
- data/bin/passenger-memory-stats +67 -13
- data/bin/passenger-spawn-server +8 -4
- data/bin/passenger-status +21 -46
- data/bin/passenger-stress-test +5 -5
- data/debian/postinst +1 -1
- data/doc/ApplicationPool algorithm.txt +180 -128
- data/doc/Architectural overview.html +1 -778
- data/doc/Security of user switching support.html +1 -643
- data/doc/Users guide Apache.html +3127 -0
- data/doc/Users guide Nginx.html +1458 -0
- data/doc/Users guide.html +1404 -467
- data/doc/Users guide.txt +843 -105
- data/doc/cxxapi/ApplicationPoolServer_8h-source.html +751 -641
- data/doc/cxxapi/ApplicationPool_8h-source.html +168 -171
- data/doc/cxxapi/Application_8h-source.html +494 -394
- data/doc/cxxapi/Bucket_8h-source.html +21 -15
- data/doc/cxxapi/CachedFileStat_8h-source.html +191 -0
- data/doc/cxxapi/Configuration_8h-source.html +311 -149
- data/doc/cxxapi/DirectoryMapper_8h-source.html +309 -0
- data/doc/cxxapi/DummySpawnManager_8h-source.html +3 -4
- data/doc/cxxapi/Exceptions_8h-source.html +182 -165
- data/doc/cxxapi/FileChecker_8h-source.html +130 -0
- data/doc/cxxapi/Hooks_8h-source.html +2 -3
- data/doc/cxxapi/Logging_8h-source.html +92 -89
- data/doc/cxxapi/MessageChannel_8h-source.html +585 -477
- data/doc/cxxapi/PoolOptions_8h-source.html +305 -0
- data/doc/cxxapi/SpawnManager_8h-source.html +515 -540
- data/doc/cxxapi/StandardApplicationPool_8h-source.html +779 -679
- data/doc/cxxapi/SystemTime_8h-source.html +104 -0
- data/doc/cxxapi/Utils_8h-source.html +331 -227
- data/doc/cxxapi/annotated.html +6 -7
- data/doc/cxxapi/classClient-members.html +1 -2
- data/doc/cxxapi/classClient.html +1 -2
- data/doc/cxxapi/classHooks-members.html +5 -2
- data/doc/cxxapi/classHooks.html +112 -2
- data/doc/cxxapi/classPassenger_1_1Application-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1Application.html +8 -9
- data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
- data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +42 -81
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +3 -4
- data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +3 -2
- data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +74 -3
- data/doc/cxxapi/classPassenger_1_1BusyException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1BusyException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +38 -0
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +256 -0
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +2 -3
- data/doc/cxxapi/{classPassenger_1_1Thread-members.html → classPassenger_1_1FileChecker-members.html} +4 -5
- data/doc/cxxapi/classPassenger_1_1FileChecker.html +121 -0
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileSystemException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1IOException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1IOException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +5 -2
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +155 -5
- data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption-members.html → classPassenger_1_1RuntimeException-members.html} +2 -3
- data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption.html → classPassenger_1_1RuntimeException.html} +10 -8
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -2
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SpawnManager.html +15 -56
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +5 -4
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +20 -81
- data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
- data/doc/cxxapi/classPassenger_1_1SystemException-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1SystemException.html +9 -10
- data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
- data/doc/cxxapi/{classboost_1_1this__thread_1_1disable__syscall__interruption-members.html → classPassenger_1_1SystemTime-members.html} +5 -3
- data/doc/cxxapi/classPassenger_1_1SystemTime.html +86 -0
- data/doc/cxxapi/classPassenger_1_1TempFile-members.html +2 -3
- data/doc/cxxapi/classPassenger_1_1TempFile.html +17 -9
- data/doc/cxxapi/definitions_8h-source.html +1 -2
- data/doc/cxxapi/files.html +6 -3
- data/doc/cxxapi/functions.html +98 -35
- data/doc/cxxapi/functions_func.html +60 -32
- data/doc/cxxapi/functions_type.html +1 -2
- data/doc/cxxapi/functions_vars.html +27 -2
- data/doc/cxxapi/graph_legend.html +1 -2
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Configuration.html +3 -4
- data/doc/cxxapi/group__Configuration.png +0 -0
- data/doc/cxxapi/group__Core.html +3 -4
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Exceptions.html +4 -2
- data/doc/cxxapi/group__Hooks.html +1 -6
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/group__Support.html +259 -36
- data/doc/cxxapi/hierarchy.html +6 -7
- data/doc/cxxapi/inherit__graph__0.map +1 -1
- data/doc/cxxapi/inherit__graph__0.md5 +1 -1
- data/doc/cxxapi/inherit__graph__0.png +0 -0
- data/doc/cxxapi/inherit__graph__1.map +1 -1
- data/doc/cxxapi/inherit__graph__1.md5 +1 -1
- data/doc/cxxapi/inherit__graph__1.png +0 -0
- data/doc/cxxapi/inherit__graph__10.map +1 -1
- data/doc/cxxapi/inherit__graph__10.md5 +1 -1
- data/doc/cxxapi/inherit__graph__10.png +0 -0
- data/doc/cxxapi/inherit__graph__11.map +1 -1
- data/doc/cxxapi/inherit__graph__11.md5 +1 -1
- data/doc/cxxapi/inherit__graph__11.png +0 -0
- data/doc/cxxapi/inherit__graph__12.map +2 -1
- data/doc/cxxapi/inherit__graph__12.md5 +1 -1
- data/doc/cxxapi/inherit__graph__12.png +0 -0
- data/doc/cxxapi/inherit__graph__13.map +1 -1
- data/doc/cxxapi/inherit__graph__13.md5 +1 -1
- data/doc/cxxapi/inherit__graph__13.png +0 -0
- data/doc/cxxapi/inherit__graph__14.map +1 -2
- data/doc/cxxapi/inherit__graph__14.md5 +1 -1
- data/doc/cxxapi/inherit__graph__14.png +0 -0
- data/doc/cxxapi/inherit__graph__15.map +1 -1
- data/doc/cxxapi/inherit__graph__15.md5 +1 -1
- data/doc/cxxapi/inherit__graph__15.png +0 -0
- data/doc/cxxapi/inherit__graph__16.map +1 -1
- data/doc/cxxapi/inherit__graph__16.md5 +1 -1
- data/doc/cxxapi/inherit__graph__16.png +0 -0
- data/doc/cxxapi/inherit__graph__17.png +0 -0
- data/doc/cxxapi/inherit__graph__18.png +0 -0
- data/doc/cxxapi/inherit__graph__19.png +0 -0
- data/doc/cxxapi/inherit__graph__2.map +1 -1
- data/doc/cxxapi/inherit__graph__2.md5 +1 -1
- data/doc/cxxapi/inherit__graph__2.png +0 -0
- data/doc/cxxapi/inherit__graph__20.map +1 -1
- data/doc/cxxapi/inherit__graph__20.md5 +1 -1
- data/doc/cxxapi/inherit__graph__20.png +0 -0
- data/doc/cxxapi/inherit__graph__21.map +1 -1
- data/doc/cxxapi/inherit__graph__21.md5 +1 -1
- data/doc/cxxapi/inherit__graph__21.png +0 -0
- data/doc/cxxapi/inherit__graph__3.map +1 -1
- data/doc/cxxapi/inherit__graph__3.md5 +1 -1
- data/doc/cxxapi/inherit__graph__3.png +0 -0
- data/doc/cxxapi/inherit__graph__4.map +1 -1
- data/doc/cxxapi/inherit__graph__4.md5 +1 -1
- data/doc/cxxapi/inherit__graph__4.png +0 -0
- data/doc/cxxapi/inherit__graph__5.map +2 -1
- data/doc/cxxapi/inherit__graph__5.md5 +1 -1
- data/doc/cxxapi/inherit__graph__5.png +0 -0
- data/doc/cxxapi/inherit__graph__6.map +1 -1
- data/doc/cxxapi/inherit__graph__6.md5 +1 -1
- data/doc/cxxapi/inherit__graph__6.png +0 -0
- data/doc/cxxapi/inherit__graph__7.map +1 -1
- data/doc/cxxapi/inherit__graph__7.md5 +1 -1
- data/doc/cxxapi/inherit__graph__7.png +0 -0
- data/doc/cxxapi/inherit__graph__8.map +1 -1
- data/doc/cxxapi/inherit__graph__8.md5 +1 -1
- data/doc/cxxapi/inherit__graph__8.png +0 -0
- data/doc/cxxapi/inherit__graph__9.map +1 -2
- data/doc/cxxapi/inherit__graph__9.md5 +1 -1
- data/doc/cxxapi/inherit__graph__9.png +0 -0
- data/doc/cxxapi/inherits.html +30 -31
- data/doc/cxxapi/main.html +1 -2
- data/doc/cxxapi/modules.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString.html +2 -3
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +1 -2
- data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +2 -3
- data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +49 -0
- data/doc/cxxapi/structPassenger_1_1PoolOptions.html +404 -0
- data/doc/cxxapi/tree.html +18 -20
- data/doc/images/conservative_spawning.png +0 -0
- data/doc/images/conservative_spawning.svg +248 -0
- data/doc/images/smart-lv2.png +0 -0
- data/doc/images/smart-lv2.svg +320 -0
- data/doc/rdoc/classes/ConditionVariable.html +68 -34
- data/doc/rdoc/classes/Exception.html +16 -16
- data/doc/rdoc/classes/GC.html +9 -9
- data/doc/rdoc/classes/IO.html +36 -17
- data/doc/rdoc/classes/PhusionPassenger.html +183 -0
- data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +511 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer.html +285 -242
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerAlreadyStarted.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerError.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerNotStarted.html +3 -3
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/UnknownMessage.html +3 -3
- data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +598 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +140 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +247 -0
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +138 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AppInitError.html +36 -19
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/Application.html +81 -96
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/ConsoleTextTemplate.html +18 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/FrameworkInitError.html +20 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/HTMLTemplate.html +18 -18
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/InitializationError.html +9 -9
- data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/MessageChannel.html +93 -92
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/NativeSupport.html +55 -25
- data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +185 -0
- data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +182 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz.html +95 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +424 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +98 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +200 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +444 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +98 -0
- data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +154 -0
- data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +408 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/UnknownError.html +13 -13
- data/doc/rdoc/classes/PhusionPassenger/Utils.html +687 -0
- data/doc/rdoc/classes/{Passenger → PhusionPassenger}/VersionNotFound.html +8 -8
- data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
- data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +188 -0
- data/doc/rdoc/classes/PlatformInfo.html +663 -159
- data/doc/rdoc/classes/RakeExtensions.html +4 -4
- data/doc/rdoc/classes/Signal.html +134 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/DEVELOPERS_TXT.html +15 -10
- data/doc/rdoc/files/README.html +5 -7
- data/doc/rdoc/files/ext/{passenger → phusion_passenger}/native_support_c.html +2 -2
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_request_handler_rb.html +7 -9
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +120 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_server_rb.html +7 -10
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +99 -0
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +92 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/application_rb.html +6 -8
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/console_text_template_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/constants_rb.html +4 -5
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/dependencies_rb.html +6 -8
- data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +116 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/exceptions_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/html_template_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/message_channel_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/platform_info_rb.html +6 -7
- data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +123 -0
- data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +117 -0
- data/doc/rdoc/files/lib/{passenger/utils_rb.html → phusion_passenger/railz/application_spawner_rb.html} +24 -17
- data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +126 -0
- data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +139 -0
- data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +118 -0
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/simple_benchmarking_rb.html +5 -7
- data/doc/rdoc/files/lib/{passenger → phusion_passenger}/spawn_manager_rb.html +40 -24
- data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +169 -0
- data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +120 -0
- data/doc/rdoc/files/lib/rake/extensions_rb.html +3 -4
- data/doc/rdoc/fr_class_index.html +37 -19
- data/doc/rdoc/fr_file_index.html +25 -14
- data/doc/rdoc/fr_method_index.html +145 -74
- data/ext/apache2/Application.h +145 -44
- data/ext/apache2/ApplicationPool.h +27 -29
- data/ext/apache2/ApplicationPoolServer.h +183 -72
- data/ext/apache2/ApplicationPoolServerExecutable.cpp +249 -42
- data/ext/apache2/Bucket.cpp +61 -9
- data/ext/apache2/Bucket.h +15 -8
- data/ext/apache2/CachedFileStat.cpp +114 -0
- data/ext/apache2/CachedFileStat.h +169 -0
- data/ext/apache2/Configuration.cpp +213 -22
- data/ext/apache2/Configuration.h +176 -13
- data/ext/apache2/DirectoryMapper.h +287 -0
- data/ext/apache2/Exceptions.h +30 -12
- data/ext/apache2/FileChecker.h +108 -0
- data/ext/apache2/Hooks.cpp +709 -493
- data/ext/apache2/LICENSE-CNRI.TXT +15 -0
- data/ext/apache2/Logging.h +26 -22
- data/ext/apache2/MessageChannel.h +124 -15
- data/ext/apache2/PoolOptions.h +283 -0
- data/ext/apache2/SpawnManager.h +75 -99
- data/ext/apache2/StandardApplicationPool.h +296 -195
- data/ext/apache2/SystemTime.cpp +28 -0
- data/ext/apache2/SystemTime.h +82 -0
- data/ext/apache2/Utils.cpp +172 -18
- data/ext/apache2/Utils.h +124 -19
- data/ext/boost/cstdint.hpp +4 -2
- data/ext/boost/current_function.hpp +67 -0
- data/ext/boost/detail/sp_counted_base.hpp +4 -4
- data/ext/boost/thread/exceptions.hpp +2 -1
- data/ext/boost/thread/pthread/thread.hpp +11 -3
- data/ext/boost/thread/pthread/thread_data.hpp +2 -1
- data/ext/oxt/backtrace.cpp +172 -0
- data/ext/oxt/backtrace.hpp +135 -0
- data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
- data/ext/oxt/detail/backtrace_enabled.hpp +155 -0
- data/ext/oxt/detail/spin_lock_gcc_x86.hpp +82 -0
- data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
- data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
- data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
- data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
- data/ext/oxt/macros.hpp +58 -0
- data/ext/oxt/spin_lock.hpp +55 -0
- data/ext/{apache2/System.cpp → oxt/system_calls.cpp} +87 -52
- data/ext/oxt/system_calls.hpp +234 -0
- data/ext/oxt/thread.cpp +32 -0
- data/ext/oxt/thread.hpp +223 -0
- data/ext/oxt/tracable_exception.cpp +87 -0
- data/ext/oxt/tracable_exception.hpp +35 -0
- data/{lib/passenger/constants.rb → ext/phusion_passenger/extconf.rb} +14 -9
- data/ext/{passenger → phusion_passenger}/native_support.c +33 -6
- data/lib/{passenger → phusion_passenger}/abstract_request_handler.rb +209 -93
- data/lib/{passenger → phusion_passenger}/abstract_server.rb +23 -8
- data/lib/phusion_passenger/abstract_server_collection.rb +301 -0
- data/lib/phusion_passenger/admin_tools.rb +25 -0
- data/lib/phusion_passenger/admin_tools/control_process.rb +107 -0
- data/lib/{passenger → phusion_passenger}/application.rb +13 -16
- data/lib/{passenger → phusion_passenger}/console_text_template.rb +2 -2
- data/{ext/passenger/extconf.rb → lib/phusion_passenger/constants.rb} +5 -5
- data/lib/{passenger → phusion_passenger}/dependencies.rb +38 -32
- data/lib/phusion_passenger/events.rb +45 -0
- data/lib/{passenger → phusion_passenger}/exceptions.rb +12 -5
- data/lib/{passenger → phusion_passenger}/html_template.rb +2 -2
- data/lib/{passenger → phusion_passenger}/message_channel.rb +3 -2
- data/lib/phusion_passenger/platform_info.rb +500 -0
- data/lib/{passenger → phusion_passenger}/rack/application_spawner.rb +29 -22
- data/lib/{passenger → phusion_passenger}/rack/request_handler.rb +14 -9
- data/lib/{passenger → phusion_passenger}/railz/application_spawner.rb +94 -74
- data/lib/{passenger → phusion_passenger}/railz/cgi_fixed.rb +2 -2
- data/lib/{passenger → phusion_passenger}/railz/framework_spawner.rb +86 -98
- data/lib/{passenger → phusion_passenger}/railz/request_handler.rb +6 -6
- data/lib/{passenger → phusion_passenger}/simple_benchmarking.rb +0 -0
- data/lib/{passenger → phusion_passenger}/spawn_manager.rb +136 -128
- data/lib/{passenger → phusion_passenger}/templates/apache2_config_snippets.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
- data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
- data/lib/{passenger → phusion_passenger}/templates/app_init_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/database_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/deployment_example.txt.erb +1 -1
- data/lib/{passenger → phusion_passenger}/templates/error_layout.css +0 -0
- data/lib/{passenger → phusion_passenger}/templates/error_layout.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/framework_init_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/general_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/invalid_app_root.html.erb +1 -1
- data/lib/{passenger → phusion_passenger}/templates/load_error.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/no_write_permission_to_passenger_root.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/run_installer_as_root.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/version_not_found.html.erb +0 -0
- data/lib/{passenger → phusion_passenger}/templates/welcome.txt.erb +0 -0
- data/lib/{passenger → phusion_passenger}/utils.rb +210 -44
- data/lib/{passenger → phusion_passenger}/wsgi/application_spawner.rb +18 -15
- data/lib/{passenger → phusion_passenger}/wsgi/request_handler.py +7 -1
- data/man/passenger-memory-stats.8 +1 -1
- data/misc/render_error_pages.rb +1 -1
- data/test/ApplicationPoolServerTest.cpp +0 -28
- data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +4 -0
- data/test/ApplicationPoolTest.cpp +307 -69
- data/test/CachedFileStatTest.cpp +262 -0
- data/test/FileCheckerTest.cpp +79 -0
- data/test/MessageChannelTest.cpp +3 -3
- data/test/PoolOptionsTest.cpp +37 -0
- data/test/SpawnManagerTest.cpp +4 -4
- data/test/StandardApplicationPoolTest.cpp +4 -0
- data/test/SystemTimeTest.cpp +37 -0
- data/test/UtilsTest.cpp +137 -0
- data/test/integration_tests.rb +270 -23
- data/test/oxt/backtrace_test.cpp +128 -0
- data/test/oxt/oxt_test_main.cpp +25 -0
- data/test/oxt/syscall_interruption_test.cpp +50 -0
- data/test/ruby/abstract_request_handler_spec.rb +83 -0
- data/test/ruby/abstract_server_collection_spec.rb +246 -0
- data/test/ruby/application_spec.rb +3 -3
- data/test/ruby/message_channel_spec.rb +2 -2
- data/test/ruby/rack/application_spawner_spec.rb +3 -5
- data/test/ruby/rails/application_spawner_spec.rb +54 -15
- data/test/ruby/rails/framework_spawner_spec.rb +6 -8
- data/test/ruby/rails/minimal_spawner_spec.rb +29 -0
- data/test/ruby/rails/spawner_error_handling_spec.rb +1 -1
- data/test/ruby/rails/spawner_privilege_lowering_spec.rb +3 -3
- data/test/ruby/spawn_manager_spec.rb +23 -12
- data/test/ruby/utils_spec.rb +36 -2
- data/test/ruby/wsgi/application_spawner_spec.rb +47 -0
- data/test/stub/apache2/httpd.conf.erb +3 -5
- data/test/stub/message_channel.rb +2 -2
- data/test/stub/message_channel_2.rb +2 -2
- data/test/stub/message_channel_3.rb +3 -3
- data/test/stub/minimal-railsapp/README +0 -0
- data/test/stub/minimal-railsapp/config/application.rb +0 -0
- data/test/stub/minimal-railsapp/config/environment.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionmailer/lib/action_mailer.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_controller.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_pack.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_view.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activerecord/lib/active_record.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activeresource/lib/active_resource.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/dispatcher.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/initializer.rb +0 -0
- data/test/stub/minimal-railsapp/vendor/rails/railties/lib/ruby_version_check.rb +0 -0
- data/test/stub/rails_apps/foobar/app/controllers/foo_controller.rb +8 -0
- data/test/stub/rails_apps/foobar/config/environments/development.rb +1 -2
- data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +21 -1
- data/test/stub/rails_apps/mycook/sites/some.site/public/uploads.html +26 -0
- data/test/stub/rails_apps/mycook/sites/some.site/public/welcome/cached.html +26 -0
- data/test/stub/railsapp/app/controllers/application.rb +0 -0
- data/test/stub/railsapp/app/controllers/bar_controller_1.rb +0 -0
- data/test/stub/railsapp/app/controllers/bar_controller_2.rb +1 -1
- data/test/stub/railsapp/app/controllers/foo_controller.rb +4 -0
- data/test/stub/railsapp/app/helpers/application_helper.rb +0 -0
- data/test/stub/railsapp/config/boot.rb +0 -0
- data/test/stub/railsapp/config/database.yml +0 -0
- data/test/stub/railsapp/config/environment.rb +0 -0
- data/test/stub/railsapp/config/environments/development.rb +0 -0
- data/test/stub/railsapp/config/environments/production.rb +0 -0
- data/test/stub/railsapp/config/initializers/inflections.rb +0 -0
- data/test/stub/railsapp/config/initializers/mime_types.rb +0 -0
- data/test/stub/railsapp/config/routes.rb +0 -0
- data/test/stub/railsapp/public/useless.txt +0 -0
- data/test/stub/spawn_server.rb +3 -4
- data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
- data/test/support/apache2_controller.rb +57 -7
- data/test/support/tut.h +15 -0
- data/vendor/README +12 -0
- data/vendor/README_FOR_PACKAGERS +1 -0
- data/vendor/rack-0.9.1/AUTHORS +8 -0
- data/vendor/rack-0.9.1/COPYING +18 -0
- data/vendor/rack-0.9.1/ChangeLog +1423 -0
- data/vendor/rack-0.9.1/KNOWN-ISSUES +18 -0
- data/vendor/rack-0.9.1/README +306 -0
- data/vendor/rack-0.9.1/Rakefile +188 -0
- data/vendor/rack-0.9.1/SPEC +129 -0
- data/vendor/rack-0.9.1/lib/rack.rb +86 -0
- data/vendor/rack-0.9.1/lib/rack/adapter/camping.rb +22 -0
- data/vendor/rack-0.9.1/lib/rack/auth/abstract/handler.rb +28 -0
- data/vendor/rack-0.9.1/lib/rack/auth/abstract/request.rb +37 -0
- data/vendor/rack-0.9.1/lib/rack/auth/basic.rb +58 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/md5.rb +124 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/nonce.rb +51 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/params.rb +55 -0
- data/vendor/rack-0.9.1/lib/rack/auth/digest/request.rb +40 -0
- data/vendor/rack-0.9.1/lib/rack/auth/openid.rb +438 -0
- data/vendor/rack-0.9.1/lib/rack/builder.rb +67 -0
- data/vendor/rack-0.9.1/lib/rack/cascade.rb +36 -0
- data/vendor/rack-0.9.1/lib/rack/commonlogger.rb +61 -0
- data/vendor/rack-0.9.1/lib/rack/conditionalget.rb +43 -0
- data/vendor/rack-0.9.1/lib/rack/content_length.rb +25 -0
- data/vendor/rack-0.9.1/lib/rack/deflater.rb +87 -0
- data/vendor/rack-0.9.1/lib/rack/directory.rb +150 -0
- data/vendor/rack-0.9.1/lib/rack/file.rb +85 -0
- data/vendor/rack-0.9.1/lib/rack/handler.rb +48 -0
- data/vendor/rack-0.9.1/lib/rack/handler/cgi.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/handler/evented_mongrel.rb +8 -0
- data/vendor/rack-0.9.1/lib/rack/handler/fastcgi.rb +86 -0
- data/vendor/rack-0.9.1/lib/rack/handler/lsws.rb +52 -0
- data/vendor/rack-0.9.1/lib/rack/handler/mongrel.rb +82 -0
- data/vendor/rack-0.9.1/lib/rack/handler/scgi.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
- data/vendor/rack-0.9.1/lib/rack/handler/thin.rb +15 -0
- data/vendor/rack-0.9.1/lib/rack/handler/webrick.rb +61 -0
- data/vendor/rack-0.9.1/lib/rack/head.rb +19 -0
- data/vendor/rack-0.9.1/lib/rack/lint.rb +465 -0
- data/vendor/rack-0.9.1/lib/rack/lobster.rb +65 -0
- data/vendor/rack-0.9.1/lib/rack/methodoverride.rb +27 -0
- data/vendor/rack-0.9.1/lib/rack/mime.rb +204 -0
- data/vendor/rack-0.9.1/lib/rack/mock.rb +160 -0
- data/vendor/rack-0.9.1/lib/rack/recursive.rb +57 -0
- data/vendor/rack-0.9.1/lib/rack/reloader.rb +64 -0
- data/vendor/rack-0.9.1/lib/rack/request.rb +218 -0
- data/vendor/rack-0.9.1/lib/rack/response.rb +171 -0
- data/vendor/rack-0.9.1/lib/rack/session/abstract/id.rb +153 -0
- data/vendor/rack-0.9.1/lib/rack/session/cookie.rb +89 -0
- data/vendor/rack-0.9.1/lib/rack/session/memcache.rb +97 -0
- data/vendor/rack-0.9.1/lib/rack/session/pool.rb +73 -0
- data/vendor/rack-0.9.1/lib/rack/showexceptions.rb +348 -0
- data/vendor/rack-0.9.1/lib/rack/showstatus.rb +106 -0
- data/vendor/rack-0.9.1/lib/rack/static.rb +38 -0
- data/vendor/rack-0.9.1/lib/rack/urlmap.rb +48 -0
- data/vendor/rack-0.9.1/lib/rack/utils.rb +347 -0
- metadata +1197 -1055
- data/doc/cxxapi/System_8h-source.html +0 -251
- data/doc/cxxapi/classDirectoryMapper-members.html +0 -38
- data/doc/cxxapi/classDirectoryMapper.html +0 -203
- data/doc/cxxapi/classPassenger_1_1Thread.html +0 -100
- data/doc/cxxapi/classboost_1_1this__thread_1_1disable__syscall__interruption.html +0 -46
- data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption-members.html +0 -33
- data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption.html +0 -44
- data/doc/cxxapi/namespacePassenger.html +0 -208
- data/doc/cxxapi/namespacePassenger_1_1InterruptableCalls.html +0 -43
- data/doc/cxxapi/namespacemembers.html +0 -70
- data/doc/cxxapi/namespacemembers_func.html +0 -66
- data/doc/cxxapi/namespacemembers_type.html +0 -46
- data/doc/cxxapi/namespaces.html +0 -35
- data/doc/rdoc/classes/Passenger.html +0 -136
- data/doc/rdoc/classes/Passenger/AbstractRequestHandler.html +0 -402
- data/doc/rdoc/classes/Passenger/SpawnManager.html +0 -379
- data/doc/rdoc/classes/Passenger/Utils.html +0 -578
- data/ext/apache2/System.h +0 -228
- data/lib/passenger/platform_info.rb +0 -302
- data/lib/passenger/templates/app_exited_during_initialization.html.erb +0 -19
- data/test/stub/apache2/httpd.conf +0 -75
- data/test/stub/rails_apps/foobar/config/environments/test.rb +0 -22
- data/test/stub/rails_apps/mycook/config/environments/test.rb +0 -22
- data/test/stub/railsapp/config/environments/test.rb +0 -22
- data/test/stub/railsapp2/config/environments/test.rb +0 -22
@@ -4,7 +4,7 @@
|
|
4
4
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
5
|
<html>
|
6
6
|
<head>
|
7
|
-
<title>Class:
|
7
|
+
<title>Class: PhusionPassenger::AbstractServer</title>
|
8
8
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
9
9
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
10
10
|
|
@@ -51,13 +51,13 @@
|
|
51
51
|
|
52
52
|
<body>
|
53
53
|
<table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
|
54
|
-
<td class="file-title"><span class="file-title-prefix">Class</span><br />
|
54
|
+
<td class="file-title"><span class="file-title-prefix">Class</span><br />PhusionPassenger::AbstractServer</td>
|
55
55
|
<td align="right">
|
56
56
|
<table cellspacing="0" cellpadding="2">
|
57
57
|
<tr valign="top">
|
58
58
|
<td>In:</td>
|
59
59
|
<td>
|
60
|
-
<a href="../../files/lib/
|
60
|
+
<a href="../../files/lib/phusion_passenger/abstract_server_rb.html">lib/phusion_passenger/abstract_server.rb</a>
|
61
61
|
</td>
|
62
62
|
</tr>
|
63
63
|
<tr>
|
@@ -77,29 +77,29 @@ Object
|
|
77
77
|
|
78
78
|
<div class="description"><p>
|
79
79
|
An abstract base class for a <a
|
80
|
-
href="AbstractServer.html#
|
80
|
+
href="AbstractServer.html#M000134">server</a>, with the following
|
81
81
|
properties:
|
82
82
|
</p>
|
83
83
|
<ul>
|
84
|
-
<li>The <a href="AbstractServer.html#
|
85
|
-
href="AbstractServer.html#
|
86
|
-
href="AbstractServer.html#
|
87
|
-
href="AbstractServer.html#
|
84
|
+
<li>The <a href="AbstractServer.html#M000134">server</a> has exactly one <a
|
85
|
+
href="AbstractServer.html#M000135">client</a>, and is connected to that <a
|
86
|
+
href="AbstractServer.html#M000135">client</a> at all times. The <a
|
87
|
+
href="AbstractServer.html#M000134">server</a> will quit when the connection
|
88
88
|
closes.
|
89
89
|
|
90
90
|
</li>
|
91
|
-
<li>The <a href="AbstractServer.html#
|
91
|
+
<li>The <a href="AbstractServer.html#M000134">server</a>‘s main loop may
|
92
92
|
be run in a child process (and so is asynchronous from the main process).
|
93
93
|
|
94
94
|
</li>
|
95
95
|
<li>One can communicate with the <a
|
96
|
-
href="AbstractServer.html#
|
96
|
+
href="AbstractServer.html#M000134">server</a> through discrete messages (as
|
97
97
|
opposed to byte streams).
|
98
98
|
|
99
99
|
</li>
|
100
|
-
<li>The <a href="AbstractServer.html#
|
100
|
+
<li>The <a href="AbstractServer.html#M000134">server</a> can pass file
|
101
101
|
descriptors (<a href="../IO.html">IO</a> objects) back to the <a
|
102
|
-
href="AbstractServer.html#
|
102
|
+
href="AbstractServer.html#M000135">client</a>.
|
103
103
|
|
104
104
|
</li>
|
105
105
|
</ul>
|
@@ -108,24 +108,24 @@ A message is just an ordered list of strings. The first element in the
|
|
108
108
|
message is the _message name_.
|
109
109
|
</p>
|
110
110
|
<p>
|
111
|
-
The <a href="AbstractServer.html#
|
111
|
+
The <a href="AbstractServer.html#M000134">server</a> will also reset all
|
112
112
|
signal handlers (in the child process). That is, it will respond to all
|
113
113
|
signals in the default manner. The only exception is SIGHUP, which is
|
114
114
|
ignored. One may define additional signal handlers using <a
|
115
|
-
href="AbstractServer.html#
|
115
|
+
href="AbstractServer.html#M000133">define_signal_handler</a>().
|
116
116
|
</p>
|
117
117
|
<p>
|
118
118
|
Before an <a href="AbstractServer.html">AbstractServer</a> can be used, it
|
119
119
|
must first be started by calling <a
|
120
|
-
href="AbstractServer.html#
|
121
|
-
needed, <a href="AbstractServer.html#
|
120
|
+
href="AbstractServer.html#M000124">start</a>(). When it is no longer
|
121
|
+
needed, <a href="AbstractServer.html#M000126">stop</a>() should be called.
|
122
122
|
</p>
|
123
123
|
<p>
|
124
124
|
Here‘s an example on using <a
|
125
125
|
href="AbstractServer.html">AbstractServer</a>:
|
126
126
|
</p>
|
127
127
|
<pre>
|
128
|
-
class MyServer <
|
128
|
+
class MyServer < PhusionPassenger::AbstractServer
|
129
129
|
def initialize
|
130
130
|
super()
|
131
131
|
define_message_handler(:hello, :handle_hello)
|
@@ -155,20 +155,20 @@ href="AbstractServer.html">AbstractServer</a>:
|
|
155
155
|
|
156
156
|
<div class="sectiontitle">Methods</div>
|
157
157
|
<ul>
|
158
|
-
<li><a href="#
|
159
|
-
<li><a href="#
|
160
|
-
<li><a href="#
|
161
|
-
<li><a href="#
|
162
|
-
<li><a href="#
|
163
|
-
<li><a href="#
|
164
|
-
<li><a href="#
|
165
|
-
<li><a href="#
|
166
|
-
<li><a href="#
|
167
|
-
<li><a href="#
|
168
|
-
<li><a href="#
|
169
|
-
<li><a href="#
|
170
|
-
<li><a href="#
|
171
|
-
<li><a href="#
|
158
|
+
<li><a href="#M000129">before_fork</a></li>
|
159
|
+
<li><a href="#M000135">client</a></li>
|
160
|
+
<li><a href="#M000132">define_message_handler</a></li>
|
161
|
+
<li><a href="#M000133">define_signal_handler</a></li>
|
162
|
+
<li><a href="#M000131">finalize_server</a></li>
|
163
|
+
<li><a href="#M000130">initialize_server</a></li>
|
164
|
+
<li><a href="#M000123">new</a></li>
|
165
|
+
<li><a href="#M000136">quit_main</a></li>
|
166
|
+
<li><a href="#M000134">server</a></li>
|
167
|
+
<li><a href="#M000128">server_pid</a></li>
|
168
|
+
<li><a href="#M000124">start</a></li>
|
169
|
+
<li><a href="#M000125">start_synchronously</a></li>
|
170
|
+
<li><a href="#M000127">started?</a></li>
|
171
|
+
<li><a href="#M000126">stop</a></li>
|
172
172
|
</ul>
|
173
173
|
|
174
174
|
<div class="sectiontitle">Included Modules</div>
|
@@ -178,10 +178,10 @@ href="AbstractServer.html">AbstractServer</a>:
|
|
178
178
|
|
179
179
|
|
180
180
|
<div class="sectiontitle">Classes and Modules</div>
|
181
|
-
Class <a href="AbstractServer/ServerAlreadyStarted.html" class="link">
|
182
|
-
Class <a href="AbstractServer/ServerError.html" class="link">
|
183
|
-
Class <a href="AbstractServer/ServerNotStarted.html" class="link">
|
184
|
-
Class <a href="AbstractServer/UnknownMessage.html" class="link">
|
181
|
+
Class <a href="AbstractServer/ServerAlreadyStarted.html" class="link">PhusionPassenger::AbstractServer::ServerAlreadyStarted</a><br />
|
182
|
+
Class <a href="AbstractServer/ServerError.html" class="link">PhusionPassenger::AbstractServer::ServerError</a><br />
|
183
|
+
Class <a href="AbstractServer/ServerNotStarted.html" class="link">PhusionPassenger::AbstractServer::ServerNotStarted</a><br />
|
184
|
+
Class <a href="AbstractServer/UnknownMessage.html" class="link">PhusionPassenger::AbstractServer::UnknownMessage</a><br />
|
185
185
|
|
186
186
|
|
187
187
|
<div class="sectiontitle">Constants</div>
|
@@ -193,23 +193,65 @@ Class <a href="AbstractServer/UnknownMessage.html" class="link">Passenger::Abstr
|
|
193
193
|
</tr>
|
194
194
|
</table>
|
195
195
|
|
196
|
+
<div class="sectiontitle">Attributes</div>
|
197
|
+
<table border='0' cellpadding='5'>
|
198
|
+
<tr valign='top'>
|
199
|
+
<td class='attr-rw'>
|
200
|
+
[RW]
|
201
|
+
</td>
|
202
|
+
<td class='attr-name'>last_activity_time</td>
|
203
|
+
<td class='attr-desc'>
|
204
|
+
The last time when this <a href="AbstractServer.html">AbstractServer</a>
|
205
|
+
had processed a message.
|
206
|
+
|
207
|
+
</td>
|
208
|
+
</tr>
|
209
|
+
<tr valign='top'>
|
210
|
+
<td class='attr-rw'>
|
211
|
+
[RW]
|
212
|
+
</td>
|
213
|
+
<td class='attr-name'>max_idle_time</td>
|
214
|
+
<td class='attr-desc'>
|
215
|
+
The maximum time that this <a href="AbstractServer.html">AbstractServer</a>
|
216
|
+
may be idle. Used by <a
|
217
|
+
href="AbstractServerCollection.html">AbstractServerCollection</a> to
|
218
|
+
determine when this object should be cleaned up. nil or 0 indicate that
|
219
|
+
this object should never be idle cleaned.
|
220
|
+
|
221
|
+
</td>
|
222
|
+
</tr>
|
223
|
+
<tr valign='top'>
|
224
|
+
<td class='attr-rw'>
|
225
|
+
[RW]
|
226
|
+
</td>
|
227
|
+
<td class='attr-name'>next_cleaning_time</td>
|
228
|
+
<td class='attr-desc'>
|
229
|
+
Used by <a
|
230
|
+
href="AbstractServerCollection.html">AbstractServerCollection</a> to
|
231
|
+
remember when this <a href="AbstractServer.html">AbstractServer</a> should
|
232
|
+
be idle cleaned.
|
233
|
+
|
234
|
+
</td>
|
235
|
+
</tr>
|
236
|
+
</table>
|
196
237
|
|
197
238
|
<div class="sectiontitle">Public Class methods</div>
|
198
239
|
<div class="method">
|
199
240
|
<div class="title">
|
200
|
-
<a name="
|
241
|
+
<a name="M000123"></a><b>new</b>()
|
201
242
|
</div>
|
202
243
|
<div class="sourcecode">
|
203
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
204
|
-
<div id="
|
244
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000123_source')" id="l_M000123_source">show source</a> ]</p>
|
245
|
+
<div id="M000123_source" class="dyn-source">
|
205
246
|
<pre>
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
247
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 103</span>
|
248
|
+
103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
|
249
|
+
104: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">false</span>
|
250
|
+
105: <span class="ruby-ivar">@message_handlers</span> = {}
|
251
|
+
106: <span class="ruby-ivar">@signal_handlers</span> = {}
|
252
|
+
107: <span class="ruby-ivar">@orig_signal_handlers</span> = {}
|
253
|
+
108: <span class="ruby-ivar">@last_activity_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
|
254
|
+
109: <span class="ruby-keyword kw">end</span>
|
213
255
|
</pre>
|
214
256
|
</div>
|
215
257
|
</div>
|
@@ -217,40 +259,40 @@ Class <a href="AbstractServer/UnknownMessage.html" class="link">Passenger::Abstr
|
|
217
259
|
<div class="sectiontitle">Public Instance methods</div>
|
218
260
|
<div class="method">
|
219
261
|
<div class="title">
|
220
|
-
<a name="
|
262
|
+
<a name="M000128"></a><b>server_pid</b>()
|
221
263
|
</div>
|
222
264
|
<div class="description">
|
223
265
|
<p>
|
224
266
|
Return the PID of the started <a
|
225
|
-
href="AbstractServer.html#
|
226
|
-
href="AbstractServer.html#
|
267
|
+
href="AbstractServer.html#M000134">server</a>. This is only valid if <a
|
268
|
+
href="AbstractServer.html#M000124">start</a>() has been called.
|
227
269
|
</p>
|
228
270
|
</div>
|
229
271
|
<div class="sourcecode">
|
230
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
231
|
-
<div id="
|
272
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000128_source')" id="l_M000128_source">show source</a> ]</p>
|
273
|
+
<div id="M000128_source" class="dyn-source">
|
232
274
|
<pre>
|
233
|
-
<span class="ruby-comment cmt"># File lib/
|
234
|
-
|
235
|
-
|
236
|
-
|
275
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 230</span>
|
276
|
+
230: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">server_pid</span>
|
277
|
+
231: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@pid</span>
|
278
|
+
232: <span class="ruby-keyword kw">end</span>
|
237
279
|
</pre>
|
238
280
|
</div>
|
239
281
|
</div>
|
240
282
|
</div>
|
241
283
|
<div class="method">
|
242
284
|
<div class="title">
|
243
|
-
<a name="
|
285
|
+
<a name="M000124"></a><b>start</b>()
|
244
286
|
</div>
|
245
287
|
<div class="description">
|
246
288
|
<p>
|
247
|
-
Start the <a href="AbstractServer.html#
|
248
|
-
does not block since the <a href="AbstractServer.html#
|
289
|
+
Start the <a href="AbstractServer.html#M000134">server</a>. This method
|
290
|
+
does not block since the <a href="AbstractServer.html#M000134">server</a>
|
249
291
|
runs asynchronously from the current process.
|
250
292
|
</p>
|
251
293
|
<p>
|
252
294
|
You may only call this method if the <a
|
253
|
-
href="AbstractServer.html#
|
295
|
+
href="AbstractServer.html#M000134">server</a> is not already started.
|
254
296
|
Otherwise, a <a
|
255
297
|
href="AbstractServer/ServerAlreadyStarted.html">ServerAlreadyStarted</a>
|
256
298
|
will be raised.
|
@@ -260,180 +302,181 @@ Derived classes may raise additional exceptions.
|
|
260
302
|
</p>
|
261
303
|
</div>
|
262
304
|
<div class="sourcecode">
|
263
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
264
|
-
<div id="
|
305
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000124_source')" id="l_M000124_source">show source</a> ]</p>
|
306
|
+
<div id="M000124_source" class="dyn-source">
|
265
307
|
<pre>
|
266
|
-
<span class="ruby-comment cmt"># File lib/
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
308
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 118</span>
|
309
|
+
118: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
|
310
|
+
119: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">started?</span>
|
311
|
+
120: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerAlreadyStarted</span>, <span class="ruby-value str">"Server is already started"</span>
|
312
|
+
121: <span class="ruby-keyword kw">end</span>
|
313
|
+
122:
|
314
|
+
123: <span class="ruby-ivar">@parent_socket</span>, <span class="ruby-ivar">@child_socket</span> = <span class="ruby-constant">UNIXSocket</span>.<span class="ruby-identifier">pair</span>
|
315
|
+
124: <span class="ruby-identifier">before_fork</span>
|
316
|
+
125: <span class="ruby-ivar">@pid</span> = <span class="ruby-identifier">fork</span>
|
317
|
+
126: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pid</span>.<span class="ruby-identifier">nil?</span>
|
318
|
+
127: <span class="ruby-keyword kw">begin</span>
|
319
|
+
128: <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
|
320
|
+
129: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">sync</span> = <span class="ruby-keyword kw">true</span>
|
321
|
+
130: <span class="ruby-ivar">@parent_socket</span>.<span class="ruby-identifier">close</span>
|
322
|
+
131:
|
323
|
+
132: <span class="ruby-comment cmt"># During Passenger's early days, we used to close file descriptors based</span>
|
324
|
+
133: <span class="ruby-comment cmt"># on a white list of file descriptors. That proved to be way too fragile:</span>
|
325
|
+
134: <span class="ruby-comment cmt"># too many file descriptors are being left open even though they shouldn't</span>
|
326
|
+
135: <span class="ruby-comment cmt"># be. So now we close file descriptors based on a black list.</span>
|
327
|
+
136: <span class="ruby-identifier">file_descriptors_to_leave_open</span> = [<span class="ruby-value">0</span>, <span class="ruby-value">1</span>, <span class="ruby-value">2</span>, <span class="ruby-ivar">@child_socket</span>.<span class="ruby-identifier">fileno</span>]
|
328
|
+
137: <span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">close_all_file_descriptors</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
|
329
|
+
138: <span class="ruby-comment cmt"># In addition to closing the file descriptors, one must also close</span>
|
330
|
+
139: <span class="ruby-comment cmt"># the associated IO objects. This is to prevent IO.close from</span>
|
331
|
+
140: <span class="ruby-comment cmt"># double-closing already closed file descriptors.</span>
|
332
|
+
141: <span class="ruby-identifier">close_all_io_objects_for_fds</span>(<span class="ruby-identifier">file_descriptors_to_leave_open</span>)
|
333
|
+
142:
|
334
|
+
143: <span class="ruby-comment cmt"># At this point, RubyGems might have open file handles for which</span>
|
335
|
+
144: <span class="ruby-comment cmt"># the associated file descriptors have just been closed. This can</span>
|
336
|
+
145: <span class="ruby-comment cmt"># result in mysterious 'EBADFD' errors. So we force RubyGems to</span>
|
337
|
+
146: <span class="ruby-comment cmt"># clear all open file handles.</span>
|
338
|
+
147: <span class="ruby-constant">Gem</span>.<span class="ruby-identifier">clear_paths</span>
|
339
|
+
148:
|
340
|
+
149: <span class="ruby-identifier">start_synchronously</span>(<span class="ruby-ivar">@child_socket</span>)
|
341
|
+
150: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Interrupt</span>
|
342
|
+
151: <span class="ruby-comment cmt"># Do nothing.</span>
|
343
|
+
152: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">SignalException</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">signal</span>
|
344
|
+
153: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">signal</span>.<span class="ruby-identifier">message</span> <span class="ruby-operator">==</span> <span class="ruby-constant">SERVER_TERMINATION_SIGNAL</span>
|
345
|
+
154: <span class="ruby-comment cmt"># Do nothing.</span>
|
346
|
+
155: <span class="ruby-keyword kw">else</span>
|
347
|
+
156: <span class="ruby-identifier">print_exception</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">signal</span>)
|
348
|
+
157: <span class="ruby-keyword kw">end</span>
|
349
|
+
158: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
350
|
+
159: <span class="ruby-identifier">print_exception</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">e</span>)
|
351
|
+
160: <span class="ruby-keyword kw">ensure</span>
|
352
|
+
161: <span class="ruby-identifier">exit!</span>
|
353
|
+
162: <span class="ruby-keyword kw">end</span>
|
354
|
+
163: <span class="ruby-keyword kw">end</span>
|
355
|
+
164: <span class="ruby-ivar">@child_socket</span>.<span class="ruby-identifier">close</span>
|
356
|
+
165: <span class="ruby-ivar">@parent_channel</span> = <span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@parent_socket</span>)
|
357
|
+
166: <span class="ruby-keyword kw">end</span>
|
315
358
|
</pre>
|
316
359
|
</div>
|
317
360
|
</div>
|
318
361
|
</div>
|
319
362
|
<div class="method">
|
320
363
|
<div class="title">
|
321
|
-
<a name="
|
364
|
+
<a name="M000125"></a><b>start_synchronously</b>(socket)
|
322
365
|
</div>
|
323
366
|
<div class="description">
|
324
367
|
<p>
|
325
|
-
Start the <a href="AbstractServer.html#
|
368
|
+
Start the <a href="AbstractServer.html#M000134">server</a>, but in the
|
326
369
|
current process instead of in a child process. This method blocks until the
|
327
|
-
<a href="AbstractServer.html#
|
370
|
+
<a href="AbstractServer.html#M000134">server</a>‘s main loop has
|
328
371
|
ended.
|
329
372
|
</p>
|
330
373
|
<p>
|
331
374
|
<em>socket</em> is the socket that the <a
|
332
|
-
href="AbstractServer.html#
|
333
|
-
href="AbstractServer.html#
|
375
|
+
href="AbstractServer.html#M000134">server</a> should listen on. The <a
|
376
|
+
href="AbstractServer.html#M000134">server</a> main loop will end if the
|
334
377
|
socket has been closed.
|
335
378
|
</p>
|
336
379
|
<p>
|
337
380
|
All hooks will be called, except <a
|
338
|
-
href="AbstractServer.html#
|
381
|
+
href="AbstractServer.html#M000129">before_fork</a>().
|
339
382
|
</p>
|
340
383
|
</div>
|
341
384
|
<div class="sourcecode">
|
342
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
343
|
-
<div id="
|
385
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000125_source')" id="l_M000125_source">show source</a> ]</p>
|
386
|
+
<div id="M000125_source" class="dyn-source">
|
344
387
|
<pre>
|
345
|
-
<span class="ruby-comment cmt"># File lib/
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
388
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 175</span>
|
389
|
+
175: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start_synchronously</span>(<span class="ruby-identifier">socket</span>)
|
390
|
+
176: <span class="ruby-ivar">@child_socket</span> = <span class="ruby-identifier">socket</span>
|
391
|
+
177: <span class="ruby-ivar">@child_channel</span> = <span class="ruby-constant">MessageChannel</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">socket</span>)
|
392
|
+
178: <span class="ruby-keyword kw">begin</span>
|
393
|
+
179: <span class="ruby-identifier">reset_signal_handlers</span>
|
394
|
+
180: <span class="ruby-identifier">initialize_server</span>
|
395
|
+
181: <span class="ruby-keyword kw">begin</span>
|
396
|
+
182: <span class="ruby-identifier">main_loop</span>
|
397
|
+
183: <span class="ruby-keyword kw">ensure</span>
|
398
|
+
184: <span class="ruby-identifier">finalize_server</span>
|
399
|
+
185: <span class="ruby-keyword kw">end</span>
|
400
|
+
186: <span class="ruby-keyword kw">ensure</span>
|
401
|
+
187: <span class="ruby-identifier">revert_signal_handlers</span>
|
402
|
+
188: <span class="ruby-keyword kw">end</span>
|
403
|
+
189: <span class="ruby-keyword kw">end</span>
|
361
404
|
</pre>
|
362
405
|
</div>
|
363
406
|
</div>
|
364
407
|
</div>
|
365
408
|
<div class="method">
|
366
409
|
<div class="title">
|
367
|
-
<a name="
|
410
|
+
<a name="M000127"></a><b>started?</b>()
|
368
411
|
</div>
|
369
412
|
<div class="description">
|
370
413
|
<p>
|
371
|
-
Return whether the <a href="AbstractServer.html#
|
414
|
+
Return whether the <a href="AbstractServer.html#M000134">server</a> has
|
372
415
|
been started.
|
373
416
|
</p>
|
374
417
|
</div>
|
375
418
|
<div class="sourcecode">
|
376
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
377
|
-
<div id="
|
419
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000127_source')" id="l_M000127_source">show source</a> ]</p>
|
420
|
+
<div id="M000127_source" class="dyn-source">
|
378
421
|
<pre>
|
379
|
-
<span class="ruby-comment cmt"># File lib/
|
380
|
-
|
381
|
-
|
382
|
-
|
422
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 225</span>
|
423
|
+
225: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">started?</span>
|
424
|
+
226: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@parent_channel</span>.<span class="ruby-identifier">nil?</span>
|
425
|
+
227: <span class="ruby-keyword kw">end</span>
|
383
426
|
</pre>
|
384
427
|
</div>
|
385
428
|
</div>
|
386
429
|
</div>
|
387
430
|
<div class="method">
|
388
431
|
<div class="title">
|
389
|
-
<a name="
|
432
|
+
<a name="M000126"></a><b>stop</b>()
|
390
433
|
</div>
|
391
434
|
<div class="description">
|
392
435
|
<p>
|
393
|
-
Stop the <a href="AbstractServer.html#
|
394
|
-
href="AbstractServer.html#
|
436
|
+
Stop the <a href="AbstractServer.html#M000134">server</a>. The <a
|
437
|
+
href="AbstractServer.html#M000134">server</a> will quit as soon as
|
395
438
|
possible. This method waits until the <a
|
396
|
-
href="AbstractServer.html#
|
439
|
+
href="AbstractServer.html#M000134">server</a> has been stopped.
|
397
440
|
</p>
|
398
441
|
<p>
|
399
442
|
When calling this method, the <a
|
400
|
-
href="AbstractServer.html#
|
443
|
+
href="AbstractServer.html#M000134">server</a> must already be started. If
|
401
444
|
not, a <a href="AbstractServer/ServerNotStarted.html">ServerNotStarted</a>
|
402
445
|
will be raised.
|
403
446
|
</p>
|
404
447
|
</div>
|
405
448
|
<div class="sourcecode">
|
406
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
407
|
-
<div id="
|
449
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000126_source')" id="l_M000126_source">show source</a> ]</p>
|
450
|
+
<div id="M000126_source" class="dyn-source">
|
408
451
|
<pre>
|
409
|
-
<span class="ruby-comment cmt"># File lib/
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
452
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 196</span>
|
453
|
+
196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>
|
454
|
+
197: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">started?</span>
|
455
|
+
198: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerNotStarted</span>, <span class="ruby-value str">"Server is not started"</span>
|
456
|
+
199: <span class="ruby-keyword kw">end</span>
|
457
|
+
200:
|
458
|
+
201: <span class="ruby-ivar">@parent_socket</span>.<span class="ruby-identifier">close</span>
|
459
|
+
202: <span class="ruby-ivar">@parent_channel</span> = <span class="ruby-keyword kw">nil</span>
|
460
|
+
203:
|
461
|
+
204: <span class="ruby-comment cmt"># Wait at most 3 seconds for server to exit. If it doesn't do that,</span>
|
462
|
+
205: <span class="ruby-comment cmt"># we kill it. If that doesn't work either, we kill it forcefully with</span>
|
463
|
+
206: <span class="ruby-comment cmt"># SIGKILL.</span>
|
464
|
+
207: <span class="ruby-keyword kw">begin</span>
|
465
|
+
208: <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-value">3</span>) <span class="ruby-keyword kw">do</span>
|
466
|
+
209: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
467
|
+
210: <span class="ruby-keyword kw">end</span>
|
468
|
+
211: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
|
469
|
+
212: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-constant">SERVER_TERMINATION_SIGNAL</span>, <span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
470
|
+
213: <span class="ruby-keyword kw">begin</span>
|
471
|
+
214: <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-identifier">timeout</span>(<span class="ruby-value">3</span>) <span class="ruby-keyword kw">do</span>
|
472
|
+
215: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
473
|
+
216: <span class="ruby-keyword kw">end</span>
|
474
|
+
217: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
|
475
|
+
218: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">kill</span>(<span class="ruby-value str">'SIGKILL'</span>, <span class="ruby-ivar">@pid</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
476
|
+
219: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">waitpid</span>(<span class="ruby-ivar">@pid</span>, <span class="ruby-constant">Process</span><span class="ruby-operator">::</span><span class="ruby-constant">WNOHANG</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
477
|
+
220: <span class="ruby-keyword kw">end</span>
|
478
|
+
221: <span class="ruby-keyword kw">end</span>
|
479
|
+
222: <span class="ruby-keyword kw">end</span>
|
437
480
|
</pre>
|
438
481
|
</div>
|
439
482
|
</div>
|
@@ -441,55 +484,55 @@ will be raised.
|
|
441
484
|
<div class="sectiontitle">Protected Instance methods</div>
|
442
485
|
<div class="method">
|
443
486
|
<div class="title">
|
444
|
-
<a name="
|
487
|
+
<a name="M000129"></a><b>before_fork</b>()
|
445
488
|
</div>
|
446
489
|
<div class="description">
|
447
490
|
<p>
|
448
491
|
A hook which is called when the <a
|
449
|
-
href="AbstractServer.html#
|
450
|
-
forking a <a href="AbstractServer.html#
|
492
|
+
href="AbstractServer.html#M000134">server</a> is being started, just before
|
493
|
+
forking a <a href="AbstractServer.html#M000123">new</a> process. The
|
451
494
|
default implementation does nothing, this method is supposed to be
|
452
495
|
overrided by child classes.
|
453
496
|
</p>
|
454
497
|
</div>
|
455
498
|
<div class="sourcecode">
|
456
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
457
|
-
<div id="
|
499
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000129_source')" id="l_M000129_source">show source</a> ]</p>
|
500
|
+
<div id="M000129_source" class="dyn-source">
|
458
501
|
<pre>
|
459
|
-
<span class="ruby-comment cmt"># File lib/
|
460
|
-
|
461
|
-
|
502
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 237</span>
|
503
|
+
237: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">before_fork</span>
|
504
|
+
238: <span class="ruby-keyword kw">end</span>
|
462
505
|
</pre>
|
463
506
|
</div>
|
464
507
|
</div>
|
465
508
|
</div>
|
466
509
|
<div class="method">
|
467
510
|
<div class="title">
|
468
|
-
<a name="
|
511
|
+
<a name="M000135"></a><b>client</b>()
|
469
512
|
</div>
|
470
513
|
<div class="description">
|
471
514
|
<p>
|
472
515
|
Return the communication channel with the <a
|
473
|
-
href="AbstractServer.html#
|
474
|
-
started the <a href="AbstractServer.html#
|
516
|
+
href="AbstractServer.html#M000135">client</a> (i.e. the parent process that
|
517
|
+
started the <a href="AbstractServer.html#M000134">server</a>). This is a <a
|
475
518
|
href="MessageChannel.html">MessageChannel</a> object.
|
476
519
|
</p>
|
477
520
|
</div>
|
478
521
|
<div class="sourcecode">
|
479
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
480
|
-
<div id="
|
522
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000135_source')" id="l_M000135_source">show source</a> ]</p>
|
523
|
+
<div id="M000135_source" class="dyn-source">
|
481
524
|
<pre>
|
482
|
-
<span class="ruby-comment cmt"># File lib/
|
483
|
-
|
484
|
-
|
485
|
-
|
525
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 282</span>
|
526
|
+
282: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">client</span>
|
527
|
+
283: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@child_channel</span>
|
528
|
+
284: <span class="ruby-keyword kw">end</span>
|
486
529
|
</pre>
|
487
530
|
</div>
|
488
531
|
</div>
|
489
532
|
</div>
|
490
533
|
<div class="method">
|
491
534
|
<div class="title">
|
492
|
-
<a name="
|
535
|
+
<a name="M000132"></a><b>define_message_handler</b>(message_name, handler)
|
493
536
|
</div>
|
494
537
|
<div class="description">
|
495
538
|
<p>
|
@@ -504,20 +547,20 @@ the example in the class description.
|
|
504
547
|
</p>
|
505
548
|
</div>
|
506
549
|
<div class="sourcecode">
|
507
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
508
|
-
<div id="
|
550
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000132_source')" id="l_M000132_source">show source</a> ]</p>
|
551
|
+
<div id="M000132_source" class="dyn-source">
|
509
552
|
<pre>
|
510
|
-
<span class="ruby-comment cmt"># File lib/
|
511
|
-
|
512
|
-
|
513
|
-
|
553
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 257</span>
|
554
|
+
257: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">define_message_handler</span>(<span class="ruby-identifier">message_name</span>, <span class="ruby-identifier">handler</span>)
|
555
|
+
258: <span class="ruby-ivar">@message_handlers</span>[<span class="ruby-identifier">message_name</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">handler</span>
|
556
|
+
259: <span class="ruby-keyword kw">end</span>
|
514
557
|
</pre>
|
515
558
|
</div>
|
516
559
|
</div>
|
517
560
|
</div>
|
518
561
|
<div class="method">
|
519
562
|
<div class="title">
|
520
|
-
<a name="
|
563
|
+
<a name="M000133"></a><b>define_signal_handler</b>(signal, handler)
|
521
564
|
</div>
|
522
565
|
<div class="description">
|
523
566
|
<p>
|
@@ -525,118 +568,118 @@ Define a handler for a signal.
|
|
525
568
|
</p>
|
526
569
|
</div>
|
527
570
|
<div class="sourcecode">
|
528
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
529
|
-
<div id="
|
571
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000133_source')" id="l_M000133_source">show source</a> ]</p>
|
572
|
+
<div id="M000133_source" class="dyn-source">
|
530
573
|
<pre>
|
531
|
-
<span class="ruby-comment cmt"># File lib/
|
532
|
-
|
533
|
-
|
534
|
-
|
574
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 262</span>
|
575
|
+
262: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">define_signal_handler</span>(<span class="ruby-identifier">signal</span>, <span class="ruby-identifier">handler</span>)
|
576
|
+
263: <span class="ruby-ivar">@signal_handlers</span>[<span class="ruby-identifier">signal</span>.<span class="ruby-identifier">to_s</span>] = <span class="ruby-identifier">handler</span>
|
577
|
+
264: <span class="ruby-keyword kw">end</span>
|
535
578
|
</pre>
|
536
579
|
</div>
|
537
580
|
</div>
|
538
581
|
</div>
|
539
582
|
<div class="method">
|
540
583
|
<div class="title">
|
541
|
-
<a name="
|
584
|
+
<a name="M000131"></a><b>finalize_server</b>()
|
542
585
|
</div>
|
543
586
|
<div class="description">
|
544
587
|
<p>
|
545
588
|
A hook which is called when the <a
|
546
|
-
href="AbstractServer.html#
|
589
|
+
href="AbstractServer.html#M000134">server</a> is being stopped. This is
|
547
590
|
called in the child process, after the main loop has been left. The default
|
548
591
|
implementation does nothing, this method is supposed to be overrided by
|
549
592
|
child classes.
|
550
593
|
</p>
|
551
594
|
</div>
|
552
595
|
<div class="sourcecode">
|
553
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
554
|
-
<div id="
|
596
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000131_source')" id="l_M000131_source">show source</a> ]</p>
|
597
|
+
<div id="M000131_source" class="dyn-source">
|
555
598
|
<pre>
|
556
|
-
<span class="ruby-comment cmt"># File lib/
|
557
|
-
|
558
|
-
|
599
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 249</span>
|
600
|
+
249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finalize_server</span>
|
601
|
+
250: <span class="ruby-keyword kw">end</span>
|
559
602
|
</pre>
|
560
603
|
</div>
|
561
604
|
</div>
|
562
605
|
</div>
|
563
606
|
<div class="method">
|
564
607
|
<div class="title">
|
565
|
-
<a name="
|
608
|
+
<a name="M000130"></a><b>initialize_server</b>()
|
566
609
|
</div>
|
567
610
|
<div class="description">
|
568
611
|
<p>
|
569
612
|
A hook which is called when the <a
|
570
|
-
href="AbstractServer.html#
|
613
|
+
href="AbstractServer.html#M000134">server</a> is being started. This is
|
571
614
|
called in the child process, before the main loop is entered. The default
|
572
615
|
implementation does nothing, this method is supposed to be overrided by
|
573
616
|
child classes.
|
574
617
|
</p>
|
575
618
|
</div>
|
576
619
|
<div class="sourcecode">
|
577
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
578
|
-
<div id="
|
620
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000130_source')" id="l_M000130_source">show source</a> ]</p>
|
621
|
+
<div id="M000130_source" class="dyn-source">
|
579
622
|
<pre>
|
580
|
-
<span class="ruby-comment cmt"># File lib/
|
581
|
-
|
582
|
-
|
623
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 243</span>
|
624
|
+
243: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize_server</span>
|
625
|
+
244: <span class="ruby-keyword kw">end</span>
|
583
626
|
</pre>
|
584
627
|
</div>
|
585
628
|
</div>
|
586
629
|
</div>
|
587
630
|
<div class="method">
|
588
631
|
<div class="title">
|
589
|
-
<a name="
|
632
|
+
<a name="M000136"></a><b>quit_main</b>()
|
590
633
|
</div>
|
591
634
|
<div class="description">
|
592
635
|
<p>
|
593
|
-
Tell the main loop to <a href="AbstractServer.html#
|
636
|
+
Tell the main loop to <a href="AbstractServer.html#M000126">stop</a> as
|
594
637
|
soon as possible.
|
595
638
|
</p>
|
596
639
|
</div>
|
597
640
|
<div class="sourcecode">
|
598
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
599
|
-
<div id="
|
641
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000136_source')" id="l_M000136_source">show source</a> ]</p>
|
642
|
+
<div id="M000136_source" class="dyn-source">
|
600
643
|
<pre>
|
601
|
-
<span class="ruby-comment cmt"># File lib/
|
602
|
-
|
603
|
-
|
604
|
-
|
644
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 287</span>
|
645
|
+
287: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">quit_main</span>
|
646
|
+
288: <span class="ruby-ivar">@done</span> = <span class="ruby-keyword kw">true</span>
|
647
|
+
289: <span class="ruby-keyword kw">end</span>
|
605
648
|
</pre>
|
606
649
|
</div>
|
607
650
|
</div>
|
608
651
|
</div>
|
609
652
|
<div class="method">
|
610
653
|
<div class="title">
|
611
|
-
<a name="
|
654
|
+
<a name="M000134"></a><b>server</b>()
|
612
655
|
</div>
|
613
656
|
<div class="description">
|
614
657
|
<p>
|
615
658
|
Return the communication channel with the <a
|
616
|
-
href="AbstractServer.html#
|
659
|
+
href="AbstractServer.html#M000134">server</a>. This is a <a
|
617
660
|
href="MessageChannel.html">MessageChannel</a> object.
|
618
661
|
</p>
|
619
662
|
<p>
|
620
663
|
Raises <a href="AbstractServer/ServerNotStarted.html">ServerNotStarted</a>
|
621
|
-
if the <a href="AbstractServer.html#
|
664
|
+
if the <a href="AbstractServer.html#M000134">server</a> hasn‘t been
|
622
665
|
started yet.
|
623
666
|
</p>
|
624
667
|
<p>
|
625
668
|
This method may only be called in the parent process, and not in the
|
626
|
-
started <a href="AbstractServer.html#
|
669
|
+
started <a href="AbstractServer.html#M000134">server</a> process.
|
627
670
|
</p>
|
628
671
|
</div>
|
629
672
|
<div class="sourcecode">
|
630
|
-
<p class="source-link">[ <a href="javascript:toggleSource('
|
631
|
-
<div id="
|
673
|
+
<p class="source-link">[ <a href="javascript:toggleSource('M000134_source')" id="l_M000134_source">show source</a> ]</p>
|
674
|
+
<div id="M000134_source" class="dyn-source">
|
632
675
|
<pre>
|
633
|
-
<span class="ruby-comment cmt"># File lib/
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
676
|
+
<span class="ruby-comment cmt"># File lib/phusion_passenger/abstract_server.rb, line 273</span>
|
677
|
+
273: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">server</span>
|
678
|
+
274: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">started?</span>
|
679
|
+
275: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ServerNotStarted</span>, <span class="ruby-value str">"Server hasn't been started yet. Please call start() first."</span>
|
680
|
+
276: <span class="ruby-keyword kw">end</span>
|
681
|
+
277: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@parent_channel</span>
|
682
|
+
278: <span class="ruby-keyword kw">end</span>
|
640
683
|
</pre>
|
641
684
|
</div>
|
642
685
|
</div>
|