passenger 4.0.20 → 4.0.21
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.
- checksums.yaml +8 -8
- checksums.yaml.gz.asc +7 -7
- data.tar.gz.asc +7 -7
- data/.gitignore +1 -0
- data/.travis.yml +1 -1
- data/NEWS +15 -0
- data/README.md +5 -3
- data/Rakefile +1 -0
- data/bin/passenger-config +1 -5
- data/bin/passenger-install-apache2-module +53 -5
- data/bin/passenger-install-nginx-module +19 -6
- data/bin/passenger-memory-stats +3 -3
- data/build/agents.rb +11 -8
- data/build/apache2.rb +9 -5
- data/build/basics.rb +15 -21
- data/build/common_library.rb +16 -6
- data/build/cplusplus_support.rb +5 -5
- data/build/cxx_tests.rb +3 -3
- data/build/documentation.rb +1 -1
- data/build/misc.rb +4 -37
- data/build/node_tests.rb +29 -0
- data/build/oxt_tests.rb +1 -1
- data/build/packaging.rb +29 -10
- data/build/preprocessor.rb +2 -1
- data/build/test_basics.rb +15 -6
- data/debian.template/locations.ini.template +1 -0
- data/debian.template/passenger.install.template +1 -0
- data/dev/copy_boost_headers.rb +7 -3
- data/dev/run_travis.sh +32 -16
- data/doc/Users guide Apache.idmap.txt +22 -34
- data/doc/Users guide Apache.txt +20 -234
- data/doc/Users guide Nginx.idmap.txt +84 -66
- data/doc/Users guide Nginx.txt +50 -1
- data/doc/Users guide Standalone.idmap.txt +74 -0
- data/doc/Users guide Standalone.txt +22 -9
- data/doc/Users guide.txt +51 -0
- data/doc/users_guide_snippets/environment_variables.txt +0 -3
- data/doc/users_guide_snippets/installation.txt +337 -380
- data/doc/users_guide_snippets/installation/run_installer.txt +58 -0
- data/doc/users_guide_snippets/installation/verify_running_epilogue.txt +6 -0
- data/doc/users_guide_snippets/support_information.txt +2 -9
- data/doc/users_guide_snippets/troubleshooting/default.txt +112 -0
- data/doc/users_guide_snippets/troubleshooting/rails.txt +56 -0
- data/doc/users_guide_snippets/where_to_get_support.txt +9 -0
- data/ext/apache2/Bucket.h +1 -1
- data/ext/apache2/Configuration.hpp +0 -44
- data/ext/apache2/CreateDirConfig.cpp +1 -1
- data/ext/apache2/CreateDirConfig.cpp.erb +1 -1
- data/ext/apache2/Hooks.cpp +28 -21
- data/ext/apache2/MergeDirConfig.cpp +1 -0
- data/ext/apache2/MergeDirConfig.cpp.erb +1 -1
- data/ext/apache2/SetHeaders.cpp +73 -0
- data/ext/apache2/SetHeaders.cpp.erb +88 -0
- data/ext/boost/algorithm/string/detail/find_format.hpp +5 -5
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +5 -5
- data/ext/boost/algorithm/string/detail/finder.hpp +1 -1
- data/ext/boost/algorithm/string/formatter.hpp +2 -2
- data/ext/boost/assert.hpp +6 -1
- data/ext/boost/atomic.hpp +18 -0
- data/ext/boost/atomic/atomic.hpp +241 -0
- data/ext/boost/atomic/detail/base.hpp +585 -0
- data/ext/boost/atomic/detail/cas32strong.hpp +885 -0
- data/ext/boost/atomic/detail/cas32weak.hpp +947 -0
- data/ext/boost/atomic/detail/cas64strong.hpp +443 -0
- data/ext/boost/atomic/detail/config.hpp +54 -0
- data/ext/boost/atomic/detail/gcc-alpha.hpp +368 -0
- data/ext/boost/atomic/detail/gcc-armv6plus.hpp +252 -0
- data/ext/boost/atomic/detail/gcc-cas.hpp +157 -0
- data/ext/boost/atomic/detail/gcc-ppc.hpp +2850 -0
- data/ext/boost/atomic/detail/gcc-sparcv9.hpp +1259 -0
- data/ext/boost/atomic/detail/gcc-x86.hpp +1766 -0
- data/ext/boost/atomic/detail/generic-cas.hpp +206 -0
- data/ext/boost/atomic/detail/interlocked.hpp +200 -0
- data/ext/boost/atomic/detail/linux-arm.hpp +189 -0
- data/ext/boost/atomic/detail/lockpool.hpp +97 -0
- data/ext/boost/atomic/detail/platform.hpp +62 -0
- data/ext/boost/atomic/detail/type-classification.hpp +45 -0
- data/ext/boost/chrono/config.hpp +8 -3
- data/ext/boost/chrono/duration.hpp +9 -10
- data/ext/boost/chrono/system_clocks.hpp +1 -1
- data/ext/boost/chrono/time_point.hpp +4 -3
- data/ext/boost/config/auto_link.hpp +53 -52
- data/ext/boost/config/compiler/borland.hpp +1 -0
- data/ext/boost/config/compiler/clang.hpp +24 -1
- data/ext/boost/config/compiler/codegear.hpp +1 -0
- data/ext/boost/config/compiler/common_edg.hpp +1 -0
- data/ext/boost/config/compiler/cray.hpp +1 -0
- data/ext/boost/config/compiler/digitalmars.hpp +1 -0
- data/ext/boost/config/compiler/gcc.hpp +29 -3
- data/ext/boost/config/compiler/gcc_xml.hpp +2 -1
- data/ext/boost/config/compiler/hp_acc.hpp +1 -0
- data/ext/boost/config/compiler/intel.hpp +1 -1
- data/ext/boost/config/compiler/metrowerks.hpp +1 -0
- data/ext/boost/config/compiler/mpw.hpp +1 -0
- data/ext/boost/config/compiler/pathscale.hpp +1 -0
- data/ext/boost/config/compiler/pgi.hpp +1 -0
- data/ext/boost/config/compiler/sunpro_cc.hpp +1 -0
- data/ext/boost/config/compiler/vacpp.hpp +3 -2
- data/ext/boost/config/compiler/visualc.hpp +25 -11
- data/ext/boost/config/platform/vxworks.hpp +353 -15
- data/ext/boost/config/select_compiler_config.hpp +4 -4
- data/ext/boost/config/stdlib/dinkumware.hpp +10 -3
- data/ext/boost/config/stdlib/libstdcpp3.hpp +2 -1
- data/ext/boost/config/suffix.hpp +45 -19
- data/ext/boost/date_time/format_date_parser.hpp +1 -11
- data/ext/boost/date_time/strings_from_facet.hpp +5 -3
- data/ext/boost/detail/atomic_redef_macros.hpp +19 -0
- data/ext/boost/detail/atomic_undef_macros.hpp +39 -0
- data/ext/boost/detail/endian.hpp +52 -4
- data/ext/boost/detail/scoped_enum_emulation.hpp +10 -10
- data/ext/boost/detail/select_type.hpp +36 -0
- data/ext/boost/exception/current_exception_cast.hpp +1 -1
- data/ext/boost/exception/detail/error_info_impl.hpp +3 -5
- data/ext/boost/exception/detail/exception_ptr.hpp +3 -3
- data/ext/boost/exception/detail/is_output_streamable.hpp +1 -1
- data/ext/boost/exception/detail/object_hex_dump.hpp +1 -1
- data/ext/boost/exception/detail/type_info.hpp +1 -1
- data/ext/boost/exception/diagnostic_information.hpp +15 -14
- data/ext/boost/exception/exception.hpp +1 -1
- data/ext/boost/exception/get_error_info.hpp +1 -1
- data/ext/boost/exception/info.hpp +12 -13
- data/ext/boost/exception/to_string.hpp +6 -1
- data/ext/boost/exception/to_string_stub.hpp +9 -1
- data/ext/boost/foreach.hpp +5 -5
- data/ext/boost/function/function_template.hpp +6 -6
- data/ext/boost/functional/hash/detail/float_functions.hpp +90 -0
- data/ext/boost/functional/hash/detail/hash_float.hpp +11 -2
- data/ext/boost/functional/hash/extensions.hpp +14 -2
- data/ext/boost/functional/hash/hash.hpp +26 -5
- data/ext/boost/get_pointer.hpp +17 -2
- data/ext/boost/integer_traits.hpp +1 -1
- data/ext/boost/lexical_cast.hpp +615 -395
- data/ext/boost/libs/atomic/lockpool.cpp +24 -0
- data/ext/boost/libs/system/src/error_code.cpp +25 -18
- data/ext/boost/libs/thread/src/future.cpp +7 -5
- data/ext/boost/libs/thread/src/pthread/once.cpp +9 -3
- data/ext/boost/libs/thread/src/pthread/once_atomic.cpp +90 -0
- data/ext/boost/libs/thread/src/pthread/thread.cpp +129 -95
- data/ext/boost/libs/thread/src/pthread/timeconv.inl +20 -1
- data/ext/boost/limits.hpp +1 -1
- data/ext/boost/math/policies/policy.hpp +10 -0
- data/ext/boost/math/special_functions/detail/round_fwd.hpp +17 -4
- data/ext/boost/math/special_functions/fpclassify.hpp +114 -45
- data/ext/boost/math/special_functions/math_fwd.hpp +195 -83
- data/ext/boost/math/special_functions/sign.hpp +13 -8
- data/ext/boost/math/tools/config.hpp +38 -16
- data/ext/boost/move/algorithm.hpp +275 -0
- data/ext/boost/move/core.hpp +332 -0
- data/ext/boost/move/detail/config_begin.hpp +23 -0
- data/ext/boost/move/detail/config_end.hpp +20 -0
- data/ext/boost/move/detail/meta_utils.hpp +158 -0
- data/ext/boost/move/iterator.hpp +298 -0
- data/ext/boost/move/move.hpp +10 -1256
- data/ext/boost/move/traits.hpp +142 -0
- data/ext/boost/move/utility.hpp +194 -0
- data/ext/boost/mpl/assert.hpp +72 -4
- data/ext/boost/noncopyable.hpp +15 -3
- data/ext/boost/pointer_to_other.hpp +55 -0
- data/ext/boost/range/concepts.hpp +4 -4
- data/ext/boost/range/detail/extract_optional_type.hpp +1 -1
- data/ext/boost/range/empty.hpp +1 -1
- data/ext/boost/range/iterator_range_core.hpp +4 -1
- data/ext/boost/range/iterator_range_io.hpp +2 -2
- data/ext/boost/ratio/config.hpp +6 -0
- data/ext/boost/ratio/detail/overflow_helpers.hpp +2 -2
- data/ext/boost/smart_ptr/allocate_shared_array.hpp +250 -0
- data/ext/boost/smart_ptr/detail/allocate_array_helper.hpp +169 -0
- data/ext/boost/smart_ptr/detail/array_deleter.hpp +124 -0
- data/ext/boost/smart_ptr/detail/array_traits.hpp +53 -0
- data/ext/boost/smart_ptr/detail/array_utility.hpp +178 -0
- data/ext/boost/smart_ptr/detail/make_array_helper.hpp +157 -0
- data/ext/boost/smart_ptr/detail/operator_bool.hpp +16 -9
- data/ext/boost/smart_ptr/detail/shared_count.hpp +78 -7
- data/ext/boost/smart_ptr/detail/sp_convertible.hpp +15 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +12 -6
- data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +162 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
- data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +15 -0
- data/ext/boost/smart_ptr/detail/sp_forward.hpp +39 -0
- data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +19 -3
- data/ext/boost/smart_ptr/detail/sp_if_array.hpp +31 -0
- data/ext/boost/smart_ptr/detail/sp_nullptr_t.hpp +45 -0
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +5 -12
- data/ext/boost/smart_ptr/enable_shared_from_this.hpp +4 -4
- data/ext/boost/smart_ptr/make_shared.hpp +5 -1060
- data/ext/boost/smart_ptr/make_shared_array.hpp +247 -0
- data/ext/boost/smart_ptr/make_shared_object.hpp +1128 -0
- data/ext/boost/smart_ptr/scoped_array.hpp +32 -7
- data/ext/boost/smart_ptr/scoped_ptr.hpp +31 -5
- data/ext/boost/smart_ptr/shared_array.hpp +135 -20
- data/ext/boost/smart_ptr/shared_ptr.hpp +444 -126
- data/ext/boost/smart_ptr/weak_ptr.hpp +39 -28
- data/ext/boost/static_assert.hpp +74 -17
- data/ext/boost/system/error_code.hpp +76 -68
- data/ext/boost/system/system_error.hpp +5 -1
- data/ext/boost/thread/barrier.hpp +6 -2
- data/ext/boost/thread/completion_latch.hpp +233 -0
- data/ext/boost/thread/condition.hpp +6 -1
- data/ext/boost/thread/detail/async_func.hpp +571 -0
- data/ext/boost/thread/detail/config.hpp +248 -40
- data/ext/boost/thread/detail/counter.hpp +93 -0
- data/ext/boost/thread/detail/delete.hpp +12 -0
- data/ext/boost/thread/detail/invoke.hpp +1351 -0
- data/ext/boost/thread/detail/is_convertible.hpp +48 -0
- data/ext/boost/thread/detail/lockable_wrapper.hpp +45 -0
- data/ext/boost/thread/detail/log.hpp +83 -0
- data/ext/boost/thread/detail/make_tuple_indices.hpp +224 -0
- data/ext/boost/thread/detail/move.hpp +32 -16
- data/ext/boost/thread/detail/thread.hpp +236 -41
- data/ext/boost/thread/detail/thread_group.hpp +55 -9
- data/ext/boost/thread/detail/thread_interruption.hpp +4 -1
- data/ext/boost/thread/exceptions.hpp +2 -0
- data/ext/boost/thread/externally_locked.hpp +351 -0
- data/ext/boost/thread/externally_locked_stream.hpp +170 -0
- data/ext/boost/thread/future.hpp +2517 -455
- data/ext/boost/thread/future_error_code.hpp +61 -0
- data/ext/boost/thread/is_locked_by_this_thread.hpp +39 -0
- data/ext/boost/thread/latch.hpp +142 -0
- data/ext/boost/thread/lock_algorithms.hpp +468 -0
- data/ext/boost/thread/lock_concepts.hpp +197 -0
- data/ext/boost/thread/lock_factories.hpp +78 -0
- data/ext/boost/thread/lock_guard.hpp +88 -0
- data/ext/boost/thread/lock_options.hpp +31 -0
- data/ext/boost/thread/lock_traits.hpp +45 -0
- data/ext/boost/thread/lock_types.hpp +1226 -0
- data/ext/boost/thread/lockable_adapter.hpp +226 -0
- data/ext/boost/thread/lockable_concepts.hpp +157 -0
- data/ext/boost/thread/lockable_traits.hpp +207 -0
- data/ext/boost/thread/locks.hpp +5 -1816
- data/ext/boost/thread/mutex.hpp +33 -1
- data/ext/boost/thread/null_mutex.hpp +243 -0
- data/ext/boost/thread/once.hpp +10 -1
- data/ext/boost/thread/poly_lockable.hpp +68 -0
- data/ext/boost/thread/poly_lockable_adapter.hpp +89 -0
- data/ext/boost/thread/poly_shared_lockable.hpp +135 -0
- data/ext/boost/thread/poly_shared_lockable_adapter.hpp +170 -0
- data/ext/boost/thread/pthread/condition_variable.hpp +74 -26
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +54 -27
- data/ext/boost/thread/pthread/mutex.hpp +101 -38
- data/ext/boost/thread/pthread/once.hpp +459 -44
- data/ext/boost/thread/pthread/once_atomic.hpp +313 -0
- data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -10
- data/ext/boost/thread/pthread/shared_mutex.hpp +226 -61
- data/ext/boost/thread/pthread/shared_mutex_assert.hpp +724 -0
- data/ext/boost/thread/pthread/thread_data.hpp +53 -50
- data/ext/boost/thread/pthread/timespec.hpp +96 -12
- data/ext/boost/thread/recursive_mutex.hpp +44 -1
- data/ext/boost/thread/reverse_lock.hpp +3 -2
- data/ext/boost/thread/scoped_thread.hpp +285 -0
- data/ext/boost/thread/shared_lock_guard.hpp +2 -1
- data/ext/boost/thread/shared_mutex.hpp +23 -0
- data/ext/boost/thread/strict_lock.hpp +235 -0
- data/ext/boost/thread/sync_bounded_queue.hpp +594 -0
- data/ext/boost/thread/sync_queue.hpp +516 -0
- data/ext/boost/thread/synchronized_value.hpp +1001 -0
- data/ext/boost/thread/testable_mutex.hpp +148 -0
- data/ext/boost/thread/thread.hpp +1 -13
- data/ext/boost/thread/thread_functors.hpp +57 -0
- data/ext/boost/thread/thread_guard.hpp +46 -0
- data/ext/boost/thread/thread_only.hpp +29 -0
- data/ext/boost/thread/v2/shared_mutex.hpp +1062 -0
- data/ext/boost/thread/v2/thread.hpp +37 -10
- data/ext/boost/thread/xtime.hpp +2 -1
- data/ext/boost/token_functions.hpp +16 -16
- data/ext/boost/type_traits/add_lvalue_reference.hpp +26 -0
- data/ext/boost/type_traits/add_reference.hpp +1 -1
- data/ext/boost/type_traits/add_rvalue_reference.hpp +4 -4
- data/ext/boost/type_traits/aligned_storage.hpp +13 -0
- data/ext/boost/type_traits/common_type.hpp +11 -12
- data/ext/boost/type_traits/config.hpp +1 -1
- data/ext/boost/type_traits/detail/common_type_imp.hpp +1 -1
- data/ext/boost/type_traits/detail/has_binary_operator.hpp +1 -1
- data/ext/boost/type_traits/detail/is_function_ptr_tester.hpp +1 -1
- data/ext/boost/type_traits/has_left_shift.hpp +49 -0
- data/ext/boost/type_traits/has_right_shift.hpp +49 -0
- data/ext/boost/type_traits/has_trivial_move_assign.hpp +57 -0
- data/ext/boost/type_traits/has_trivial_move_constructor.hpp +57 -0
- data/ext/boost/type_traits/intrinsics.hpp +18 -2
- data/ext/boost/type_traits/is_abstract.hpp +1 -1
- data/ext/boost/type_traits/is_array.hpp +1 -1
- data/ext/boost/type_traits/is_const.hpp +1 -1
- data/ext/boost/type_traits/is_convertible.hpp +78 -17
- data/ext/boost/type_traits/is_function.hpp +6 -1
- data/ext/boost/type_traits/is_integral.hpp +6 -1
- data/ext/boost/type_traits/is_nothrow_move_assignable.hpp +84 -0
- data/ext/boost/type_traits/is_nothrow_move_constructible.hpp +84 -0
- data/ext/boost/type_traits/is_pod.hpp +3 -1
- data/ext/boost/type_traits/is_rvalue_reference.hpp +1 -1
- data/ext/boost/type_traits/is_volatile.hpp +1 -1
- data/ext/boost/type_traits/make_signed.hpp +153 -0
- data/ext/boost/type_traits/make_unsigned.hpp +16 -0
- data/ext/boost/type_traits/remove_const.hpp +1 -1
- data/ext/boost/type_traits/remove_cv.hpp +1 -1
- data/ext/boost/type_traits/remove_reference.hpp +1 -1
- data/ext/boost/type_traits/remove_volatile.hpp +1 -1
- data/ext/boost/unordered/detail/allocate.hpp +1120 -0
- data/ext/boost/unordered/detail/buckets.hpp +876 -0
- data/ext/boost/unordered/detail/equivalent.hpp +680 -0
- data/ext/boost/unordered/detail/extract_key.hpp +183 -0
- data/ext/boost/unordered/detail/fwd.hpp +23 -0
- data/ext/boost/unordered/detail/table.hpp +861 -0
- data/ext/boost/unordered/detail/unique.hpp +622 -0
- data/ext/boost/unordered/detail/util.hpp +260 -0
- data/ext/boost/unordered/unordered_map.hpp +1652 -0
- data/ext/boost/unordered/unordered_map_fwd.hpp +65 -0
- data/ext/boost/unordered/unordered_set.hpp +1549 -0
- data/ext/boost/unordered/unordered_set_fwd.hpp +63 -0
- data/ext/boost/unordered_map.hpp +18 -0
- data/ext/boost/unordered_set.hpp +18 -0
- data/ext/boost/utility/addressof.hpp +2 -2
- data/ext/boost/utility/result_of.hpp +8 -1
- data/ext/boost/version.hpp +2 -2
- data/ext/common/Account.h +1 -1
- data/ext/common/AccountsDatabase.h +1 -1
- data/ext/common/AgentsStarter.cpp +3 -1
- data/ext/common/AgentsStarter.h +2 -2
- data/ext/common/ApplicationPool2/AppTypes.cpp +24 -6
- data/ext/common/ApplicationPool2/AppTypes.h +17 -8
- data/ext/common/ApplicationPool2/Common.h +12 -12
- data/ext/common/ApplicationPool2/DirectSpawner.h +2 -2
- data/ext/common/ApplicationPool2/DummySpawner.h +3 -3
- data/ext/common/ApplicationPool2/Group.h +6 -6
- data/ext/common/ApplicationPool2/Implementation.cpp +19 -19
- data/ext/common/ApplicationPool2/PipeWatcher.h +5 -5
- data/ext/common/ApplicationPool2/Pool.h +21 -21
- data/ext/common/ApplicationPool2/Process.h +6 -6
- data/ext/common/ApplicationPool2/Session.h +1 -1
- data/ext/common/ApplicationPool2/SmartSpawner.h +24 -12
- data/ext/common/ApplicationPool2/Socket.h +2 -2
- data/ext/common/ApplicationPool2/Spawner.h +64 -14
- data/ext/common/ApplicationPool2/SpawnerFactory.h +7 -7
- data/ext/common/ApplicationPool2/SuperGroup.h +5 -5
- data/ext/common/BackgroundEventLoop.cpp +4 -4
- data/ext/common/BackgroundEventLoop.h +1 -1
- data/ext/common/Constants.h +13 -1
- data/ext/common/EventedBufferedInput.h +8 -8
- data/ext/common/Exceptions.cpp +71 -0
- data/ext/common/Exceptions.h +60 -7
- data/ext/common/FileDescriptor.h +4 -4
- data/ext/common/MessageClient.h +1 -1
- data/ext/common/MessageServer.h +5 -5
- data/ext/common/MultiLibeio.cpp +3 -3
- data/ext/common/MultiLibeio.h +2 -2
- data/ext/common/RandomGenerator.h +11 -11
- data/ext/common/ResourceLocator.h +8 -1
- data/ext/common/SafeLibev.h +12 -12
- data/ext/common/ServerInstanceDir.h +11 -3
- data/ext/common/UnionStation.h +10 -10
- data/ext/common/Utils.cpp +11 -13
- data/ext/common/Utils.h +9 -9
- data/ext/common/Utils/BlockingQueue.h +10 -10
- data/ext/common/Utils/BufferedIO.h +1 -1
- data/ext/common/Utils/CachedFileStat.hpp +2 -2
- data/ext/common/Utils/FileChangeChecker.h +1 -1
- data/ext/common/Utils/HashMap.h +13 -4
- data/ext/common/Utils/IOUtils.cpp +33 -10
- data/ext/common/Utils/IniFile.h +3 -3
- data/ext/common/Utils/Lock.h +2 -2
- data/ext/common/Utils/MessagePassing.h +10 -10
- data/ext/common/Utils/ProcessMetricsCollector.h +24 -6
- data/ext/common/Utils/ScopeGuard.h +5 -5
- data/ext/common/Utils/jsoncpp.cpp +2 -0
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +26 -26
- data/ext/common/agents/HelperAgent/Main.cpp +18 -18
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +4 -4
- data/ext/common/agents/HelperAgent/RequestHandler.h +30 -21
- data/ext/common/agents/LoggingAgent/AdminController.h +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.h +13 -11
- data/ext/common/agents/LoggingAgent/LoggingServer.h +11 -11
- data/ext/common/agents/LoggingAgent/Main.cpp +9 -9
- data/ext/common/agents/LoggingAgent/RemoteSender.h +3 -3
- data/ext/common/agents/SpawnPreparer.cpp +1 -0
- data/ext/common/agents/Watchdog/AgentWatcher.cpp +8 -7
- data/ext/common/agents/Watchdog/Main.cpp +81 -73
- data/ext/common/agents/Watchdog/ServerInstanceDirToucher.cpp +1 -1
- data/ext/libev/Changes +57 -0
- data/ext/libev/LICENSE +2 -1
- data/ext/libev/Makefile.in +110 -50
- data/ext/libev/README +8 -8
- data/ext/libev/aclocal.m4 +1503 -861
- data/ext/libev/config.guess +290 -304
- data/ext/libev/config.sub +77 -198
- data/ext/libev/configure +1735 -890
- data/ext/libev/configure.ac +3 -2
- data/ext/libev/ev++.h +6 -6
- data/ext/libev/ev.c +541 -214
- data/ext/libev/ev.h +106 -100
- data/ext/libev/ev_epoll.c +1 -1
- data/ext/libev/ev_kqueue.c +20 -4
- data/ext/libev/ev_vars.h +15 -16
- data/ext/libev/ev_win32.c +12 -2
- data/ext/libev/ev_wrap.h +162 -160
- data/ext/libev/event.c +29 -6
- data/ext/libev/event.h +9 -2
- data/ext/libev/ltmain.sh +2632 -1384
- data/ext/nginx/ConfigurationCommands.c +1 -1
- data/ext/nginx/ConfigurationCommands.c.erb +3 -1
- data/ext/nginx/ContentHandler.c +25 -2
- data/ext/nginx/CreateLocationConfig.c +1 -0
- data/ext/nginx/CreateLocationConfig.c.erb +1 -1
- data/ext/nginx/MergeLocationConfig.c +1 -0
- data/ext/nginx/MergeLocationConfig.c.erb +1 -1
- data/ext/nginx/config +12 -0
- data/ext/oxt/dynamic_thread_group.hpp +7 -4
- data/ext/oxt/system_calls.cpp +5 -1
- data/ext/oxt/system_calls.hpp +3 -0
- data/helper-scripts/node-loader.js +117 -249
- data/lib/phusion_passenger.rb +27 -5
- data/lib/phusion_passenger/abstract_installer.rb +104 -9
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +10 -9
- data/lib/phusion_passenger/apache2/config_options.rb +6 -3
- data/lib/phusion_passenger/common_library.rb +7 -1
- data/lib/phusion_passenger/constants.rb +6 -0
- data/lib/phusion_passenger/loader_shared_helpers.rb +7 -4
- data/lib/phusion_passenger/nginx/config_options.rb +2 -1
- data/lib/phusion_passenger/packaging.rb +3 -0
- data/lib/phusion_passenger/platform_info/apache.rb +43 -6
- data/lib/phusion_passenger/platform_info/apache_detector.rb +15 -5
- data/lib/phusion_passenger/platform_info/compiler.rb +167 -32
- data/lib/phusion_passenger/platform_info/cxx_portability.rb +133 -77
- data/lib/phusion_passenger/platform_info/depcheck.rb +17 -7
- data/lib/phusion_passenger/platform_info/depcheck_specs/apache2.rb +3 -3
- data/lib/phusion_passenger/platform_info/depcheck_specs/compiler_toolchain.rb +4 -4
- data/lib/phusion_passenger/platform_info/depcheck_specs/ruby.rb +5 -6
- data/lib/phusion_passenger/platform_info/linux.rb +2 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/lib/phusion_passenger/platform_info/ruby.rb +18 -3
- data/lib/phusion_passenger/standalone/runtime_installer.rb +6 -2
- data/lib/phusion_passenger/standalone/start_command.rb +8 -2
- data/lib/phusion_passenger/utils/ansi_colors.rb +9 -0
- data/lib/phusion_passenger/utils/hosts_file_parser.rb +4 -2
- data/node_lib/phusion_passenger/httplib_emulation.js +141 -0
- data/node_lib/phusion_passenger/line_reader.js +154 -0
- data/node_lib/phusion_passenger/request_handler.js +65 -0
- data/node_lib/phusion_passenger/session_protocol_parser.js +113 -0
- data/resources/templates/apache2/deployment_example.txt.erb +2 -1
- data/resources/templates/apache2/installing_against_a_different_apache.txt.erb +14 -0
- data/resources/templates/apache2/multiple_apache_installations_detected.txt.erb +15 -0
- data/resources/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
- data/resources/templates/general_error_with_html.html.template +1 -1
- data/resources/templates/installer_common/gem_install_permission_problems.txt.erb +17 -0
- data/resources/templates/installer_common/low_amount_of_memory_warning.txt.erb +6 -4
- data/resources/templates/installer_common/world_inaccessible_directories.txt.erb +16 -0
- data/resources/templates/nginx/deployment_example.txt.erb +2 -1
- data/resources/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +4 -5
- data/resources/templates/standalone/config.erb +1 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -3
- data/test/cxx/ApplicationPool2/PoolTest.cpp +4 -4
- data/test/cxx/ApplicationPool2/ProcessTest.cpp +5 -5
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +5 -5
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +1 -1
- data/test/cxx/EventedBufferedInputTest.cpp +6 -6
- data/test/cxx/FileBackedPipeTest.cpp +1 -1
- data/test/cxx/MessagePassingTest.cpp +1 -1
- data/test/cxx/MessageServerTest.cpp +4 -4
- data/test/cxx/RequestHandlerTest.cpp +7 -7
- data/test/cxx/UnionStationTest.cpp +2 -2
- data/test/node/line_reader_spec.js +338 -0
- data/test/node/spec_helper.js +27 -0
- data/test/ruby/standalone/runtime_installer_spec.rb +2 -1
- metadata +131 -22
- metadata.gz.asc +7 -7
- data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +0 -29
- data/ext/boost/lambda/core.hpp +0 -79
- data/ext/boost/lambda/detail/actions.hpp +0 -174
- data/ext/boost/lambda/detail/arity_code.hpp +0 -110
- data/ext/boost/lambda/detail/function_adaptors.hpp +0 -789
- data/ext/boost/lambda/detail/is_instance_of.hpp +0 -104
- data/ext/boost/lambda/detail/lambda_config.hpp +0 -48
- data/ext/boost/lambda/detail/lambda_functor_base.hpp +0 -615
- data/ext/boost/lambda/detail/lambda_functors.hpp +0 -324
- data/ext/boost/lambda/detail/lambda_fwd.hpp +0 -74
- data/ext/boost/lambda/detail/lambda_traits.hpp +0 -578
- data/ext/boost/lambda/detail/member_ptr.hpp +0 -737
- data/ext/boost/lambda/detail/operator_actions.hpp +0 -139
- data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +0 -271
- data/ext/boost/lambda/detail/operator_return_type_traits.hpp +0 -917
- data/ext/boost/lambda/detail/operators.hpp +0 -370
- data/ext/boost/lambda/detail/ret.hpp +0 -325
- data/ext/boost/lambda/detail/return_type_traits.hpp +0 -282
- data/ext/boost/lambda/detail/select_functions.hpp +0 -74
- data/ext/boost/lambda/lambda.hpp +0 -34
@@ -0,0 +1,48 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright 2011-2012 Vicente J. Botet Escriba
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/thread for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
|
11
|
+
#ifndef BOOST_THREAD_DETAIL_IS_CONVERTIBLE_HPP
|
12
|
+
#define BOOST_THREAD_DETAIL_IS_CONVERTIBLE_HPP
|
13
|
+
|
14
|
+
#include <boost/type_traits/is_convertible.hpp>
|
15
|
+
#include <boost/thread/detail/move.hpp>
|
16
|
+
|
17
|
+
namespace boost
|
18
|
+
{
|
19
|
+
namespace thread_detail
|
20
|
+
{
|
21
|
+
template <typename T1, typename T2>
|
22
|
+
struct is_convertible : boost::is_convertible<T1,T2> {};
|
23
|
+
|
24
|
+
#if defined BOOST_NO_CXX11_RVALUE_REFERENCES
|
25
|
+
|
26
|
+
#if defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 1300)
|
27
|
+
|
28
|
+
#if defined BOOST_THREAD_USES_MOVE
|
29
|
+
template <typename T1, typename T2>
|
30
|
+
struct is_convertible<
|
31
|
+
rv<T1> &,
|
32
|
+
rv<rv<T2> > &
|
33
|
+
> : false_type {};
|
34
|
+
#endif
|
35
|
+
|
36
|
+
#elif defined __GNUC__ && (__GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ <= 4 ))
|
37
|
+
|
38
|
+
template <typename T1, typename T2>
|
39
|
+
struct is_convertible<T1&, T2&> : boost::is_convertible<T1, T2> {};
|
40
|
+
#endif
|
41
|
+
|
42
|
+
#endif
|
43
|
+
}
|
44
|
+
|
45
|
+
} // namespace boost
|
46
|
+
|
47
|
+
|
48
|
+
#endif // BOOST_THREAD_DETAIL_MEMORY_HPP
|
@@ -0,0 +1,45 @@
|
|
1
|
+
// Distributed under the Boost Software License, Version 1.0. (See
|
2
|
+
// accompanying file LICENSE_1_0.txt or copy at
|
3
|
+
// http://www.boost.org/LICENSE_1_0.txt)
|
4
|
+
// (C) Copyright 2012 Vicente J. Botet Escriba
|
5
|
+
|
6
|
+
#ifndef BOOST_THREAD_DETAIL_LOCKABLE_WRAPPER_HPP
|
7
|
+
#define BOOST_THREAD_DETAIL_LOCKABLE_WRAPPER_HPP
|
8
|
+
|
9
|
+
#include <boost/thread/detail/config.hpp>
|
10
|
+
|
11
|
+
#if ! defined BOOST_THREAD_NO_CXX11_HDR_INITIALIZER_LIST
|
12
|
+
#include <initializer_list>
|
13
|
+
#endif
|
14
|
+
#include <boost/config/abi_prefix.hpp>
|
15
|
+
|
16
|
+
namespace boost
|
17
|
+
{
|
18
|
+
|
19
|
+
#if ! defined BOOST_THREAD_NO_CXX11_HDR_INITIALIZER_LIST
|
20
|
+
namespace thread_detail
|
21
|
+
{
|
22
|
+
template <typename Mutex>
|
23
|
+
struct lockable_wrapper
|
24
|
+
{
|
25
|
+
Mutex* m;
|
26
|
+
explicit lockable_wrapper(Mutex& m_) :
|
27
|
+
m(&m_)
|
28
|
+
{}
|
29
|
+
};
|
30
|
+
template <typename Mutex>
|
31
|
+
struct lockable_adopt_wrapper
|
32
|
+
{
|
33
|
+
Mutex* m;
|
34
|
+
explicit lockable_adopt_wrapper(Mutex& m_) :
|
35
|
+
m(&m_)
|
36
|
+
{}
|
37
|
+
};
|
38
|
+
}
|
39
|
+
#endif
|
40
|
+
|
41
|
+
}
|
42
|
+
|
43
|
+
#include <boost/config/abi_suffix.hpp>
|
44
|
+
|
45
|
+
#endif // header
|
@@ -0,0 +1,83 @@
|
|
1
|
+
// Copyright (C) 2012 Vicente J. Botet Escriba
|
2
|
+
//
|
3
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
4
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
5
|
+
|
6
|
+
#ifndef BOOST_THREAD_DETAIL_LOG_HPP
|
7
|
+
#define BOOST_THREAD_DETAIL_LOG_HPP
|
8
|
+
|
9
|
+
#include <boost/thread/detail/config.hpp>
|
10
|
+
#if defined BOOST_THREAD_USES_LOG
|
11
|
+
#include <boost/thread/recursive_mutex.hpp>
|
12
|
+
#include <boost/thread/lock_guard.hpp>
|
13
|
+
#if defined BOOST_THREAD_USES_LOG_THREAD_ID
|
14
|
+
#include <boost/thread/thread.hpp>
|
15
|
+
#endif
|
16
|
+
#include <iostream>
|
17
|
+
|
18
|
+
namespace boost
|
19
|
+
{
|
20
|
+
namespace thread_detail
|
21
|
+
{
|
22
|
+
inline boost::recursive_mutex& terminal_mutex()
|
23
|
+
{
|
24
|
+
static boost::recursive_mutex mtx;
|
25
|
+
return mtx;
|
26
|
+
}
|
27
|
+
|
28
|
+
}
|
29
|
+
}
|
30
|
+
#if defined BOOST_THREAD_USES_LOG_THREAD_ID
|
31
|
+
|
32
|
+
#define BOOST_THREAD_LOG \
|
33
|
+
{ \
|
34
|
+
boost::lock_guard<boost::recursive_mutex> _lk_(boost::thread_detail::terminal_mutex()); \
|
35
|
+
std::cout << boost::this_thread::get_id() << " - "<<__FILE__<<"["<<__LINE__<<"] " <<std::dec
|
36
|
+
#else
|
37
|
+
|
38
|
+
#define BOOST_THREAD_LOG \
|
39
|
+
{ \
|
40
|
+
boost::lock_guard<boost::recursive_mutex> _lk_(boost::thread_detail::terminal_mutex()); \
|
41
|
+
std::cout << __FILE__<<"["<<__LINE__<<"] " <<std::dec
|
42
|
+
|
43
|
+
#endif
|
44
|
+
#define BOOST_THREAD_END_LOG \
|
45
|
+
std::dec << std::endl; \
|
46
|
+
}
|
47
|
+
|
48
|
+
#else
|
49
|
+
|
50
|
+
namespace boost
|
51
|
+
{
|
52
|
+
namespace thread_detail
|
53
|
+
{
|
54
|
+
struct dummy_stream_t
|
55
|
+
{
|
56
|
+
};
|
57
|
+
|
58
|
+
template <typename T>
|
59
|
+
inline dummy_stream_t const& operator<<(dummy_stream_t const& os, T)
|
60
|
+
{
|
61
|
+
return os;
|
62
|
+
}
|
63
|
+
|
64
|
+
inline dummy_stream_t const& operator<<(dummy_stream_t const& os, dummy_stream_t const&)
|
65
|
+
{
|
66
|
+
return os;
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
BOOST_CONSTEXPR_OR_CONST dummy_stream_t dummy_stream = {};
|
71
|
+
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
75
|
+
#define BOOST_THREAD_LOG if (true) {} else boost::thread_detail::dummy_stream
|
76
|
+
#define BOOST_THREAD_END_LOG boost::thread_detail::dummy_stream
|
77
|
+
|
78
|
+
#endif
|
79
|
+
|
80
|
+
#define BOOST_THREAD_TRACE BOOST_THREAD_LOG << BOOST_THREAD_END_LOG
|
81
|
+
|
82
|
+
|
83
|
+
#endif // header
|
@@ -0,0 +1,224 @@
|
|
1
|
+
// Copyright (C) 2012-2013 Vicente J. Botet Escriba
|
2
|
+
//
|
3
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
4
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
5
|
+
|
6
|
+
// 2013/04 Vicente J. Botet Escriba
|
7
|
+
// Provide implementation up to 10 parameters when BOOST_NO_CXX11_VARIADIC_TEMPLATES is defined.
|
8
|
+
// 2012/11 Vicente J. Botet Escriba
|
9
|
+
// Adapt to boost libc++ implementation
|
10
|
+
|
11
|
+
//===----------------------------------------------------------------------===//
|
12
|
+
//
|
13
|
+
// The LLVM Compiler Infrastructure
|
14
|
+
//
|
15
|
+
// This file is dual licensed under the MIT and the University of Illinois Open
|
16
|
+
// Source Licenses. See LICENSE.TXT for details.
|
17
|
+
//
|
18
|
+
// The make_tuple_indices C++11 code is based on the one from libcxx.
|
19
|
+
//===----------------------------------------------------------------------===//
|
20
|
+
|
21
|
+
#ifndef BOOST_THREAD_DETAIL_MAKE_TUPLE_INDICES_HPP
|
22
|
+
#define BOOST_THREAD_DETAIL_MAKE_TUPLE_INDICES_HPP
|
23
|
+
|
24
|
+
#include <boost/config.hpp>
|
25
|
+
#include <boost/static_assert.hpp>
|
26
|
+
|
27
|
+
namespace boost
|
28
|
+
{
|
29
|
+
namespace detail
|
30
|
+
{
|
31
|
+
|
32
|
+
#if ! defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
33
|
+
// make_tuple_indices
|
34
|
+
|
35
|
+
template <std::size_t...> struct tuple_indices
|
36
|
+
{};
|
37
|
+
|
38
|
+
template <std::size_t Sp, class IntTuple, std::size_t Ep>
|
39
|
+
struct make_indices_imp;
|
40
|
+
|
41
|
+
template <std::size_t Sp, std::size_t ...Indices, std::size_t Ep>
|
42
|
+
struct make_indices_imp<Sp, tuple_indices<Indices...>, Ep>
|
43
|
+
{
|
44
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<Indices..., Sp>, Ep>::type type;
|
45
|
+
};
|
46
|
+
|
47
|
+
template <std::size_t Ep, std::size_t ...Indices>
|
48
|
+
struct make_indices_imp<Ep, tuple_indices<Indices...>, Ep>
|
49
|
+
{
|
50
|
+
typedef tuple_indices<Indices...> type;
|
51
|
+
};
|
52
|
+
|
53
|
+
template <std::size_t Ep, std::size_t Sp = 0>
|
54
|
+
struct make_tuple_indices
|
55
|
+
{
|
56
|
+
BOOST_STATIC_ASSERT_MSG(Sp <= Ep, "make_tuple_indices input error");
|
57
|
+
typedef typename make_indices_imp<Sp, tuple_indices<>, Ep>::type type;
|
58
|
+
};
|
59
|
+
#else
|
60
|
+
|
61
|
+
// - tuple forward declaration -----------------------------------------------
|
62
|
+
template <
|
63
|
+
std::size_t T0 = 0, std::size_t T1 = 0, std::size_t T2 = 0,
|
64
|
+
std::size_t T3 = 0, std::size_t T4 = 0, std::size_t T5 = 0,
|
65
|
+
std::size_t T6 = 0, std::size_t T7 = 0, std::size_t T8 = 0,
|
66
|
+
std::size_t T9 = 0>
|
67
|
+
class tuple_indices {};
|
68
|
+
|
69
|
+
template <std::size_t Sp, class IntTuple, std::size_t Ep>
|
70
|
+
struct make_indices_imp;
|
71
|
+
|
72
|
+
template <std::size_t Sp, std::size_t Ep>
|
73
|
+
struct make_indices_imp<Sp, tuple_indices<>, Ep>
|
74
|
+
{
|
75
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<Sp>, Ep>::type type;
|
76
|
+
};
|
77
|
+
template <std::size_t Sp, std::size_t I0, std::size_t Ep>
|
78
|
+
struct make_indices_imp<Sp, tuple_indices<I0>, Ep>
|
79
|
+
{
|
80
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, Sp>, Ep>::type type;
|
81
|
+
};
|
82
|
+
template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t Ep>
|
83
|
+
struct make_indices_imp<Sp, tuple_indices<I0, I1>, Ep>
|
84
|
+
{
|
85
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, Sp>, Ep>::type type;
|
86
|
+
};
|
87
|
+
template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t Ep>
|
88
|
+
struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2>, Ep>
|
89
|
+
{
|
90
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, Sp>, Ep>::type type;
|
91
|
+
};
|
92
|
+
template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t Ep>
|
93
|
+
struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3>, Ep>
|
94
|
+
{
|
95
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, Sp>, Ep>::type type;
|
96
|
+
};
|
97
|
+
template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t Ep>
|
98
|
+
struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4>, Ep>
|
99
|
+
{
|
100
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, Sp>, Ep>::type type;
|
101
|
+
};
|
102
|
+
template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5, std::size_t Ep>
|
103
|
+
struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5>, Ep>
|
104
|
+
{
|
105
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, Sp>, Ep>::type type;
|
106
|
+
};
|
107
|
+
template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
|
108
|
+
, std::size_t I6
|
109
|
+
, std::size_t Ep>
|
110
|
+
struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5, I6>, Ep>
|
111
|
+
{
|
112
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, I6, Sp>, Ep>::type type;
|
113
|
+
};
|
114
|
+
template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
|
115
|
+
, std::size_t I6
|
116
|
+
, std::size_t I7
|
117
|
+
, std::size_t Ep>
|
118
|
+
struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5, I6, I7>, Ep>
|
119
|
+
{
|
120
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, Sp>, Ep>::type type;
|
121
|
+
};
|
122
|
+
template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
|
123
|
+
, std::size_t I6
|
124
|
+
, std::size_t I7
|
125
|
+
, std::size_t I8
|
126
|
+
, std::size_t Ep>
|
127
|
+
struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5, I6, I7, I8>, Ep>
|
128
|
+
{
|
129
|
+
typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8, Sp>, Ep>::type type;
|
130
|
+
};
|
131
|
+
// template <std::size_t Sp, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
|
132
|
+
// , std::size_t I6
|
133
|
+
// , std::size_t I7
|
134
|
+
// , std::size_t I8
|
135
|
+
// , std::size_t I9
|
136
|
+
// , std::size_t Ep>
|
137
|
+
// struct make_indices_imp<Sp, tuple_indices<I0, I1 , I2, I3, I4, I5, I6, I7, I8, I9>, Ep>
|
138
|
+
// {
|
139
|
+
// typedef typename make_indices_imp<Sp+1, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, Sp>, Ep>::type type;
|
140
|
+
// };
|
141
|
+
|
142
|
+
template <std::size_t Ep>
|
143
|
+
struct make_indices_imp<Ep, tuple_indices<>, Ep>
|
144
|
+
{
|
145
|
+
typedef tuple_indices<> type;
|
146
|
+
};
|
147
|
+
template <std::size_t Ep, std::size_t I0>
|
148
|
+
struct make_indices_imp<Ep, tuple_indices<I0>, Ep>
|
149
|
+
{
|
150
|
+
typedef tuple_indices<I0> type;
|
151
|
+
};
|
152
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1>
|
153
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1>, Ep>
|
154
|
+
{
|
155
|
+
typedef tuple_indices<I0, I1> type;
|
156
|
+
};
|
157
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2>
|
158
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1, I2>, Ep>
|
159
|
+
{
|
160
|
+
typedef tuple_indices<I0, I1, I2> type;
|
161
|
+
};
|
162
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3>
|
163
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3>, Ep>
|
164
|
+
{
|
165
|
+
typedef tuple_indices<I0, I1, I2, I3> type;
|
166
|
+
};
|
167
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4>
|
168
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4>, Ep>
|
169
|
+
{
|
170
|
+
typedef tuple_indices<I0, I1, I2, I3, I4> type;
|
171
|
+
};
|
172
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5>
|
173
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5>, Ep>
|
174
|
+
{
|
175
|
+
typedef tuple_indices<I0, I1, I2, I3, I4, I5> type;
|
176
|
+
};
|
177
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
|
178
|
+
, std::size_t I6
|
179
|
+
>
|
180
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5, I6>, Ep>
|
181
|
+
{
|
182
|
+
typedef tuple_indices<I0, I1, I2, I3, I4, I5, I6> type;
|
183
|
+
};
|
184
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
|
185
|
+
, std::size_t I6
|
186
|
+
, std::size_t I7
|
187
|
+
>
|
188
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7>, Ep>
|
189
|
+
{
|
190
|
+
typedef tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7> type;
|
191
|
+
};
|
192
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
|
193
|
+
, std::size_t I6
|
194
|
+
, std::size_t I7
|
195
|
+
, std::size_t I8
|
196
|
+
>
|
197
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8>, Ep>
|
198
|
+
{
|
199
|
+
typedef tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8> type;
|
200
|
+
};
|
201
|
+
|
202
|
+
template <std::size_t Ep, std::size_t I0, std::size_t I1, std::size_t I2, std::size_t I3, std::size_t I4, std::size_t I5
|
203
|
+
, std::size_t I6
|
204
|
+
, std::size_t I7
|
205
|
+
, std::size_t I8
|
206
|
+
, std::size_t I9
|
207
|
+
>
|
208
|
+
struct make_indices_imp<Ep, tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9>, Ep>
|
209
|
+
{
|
210
|
+
typedef tuple_indices<I0, I1, I2, I3, I4, I5, I6, I7, I8, I9> type;
|
211
|
+
};
|
212
|
+
|
213
|
+
template <std::size_t Ep, std::size_t Sp = 0>
|
214
|
+
struct make_tuple_indices
|
215
|
+
{
|
216
|
+
BOOST_STATIC_ASSERT_MSG(Sp <= Ep, "make_tuple_indices input error");
|
217
|
+
typedef typename make_indices_imp<Sp, tuple_indices<>, Ep>::type type;
|
218
|
+
};
|
219
|
+
|
220
|
+
#endif
|
221
|
+
}
|
222
|
+
}
|
223
|
+
|
224
|
+
#endif // header
|
@@ -17,7 +17,8 @@
|
|
17
17
|
#endif
|
18
18
|
|
19
19
|
#include <boost/thread/detail/delete.hpp>
|
20
|
-
#include <boost/move/
|
20
|
+
#include <boost/move/utility.hpp>
|
21
|
+
#include <boost/move/traits.hpp>
|
21
22
|
#include <boost/config/abi_prefix.hpp>
|
22
23
|
|
23
24
|
namespace boost
|
@@ -26,7 +27,7 @@ namespace boost
|
|
26
27
|
namespace detail
|
27
28
|
{
|
28
29
|
template <typename T>
|
29
|
-
struct
|
30
|
+
struct enable_move_utility_emulation_dummy_specialization;
|
30
31
|
template<typename T>
|
31
32
|
struct thread_move_t
|
32
33
|
{
|
@@ -49,6 +50,7 @@ namespace boost
|
|
49
50
|
};
|
50
51
|
}
|
51
52
|
|
53
|
+
#if !defined BOOST_THREAD_USES_MOVE
|
52
54
|
|
53
55
|
#ifndef BOOST_NO_SFINAE
|
54
56
|
template<typename T>
|
@@ -63,11 +65,14 @@ namespace boost
|
|
63
65
|
{
|
64
66
|
return t;
|
65
67
|
}
|
68
|
+
|
69
|
+
#endif //#if !defined BOOST_THREAD_USES_MOVE
|
66
70
|
}
|
67
71
|
|
68
72
|
#if ! defined BOOST_NO_CXX11_RVALUE_REFERENCES
|
69
73
|
|
70
74
|
#define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE)
|
75
|
+
#define BOOST_THREAD_RV_REF_2_TEMPL_ARGS(TYPE) BOOST_RV_REF_2_TEMPL_ARGS(TYPE)
|
71
76
|
#define BOOST_THREAD_RV_REF_BEG BOOST_RV_REF_BEG
|
72
77
|
#define BOOST_THREAD_RV_REF_END BOOST_RV_REF_END
|
73
78
|
#define BOOST_THREAD_RV(V) V
|
@@ -77,16 +82,17 @@ namespace boost
|
|
77
82
|
#define BOOST_THREAD_DCL_MOVABLE_BEG(T) \
|
78
83
|
namespace detail { \
|
79
84
|
template <typename T> \
|
80
|
-
struct
|
85
|
+
struct enable_move_utility_emulation_dummy_specialization<
|
81
86
|
|
82
87
|
#define BOOST_THREAD_DCL_MOVABLE_END > \
|
83
|
-
: integral_constant<bool,
|
88
|
+
: integral_constant<bool, false> \
|
84
89
|
{}; \
|
85
90
|
}
|
86
91
|
|
87
92
|
#elif ! defined BOOST_NO_CXX11_RVALUE_REFERENCES && defined BOOST_MSVC
|
88
93
|
|
89
94
|
#define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE)
|
95
|
+
#define BOOST_THREAD_RV_REF_2_TEMPL_ARGS(TYPE) BOOST_RV_REF_2_TEMPL_ARGS(TYPE)
|
90
96
|
#define BOOST_THREAD_RV_REF_BEG BOOST_RV_REF_BEG
|
91
97
|
#define BOOST_THREAD_RV_REF_END BOOST_RV_REF_END
|
92
98
|
#define BOOST_THREAD_RV(V) V
|
@@ -96,10 +102,10 @@ namespace boost
|
|
96
102
|
#define BOOST_THREAD_DCL_MOVABLE_BEG(T) \
|
97
103
|
namespace detail { \
|
98
104
|
template <typename T> \
|
99
|
-
struct
|
105
|
+
struct enable_move_utility_emulation_dummy_specialization<
|
100
106
|
|
101
107
|
#define BOOST_THREAD_DCL_MOVABLE_END > \
|
102
|
-
: integral_constant<bool,
|
108
|
+
: integral_constant<bool, false> \
|
103
109
|
{}; \
|
104
110
|
}
|
105
111
|
|
@@ -107,6 +113,7 @@ namespace boost
|
|
107
113
|
|
108
114
|
#if defined BOOST_THREAD_USES_MOVE
|
109
115
|
#define BOOST_THREAD_RV_REF(TYPE) BOOST_RV_REF(TYPE)
|
116
|
+
#define BOOST_THREAD_RV_REF_2_TEMPL_ARGS(TYPE) BOOST_RV_REF_2_TEMPL_ARGS(TYPE)
|
110
117
|
#define BOOST_THREAD_RV_REF_BEG BOOST_RV_REF_BEG
|
111
118
|
#define BOOST_THREAD_RV_REF_END BOOST_RV_REF_END
|
112
119
|
#define BOOST_THREAD_RV(V) V
|
@@ -115,10 +122,10 @@ namespace boost
|
|
115
122
|
#define BOOST_THREAD_DCL_MOVABLE_BEG(T) \
|
116
123
|
namespace detail { \
|
117
124
|
template <typename T> \
|
118
|
-
struct
|
125
|
+
struct enable_move_utility_emulation_dummy_specialization<
|
119
126
|
|
120
127
|
#define BOOST_THREAD_DCL_MOVABLE_END > \
|
121
|
-
: integral_constant<bool,
|
128
|
+
: integral_constant<bool, false> \
|
122
129
|
{}; \
|
123
130
|
}
|
124
131
|
|
@@ -132,17 +139,19 @@ namespace boost
|
|
132
139
|
|
133
140
|
#define BOOST_THREAD_DCL_MOVABLE(TYPE) \
|
134
141
|
template <> \
|
135
|
-
struct
|
136
|
-
|
137
|
-
|
142
|
+
struct enable_move_utility_emulation< TYPE > \
|
143
|
+
{ \
|
144
|
+
static const bool value = false; \
|
145
|
+
};
|
138
146
|
|
139
147
|
#define BOOST_THREAD_DCL_MOVABLE_BEG(T) \
|
140
148
|
template <typename T> \
|
141
|
-
struct
|
149
|
+
struct enable_move_utility_emulation<
|
142
150
|
|
143
151
|
#define BOOST_THREAD_DCL_MOVABLE_END > \
|
144
|
-
|
145
|
-
|
152
|
+
{ \
|
153
|
+
static const bool value = false; \
|
154
|
+
};
|
146
155
|
|
147
156
|
#endif
|
148
157
|
|
@@ -227,19 +236,26 @@ namespace detail
|
|
227
236
|
|
228
237
|
|
229
238
|
|
230
|
-
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
231
239
|
namespace boost
|
232
240
|
{ namespace thread_detail
|
233
241
|
{
|
242
|
+
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
|
234
243
|
template <class T>
|
235
244
|
typename decay<T>::type
|
236
245
|
decay_copy(T&& t)
|
237
246
|
{
|
238
247
|
return boost::forward<T>(t);
|
239
248
|
}
|
249
|
+
#else
|
250
|
+
template <class T>
|
251
|
+
typename decay<T>::type
|
252
|
+
decay_copy(BOOST_THREAD_FWD_REF(T) t)
|
253
|
+
{
|
254
|
+
return boost::forward<T>(t);
|
240
255
|
}
|
241
|
-
}
|
242
256
|
#endif
|
257
|
+
}
|
258
|
+
}
|
243
259
|
|
244
260
|
#include <boost/config/abi_suffix.hpp>
|
245
261
|
|