passenger 3.0.0 → 3.0.1
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 +9 -6
- data/NEWS +50 -0
- data/Rakefile +2 -1
- data/bin/passenger-install-apache2-module +4 -4
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-make-enterprisey +1 -1
- data/build/agents.rb +26 -19
- data/build/apache2.rb +49 -46
- data/build/basics.rb +37 -13
- data/build/common_library.rb +134 -64
- data/build/config.rb +18 -11
- data/build/cplusplus_support.rb +4 -0
- data/build/cxx_tests.rb +26 -12
- data/build/documentation.rb +18 -11
- data/build/integration_tests.rb +18 -11
- data/build/misc.rb +18 -11
- data/build/nginx.rb +27 -19
- data/build/oxt_tests.rb +18 -11
- data/build/packaging.rb +45 -37
- data/build/rpm.rb +98 -0
- data/build/ruby_extension.rb +19 -13
- data/build/ruby_tests.rb +19 -12
- data/build/test_basics.rb +23 -11
- data/debian/README.Debian +15 -0
- data/debian/changelog +185 -0
- data/debian/control +47 -19
- data/debian/copyright +20 -0
- data/debian/libapache2-mod-passenger.install +1 -0
- data/debian/libapache2-mod-passenger.postinst +36 -0
- data/debian/libapache2-mod-passenger.prerm +15 -0
- data/debian/passenger-common.install +4 -0
- data/debian/passenger.conf +4 -0
- data/debian/passenger.load +1 -0
- data/debian/rules +37 -0
- data/debian/watch +3 -0
- data/{misc → dev}/copy_boost_headers.rb +3 -0
- data/{misc → dev}/find_owner_pipe_leaks.rb +0 -0
- data/{misc → dev}/render_error_pages.rb +0 -0
- data/doc/Users guide Apache.html +39 -1
- data/doc/Users guide Apache.txt +40 -0
- data/doc/Users guide Nginx.html +1 -1
- data/doc/Users guide Standalone.html +1 -1
- data/doc/cxxapi/Constants_8h_source.html +1 -1
- data/doc/cxxapi/DirectoryMapper_8h_source.html +6 -22
- data/doc/cxxapi/EventedClient_8h_source.html +572 -468
- data/doc/cxxapi/Exceptions_8h_source.html +142 -129
- data/doc/cxxapi/FileDescriptor_8h_source.html +263 -199
- data/doc/cxxapi/MessageChannel_8h_source.html +686 -770
- data/doc/cxxapi/MessageServer_8h_source.html +1 -1
- data/doc/cxxapi/PoolOptions_8h_source.html +79 -78
- data/doc/cxxapi/ResourceLocator_8h_source.html +105 -55
- data/doc/cxxapi/SafeLibev_8h_source.html +180 -0
- data/doc/cxxapi/ServerInstanceDir_8h_source.html +114 -110
- data/doc/cxxapi/Session_8h_source.html +1 -1
- data/doc/cxxapi/SpawnManager_8h_source.html +208 -208
- data/doc/cxxapi/StaticString_8h_source.html +258 -183
- data/doc/cxxapi/Utils_8h_source.html +71 -54
- data/doc/cxxapi/annotated.html +3 -0
- data/doc/cxxapi/classAgentWatcher.html +2 -2
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +0 -1
- data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +0 -27
- data/doc/cxxapi/classPassenger_1_1EventedClient-members.html +5 -0
- data/doc/cxxapi/classPassenger_1_1EventedClient.html +102 -7
- data/doc/cxxapi/classPassenger_1_1FileDescriptor-members.html +2 -1
- data/doc/cxxapi/classPassenger_1_1FileDescriptor.html +34 -8
- data/doc/cxxapi/classPassenger_1_1FileDescriptorPair-members.html +36 -0
- data/doc/cxxapi/classPassenger_1_1FileDescriptorPair.html +52 -0
- data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +0 -3
- data/doc/cxxapi/classPassenger_1_1MessageChannel.html +0 -120
- data/doc/cxxapi/classPassenger_1_1SafeLibev-members.html +36 -0
- data/doc/cxxapi/classPassenger_1_1SafeLibev.html +51 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -0
- data/doc/cxxapi/classPassenger_1_1SpawnException.html +22 -0
- data/doc/cxxapi/classes.html +14 -14
- data/doc/cxxapi/files.html +2 -0
- data/doc/cxxapi/functions_0x63.html +6 -3
- data/doc/cxxapi/functions_0x64.html +9 -2
- data/doc/cxxapi/functions_0x67.html +6 -9
- data/doc/cxxapi/functions_0x69.html +3 -0
- data/doc/cxxapi/functions_0x77.html +8 -8
- data/doc/cxxapi/functions_eval.html +6 -0
- data/doc/cxxapi/functions_func.html +18 -17
- data/doc/cxxapi/functions_vars.html +8 -0
- data/doc/cxxapi/graph_legend.png +0 -0
- data/doc/cxxapi/group__Core.png +0 -0
- data/doc/cxxapi/group__Hooks.png +0 -0
- data/doc/cxxapi/hierarchy.html +3 -0
- data/doc/cxxapi/inherit__graph__14.map +1 -1
- 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 -3
- 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 +3 -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.map +1 -1
- data/doc/cxxapi/inherit__graph__17.md5 +1 -1
- data/doc/cxxapi/inherit__graph__17.png +0 -0
- data/doc/cxxapi/inherit__graph__18.map +1 -2
- data/doc/cxxapi/inherit__graph__18.md5 +1 -1
- data/doc/cxxapi/inherit__graph__18.png +0 -0
- data/doc/cxxapi/inherit__graph__19.map +2 -1
- data/doc/cxxapi/inherit__graph__19.md5 +1 -1
- data/doc/cxxapi/inherit__graph__19.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__22.map +1 -1
- data/doc/cxxapi/inherit__graph__22.md5 +1 -1
- data/doc/cxxapi/inherit__graph__22.png +0 -0
- data/doc/cxxapi/inherit__graph__23.map +1 -1
- data/doc/cxxapi/inherit__graph__23.md5 +1 -1
- data/doc/cxxapi/inherit__graph__23.png +0 -0
- data/doc/cxxapi/inherit__graph__24.map +1 -1
- data/doc/cxxapi/inherit__graph__24.md5 +1 -1
- data/doc/cxxapi/inherit__graph__24.png +0 -0
- data/doc/cxxapi/inherit__graph__25.map +1 -1
- data/doc/cxxapi/inherit__graph__25.md5 +1 -1
- data/doc/cxxapi/inherit__graph__25.png +0 -0
- data/doc/cxxapi/inherit__graph__26.map +1 -1
- data/doc/cxxapi/inherit__graph__26.md5 +1 -1
- data/doc/cxxapi/inherit__graph__26.png +0 -0
- data/doc/cxxapi/inherit__graph__27.map +1 -1
- data/doc/cxxapi/inherit__graph__27.md5 +1 -1
- data/doc/cxxapi/inherit__graph__27.png +0 -0
- data/doc/cxxapi/inherit__graph__28.map +1 -2
- data/doc/cxxapi/inherit__graph__28.md5 +1 -1
- data/doc/cxxapi/inherit__graph__28.png +0 -0
- data/doc/cxxapi/inherit__graph__29.map +1 -1
- data/doc/cxxapi/inherit__graph__29.md5 +1 -1
- data/doc/cxxapi/inherit__graph__29.png +0 -0
- data/doc/cxxapi/inherit__graph__30.map +1 -1
- data/doc/cxxapi/inherit__graph__30.md5 +1 -1
- data/doc/cxxapi/inherit__graph__30.png +0 -0
- data/doc/cxxapi/inherit__graph__31.map +2 -1
- data/doc/cxxapi/inherit__graph__31.md5 +1 -1
- data/doc/cxxapi/inherit__graph__31.png +0 -0
- data/doc/cxxapi/inherit__graph__32.map +1 -3
- data/doc/cxxapi/inherit__graph__32.md5 +1 -1
- data/doc/cxxapi/inherit__graph__32.png +0 -0
- data/doc/cxxapi/inherit__graph__33.map +1 -1
- data/doc/cxxapi/inherit__graph__33.md5 +1 -1
- data/doc/cxxapi/inherit__graph__33.png +0 -0
- data/doc/cxxapi/inherit__graph__34.map +1 -1
- data/doc/cxxapi/inherit__graph__34.md5 +1 -1
- data/doc/cxxapi/inherit__graph__34.png +0 -0
- data/doc/cxxapi/inherit__graph__35.map +3 -1
- data/doc/cxxapi/inherit__graph__35.md5 +1 -1
- data/doc/cxxapi/inherit__graph__35.png +0 -0
- data/doc/cxxapi/inherit__graph__36.map +1 -1
- data/doc/cxxapi/inherit__graph__36.md5 +1 -1
- data/doc/cxxapi/inherit__graph__36.png +0 -0
- data/doc/cxxapi/inherit__graph__37.map +1 -1
- data/doc/cxxapi/inherit__graph__37.md5 +1 -1
- data/doc/cxxapi/inherit__graph__37.png +0 -0
- data/doc/cxxapi/inherit__graph__38.map +3 -1
- data/doc/cxxapi/inherit__graph__38.md5 +1 -1
- data/doc/cxxapi/inherit__graph__38.png +0 -0
- data/doc/cxxapi/inherit__graph__39.map +3 -1
- data/doc/cxxapi/inherit__graph__39.md5 +1 -1
- data/doc/cxxapi/inherit__graph__39.png +0 -0
- data/doc/cxxapi/inherits.html +33 -24
- data/doc/cxxapi/namespacePassenger.html +52 -0
- data/doc/cxxapi/namespacemembers.html +6 -0
- data/doc/cxxapi/namespacemembers_func.html +6 -0
- data/doc/cxxapi/tree.html +8 -0
- data/ext/apache2/Configuration.cpp +30 -8
- data/ext/apache2/Configuration.hpp +15 -14
- data/ext/apache2/DirectoryMapper.h +0 -16
- data/ext/apache2/Hooks.cpp +30 -29
- data/ext/boost/algorithm/string/detail/case_conv.hpp +6 -6
- data/ext/boost/algorithm/string/detail/find_format.hpp +14 -4
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +13 -3
- data/ext/boost/algorithm/string/detail/find_format_store.hpp +11 -0
- data/ext/boost/algorithm/string/erase.hpp +2 -2
- data/ext/boost/bind/placeholders.hpp +2 -2
- data/ext/boost/concept/detail/backward_compatibility.hpp +16 -0
- data/ext/boost/concept/detail/general.hpp +15 -6
- data/ext/boost/concept/detail/has_constraints.hpp +5 -3
- data/ext/boost/concept/usage.hpp +5 -4
- data/ext/boost/concept_check.hpp +10 -1
- data/ext/boost/config/abi/borland_prefix.hpp +1 -1
- data/ext/boost/config/auto_link.hpp +68 -21
- data/ext/boost/config/compiler/borland.hpp +11 -3
- data/ext/boost/config/compiler/clang.hpp +62 -0
- data/ext/boost/config/compiler/codegear.hpp +21 -7
- data/ext/boost/config/compiler/common_edg.hpp +4 -2
- data/ext/boost/config/compiler/digitalmars.hpp +1 -1
- data/ext/boost/config/compiler/gcc.hpp +46 -7
- data/ext/boost/config/compiler/gcc_xml.hpp +25 -0
- data/ext/boost/config/compiler/intel.hpp +23 -0
- data/ext/boost/config/compiler/kai.hpp +1 -1
- data/ext/boost/config/compiler/metrowerks.hpp +1 -1
- data/ext/boost/config/compiler/nvcc.hpp +86 -0
- data/ext/boost/config/compiler/pgi.hpp +18 -3
- data/ext/boost/config/compiler/sunpro_cc.hpp +19 -5
- data/ext/boost/config/compiler/vacpp.hpp +8 -0
- data/ext/boost/config/compiler/visualc.hpp +27 -11
- data/ext/boost/config/platform/cygwin.hpp +0 -3
- data/ext/boost/config/platform/symbian.hpp +94 -0
- data/ext/boost/config/platform/win32.hpp +8 -1
- data/ext/boost/config/select_compiler_config.hpp +10 -0
- data/ext/boost/config/select_platform_config.hpp +4 -0
- data/ext/boost/config/stdlib/dinkumware.hpp +11 -1
- data/ext/boost/config/stdlib/libcomo.hpp +1 -0
- data/ext/boost/config/stdlib/libstdcpp3.hpp +1 -0
- data/ext/boost/config/stdlib/modena.hpp +1 -0
- data/ext/boost/config/stdlib/msl.hpp +1 -0
- data/ext/boost/config/stdlib/roguewave.hpp +1 -0
- data/ext/boost/config/stdlib/sgi.hpp +1 -0
- data/ext/boost/config/stdlib/stlport.hpp +1 -0
- data/ext/boost/config/stdlib/vacpp.hpp +1 -0
- data/ext/boost/config/suffix.hpp +40 -2
- data/ext/boost/cstdint.hpp +36 -7
- data/ext/boost/date_time/gregorian/conversion.hpp +4 -2
- data/ext/boost/date_time/microsec_time_clock.hpp +7 -7
- data/ext/boost/date_time/posix_time/conversion.hpp +4 -2
- data/ext/boost/date_time/time_facet.hpp +43 -4
- data/ext/boost/detail/endian.hpp +5 -2
- data/ext/boost/detail/lcast_precision.hpp +2 -2
- data/ext/boost/detail/sp_typeinfo.hpp +1 -1
- data/ext/boost/detail/workaround.hpp +5 -0
- data/ext/boost/exception/detail/error_info_impl.hpp +3 -3
- data/ext/boost/exception/detail/exception_ptr.hpp +76 -135
- data/ext/boost/exception/detail/is_output_streamable.hpp +15 -2
- data/ext/boost/exception/detail/type_info.hpp +9 -5
- data/ext/boost/exception/diagnostic_information.hpp +5 -3
- data/ext/boost/exception/exception.hpp +60 -46
- data/ext/boost/exception/info.hpp +47 -14
- data/ext/boost/function/function_base.hpp +4 -4
- data/ext/boost/integer.hpp +4 -0
- data/ext/boost/integer_fwd.hpp +9 -3
- data/ext/boost/iterator/iterator_concepts.hpp +284 -0
- data/ext/boost/iterator/transform_iterator.hpp +0 -1
- data/ext/boost/make_shared.hpp +17 -0
- data/ext/boost/mpl/aux_/config/has_xxx.hpp +4 -3
- data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +2 -6
- data/ext/boost/mpl/aux_/template_arity.hpp +4 -4
- data/ext/boost/mpl/eval_if.hpp +3 -3
- data/ext/boost/mpl/has_xxx.hpp +369 -3
- data/ext/boost/optional/optional.hpp +3 -1
- data/ext/boost/optional/optional_fwd.hpp +1 -1
- data/ext/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
- data/ext/boost/range/algorithm/equal.hpp +188 -0
- data/ext/boost/range/as_literal.hpp +15 -15
- data/ext/boost/range/concepts.hpp +331 -0
- data/ext/boost/range/const_iterator.hpp +7 -4
- data/ext/boost/range/detail/extract_optional_type.hpp +52 -0
- data/ext/boost/range/detail/implementation_help.hpp +7 -7
- data/ext/boost/range/detail/misc_concept.hpp +33 -0
- data/ext/boost/range/iterator.hpp +32 -32
- data/ext/boost/range/iterator_range.hpp +8 -651
- data/ext/boost/range/iterator_range_core.hpp +542 -0
- data/ext/boost/range/iterator_range_io.hpp +93 -0
- data/ext/boost/range/mutable_iterator.hpp +7 -4
- data/ext/boost/range/size.hpp +1 -1
- data/ext/boost/range/size_type.hpp +2 -1
- data/ext/boost/shared_array.hpp +19 -0
- data/ext/boost/smart_ptr/detail/sp_convertible.hpp +2 -2
- data/ext/boost/smart_ptr/detail/yield_k.hpp +1 -1
- data/ext/boost/smart_ptr/make_shared.hpp +508 -0
- data/ext/boost/smart_ptr/shared_array.hpp +147 -0
- data/ext/boost/src/pthread/thread.cpp +16 -21
- data/ext/boost/src/pthread/timeconv.inl +7 -4
- data/ext/boost/thread/barrier.hpp +2 -1
- data/ext/boost/thread/detail/config.hpp +7 -1
- data/ext/boost/thread/detail/platform.hpp +1 -1
- data/ext/boost/thread/detail/thread.hpp +62 -18
- data/ext/boost/thread/detail/thread_group.hpp +5 -2
- data/ext/boost/thread/detail/tss_hooks.hpp +8 -25
- data/ext/boost/thread/future.hpp +45 -34
- data/ext/boost/thread/locks.hpp +184 -55
- data/ext/boost/thread/pthread/condition_variable.hpp +7 -7
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +4 -2
- data/ext/boost/thread/pthread/mutex.hpp +29 -17
- data/ext/boost/thread/pthread/once.hpp +5 -0
- data/ext/boost/thread/pthread/recursive_mutex.hpp +97 -18
- data/ext/boost/thread/pthread/shared_mutex.hpp +1 -1
- data/ext/boost/thread/pthread/thread_heap_alloc.hpp +1 -1
- data/ext/boost/thread/tss.hpp +2 -0
- data/ext/boost/throw_exception.hpp +21 -5
- data/ext/boost/token_functions.hpp +111 -91
- data/ext/boost/type_traits/add_reference.hpp +19 -1
- data/ext/boost/type_traits/function_traits.hpp +2 -2
- data/ext/boost/type_traits/is_const.hpp +24 -5
- data/ext/boost/type_traits/is_convertible.hpp +1 -1
- data/ext/boost/type_traits/is_function.hpp +3 -0
- data/ext/boost/type_traits/is_lvalue_reference.hpp +118 -0
- data/ext/boost/type_traits/is_reference.hpp +8 -81
- data/ext/boost/type_traits/is_rvalue_reference.hpp +29 -0
- data/ext/boost/type_traits/is_same.hpp +2 -2
- data/ext/boost/type_traits/is_volatile.hpp +26 -7
- data/ext/boost/type_traits/remove_const.hpp +12 -0
- data/ext/boost/type_traits/remove_cv.hpp +23 -1
- data/ext/boost/type_traits/remove_reference.hpp +21 -1
- data/ext/boost/type_traits/type_with_alignment.hpp +10 -10
- data/ext/boost/units/detail/utility.hpp +104 -0
- data/ext/boost/utility/compare_pointees.hpp +1 -1
- data/ext/common/AgentsStarter.hpp +151 -161
- data/ext/common/ApplicationPool/Pool.h +16 -4
- data/ext/common/Constants.h +1 -1
- data/ext/common/EventedClient.h +130 -26
- data/ext/common/Exceptions.h +15 -2
- data/ext/common/FileDescriptor.h +76 -12
- data/ext/common/IniFile.h +488 -0
- data/ext/common/LoggingAgent/LoggingServer.h +2 -2
- data/ext/common/LoggingAgent/RemoteSender.h +15 -6
- data/ext/common/MessageChannel.h +17 -101
- data/ext/common/PoolOptions.h +1 -0
- data/ext/common/ResourceLocator.h +78 -28
- data/ext/common/SafeLibev.h +149 -0
- data/ext/common/ServerInstanceDir.h +11 -7
- data/ext/common/Session.h +1 -1
- data/ext/common/SpawnManager.h +14 -14
- data/ext/common/StaticString.h +75 -0
- data/ext/common/Utils.cpp +304 -12
- data/ext/common/Utils.h +17 -0
- data/ext/common/Utils/BufferedIO.h +196 -0
- data/ext/common/Utils/IOUtils.cpp +159 -0
- data/ext/common/Utils/IOUtils.h +118 -1
- data/ext/common/Utils/ProcessMetricsCollector.h +184 -56
- data/ext/common/Utils/StrIntUtils.cpp +45 -11
- data/ext/common/Utils/StrIntUtils.h +8 -5
- data/ext/common/Utils/Timer.h +22 -0
- data/ext/common/Utils/utf8.h +35 -0
- data/ext/common/Utils/utf8/checked.h +324 -0
- data/ext/common/Utils/utf8/core.h +359 -0
- data/ext/common/Utils/utf8/unchecked.h +229 -0
- data/ext/common/Watchdog.cpp +52 -85
- data/ext/libev/config.h +122 -0
- data/ext/nginx/Configuration.c +7 -1
- data/ext/nginx/HelperAgent.cpp +16 -18
- data/ext/nginx/config +6 -4
- data/ext/oxt/system_calls.cpp +10 -0
- data/ext/oxt/system_calls.hpp +2 -0
- data/lib/phusion_passenger.rb +6 -11
- data/lib/phusion_passenger/dependencies.rb +2 -0
- data/lib/phusion_passenger/packaging.rb +5 -5
- data/lib/phusion_passenger/platform_info.rb +88 -0
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +3 -17
- data/lib/phusion_passenger/platform_info/compiler.rb +14 -32
- data/lib/phusion_passenger/platform_info/curl.rb +6 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +107 -0
- data/lib/phusion_passenger/public_api.rb +2 -2
- data/lib/phusion_passenger/rails3_extensions/init.rb +5 -2
- data/lib/phusion_passenger/standalone/command.rb +6 -2
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +2 -2
- data/lib/phusion_passenger/standalone/runtime_installer.rb +17 -5
- data/lib/phusion_passenger/standalone/start_command.rb +12 -12
- data/lib/phusion_passenger/standalone/stop_command.rb +3 -3
- data/lib/phusion_passenger/standalone/utils.rb +6 -2
- data/lib/phusion_passenger/templates/standalone/config.erb +37 -5
- data/lib/phusion_passenger/utils.rb +4 -7
- data/resources/mime.types +73 -0
- data/{misc → resources}/union_station_gateway.crt +0 -0
- data/test/cxx/BufferedIOTest.cpp +364 -0
- data/test/cxx/EventedClientTest.cpp +150 -13
- data/test/cxx/IOUtilsTest.cpp +399 -1
- data/test/cxx/MessageChannelTest.cpp +5 -120
- data/test/cxx/ProcessMetricsCollectorTest.cpp +121 -0
- data/test/cxx/StaticStringTest.cpp +134 -0
- data/test/cxx/UtilsTest.cpp +16 -46
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.cgi +2 -2
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.fcgi +1 -1
- data/test/stub/rails_apps/2.3/mycook/public/dispatch.rb +1 -1
- data/test/stub/rails_apps/3.0/empty/Gemfile.lock +73 -0
- data/test/support/allocate_memory.c +14 -0
- data/test/support/test_helper.rb +3 -0
- metadata +57 -174
- data/bin/passenger-stress-test +0 -345
- data/debian/postinst +0 -24
- data/doc/rdoc/classes/ConditionVariable.html +0 -215
- data/doc/rdoc/classes/Exception.html +0 -120
- data/doc/rdoc/classes/GC.html +0 -113
- data/doc/rdoc/classes/IO.html +0 -221
- data/doc/rdoc/classes/PhusionPassenger.html +0 -397
- data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -180
- data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -647
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -654
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/InvalidPassword.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
- data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
- data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -619
- data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -142
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats.html +0 -368
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats/Process.html +0 -231
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance.html +0 -588
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/CorruptedDirectoryError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/GenerationsAbsentError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Group.html +0 -147
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Process.html +0 -279
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/RoleDeniedError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/StaleDirectoryError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Stats.html +0 -123
- data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/UnsupportedGenerationStructureVersionError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger.html +0 -341
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Log.html +0 -294
- data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/SharedData.html +0 -199
- data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -155
- data/doc/rdoc/classes/PhusionPassenger/AppProcess.html +0 -367
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails.html +0 -95
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner.html +0 -351
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/CGIFixed.html +0 -200
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner.html +0 -410
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/ClassicRails/RequestHandler.html +0 -156
- data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions.html +0 -115
- data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging.html +0 -202
- data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
- data/doc/rdoc/classes/PhusionPassenger/DebugLogging.html +0 -273
- data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
- data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -162
- data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
- data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -673
- data/doc/rdoc/classes/PhusionPassenger/MessageChannel/InvalidHashError.html +0 -92
- data/doc/rdoc/classes/PhusionPassenger/MessageClient.html +0 -415
- data/doc/rdoc/classes/PhusionPassenger/NativeSupportLoader.html +0 -134
- data/doc/rdoc/classes/PhusionPassenger/Packaging.html +0 -129
- data/doc/rdoc/classes/PhusionPassenger/PlatformInfo.html +0 -1809
- data/doc/rdoc/classes/PhusionPassenger/Plugin.html +0 -237
- data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -312
- data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner/Error.html +0 -98
- data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -218
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions.html +0 -114
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging.html +0 -256
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ACExtension.html +0 -139
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ASBenchmarkableExtension.html +0 -118
- data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ExceptionLogger.html +0 -135
- data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -378
- data/doc/rdoc/classes/PhusionPassenger/Standalone.html +0 -111
- data/doc/rdoc/classes/PhusionPassenger/Standalone/AppFinder.html +0 -252
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Command.html +0 -161
- data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile.html +0 -368
- data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile/DisallowedContextError.html +0 -132
- data/doc/rdoc/classes/PhusionPassenger/Standalone/HelpCommand.html +0 -151
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Main.html +0 -189
- data/doc/rdoc/classes/PhusionPassenger/Standalone/PackageRuntimeCommand.html +0 -177
- data/doc/rdoc/classes/PhusionPassenger/Standalone/RuntimeInstaller.html +0 -341
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StartCommand.html +0 -203
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StatusCommand.html +0 -156
- data/doc/rdoc/classes/PhusionPassenger/Standalone/StopCommand.html +0 -168
- data/doc/rdoc/classes/PhusionPassenger/Standalone/Utils.html +0 -86
- data/doc/rdoc/classes/PhusionPassenger/Standalone/VersionCommand.html +0 -135
- data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
- data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -1550
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher.html +0 -204
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/DirInfo.html +0 -171
- data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/FileInfo.html +0 -140
- data/doc/rdoc/classes/PhusionPassenger/Utils/HostsFileParser.html +0 -260
- data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +0 -169
- data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +0 -265
- data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +0 -120
- data/doc/rdoc/classes/PhusionPassenger/Utils/UnseekableSocket.html +0 -561
- data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
- data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
- data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -182
- data/doc/rdoc/classes/Process.html +0 -115
- data/doc/rdoc/classes/Signal.html +0 -139
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -276
- data/doc/rdoc/files/README.html +0 -157
- data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -130
- data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -135
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -128
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/memory_stats_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools/server_instance_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/analytics_logger_rb.html +0 -129
- data/doc/rdoc/files/lib/phusion_passenger/app_process_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/application_spawner_rb.html +0 -141
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/cgi_fixed_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/framework_spawner_rb.html +0 -146
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails/request_handler_rb.html +0 -125
- data/doc/rdoc/files/lib/phusion_passenger/classic_rails_extensions/init_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/debug_logging_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -147
- data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -120
- data/doc/rdoc/files/lib/phusion_passenger/message_client_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/native_support_rb.html +0 -132
- data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/apache_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html +0 -129
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/compiler_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/curl_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/documentation_tools_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/linux_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/operating_system_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/ruby_rb.html +0 -128
- data/doc/rdoc/files/lib/phusion_passenger/platform_info/zlib_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/plugin_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/public_api_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -137
- data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -125
- data/doc/rdoc/files/lib/phusion_passenger/rails3_extensions/init_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -160
- data/doc/rdoc/files/lib/phusion_passenger/standalone/app_finder_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/standalone/command_rb.html +0 -135
- data/doc/rdoc/files/lib/phusion_passenger/standalone/config_file_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/help_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/main_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/package_runtime_command_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/standalone/runtime_installer_rb.html +0 -133
- data/doc/rdoc/files/lib/phusion_passenger/standalone/start_command_rb.html +0 -136
- data/doc/rdoc/files/lib/phusion_passenger/standalone/status_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/stop_command_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/utils_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/standalone/version_command_rb.html +0 -127
- data/doc/rdoc/files/lib/phusion_passenger/utils/file_system_watcher_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/utils/hosts_file_parser_rb.html +0 -120
- data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +0 -100
- data/doc/rdoc/files/lib/phusion_passenger/utils/tmpdir_rb.html +0 -122
- data/doc/rdoc/files/lib/phusion_passenger/utils/unseekable_socket_rb.html +0 -126
- data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -179
- data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -132
- data/doc/rdoc/fr_class_index.html +0 -138
- data/doc/rdoc/fr_file_index.html +0 -108
- data/doc/rdoc/fr_method_index.html +0 -430
- data/doc/rdoc/index.html +0 -26
- data/doc/rdoc/rdoc-style.css +0 -187
- data/ext/apache2/LICENSE-CNRI.TXT +0 -79
- data/ext/common/Utils/BlockingScalar.h +0 -50
- data/ext/common/Utils/FileHandleGuard.h +0 -81
@@ -0,0 +1,147 @@
|
|
1
|
+
#ifndef BOOST_SMART_PTR_SHARED_ARRAY_HPP_INCLUDED
|
2
|
+
#define BOOST_SMART_PTR_SHARED_ARRAY_HPP_INCLUDED
|
3
|
+
|
4
|
+
//
|
5
|
+
// shared_array.hpp
|
6
|
+
//
|
7
|
+
// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
|
8
|
+
// Copyright (c) 2001, 2002 Peter Dimov
|
9
|
+
//
|
10
|
+
// Distributed under the Boost Software License, Version 1.0. (See
|
11
|
+
// accompanying file LICENSE_1_0.txt or copy at
|
12
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
13
|
+
//
|
14
|
+
// See http://www.boost.org/libs/smart_ptr/shared_array.htm for documentation.
|
15
|
+
//
|
16
|
+
|
17
|
+
#include <boost/config.hpp> // for broken compiler workarounds
|
18
|
+
|
19
|
+
#if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
|
20
|
+
#include <boost/smart_ptr/detail/shared_array_nmt.hpp>
|
21
|
+
#else
|
22
|
+
|
23
|
+
#include <memory> // TR1 cyclic inclusion fix
|
24
|
+
|
25
|
+
#include <boost/assert.hpp>
|
26
|
+
#include <boost/checked_delete.hpp>
|
27
|
+
|
28
|
+
#include <boost/smart_ptr/detail/shared_count.hpp>
|
29
|
+
#include <boost/detail/workaround.hpp>
|
30
|
+
|
31
|
+
#include <cstddef> // for std::ptrdiff_t
|
32
|
+
#include <algorithm> // for std::swap
|
33
|
+
#include <functional> // for std::less
|
34
|
+
|
35
|
+
namespace boost
|
36
|
+
{
|
37
|
+
|
38
|
+
//
|
39
|
+
// shared_array
|
40
|
+
//
|
41
|
+
// shared_array extends shared_ptr to arrays.
|
42
|
+
// The array pointed to is deleted when the last shared_array pointing to it
|
43
|
+
// is destroyed or reset.
|
44
|
+
//
|
45
|
+
|
46
|
+
template<class T> class shared_array
|
47
|
+
{
|
48
|
+
private:
|
49
|
+
|
50
|
+
// Borland 5.5.1 specific workarounds
|
51
|
+
typedef checked_array_deleter<T> deleter;
|
52
|
+
typedef shared_array<T> this_type;
|
53
|
+
|
54
|
+
public:
|
55
|
+
|
56
|
+
typedef T element_type;
|
57
|
+
|
58
|
+
explicit shared_array(T * p = 0): px(p), pn(p, deleter())
|
59
|
+
{
|
60
|
+
}
|
61
|
+
|
62
|
+
//
|
63
|
+
// Requirements: D's copy constructor must not throw
|
64
|
+
//
|
65
|
+
// shared_array will release p by calling d(p)
|
66
|
+
//
|
67
|
+
|
68
|
+
template<class D> shared_array(T * p, D d): px(p), pn(p, d)
|
69
|
+
{
|
70
|
+
}
|
71
|
+
|
72
|
+
// generated copy constructor, assignment, destructor are fine
|
73
|
+
|
74
|
+
void reset(T * p = 0)
|
75
|
+
{
|
76
|
+
BOOST_ASSERT(p == 0 || p != px);
|
77
|
+
this_type(p).swap(*this);
|
78
|
+
}
|
79
|
+
|
80
|
+
template <class D> void reset(T * p, D d)
|
81
|
+
{
|
82
|
+
this_type(p, d).swap(*this);
|
83
|
+
}
|
84
|
+
|
85
|
+
T & operator[] (std::ptrdiff_t i) const // never throws
|
86
|
+
{
|
87
|
+
BOOST_ASSERT(px != 0);
|
88
|
+
BOOST_ASSERT(i >= 0);
|
89
|
+
return px[i];
|
90
|
+
}
|
91
|
+
|
92
|
+
T * get() const // never throws
|
93
|
+
{
|
94
|
+
return px;
|
95
|
+
}
|
96
|
+
|
97
|
+
// implicit conversion to "bool"
|
98
|
+
#include <boost/smart_ptr/detail/operator_bool.hpp>
|
99
|
+
|
100
|
+
bool unique() const // never throws
|
101
|
+
{
|
102
|
+
return pn.unique();
|
103
|
+
}
|
104
|
+
|
105
|
+
long use_count() const // never throws
|
106
|
+
{
|
107
|
+
return pn.use_count();
|
108
|
+
}
|
109
|
+
|
110
|
+
void swap(shared_array<T> & other) // never throws
|
111
|
+
{
|
112
|
+
std::swap(px, other.px);
|
113
|
+
pn.swap(other.pn);
|
114
|
+
}
|
115
|
+
|
116
|
+
private:
|
117
|
+
|
118
|
+
T * px; // contained pointer
|
119
|
+
detail::shared_count pn; // reference counter
|
120
|
+
|
121
|
+
}; // shared_array
|
122
|
+
|
123
|
+
template<class T> inline bool operator==(shared_array<T> const & a, shared_array<T> const & b) // never throws
|
124
|
+
{
|
125
|
+
return a.get() == b.get();
|
126
|
+
}
|
127
|
+
|
128
|
+
template<class T> inline bool operator!=(shared_array<T> const & a, shared_array<T> const & b) // never throws
|
129
|
+
{
|
130
|
+
return a.get() != b.get();
|
131
|
+
}
|
132
|
+
|
133
|
+
template<class T> inline bool operator<(shared_array<T> const & a, shared_array<T> const & b) // never throws
|
134
|
+
{
|
135
|
+
return std::less<T*>()(a.get(), b.get());
|
136
|
+
}
|
137
|
+
|
138
|
+
template<class T> void swap(shared_array<T> & a, shared_array<T> & b) // never throws
|
139
|
+
{
|
140
|
+
a.swap(b);
|
141
|
+
}
|
142
|
+
|
143
|
+
} // namespace boost
|
144
|
+
|
145
|
+
#endif // #if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
|
146
|
+
|
147
|
+
#endif // #ifndef BOOST_SMART_PTR_SHARED_ARRAY_HPP_INCLUDED
|
@@ -13,6 +13,7 @@
|
|
13
13
|
#include <boost/thread/locks.hpp>
|
14
14
|
#include <boost/thread/once.hpp>
|
15
15
|
#include <boost/thread/tss.hpp>
|
16
|
+
#include <boost/throw_exception.hpp>
|
16
17
|
#ifdef __linux__
|
17
18
|
#include <sys/sysinfo.h>
|
18
19
|
#elif defined(__APPLE__) || defined(__FreeBSD__)
|
@@ -75,7 +76,7 @@ namespace boost
|
|
75
76
|
{
|
76
77
|
current=next;
|
77
78
|
++next;
|
78
|
-
if(current->second.func && current->second.value)
|
79
|
+
if(current->second.func && (current->second.value!=0))
|
79
80
|
{
|
80
81
|
(*current->second.func)(current->second.value);
|
81
82
|
}
|
@@ -201,7 +202,7 @@ namespace boost
|
|
201
202
|
if (res != 0)
|
202
203
|
{
|
203
204
|
thread_info->self.reset();
|
204
|
-
|
205
|
+
boost::throw_exception(thread_resource_error("Cannot create a thread", res));
|
205
206
|
}
|
206
207
|
}
|
207
208
|
|
@@ -210,15 +211,14 @@ namespace boost
|
|
210
211
|
detach();
|
211
212
|
}
|
212
213
|
|
213
|
-
detail::thread_data_ptr thread::get_thread_info() const
|
214
|
+
detail::thread_data_ptr thread::get_thread_info BOOST_PREVENT_MACRO_SUBSTITUTION () const
|
214
215
|
{
|
215
|
-
lock_guard<mutex> l(thread_info_mutex);
|
216
216
|
return thread_info;
|
217
217
|
}
|
218
218
|
|
219
219
|
void thread::join()
|
220
220
|
{
|
221
|
-
detail::thread_data_ptr const local_thread_info=get_thread_info();
|
221
|
+
detail::thread_data_ptr const local_thread_info=(get_thread_info)();
|
222
222
|
if(local_thread_info)
|
223
223
|
{
|
224
224
|
bool do_join=false;
|
@@ -252,7 +252,6 @@ namespace boost
|
|
252
252
|
local_thread_info->done_condition.notify_all();
|
253
253
|
}
|
254
254
|
|
255
|
-
lock_guard<mutex> l1(thread_info_mutex);
|
256
255
|
if(thread_info==local_thread_info)
|
257
256
|
{
|
258
257
|
thread_info.reset();
|
@@ -262,7 +261,7 @@ namespace boost
|
|
262
261
|
|
263
262
|
bool thread::timed_join(system_time const& wait_until)
|
264
263
|
{
|
265
|
-
detail::thread_data_ptr const local_thread_info=get_thread_info();
|
264
|
+
detail::thread_data_ptr const local_thread_info=(get_thread_info)();
|
266
265
|
if(local_thread_info)
|
267
266
|
{
|
268
267
|
bool do_join=false;
|
@@ -299,7 +298,6 @@ namespace boost
|
|
299
298
|
local_thread_info->done_condition.notify_all();
|
300
299
|
}
|
301
300
|
|
302
|
-
lock_guard<mutex> l1(thread_info_mutex);
|
303
301
|
if(thread_info==local_thread_info)
|
304
302
|
{
|
305
303
|
thread_info.reset();
|
@@ -310,17 +308,14 @@ namespace boost
|
|
310
308
|
|
311
309
|
bool thread::joinable() const
|
312
310
|
{
|
313
|
-
return get_thread_info();
|
311
|
+
return (get_thread_info)();
|
314
312
|
}
|
315
313
|
|
316
314
|
|
317
315
|
void thread::detach()
|
318
316
|
{
|
319
317
|
detail::thread_data_ptr local_thread_info;
|
320
|
-
|
321
|
-
lock_guard<mutex> l1(thread_info_mutex);
|
322
|
-
thread_info.swap(local_thread_info);
|
323
|
-
}
|
318
|
+
thread_info.swap(local_thread_info);
|
324
319
|
|
325
320
|
if(local_thread_info)
|
326
321
|
{
|
@@ -395,8 +390,6 @@ namespace boost
|
|
395
390
|
{
|
396
391
|
#if defined(PTW32_VERSION) || defined(__hpux)
|
397
392
|
return pthread_num_processors_np();
|
398
|
-
#elif defined(_GNU_SOURCE)
|
399
|
-
return get_nprocs();
|
400
393
|
#elif defined(__APPLE__) || defined(__FreeBSD__)
|
401
394
|
int count;
|
402
395
|
size_t size=sizeof(count);
|
@@ -404,6 +397,8 @@ namespace boost
|
|
404
397
|
#elif defined(BOOST_HAS_UNISTD_H) && defined(_SC_NPROCESSORS_ONLN)
|
405
398
|
int const count=sysconf(_SC_NPROCESSORS_ONLN);
|
406
399
|
return (count>0)?count:0;
|
400
|
+
#elif defined(_GNU_SOURCE)
|
401
|
+
return get_nprocs();
|
407
402
|
#else
|
408
403
|
return 0;
|
409
404
|
#endif
|
@@ -411,7 +406,7 @@ namespace boost
|
|
411
406
|
|
412
407
|
thread::id thread::get_id() const
|
413
408
|
{
|
414
|
-
detail::thread_data_ptr const local_thread_info=get_thread_info();
|
409
|
+
detail::thread_data_ptr const local_thread_info=(get_thread_info)();
|
415
410
|
if(local_thread_info)
|
416
411
|
{
|
417
412
|
return id(local_thread_info);
|
@@ -424,7 +419,7 @@ namespace boost
|
|
424
419
|
|
425
420
|
void thread::interrupt()
|
426
421
|
{
|
427
|
-
detail::thread_data_ptr const local_thread_info=get_thread_info();
|
422
|
+
detail::thread_data_ptr const local_thread_info=(get_thread_info)();
|
428
423
|
if(local_thread_info)
|
429
424
|
{
|
430
425
|
lock_guard<mutex> lk(local_thread_info->data_mutex);
|
@@ -438,7 +433,7 @@ namespace boost
|
|
438
433
|
|
439
434
|
bool thread::interruption_requested() const
|
440
435
|
{
|
441
|
-
detail::thread_data_ptr const local_thread_info=get_thread_info();
|
436
|
+
detail::thread_data_ptr const local_thread_info=(get_thread_info)();
|
442
437
|
if(local_thread_info)
|
443
438
|
{
|
444
439
|
lock_guard<mutex> lk(local_thread_info->data_mutex);
|
@@ -452,7 +447,7 @@ namespace boost
|
|
452
447
|
|
453
448
|
thread::native_handle_type thread::native_handle()
|
454
449
|
{
|
455
|
-
detail::thread_data_ptr const local_thread_info=get_thread_info();
|
450
|
+
detail::thread_data_ptr const local_thread_info=(get_thread_info)();
|
456
451
|
if(local_thread_info)
|
457
452
|
{
|
458
453
|
lock_guard<mutex> lk(local_thread_info->data_mutex);
|
@@ -596,11 +591,11 @@ namespace boost
|
|
596
591
|
{
|
597
592
|
if(tss_data_node* const current_node=find_tss_data(key))
|
598
593
|
{
|
599
|
-
if(cleanup_existing && current_node->func && current_node->value)
|
594
|
+
if(cleanup_existing && current_node->func && (current_node->value!=0))
|
600
595
|
{
|
601
596
|
(*current_node->func)(current_node->value);
|
602
597
|
}
|
603
|
-
if(func || tss_data)
|
598
|
+
if(func || (tss_data!=0))
|
604
599
|
{
|
605
600
|
current_node->func=func;
|
606
601
|
current_node->value=tss_data;
|
@@ -1,11 +1,14 @@
|
|
1
1
|
// Copyright (C) 2001-2003
|
2
2
|
// William E. Kempf
|
3
|
+
// Copyright (C) 2009 Anthony Williams
|
3
4
|
//
|
4
5
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
6
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
7
|
|
7
8
|
// boostinspect:nounnamed
|
8
9
|
|
10
|
+
#include <boost/assert.hpp>
|
11
|
+
|
9
12
|
namespace {
|
10
13
|
const int MILLISECONDS_PER_SECOND = 1000;
|
11
14
|
const int NANOSECONDS_PER_SECOND = 1000000000;
|
@@ -18,7 +21,7 @@ inline void to_time(int milliseconds, boost::xtime& xt)
|
|
18
21
|
{
|
19
22
|
int res = 0;
|
20
23
|
res = boost::xtime_get(&xt, boost::TIME_UTC);
|
21
|
-
|
24
|
+
BOOST_ASSERT(res == boost::TIME_UTC);
|
22
25
|
|
23
26
|
xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
|
24
27
|
xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
|
@@ -55,7 +58,7 @@ inline void to_timespec_duration(const boost::xtime& xt, timespec& ts)
|
|
55
58
|
boost::xtime cur;
|
56
59
|
int res = 0;
|
57
60
|
res = boost::xtime_get(&cur, boost::TIME_UTC);
|
58
|
-
|
61
|
+
BOOST_ASSERT(res == boost::TIME_UTC);
|
59
62
|
|
60
63
|
if (boost::xtime_cmp(xt, cur) <= 0)
|
61
64
|
{
|
@@ -86,7 +89,7 @@ inline void to_duration(boost::xtime xt, int& milliseconds)
|
|
86
89
|
boost::xtime cur;
|
87
90
|
int res = 0;
|
88
91
|
res = boost::xtime_get(&cur, boost::TIME_UTC);
|
89
|
-
|
92
|
+
BOOST_ASSERT(res == boost::TIME_UTC);
|
90
93
|
|
91
94
|
if (boost::xtime_cmp(xt, cur) <= 0)
|
92
95
|
milliseconds = 0;
|
@@ -108,7 +111,7 @@ inline void to_microduration(boost::xtime xt, int& microseconds)
|
|
108
111
|
boost::xtime cur;
|
109
112
|
int res = 0;
|
110
113
|
res = boost::xtime_get(&cur, boost::TIME_UTC);
|
111
|
-
|
114
|
+
BOOST_ASSERT(res == boost::TIME_UTC);
|
112
115
|
|
113
116
|
if (boost::xtime_cmp(xt, cur) <= 0)
|
114
117
|
microseconds = 0;
|
@@ -9,6 +9,7 @@
|
|
9
9
|
#define BOOST_BARRIER_JDM030602_HPP
|
10
10
|
|
11
11
|
#include <boost/thread/detail/config.hpp>
|
12
|
+
#include <boost/throw_exception.hpp>
|
12
13
|
|
13
14
|
#include <boost/thread/mutex.hpp>
|
14
15
|
#include <boost/thread/condition_variable.hpp>
|
@@ -27,7 +28,7 @@ namespace boost
|
|
27
28
|
: m_threshold(count), m_count(count), m_generation(0)
|
28
29
|
{
|
29
30
|
if (count == 0)
|
30
|
-
|
31
|
+
boost::throw_exception(std::invalid_argument("count cannot be zero."));
|
31
32
|
}
|
32
33
|
|
33
34
|
bool wait()
|
@@ -19,8 +19,14 @@
|
|
19
19
|
|
20
20
|
#include "platform.hpp"
|
21
21
|
|
22
|
+
// provided for backwards compatibility, since this
|
23
|
+
// macro was used for several releases by mistake.
|
24
|
+
#if defined(BOOST_THREAD_DYN_DLL)
|
25
|
+
# define BOOST_THREAD_DYN_LINK
|
26
|
+
#endif
|
27
|
+
|
22
28
|
// compatibility with the rest of Boost's auto-linking code:
|
23
|
-
#if defined(
|
29
|
+
#if defined(BOOST_THREAD_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
|
24
30
|
# undef BOOST_THREAD_USE_LIB
|
25
31
|
# define BOOST_THREAD_USE_DLL
|
26
32
|
#endif
|
@@ -29,7 +29,7 @@
|
|
29
29
|
# define BOOST_THREAD_HPUX
|
30
30
|
#elif defined(__CYGWIN__)
|
31
31
|
# define BOOST_THREAD_CYGWIN
|
32
|
-
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
32
|
+
#elif (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(BOOST_DISABLE_WIN32)
|
33
33
|
# define BOOST_THREAD_WIN32
|
34
34
|
#elif defined(__BEOS__)
|
35
35
|
# define BOOST_THREAD_BEOS
|
@@ -3,10 +3,12 @@
|
|
3
3
|
// Distributed under the Boost Software License, Version 1.0. (See
|
4
4
|
// accompanying file LICENSE_1_0.txt or copy at
|
5
5
|
// http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
// (C) Copyright 2007-
|
6
|
+
// (C) Copyright 2007-10 Anthony Williams
|
7
7
|
|
8
8
|
#include <boost/thread/exceptions.hpp>
|
9
|
+
#ifndef BOOST_NO_IOSTREAM
|
9
10
|
#include <ostream>
|
11
|
+
#endif
|
10
12
|
#include <boost/thread/detail/move.hpp>
|
11
13
|
#include <boost/thread/mutex.hpp>
|
12
14
|
#include <boost/thread/xtime.hpp>
|
@@ -39,10 +41,13 @@ namespace boost
|
|
39
41
|
public detail::thread_data_base
|
40
42
|
{
|
41
43
|
public:
|
42
|
-
#
|
44
|
+
#ifndef BOOST_NO_RVALUE_REFERENCES
|
43
45
|
thread_data(F&& f_):
|
44
46
|
f(static_cast<F&&>(f_))
|
45
47
|
{}
|
48
|
+
thread_data(F& f_):
|
49
|
+
f(f_)
|
50
|
+
{}
|
46
51
|
#else
|
47
52
|
thread_data(F f_):
|
48
53
|
f(f_)
|
@@ -110,14 +115,13 @@ namespace boost
|
|
110
115
|
|
111
116
|
void release_handle();
|
112
117
|
|
113
|
-
mutable boost::mutex thread_info_mutex;
|
114
118
|
detail::thread_data_ptr thread_info;
|
115
119
|
|
116
120
|
explicit thread(detail::thread_data_ptr data);
|
117
121
|
|
118
|
-
detail::thread_data_ptr get_thread_info() const;
|
122
|
+
detail::thread_data_ptr get_thread_info BOOST_PREVENT_MACRO_SUBSTITUTION () const;
|
119
123
|
|
120
|
-
#
|
124
|
+
#ifndef BOOST_NO_RVALUE_REFERENCES
|
121
125
|
template<typename F>
|
122
126
|
static inline detail::thread_data_ptr make_thread_info(F&& f)
|
123
127
|
{
|
@@ -125,7 +129,7 @@ namespace boost
|
|
125
129
|
}
|
126
130
|
static inline detail::thread_data_ptr make_thread_info(void (*f)())
|
127
131
|
{
|
128
|
-
return detail::thread_data_ptr(detail::heap_new<detail::thread_data<void(*)()> >(f));
|
132
|
+
return detail::thread_data_ptr(detail::heap_new<detail::thread_data<void(*)()> >(static_cast<void(*&&)()>(f)));
|
129
133
|
}
|
130
134
|
#else
|
131
135
|
template<typename F>
|
@@ -139,8 +143,9 @@ namespace boost
|
|
139
143
|
return detail::thread_data_ptr(detail::heap_new<detail::thread_data<F> >(f));
|
140
144
|
}
|
141
145
|
|
146
|
+
#endif
|
142
147
|
struct dummy;
|
143
|
-
|
148
|
+
|
144
149
|
protected:
|
145
150
|
template <class F>
|
146
151
|
void set_thread_main_function(F f)
|
@@ -150,22 +155,29 @@ namespace boost
|
|
150
155
|
|
151
156
|
void start_thread(unsigned int stack_size = 0);
|
152
157
|
|
153
|
-
|
154
|
-
#endif
|
155
158
|
public:
|
156
|
-
#
|
159
|
+
#if BOOST_WORKAROUND(__SUNPRO_CC, < 0x5100)
|
157
160
|
thread(const volatile thread&);
|
158
161
|
#endif
|
159
162
|
thread();
|
160
163
|
virtual ~thread();
|
161
164
|
|
162
|
-
#
|
165
|
+
#ifndef BOOST_NO_RVALUE_REFERENCES
|
166
|
+
#ifdef BOOST_MSVC
|
167
|
+
template <class F>
|
168
|
+
explicit thread(F f,typename disable_if<boost::is_convertible<F&,detail::thread_move_t<F> >, dummy* >::type=0):
|
169
|
+
thread_info(make_thread_info(static_cast<F&&>(f)))
|
170
|
+
{
|
171
|
+
start_thread();
|
172
|
+
}
|
173
|
+
#else
|
163
174
|
template <class F>
|
164
175
|
thread(F&& f, unsigned int stack_size = 0):
|
165
176
|
thread_info(make_thread_info(static_cast<F&&>(f)))
|
166
177
|
{
|
167
178
|
start_thread(stack_size);
|
168
179
|
}
|
180
|
+
#endif
|
169
181
|
|
170
182
|
thread(thread&& other)
|
171
183
|
{
|
@@ -214,7 +226,7 @@ namespace boost
|
|
214
226
|
x->thread_info.reset();
|
215
227
|
}
|
216
228
|
|
217
|
-
#
|
229
|
+
#if BOOST_WORKAROUND(__SUNPRO_CC, < 0x5100)
|
218
230
|
thread& operator=(thread x)
|
219
231
|
{
|
220
232
|
swap(x);
|
@@ -352,10 +364,14 @@ namespace boost
|
|
352
364
|
return lhs.swap(rhs);
|
353
365
|
}
|
354
366
|
|
355
|
-
#
|
367
|
+
#ifndef BOOST_NO_RVALUE_REFERENCES
|
368
|
+
inline thread&& move(thread& t)
|
369
|
+
{
|
370
|
+
return static_cast<thread&&>(t);
|
371
|
+
}
|
356
372
|
inline thread&& move(thread&& t)
|
357
373
|
{
|
358
|
-
return t;
|
374
|
+
return static_cast<thread&&>(t);
|
359
375
|
}
|
360
376
|
#else
|
361
377
|
inline detail::thread_move_t<thread> move(detail::thread_move_t<thread> t)
|
@@ -387,7 +403,7 @@ namespace boost
|
|
387
403
|
thread_data(thread_data_)
|
388
404
|
{}
|
389
405
|
friend class thread;
|
390
|
-
friend id this_thread::get_id();
|
406
|
+
friend id BOOST_THREAD_DECL this_thread::get_id();
|
391
407
|
public:
|
392
408
|
id():
|
393
409
|
thread_data()
|
@@ -423,6 +439,8 @@ namespace boost
|
|
423
439
|
return !(thread_data<y.thread_data);
|
424
440
|
}
|
425
441
|
|
442
|
+
#ifndef BOOST_NO_IOSTREAM
|
443
|
+
#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
426
444
|
template<class charT, class traits>
|
427
445
|
friend std::basic_ostream<charT, traits>&
|
428
446
|
operator<<(std::basic_ostream<charT, traits>& os, const id& x)
|
@@ -436,8 +454,34 @@ namespace boost
|
|
436
454
|
return os<<"{Not-any-thread}";
|
437
455
|
}
|
438
456
|
}
|
457
|
+
#else
|
458
|
+
template<class charT, class traits>
|
459
|
+
std::basic_ostream<charT, traits>&
|
460
|
+
print(std::basic_ostream<charT, traits>& os)
|
461
|
+
{
|
462
|
+
if(thread_data)
|
463
|
+
{
|
464
|
+
return os<<thread_data;
|
465
|
+
}
|
466
|
+
else
|
467
|
+
{
|
468
|
+
return os<<"{Not-any-thread}";
|
469
|
+
}
|
470
|
+
}
|
471
|
+
|
472
|
+
#endif
|
473
|
+
#endif
|
439
474
|
};
|
440
475
|
|
476
|
+
#if !defined(BOOST_NO_IOSTREAM) && defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
|
477
|
+
template<class charT, class traits>
|
478
|
+
std::basic_ostream<charT, traits>&
|
479
|
+
operator<<(std::basic_ostream<charT, traits>& os, const thread::id& x)
|
480
|
+
{
|
481
|
+
return x.print(os);
|
482
|
+
}
|
483
|
+
#endif
|
484
|
+
|
441
485
|
inline bool thread::operator==(const thread& other) const
|
442
486
|
{
|
443
487
|
return get_id()==other.get_id();
|
@@ -454,7 +498,7 @@ namespace boost
|
|
454
498
|
{
|
455
499
|
virtual ~thread_exit_function_base()
|
456
500
|
{}
|
457
|
-
virtual void operator()()
|
501
|
+
virtual void operator()()=0;
|
458
502
|
};
|
459
503
|
|
460
504
|
template<typename F>
|
@@ -467,13 +511,13 @@ namespace boost
|
|
467
511
|
f(f_)
|
468
512
|
{}
|
469
513
|
|
470
|
-
void operator()()
|
514
|
+
void operator()()
|
471
515
|
{
|
472
516
|
f();
|
473
517
|
}
|
474
518
|
};
|
475
519
|
|
476
|
-
void add_thread_exit_function(thread_exit_function_base*);
|
520
|
+
void BOOST_THREAD_DECL add_thread_exit_function(thread_exit_function_base*);
|
477
521
|
}
|
478
522
|
|
479
523
|
namespace this_thread
|