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
data/ext/boost/thread/mutex.hpp
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
// mutex.hpp
|
5
5
|
//
|
6
|
-
// (C) Copyright 2007 Anthony Williams
|
6
|
+
// (C) Copyright 2007 Anthony Williams
|
7
7
|
//
|
8
8
|
// Distributed under the Boost Software License, Version 1.0. (See
|
9
9
|
// accompanying file LICENSE_1_0.txt or copy at
|
@@ -18,4 +18,36 @@
|
|
18
18
|
#error "Boost threads unavailable on this platform"
|
19
19
|
#endif
|
20
20
|
|
21
|
+
#include <boost/thread/lockable_traits.hpp>
|
22
|
+
|
23
|
+
|
24
|
+
namespace boost
|
25
|
+
{
|
26
|
+
namespace sync
|
27
|
+
{
|
28
|
+
#ifdef BOOST_THREAD_NO_AUTO_DETECT_MUTEX_TYPES
|
29
|
+
template<>
|
30
|
+
struct is_basic_lockable<mutex>
|
31
|
+
{
|
32
|
+
BOOST_STATIC_CONSTANT(bool, value = true);
|
33
|
+
};
|
34
|
+
template<>
|
35
|
+
struct is_lockable<mutex>
|
36
|
+
{
|
37
|
+
BOOST_STATIC_CONSTANT(bool, value = true);
|
38
|
+
};
|
39
|
+
template<>
|
40
|
+
struct is_basic_lockable<timed_mutex>
|
41
|
+
{
|
42
|
+
BOOST_STATIC_CONSTANT(bool, value = true);
|
43
|
+
};
|
44
|
+
template<>
|
45
|
+
struct is_lockable<timed_mutex>
|
46
|
+
{
|
47
|
+
BOOST_STATIC_CONSTANT(bool, value = true);
|
48
|
+
};
|
49
|
+
#endif
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
21
53
|
#endif
|
@@ -0,0 +1,243 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
|
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_NULL_MUTEX_HPP
|
12
|
+
#define BOOST_THREAD_NULL_MUTEX_HPP
|
13
|
+
|
14
|
+
#include <boost/thread/detail/config.hpp>
|
15
|
+
#include <boost/thread/detail/delete.hpp>
|
16
|
+
#include <boost/chrono/chrono.hpp>
|
17
|
+
|
18
|
+
/// \file
|
19
|
+
/// Describes null_mutex class
|
20
|
+
|
21
|
+
namespace boost
|
22
|
+
{
|
23
|
+
|
24
|
+
/// Implements a mutex that simulates a mutex without doing any operation and
|
25
|
+
/// simulates a successful operation.
|
26
|
+
class null_mutex
|
27
|
+
{
|
28
|
+
public:
|
29
|
+
|
30
|
+
BOOST_THREAD_NO_COPYABLE( null_mutex) /*< no copyable >*/
|
31
|
+
|
32
|
+
null_mutex() {}
|
33
|
+
|
34
|
+
/// Simulates a mutex lock() operation. Empty function.
|
35
|
+
void lock()
|
36
|
+
{
|
37
|
+
}
|
38
|
+
|
39
|
+
/// Simulates a mutex try_lock() operation.
|
40
|
+
/// Equivalent to "return true;"
|
41
|
+
bool try_lock()
|
42
|
+
{
|
43
|
+
return true;
|
44
|
+
}
|
45
|
+
|
46
|
+
/// Simulates a mutex unlock() operation.
|
47
|
+
/// Empty function.
|
48
|
+
void unlock()
|
49
|
+
{
|
50
|
+
}
|
51
|
+
|
52
|
+
#ifdef BOOST_THREAD_USES_CHRONO
|
53
|
+
/// Simulates a mutex try_lock_until() operation.
|
54
|
+
/// Equivalent to "return true;"
|
55
|
+
template <typename Clock, typename Duration>
|
56
|
+
bool try_lock_until(chrono::time_point<Clock, Duration> const &)
|
57
|
+
{
|
58
|
+
return true;
|
59
|
+
}
|
60
|
+
|
61
|
+
/// Simulates a mutex try_lock_for() operation.
|
62
|
+
/// Equivalent to "return true;"
|
63
|
+
template <typename Rep, typename Period>
|
64
|
+
bool try_lock_for(chrono::duration<Rep, Period> const &)
|
65
|
+
{
|
66
|
+
return true;
|
67
|
+
}
|
68
|
+
#endif
|
69
|
+
|
70
|
+
/// Simulates a mutex lock_shared() operation.
|
71
|
+
/// Empty function.
|
72
|
+
void lock_shared()
|
73
|
+
{
|
74
|
+
}
|
75
|
+
|
76
|
+
/// Simulates a mutex try_lock_shared() operation.
|
77
|
+
/// Equivalent to "return true;"
|
78
|
+
bool try_lock_shared()
|
79
|
+
{
|
80
|
+
return true;
|
81
|
+
}
|
82
|
+
|
83
|
+
/// Simulates a mutex unlock_shared() operation.
|
84
|
+
/// Empty function.
|
85
|
+
void unlock_shared()
|
86
|
+
{
|
87
|
+
}
|
88
|
+
|
89
|
+
/// Simulates a mutex try_lock_shared_until() operation.
|
90
|
+
/// Equivalent to "return true;"
|
91
|
+
template <typename Clock, typename Duration>
|
92
|
+
bool try_lock_shared_until(chrono::time_point<Clock, Duration> const &)
|
93
|
+
{
|
94
|
+
return true;
|
95
|
+
}
|
96
|
+
/// Simulates a mutex try_lock_shared_for() operation.
|
97
|
+
/// Equivalent to "return true;"
|
98
|
+
template <typename Rep, typename Period>
|
99
|
+
bool try_lock_shared_for(chrono::duration<Rep, Period> const &)
|
100
|
+
{
|
101
|
+
return true;
|
102
|
+
}
|
103
|
+
|
104
|
+
/// Simulates a mutex lock_upgrade() operation.
|
105
|
+
/// Empty function.
|
106
|
+
void lock_upgrade()
|
107
|
+
{
|
108
|
+
}
|
109
|
+
|
110
|
+
/// Simulates a mutex try_lock_upgrade() operation.
|
111
|
+
/// Equivalent to "return true;"
|
112
|
+
bool try_lock_upgrade()
|
113
|
+
{
|
114
|
+
return true;
|
115
|
+
}
|
116
|
+
|
117
|
+
/// Simulates a mutex unlock_upgrade() operation.
|
118
|
+
/// Empty function.
|
119
|
+
void unlock_upgrade()
|
120
|
+
{
|
121
|
+
}
|
122
|
+
|
123
|
+
/// Simulates a mutex try_lock_upgrade_until() operation.
|
124
|
+
/// Equivalent to "return true;"
|
125
|
+
template <typename Clock, typename Duration>
|
126
|
+
bool try_lock_upgrade_until(chrono::time_point<Clock, Duration> const &)
|
127
|
+
{
|
128
|
+
return true;
|
129
|
+
}
|
130
|
+
|
131
|
+
/// Simulates a mutex try_lock_upgrade_for() operation.
|
132
|
+
/// Equivalent to "return true;"
|
133
|
+
template <typename Rep, typename Period>
|
134
|
+
bool try_lock_upgrade_for(chrono::duration<Rep, Period> const &)
|
135
|
+
{
|
136
|
+
return true;
|
137
|
+
}
|
138
|
+
|
139
|
+
/// Simulates a mutex try_unlock_shared_and_lock() operation.
|
140
|
+
/// Equivalent to "return true;"
|
141
|
+
bool try_unlock_shared_and_lock()
|
142
|
+
{
|
143
|
+
return true;
|
144
|
+
}
|
145
|
+
|
146
|
+
#ifdef BOOST_THREAD_USES_CHRONO
|
147
|
+
/// Simulates a mutex try_unlock_shared_and_lock_until() operation.
|
148
|
+
/// Equivalent to "return true;"
|
149
|
+
template <typename Clock, typename Duration>
|
150
|
+
bool try_unlock_shared_and_lock_until(chrono::time_point<Clock, Duration> const &)
|
151
|
+
{
|
152
|
+
return true;
|
153
|
+
}
|
154
|
+
|
155
|
+
/// Simulates a mutex try_unlock_shared_and_lock_for() operation.
|
156
|
+
/// Equivalent to "return true;"
|
157
|
+
template <typename Rep, typename Period>
|
158
|
+
bool try_unlock_shared_and_lock_for(chrono::duration<Rep, Period> const &)
|
159
|
+
{
|
160
|
+
return true;
|
161
|
+
}
|
162
|
+
#endif
|
163
|
+
|
164
|
+
/// Simulates unlock_and_lock_shared().
|
165
|
+
/// Empty function.
|
166
|
+
void unlock_and_lock_shared()
|
167
|
+
{
|
168
|
+
}
|
169
|
+
|
170
|
+
/// Simulates a mutex try_unlock_shared_and_lock_upgrade() operation.
|
171
|
+
/// Equivalent to "return true;"
|
172
|
+
bool try_unlock_shared_and_lock_upgrade()
|
173
|
+
{
|
174
|
+
return true;
|
175
|
+
}
|
176
|
+
|
177
|
+
#ifdef BOOST_THREAD_USES_CHRONO
|
178
|
+
/// Simulates a mutex try_unlock_shared_and_lock_upgrade_until() operation.
|
179
|
+
/// Equivalent to "return true;"
|
180
|
+
template <typename Clock, typename Duration>
|
181
|
+
bool try_unlock_shared_and_lock_upgrade_until(chrono::time_point<Clock, Duration> const &)
|
182
|
+
{
|
183
|
+
return true;
|
184
|
+
}
|
185
|
+
|
186
|
+
/// Simulates a mutex try_unlock_shared_and_lock_upgrade_for() operation.
|
187
|
+
/// Equivalent to "return true;"
|
188
|
+
template <typename Rep, typename Period>
|
189
|
+
bool try_unlock_shared_and_lock_upgrade_for(chrono::duration<Rep, Period> const &)
|
190
|
+
{
|
191
|
+
return true;
|
192
|
+
}
|
193
|
+
#endif
|
194
|
+
|
195
|
+
/// Simulates unlock_and_lock_upgrade().
|
196
|
+
/// Empty function.
|
197
|
+
void unlock_and_lock_upgrade()
|
198
|
+
{
|
199
|
+
}
|
200
|
+
|
201
|
+
/// Simulates unlock_upgrade_and_lock().
|
202
|
+
/// Empty function.
|
203
|
+
void unlock_upgrade_and_lock()
|
204
|
+
{
|
205
|
+
}
|
206
|
+
|
207
|
+
/// Simulates a mutex try_unlock_upgrade_and_lock() operation.
|
208
|
+
/// Equivalent to "return true;"
|
209
|
+
bool try_unlock_upgrade_and_lock()
|
210
|
+
{
|
211
|
+
return true;
|
212
|
+
}
|
213
|
+
|
214
|
+
#ifdef BOOST_THREAD_USES_CHRONO
|
215
|
+
/// Simulates a mutex try_unlock_upgrade_and_lock_until() operation.
|
216
|
+
/// Equivalent to "return true;"
|
217
|
+
template <typename Clock, typename Duration>
|
218
|
+
bool try_unlock_upgrade_and_lock_until(chrono::time_point<Clock, Duration> const &)
|
219
|
+
{
|
220
|
+
return true;
|
221
|
+
}
|
222
|
+
|
223
|
+
/// Simulates a mutex try_unlock_upgrade_and_lock_for() operation.
|
224
|
+
/// Equivalent to "return true;"
|
225
|
+
template <typename Rep, typename Period>
|
226
|
+
bool try_unlock_upgrade_and_lock_for(chrono::duration<Rep, Period> const &)
|
227
|
+
{
|
228
|
+
return true;
|
229
|
+
}
|
230
|
+
#endif
|
231
|
+
|
232
|
+
/// Simulates unlock_upgrade_and_lock_shared().
|
233
|
+
/// Empty function.
|
234
|
+
void unlock_upgrade_and_lock_shared()
|
235
|
+
{
|
236
|
+
}
|
237
|
+
|
238
|
+
};
|
239
|
+
|
240
|
+
} //namespace boost {
|
241
|
+
|
242
|
+
|
243
|
+
#endif
|
data/ext/boost/thread/once.hpp
CHANGED
@@ -9,11 +9,18 @@
|
|
9
9
|
// accompanying file LICENSE_1_0.txt or copy at
|
10
10
|
// http://www.boost.org/LICENSE_1_0.txt)
|
11
11
|
|
12
|
+
#include <boost/thread/detail/config.hpp>
|
12
13
|
#include <boost/thread/detail/platform.hpp>
|
13
14
|
#if defined(BOOST_THREAD_PLATFORM_WIN32)
|
14
15
|
#include <boost/thread/win32/once.hpp>
|
15
16
|
#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
|
17
|
+
#if defined BOOST_THREAD_ONCE_FAST_EPOCH
|
16
18
|
#include <boost/thread/pthread/once.hpp>
|
19
|
+
#elif defined BOOST_THREAD_ONCE_ATOMIC
|
20
|
+
#include <boost/thread/pthread/once_atomic.hpp>
|
21
|
+
#else
|
22
|
+
#error "Once Not Implemented"
|
23
|
+
#endif
|
17
24
|
#else
|
18
25
|
#error "Boost threads unavailable on this platform"
|
19
26
|
#endif
|
@@ -24,7 +31,9 @@ namespace boost
|
|
24
31
|
{
|
25
32
|
// template<class Callable, class ...Args> void
|
26
33
|
// call_once(once_flag& flag, Callable&& func, Args&&... args);
|
27
|
-
|
34
|
+
template<typename Function>
|
35
|
+
inline void call_once(Function func,once_flag& flag)
|
36
|
+
//inline void call_once(void (*func)(),once_flag& flag)
|
28
37
|
{
|
29
38
|
call_once(flag,func);
|
30
39
|
}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
|
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_POLY_LOCKABLE_HPP
|
12
|
+
#define BOOST_THREAD_POLY_LOCKABLE_HPP
|
13
|
+
|
14
|
+
#include <boost/thread/detail/delete.hpp>
|
15
|
+
#include <boost/chrono/chrono.hpp>
|
16
|
+
|
17
|
+
namespace boost
|
18
|
+
{
|
19
|
+
|
20
|
+
//[basic_poly_lockable
|
21
|
+
class basic_poly_lockable
|
22
|
+
{
|
23
|
+
public:
|
24
|
+
|
25
|
+
virtual ~basic_poly_lockable() = 0;
|
26
|
+
|
27
|
+
virtual void lock() = 0;
|
28
|
+
virtual void unlock() = 0;
|
29
|
+
|
30
|
+
};
|
31
|
+
//]
|
32
|
+
|
33
|
+
//[poly_lockable
|
34
|
+
class poly_lockable : public basic_poly_lockable<Lockable>
|
35
|
+
{
|
36
|
+
public:
|
37
|
+
|
38
|
+
virtual ~poly_lockable() = 0;
|
39
|
+
virtual bool try_lock() = 0;
|
40
|
+
};
|
41
|
+
//]
|
42
|
+
|
43
|
+
//[timed_poly_lockable
|
44
|
+
class timed_poly_lockable: public poly_lockable<TimedLock>
|
45
|
+
{
|
46
|
+
public:
|
47
|
+
virtual ~timed_poly_lockable()=0;
|
48
|
+
|
49
|
+
virtual bool try_lock_until(chrono::system_clock::time_point const & abs_time)=0;
|
50
|
+
virtual bool try_lock_until(chrono::steady_clock::time_point const & abs_time)=0;
|
51
|
+
template <typename Clock, typename Duration>
|
52
|
+
bool try_lock_until(chrono::time_point<Clock, Duration> const & abs_time)
|
53
|
+
{
|
54
|
+
return try_lock_until(time_point_cast<Clock::time_point>(abs_time));
|
55
|
+
}
|
56
|
+
|
57
|
+
virtual bool try_lock_for(chrono::nanoseconds const & relative_time)=0;
|
58
|
+
template <typename Rep, typename Period>
|
59
|
+
bool try_lock_for(chrono::duration<Rep, Period> const & rel_time)
|
60
|
+
{
|
61
|
+
return try_lock_for(duration_cast<Clock::duration>(rel_time));
|
62
|
+
}
|
63
|
+
|
64
|
+
};
|
65
|
+
//]
|
66
|
+
|
67
|
+
}
|
68
|
+
#endif
|
@@ -0,0 +1,89 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Vicente J. Botet Escriba 2008-2009,2012. Distributed under the Boost
|
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_POLY_LOCKABLE_ADAPTER_HPP
|
12
|
+
#define BOOST_THREAD_POLY_LOCKABLE_ADAPTER_HPP
|
13
|
+
|
14
|
+
#include <boost/thread/poly_lockable.hpp>
|
15
|
+
|
16
|
+
namespace boost
|
17
|
+
{
|
18
|
+
|
19
|
+
//[poly_basic_lockable_adapter
|
20
|
+
template <typename Mutex, typename Base=poly_basic_lockable>
|
21
|
+
class poly_basic_lockable_adapter : public Base
|
22
|
+
{
|
23
|
+
public:
|
24
|
+
typedef Mutex mutex_type;
|
25
|
+
|
26
|
+
protected:
|
27
|
+
mutex_type& mtx() const
|
28
|
+
{
|
29
|
+
return mtx_;
|
30
|
+
}
|
31
|
+
mutable mutex_type mtx_; /*< mutable so that it can be modified by const functions >*/
|
32
|
+
public:
|
33
|
+
|
34
|
+
BOOST_THREAD_NO_COPYABLE( poly_basic_lockable_adapter) /*< no copyable >*/
|
35
|
+
|
36
|
+
poly_basic_lockable_adapter()
|
37
|
+
{}
|
38
|
+
|
39
|
+
void lock()
|
40
|
+
{
|
41
|
+
mtx().lock();
|
42
|
+
}
|
43
|
+
void unlock()
|
44
|
+
{
|
45
|
+
mtx().unlock();
|
46
|
+
}
|
47
|
+
|
48
|
+
};
|
49
|
+
//]
|
50
|
+
|
51
|
+
//[poly_lockable_adapter
|
52
|
+
template <typename Mutex, typename Base=poly_lockable>
|
53
|
+
class poly_lockable_adapter : public poly_basic_lockable_adapter<Mutex, Base>
|
54
|
+
{
|
55
|
+
public:
|
56
|
+
typedef Mutex mutex_type;
|
57
|
+
|
58
|
+
bool try_lock()
|
59
|
+
{
|
60
|
+
return this->mtx().try_lock();
|
61
|
+
}
|
62
|
+
};
|
63
|
+
//]
|
64
|
+
|
65
|
+
//[poly_timed_lockable_adapter
|
66
|
+
template <typename Mutex, typename Base=poly_timed_lockable>
|
67
|
+
class poly_timed_lockable_adapter: public poly_lockable_adapter<Mutex, Base>
|
68
|
+
{
|
69
|
+
public:
|
70
|
+
typedef Mutex mutex_type;
|
71
|
+
|
72
|
+
bool try_lock_until(chrono::system_clock::time_point const & abs_time)
|
73
|
+
{
|
74
|
+
return this->mtx().try_lock_until(abs_time);
|
75
|
+
}
|
76
|
+
bool try_lock_until(chrono::steady_clock::time_point const & abs_time)
|
77
|
+
{
|
78
|
+
return this->mtx().try_lock_until(abs_time);
|
79
|
+
}
|
80
|
+
bool try_lock_for(chrono::nanoseconds const & rel_time)
|
81
|
+
{
|
82
|
+
return this->mtx().try_lock_for(rel_time);
|
83
|
+
}
|
84
|
+
|
85
|
+
};
|
86
|
+
//]
|
87
|
+
|
88
|
+
}
|
89
|
+
#endif
|