passenger 3.0.21 → 3.9.1.beta
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 +4 -10
- data/NEWS +19 -27
- data/Rakefile +20 -19
- data/bin/passenger +3 -2
- data/bin/passenger-config +35 -5
- data/bin/passenger-install-apache2-module +12 -12
- data/bin/passenger-install-nginx-module +55 -38
- data/bin/passenger-memory-stats +3 -1
- data/bin/passenger-status +7 -35
- data/build/agents.rb +107 -21
- data/build/apache2.rb +11 -46
- data/build/basics.rb +61 -9
- data/build/common_library.rb +59 -142
- data/build/cxx_tests.rb +111 -110
- data/build/documentation.rb +33 -0
- data/build/misc.rb +30 -12
- data/build/nginx.rb +10 -39
- data/build/oxt_tests.rb +1 -0
- data/build/ruby_extension.rb +1 -5
- data/build/test_basics.rb +3 -2
- data/dev/copy_boost_headers.rb +2 -1
- data/doc/Architectural overview.html +49 -90
- data/doc/DebuggingAndStressTesting.txt.md +49 -0
- data/doc/Packaging.txt.md +254 -0
- data/doc/Security of user switching support.html +35 -66
- data/doc/Users guide Apache.html +588 -758
- data/doc/Users guide Apache.idmap.txt +253 -136
- data/doc/Users guide Apache.txt +154 -109
- data/doc/Users guide Nginx.html +544 -660
- data/doc/Users guide Nginx.idmap.txt +179 -91
- data/doc/Users guide Nginx.txt +192 -118
- data/doc/Users guide Standalone.html +65 -48
- data/doc/Users guide Standalone.idmap.txt +10 -2
- data/doc/Users guide Standalone.txt +4 -0
- data/doc/images/glyphicons-halflings-white.png +0 -0
- data/doc/images/glyphicons-halflings.png +0 -0
- data/doc/images/phusion_banner_small.png +0 -0
- data/doc/images/{smart-lv2.png → smart.png} +0 -0
- data/doc/images/{smart-lv2.svg → smart.svg} +0 -0
- data/doc/templates/bootstrap.min.css +397 -0
- data/doc/templates/markdown.html.erb +117 -0
- data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +2 -1
- data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +26 -48
- data/doc/users_guide_snippets/passenger_spawn_method.txt +18 -30
- data/doc/users_guide_snippets/support_information.txt +30 -0
- data/ext/apache2/Bucket.cpp +9 -26
- data/ext/apache2/Bucket.h +13 -10
- data/ext/apache2/Configuration.cpp +70 -58
- data/ext/apache2/Configuration.hpp +19 -47
- data/ext/apache2/DirectoryMapper.h +7 -7
- data/ext/apache2/Hooks.cpp +150 -313
- data/ext/boost/algorithm/string/detail/case_conv.hpp +4 -2
- data/ext/boost/algorithm/string/detail/find_format.hpp +20 -20
- data/ext/boost/algorithm/string/detail/find_format_all.hpp +23 -23
- data/ext/boost/algorithm/string/detail/find_format_store.hpp +2 -2
- data/ext/boost/algorithm/string/detail/formatter.hpp +25 -0
- data/ext/boost/algorithm/string/formatter.hpp +20 -3
- data/ext/boost/assert.hpp +85 -4
- data/ext/boost/bind/bind.hpp +1 -1
- data/ext/boost/concept/detail/backward_compatibility.hpp +1 -1
- data/ext/boost/concept_check.hpp +140 -64
- data/ext/boost/config.hpp +1 -1
- data/ext/boost/config/auto_link.hpp +8 -6
- data/ext/boost/config/compiler/borland.hpp +12 -2
- data/ext/boost/config/compiler/clang.hpp +89 -30
- data/ext/boost/config/compiler/codegear.hpp +3 -2
- data/ext/boost/config/compiler/common_edg.hpp +7 -5
- data/ext/boost/config/compiler/cray.hpp +61 -0
- data/ext/boost/config/compiler/digitalmars.hpp +9 -1
- data/ext/boost/config/compiler/gcc.hpp +33 -24
- data/ext/boost/config/compiler/gcc_xml.hpp +4 -0
- data/ext/boost/config/compiler/hp_acc.hpp +12 -1
- data/ext/boost/config/compiler/intel.hpp +78 -4
- data/ext/boost/config/compiler/metrowerks.hpp +4 -1
- data/ext/boost/config/compiler/mpw.hpp +4 -1
- data/ext/boost/config/compiler/nvcc.hpp +8 -66
- data/ext/boost/config/compiler/pathscale.hpp +80 -0
- data/ext/boost/config/compiler/pgi.hpp +5 -5
- data/ext/boost/config/compiler/sunpro_cc.hpp +4 -1
- data/ext/boost/config/compiler/vacpp.hpp +37 -13
- data/ext/boost/config/compiler/visualc.hpp +24 -11
- data/ext/boost/config/platform/bsd.hpp +1 -1
- data/ext/boost/config/platform/cray.hpp +18 -0
- data/ext/boost/config/platform/cygwin.hpp +10 -0
- data/ext/boost/config/platform/linux.hpp +5 -0
- data/ext/boost/config/platform/macos.hpp +5 -4
- data/ext/boost/config/platform/symbian.hpp +5 -2
- data/ext/boost/config/platform/vms.hpp +25 -0
- data/ext/boost/config/platform/win32.hpp +7 -1
- data/ext/boost/config/select_compiler_config.hpp +8 -25
- data/ext/boost/config/select_platform_config.hpp +8 -1
- data/ext/boost/config/select_stdlib_config.hpp +9 -1
- data/ext/boost/config/stdlib/dinkumware.hpp +6 -9
- data/ext/boost/config/stdlib/libcomo.hpp +1 -4
- data/ext/boost/config/stdlib/libcpp.hpp +36 -0
- data/ext/boost/config/stdlib/libstdcpp3.hpp +37 -11
- data/ext/boost/config/stdlib/modena.hpp +1 -4
- data/ext/boost/config/stdlib/msl.hpp +1 -4
- data/ext/boost/config/stdlib/roguewave.hpp +9 -6
- data/ext/boost/config/stdlib/sgi.hpp +12 -4
- data/ext/boost/config/stdlib/stlport.hpp +11 -4
- data/ext/boost/config/stdlib/vacpp.hpp +11 -4
- data/ext/boost/config/suffix.hpp +71 -6
- data/ext/boost/config/warning_disable.hpp +1 -1
- data/ext/boost/container/container_fwd.hpp +177 -0
- data/ext/boost/cstdint.hpp +17 -12
- data/ext/boost/current_function.hpp +2 -1
- data/ext/boost/date_time/c_time.hpp +17 -1
- data/ext/boost/date_time/compiler_config.hpp +13 -15
- data/ext/boost/date_time/date_formatting.hpp +7 -1
- data/ext/boost/date_time/filetime_functions.hpp +4 -4
- data/ext/boost/date_time/gregorian_calendar.ipp +2 -2
- data/ext/boost/date_time/strings_from_facet.hpp +3 -3
- data/ext/boost/date_time/time_facet.hpp +101 -101
- data/ext/boost/detail/endian.hpp +4 -2
- data/ext/boost/detail/fenv.hpp +74 -0
- data/ext/boost/detail/sp_typeinfo.hpp +6 -0
- data/ext/boost/exception/detail/clone_current_exception.hpp +47 -0
- data/ext/boost/exception/detail/exception_ptr.hpp +194 -122
- data/ext/boost/exception/detail/type_info.hpp +3 -3
- data/ext/boost/exception/diagnostic_information.hpp +37 -21
- data/ext/boost/exception/exception.hpp +21 -1
- data/ext/boost/exception/info.hpp +0 -1
- data/ext/boost/function.hpp +2 -2
- data/ext/boost/function/function_base.hpp +15 -9
- data/ext/boost/function/function_template.hpp +26 -48
- data/ext/boost/integer_fwd.hpp +0 -16
- data/ext/boost/integer_traits.hpp +2 -2
- data/ext/boost/iterator.hpp +1 -1
- data/ext/boost/iterator/iterator_adaptor.hpp +1 -7
- data/ext/boost/iterator/iterator_facade.hpp +13 -13
- data/ext/boost/iterator/transform_iterator.hpp +5 -20
- data/ext/boost/lexical_cast.hpp +1655 -673
- data/ext/boost/math/policies/policy.hpp +982 -0
- data/ext/boost/math/special_functions/detail/fp_traits.hpp +570 -0
- data/ext/boost/math/special_functions/detail/round_fwd.hpp +80 -0
- data/ext/boost/math/special_functions/fpclassify.hpp +533 -0
- data/ext/boost/math/special_functions/math_fwd.hpp +1070 -0
- data/ext/boost/math/special_functions/sign.hpp +145 -0
- data/ext/boost/math/tools/config.hpp +321 -0
- data/ext/boost/math/tools/promotion.hpp +150 -0
- data/ext/boost/math/tools/real_cast.hpp +29 -0
- data/ext/boost/math/tools/user.hpp +97 -0
- data/ext/boost/move/move.hpp +1222 -0
- data/ext/boost/mpl/O1_size.hpp +40 -0
- data/ext/boost/mpl/O1_size_fwd.hpp +24 -0
- data/ext/boost/mpl/advance.hpp +76 -0
- data/ext/boost/mpl/advance_fwd.hpp +28 -0
- data/ext/boost/mpl/at.hpp +52 -0
- data/ext/boost/mpl/at_fwd.hpp +24 -0
- data/ext/boost/mpl/aux_/O1_size_impl.hpp +87 -0
- data/ext/boost/mpl/aux_/advance_backward.hpp +128 -0
- data/ext/boost/mpl/aux_/advance_forward.hpp +127 -0
- data/ext/boost/mpl/aux_/arithmetic_op.hpp +92 -0
- data/ext/boost/mpl/aux_/at_impl.hpp +45 -0
- data/ext/boost/mpl/aux_/begin_end_impl.hpp +101 -0
- data/ext/boost/mpl/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/aux_/comparison_op.hpp +83 -0
- data/ext/boost/mpl/aux_/config/forwarding.hpp +27 -0
- data/ext/boost/mpl/aux_/config/typeof.hpp +38 -0
- data/ext/boost/mpl/aux_/contains_impl.hpp +61 -0
- data/ext/boost/mpl/aux_/find_if_pred.hpp +31 -0
- data/ext/boost/mpl/aux_/fold_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/has_begin.hpp +23 -0
- data/ext/boost/mpl/aux_/has_size.hpp +23 -0
- data/ext/boost/mpl/aux_/has_tag.hpp +23 -0
- data/ext/boost/mpl/aux_/inserter_algorithm.hpp +159 -0
- data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +64 -0
- data/ext/boost/mpl/aux_/iter_apply.hpp +47 -0
- data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +210 -0
- data/ext/boost/mpl/aux_/iter_fold_impl.hpp +42 -0
- data/ext/boost/mpl/aux_/lambda_spec.hpp +49 -0
- data/ext/boost/mpl/aux_/largest_int.hpp +63 -0
- data/ext/boost/mpl/aux_/msvc_eti_base.hpp +77 -0
- data/ext/boost/mpl/aux_/msvc_type.hpp +62 -0
- data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +77 -0
- data/ext/boost/mpl/aux_/numeric_op.hpp +315 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +67 -0
- data/ext/boost/mpl/aux_/push_back_impl.hpp +70 -0
- data/ext/boost/mpl/aux_/push_front_impl.hpp +71 -0
- data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/size_impl.hpp +52 -0
- data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +63 -0
- data/ext/boost/mpl/back_fwd.hpp +24 -0
- data/ext/boost/mpl/back_inserter.hpp +34 -0
- data/ext/boost/mpl/begin_end.hpp +57 -0
- data/ext/boost/mpl/begin_end_fwd.hpp +27 -0
- data/ext/boost/mpl/clear.hpp +39 -0
- data/ext/boost/mpl/clear_fwd.hpp +24 -0
- data/ext/boost/mpl/comparison.hpp +24 -0
- data/ext/boost/mpl/contains.hpp +41 -0
- data/ext/boost/mpl/contains_fwd.hpp +25 -0
- data/ext/boost/mpl/deref.hpp +41 -0
- data/ext/boost/mpl/distance.hpp +78 -0
- data/ext/boost/mpl/distance_fwd.hpp +28 -0
- data/ext/boost/mpl/empty_fwd.hpp +24 -0
- data/ext/boost/mpl/equal_to.hpp +21 -0
- data/ext/boost/mpl/find.hpp +38 -0
- data/ext/boost/mpl/find_if.hpp +50 -0
- data/ext/boost/mpl/fold.hpp +48 -0
- data/ext/boost/mpl/front_fwd.hpp +24 -0
- data/ext/boost/mpl/front_inserter.hpp +33 -0
- data/ext/boost/mpl/greater.hpp +21 -0
- data/ext/boost/mpl/greater_equal.hpp +21 -0
- data/ext/boost/mpl/inserter.hpp +32 -0
- data/ext/boost/mpl/iter_fold.hpp +49 -0
- data/ext/boost/mpl/iter_fold_if.hpp +117 -0
- data/ext/boost/mpl/iterator_range.hpp +42 -0
- data/ext/boost/mpl/iterator_tags.hpp +27 -0
- data/ext/boost/mpl/less.hpp +21 -0
- data/ext/boost/mpl/less_equal.hpp +21 -0
- data/ext/boost/mpl/limits/list.hpp +21 -0
- data/ext/boost/mpl/limits/vector.hpp +21 -0
- data/ext/boost/mpl/list.hpp +57 -0
- data/ext/boost/mpl/list/aux_/O1_size.hpp +33 -0
- data/ext/boost/mpl/list/aux_/begin_end.hpp +44 -0
- data/ext/boost/mpl/list/aux_/clear.hpp +34 -0
- data/ext/boost/mpl/list/aux_/empty.hpp +34 -0
- data/ext/boost/mpl/list/aux_/front.hpp +33 -0
- data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +35 -0
- data/ext/boost/mpl/list/aux_/item.hpp +55 -0
- data/ext/boost/mpl/list/aux_/iterator.hpp +76 -0
- data/ext/boost/mpl/list/aux_/pop_front.hpp +34 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list10.hpp +149 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list20.hpp +169 -0
- data/ext/boost/mpl/list/aux_/push_back.hpp +36 -0
- data/ext/boost/mpl/list/aux_/push_front.hpp +39 -0
- data/ext/boost/mpl/list/aux_/size.hpp +33 -0
- data/ext/boost/mpl/list/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/list/list0.hpp +42 -0
- data/ext/boost/mpl/list/list10.hpp +43 -0
- data/ext/boost/mpl/list/list20.hpp +43 -0
- data/ext/boost/mpl/long.hpp +22 -0
- data/ext/boost/mpl/long_fwd.hpp +27 -0
- data/ext/boost/mpl/minus.hpp +21 -0
- data/ext/boost/mpl/multiplies.hpp +53 -0
- data/ext/boost/mpl/negate.hpp +81 -0
- data/ext/boost/mpl/not_equal_to.hpp +21 -0
- data/ext/boost/mpl/numeric_cast.hpp +41 -0
- data/ext/boost/mpl/pair.hpp +70 -0
- data/ext/boost/mpl/plus.hpp +21 -0
- data/ext/boost/mpl/pop_back_fwd.hpp +24 -0
- data/ext/boost/mpl/pop_front_fwd.hpp +24 -0
- data/ext/boost/mpl/prior.hpp +19 -0
- data/ext/boost/mpl/push_back.hpp +53 -0
- data/ext/boost/mpl/push_back_fwd.hpp +24 -0
- data/ext/boost/mpl/push_front.hpp +52 -0
- data/ext/boost/mpl/push_front_fwd.hpp +24 -0
- data/ext/boost/mpl/remove_if.hpp +83 -0
- data/ext/boost/mpl/reverse_fold.hpp +50 -0
- data/ext/boost/mpl/same_as.hpp +55 -0
- data/ext/boost/mpl/sequence_tag.hpp +124 -0
- data/ext/boost/mpl/sequence_tag_fwd.hpp +26 -0
- data/ext/boost/mpl/size.hpp +42 -0
- data/ext/boost/mpl/size_fwd.hpp +24 -0
- data/ext/boost/mpl/tag.hpp +52 -0
- data/ext/boost/mpl/times.hpp +21 -0
- data/ext/boost/mpl/vector.hpp +57 -0
- data/ext/boost/mpl/vector/aux_/O1_size.hpp +56 -0
- data/ext/boost/mpl/vector/aux_/at.hpp +116 -0
- data/ext/boost/mpl/vector/aux_/back.hpp +59 -0
- data/ext/boost/mpl/vector/aux_/begin_end.hpp +49 -0
- data/ext/boost/mpl/vector/aux_/clear.hpp +55 -0
- data/ext/boost/mpl/vector/aux_/empty.hpp +68 -0
- data/ext/boost/mpl/vector/aux_/front.hpp +56 -0
- data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +55 -0
- data/ext/boost/mpl/vector/aux_/item.hpp +103 -0
- data/ext/boost/mpl/vector/aux_/iterator.hpp +130 -0
- data/ext/boost/mpl/vector/aux_/pop_back.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/pop_front.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp +829 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp +1144 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp +139 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp +159 -0
- data/ext/boost/mpl/vector/aux_/push_back.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/push_front.hpp +40 -0
- data/ext/boost/mpl/vector/aux_/size.hpp +49 -0
- data/ext/boost/mpl/vector/aux_/tag.hpp +32 -0
- data/ext/boost/mpl/vector/aux_/vector0.hpp +52 -0
- data/ext/boost/mpl/vector/vector0.hpp +34 -0
- data/ext/boost/mpl/vector/vector10.hpp +45 -0
- data/ext/boost/mpl/vector/vector20.hpp +45 -0
- data/ext/boost/none.hpp +1 -1
- data/ext/boost/numeric/conversion/bounds.hpp +24 -0
- data/ext/boost/numeric/conversion/cast.hpp +61 -0
- data/ext/boost/numeric/conversion/conversion_traits.hpp +39 -0
- data/ext/boost/numeric/conversion/converter.hpp +68 -0
- data/ext/boost/numeric/conversion/converter_policies.hpp +186 -0
- data/ext/boost/numeric/conversion/detail/bounds.hpp +58 -0
- data/ext/boost/numeric/conversion/detail/conversion_traits.hpp +97 -0
- data/ext/boost/numeric/conversion/detail/converter.hpp +602 -0
- data/ext/boost/numeric/conversion/detail/int_float_mixture.hpp +72 -0
- data/ext/boost/numeric/conversion/detail/is_subranged.hpp +234 -0
- data/ext/boost/numeric/conversion/detail/meta.hpp +120 -0
- data/ext/boost/numeric/conversion/detail/numeric_cast_traits.hpp +138 -0
- data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp +1741 -0
- data/ext/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp +347 -0
- data/ext/boost/numeric/conversion/detail/sign_mixture.hpp +72 -0
- data/ext/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +69 -0
- data/ext/boost/numeric/conversion/int_float_mixture_enum.hpp +29 -0
- data/ext/boost/numeric/conversion/numeric_cast_traits.hpp +31 -0
- data/ext/boost/numeric/conversion/sign_mixture_enum.hpp +29 -0
- data/ext/boost/numeric/conversion/udt_builtin_mixture_enum.hpp +26 -0
- data/ext/boost/operators.hpp +3 -1
- data/ext/boost/optional/optional.hpp +146 -79
- data/ext/boost/optional/optional_fwd.hpp +8 -1
- data/ext/boost/preprocessor/cat.hpp +2 -2
- data/ext/boost/preprocessor/config/config.hpp +39 -4
- data/ext/boost/preprocessor/facilities/intercept.hpp +277 -0
- data/ext/boost/preprocessor/facilities/overload.hpp +25 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +3 -3
- data/ext/boost/preprocessor/iteration/iterate.hpp +3 -3
- data/ext/boost/preprocessor/punctuation/paren.hpp +23 -0
- data/ext/boost/preprocessor/repetition/enum_shifted_params.hpp +44 -0
- data/ext/boost/preprocessor/seq/cat.hpp +5 -4
- data/ext/boost/preprocessor/seq/size.hpp +0 -1
- data/ext/boost/preprocessor/tuple/eat.hpp +83 -34
- data/ext/boost/preprocessor/tuple/elem.hpp +161 -355
- data/ext/boost/preprocessor/tuple/rem.hpp +110 -48
- data/ext/boost/preprocessor/tuple/to_list.hpp +90 -36
- data/ext/boost/preprocessor/variadic/elem.hpp +94 -0
- data/ext/boost/preprocessor/variadic/size.hpp +30 -0
- data/ext/boost/range/begin.hpp +17 -6
- data/ext/boost/range/concepts.hpp +37 -2
- data/ext/boost/range/detail/safe_bool.hpp +72 -0
- data/ext/boost/range/end.hpp +14 -9
- data/ext/boost/range/iterator_range_core.hpp +120 -12
- data/ext/boost/range/size.hpp +21 -5
- data/ext/boost/smart_ptr/detail/shared_count.hpp +88 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_aix.hpp +142 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +9 -0
- data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +10 -2
- data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +5 -1
- data/ext/boost/smart_ptr/detail/spinlock.hpp +4 -1
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +20 -3
- data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +4 -0
- data/ext/boost/smart_ptr/make_shared.hpp +591 -22
- data/ext/boost/smart_ptr/shared_array.hpp +29 -1
- data/ext/boost/smart_ptr/shared_ptr.hpp +29 -13
- data/ext/boost/smart_ptr/weak_ptr.hpp +24 -12
- data/ext/boost/src/pthread/once.cpp +9 -7
- data/ext/boost/src/pthread/thread.cpp +32 -28
- data/ext/boost/src/pthread/timeconv.inl +4 -5
- data/ext/boost/src/tss_null.cpp +5 -1
- data/ext/boost/static_assert.hpp +8 -2
- data/ext/boost/thread/detail/config.hpp +19 -4
- data/ext/boost/thread/detail/move.hpp +11 -5
- data/ext/boost/thread/detail/thread.hpp +59 -43
- data/ext/boost/thread/exceptions.hpp +9 -9
- data/ext/boost/thread/future.hpp +150 -82
- data/ext/boost/thread/locks.hpp +101 -60
- data/ext/boost/thread/pthread/condition_variable.hpp +79 -32
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +12 -3
- data/ext/boost/thread/pthread/mutex.hpp +17 -14
- data/ext/boost/thread/pthread/once.hpp +3 -4
- data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +12 -2
- data/ext/boost/thread/pthread/recursive_mutex.hpp +19 -19
- data/ext/boost/thread/pthread/shared_mutex.hpp +13 -13
- data/ext/boost/thread/pthread/thread_data.hpp +40 -12
- data/ext/boost/thread/thread_time.hpp +5 -0
- data/ext/boost/throw_exception.hpp +1 -1
- data/ext/boost/token_functions.hpp +34 -10
- data/ext/boost/type_traits/add_rvalue_reference.hpp +66 -0
- data/ext/boost/type_traits/alignment_of.hpp +1 -1
- data/ext/boost/type_traits/detail/bool_trait_def.hpp +26 -3
- data/ext/boost/type_traits/detail/bool_trait_undef.hpp +3 -2
- data/ext/boost/type_traits/detail/cv_traits_impl.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_def.hpp +6 -4
- data/ext/boost/type_traits/detail/type_trait_def.hpp +8 -2
- data/ext/boost/type_traits/function_traits.hpp +1 -1
- data/ext/boost/type_traits/has_nothrow_constructor.hpp +53 -0
- data/ext/boost/type_traits/has_nothrow_copy.hpp +19 -5
- data/ext/boost/type_traits/has_trivial_constructor.hpp +51 -0
- data/ext/boost/type_traits/has_trivial_copy.hpp +20 -5
- data/ext/boost/type_traits/has_trivial_destructor.hpp +12 -5
- data/ext/boost/type_traits/intrinsics.hpp +119 -71
- data/ext/boost/type_traits/is_const.hpp +5 -5
- data/ext/boost/type_traits/is_convertible.hpp +14 -13
- data/ext/boost/type_traits/is_enum.hpp +1 -1
- data/ext/boost/type_traits/is_floating_point.hpp +27 -0
- data/ext/boost/type_traits/is_function.hpp +3 -3
- data/ext/boost/type_traits/is_fundamental.hpp +1 -1
- data/ext/boost/type_traits/is_member_function_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_member_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_pod.hpp +11 -3
- data/ext/boost/type_traits/is_pointer.hpp +2 -2
- data/ext/boost/type_traits/is_signed.hpp +8 -3
- data/ext/boost/type_traits/is_union.hpp +8 -0
- data/ext/boost/type_traits/is_unsigned.hpp +9 -4
- data/ext/boost/type_traits/is_volatile.hpp +5 -5
- data/ext/boost/type_traits/remove_cv.hpp +4 -3
- data/ext/boost/type_traits/remove_pointer.hpp +51 -2
- data/ext/boost/type_traits/remove_reference.hpp +2 -2
- data/ext/boost/type_traits/type_with_alignment.hpp +8 -2
- data/ext/boost/utility/declval.hpp +44 -0
- data/ext/boost/utility/detail/in_place_factory_prefix.hpp +36 -0
- data/ext/boost/utility/detail/in_place_factory_suffix.hpp +23 -0
- data/ext/boost/utility/detail/result_of_iterate.hpp +142 -0
- data/ext/boost/utility/in_place_factory.hpp +88 -0
- data/ext/boost/utility/result_of.hpp +103 -0
- data/ext/boost/utility/swap.hpp +55 -0
- data/ext/common/AnsiColorConstants.h +36 -0
- data/ext/common/ApplicationPool2/Common.h +87 -0
- data/ext/common/ApplicationPool2/ComponentInfo.h +53 -0
- data/ext/common/ApplicationPool2/Group.h +648 -0
- data/ext/common/ApplicationPool2/Implementation.cpp +580 -0
- data/ext/common/ApplicationPool2/Options.h +576 -0
- data/ext/common/ApplicationPool2/PipeWatcher.h +61 -0
- data/ext/common/ApplicationPool2/Pool.h +1181 -0
- data/ext/common/ApplicationPool2/Process.h +425 -0
- data/ext/common/ApplicationPool2/README.md +96 -0
- data/ext/common/ApplicationPool2/Session.h +158 -0
- data/ext/common/ApplicationPool2/Socket.h +246 -0
- data/ext/common/ApplicationPool2/Spawner.h +2212 -0
- data/ext/common/ApplicationPool2/SuperGroup.h +749 -0
- data/ext/common/BackgroundEventLoop.cpp +129 -0
- data/ext/common/BackgroundEventLoop.h +61 -0
- data/ext/common/Constants.h +3 -1
- data/ext/common/EventedBufferedInput.h +331 -0
- data/ext/common/EventedMessageServer.h +17 -34
- data/ext/common/EventedServer.h +2 -2
- data/ext/common/Exceptions.h +71 -19
- data/ext/common/FileDescriptor.h +8 -6
- data/ext/common/HttpConstants.h +167 -0
- data/ext/common/IniFile.h +24 -0
- data/ext/common/Logging.h +62 -849
- data/ext/common/MessageReadersWriters.h +19 -0
- data/ext/common/MessageServer.h +11 -14
- data/ext/common/MultiLibeio.cpp +198 -0
- data/ext/common/MultiLibeio.h +67 -0
- data/ext/common/ResourceLocator.h +24 -41
- data/ext/common/SafeLibev.h +186 -14
- data/ext/common/StaticString.h +23 -3
- data/ext/common/UnionStation.h +972 -0
- data/ext/common/Utils.cpp +168 -24
- data/ext/common/Utils.h +25 -3
- data/ext/common/Utils/CachedFileStat.hpp +4 -3
- data/ext/common/Utils/FileChangeChecker.h +2 -2
- data/ext/common/Utils/HashMap.h +50 -0
- data/ext/common/Utils/IOUtils.cpp +229 -68
- data/ext/common/Utils/IOUtils.h +134 -3
- data/ext/common/Utils/Lock.h +28 -0
- data/ext/common/Utils/MemoryBarrier.h +52 -0
- data/ext/common/Utils/PriorityQueue.h +54 -0
- data/ext/common/Utils/ProcessMetricsCollector.h +9 -11
- data/ext/common/Utils/ScopeGuard.h +50 -1
- data/ext/common/Utils/SmallVector.h +653 -0
- data/ext/common/Utils/StrIntUtils.cpp +26 -2
- data/ext/common/Utils/StrIntUtils.h +18 -2
- data/ext/common/Utils/StringMap.h +125 -8
- data/ext/common/Utils/Template.h +212 -0
- data/ext/common/Utils/fib.c +699 -0
- data/ext/common/Utils/fib.h +101 -0
- data/ext/common/Utils/fibpriv.h +67 -0
- data/ext/common/Utils/json-forwards.h +249 -0
- data/ext/common/Utils/json.h +1855 -0
- data/ext/common/Utils/jsoncpp.cpp +4230 -0
- data/ext/common/agents/Base.cpp +1126 -0
- data/ext/common/{AgentBase.h → agents/Base.h} +5 -1
- data/ext/common/agents/EnvPrinter.c +16 -0
- data/ext/common/agents/HelperAgent/AgentOptions.h +81 -0
- data/ext/common/{HelperAgent → agents/HelperAgent}/BacktracesServer.h +3 -2
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +732 -0
- data/ext/common/agents/HelperAgent/Main.cpp +497 -0
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +283 -0
- data/ext/common/agents/HelperAgent/RequestHandler.h +2139 -0
- data/ext/common/agents/HelperAgent/ScgiRequestParser.h +451 -0
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/DataStoreId.h +1 -1
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.cpp +1 -1
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/FilterSupport.h +0 -0
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/LoggingServer.h +18 -16
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/Main.cpp +15 -13
- data/ext/common/{LoggingAgent → agents/LoggingAgent}/RemoteSender.h +6 -6
- data/ext/common/agents/SpawnPreparer.cpp +127 -0
- data/ext/common/{Watchdog.cpp → agents/Watchdog/Main.cpp} +63 -25
- data/ext/libeio/Changes +72 -0
- data/ext/{google/COPYING → libeio/LICENSE} +17 -9
- data/ext/libeio/Makefile.am +15 -0
- data/ext/libeio/Makefile.in +694 -0
- data/ext/libeio/aclocal.m4 +9418 -0
- data/ext/libeio/autogen.sh +3 -0
- data/ext/libeio/config.guess +1501 -0
- data/ext/libeio/config.h.in +136 -0
- data/ext/libeio/config.sub +1705 -0
- data/ext/libeio/configure +14822 -0
- data/ext/libeio/configure.ac +22 -0
- data/ext/libeio/demo.c +194 -0
- data/ext/libeio/ecb.h +457 -0
- data/ext/libeio/eio.c +2816 -0
- data/ext/libeio/eio.h +411 -0
- data/ext/libeio/install-sh +520 -0
- data/ext/libeio/libeio.m4 +211 -0
- data/ext/libeio/ltmain.sh +9636 -0
- data/ext/libeio/missing +376 -0
- data/ext/libeio/xthread.h +166 -0
- data/ext/libev/Changes +125 -7
- data/ext/libev/Makefile.am +5 -3
- data/ext/libev/Makefile.in +209 -120
- data/ext/libev/aclocal.m4 +6027 -4619
- data/ext/libev/autogen.sh +1 -4
- data/ext/libev/config.h.in +11 -7
- data/ext/libev/configure +7312 -14993
- data/ext/libev/configure.ac +12 -5
- data/ext/libev/depcomp +630 -0
- data/ext/libev/ev++.h +48 -32
- data/ext/libev/ev.c +1173 -391
- data/ext/libev/ev.h +315 -181
- data/ext/libev/ev_epoll.c +66 -15
- data/ext/libev/ev_kqueue.c +20 -18
- data/ext/libev/ev_poll.c +27 -23
- data/ext/libev/ev_port.c +39 -19
- data/ext/libev/ev_select.c +23 -17
- data/ext/libev/ev_vars.h +25 -8
- data/ext/libev/ev_win32.c +6 -6
- data/ext/libev/ev_wrap.h +22 -2
- data/ext/libev/event.c +18 -17
- data/ext/libev/event.h +16 -4
- data/ext/libev/libev.m4 +10 -6
- data/ext/libev/ltmain.sh +7353 -5811
- data/ext/nginx/Configuration.c +74 -42
- data/ext/nginx/Configuration.h +3 -5
- data/ext/nginx/ContentHandler.c +26 -83
- data/ext/nginx/ContentHandler.h +1 -1
- data/ext/nginx/config +13 -9
- data/ext/nginx/ngx_http_passenger_module.c +3 -7
- data/ext/oxt/detail/backtrace_enabled.hpp +5 -102
- data/ext/oxt/detail/context.hpp +90 -0
- data/ext/oxt/detail/spin_lock_darwin.hpp +4 -0
- data/ext/oxt/detail/spin_lock_gcc_x86.hpp +4 -0
- data/ext/oxt/detail/spin_lock_pthreads.hpp +14 -0
- data/ext/oxt/detail/tracable_exception_enabled.hpp +2 -2
- data/ext/oxt/dynamic_thread_group.hpp +27 -1
- data/ext/oxt/implementation.cpp +415 -0
- data/ext/oxt/{thread.cpp → initialize.hpp} +13 -6
- data/ext/oxt/macros.hpp +32 -1
- data/ext/oxt/spin_lock.hpp +6 -11
- data/ext/oxt/system_calls.cpp +204 -16
- data/ext/oxt/system_calls.hpp +85 -45
- data/ext/oxt/thread.hpp +13 -117
- data/ext/ruby/passenger_native_support.c +82 -237
- data/helper-scripts/backtrace-sanitizer.rb +114 -0
- data/helper-scripts/classic-rails-loader.rb +135 -0
- data/helper-scripts/classic-rails-preloader.rb +161 -0
- data/helper-scripts/node-loader.js +314 -0
- data/helper-scripts/rack-loader.rb +104 -0
- data/helper-scripts/rack-preloader.rb +132 -0
- data/helper-scripts/wsgi-loader.py +231 -0
- data/helper-scripts/wsgi-preloader.py +1 -0
- data/lib/phusion_passenger.rb +159 -61
- data/lib/phusion_passenger/abstract_installer.rb +182 -87
- data/lib/phusion_passenger/admin_tools/server_instance.rb +25 -19
- data/lib/phusion_passenger/analytics_logger.rb +5 -4
- data/lib/phusion_passenger/classic_rails/{request_handler.rb → thread_handler_extension.rb} +4 -40
- data/lib/phusion_passenger/classic_rails_extensions/init.rb +5 -3
- data/lib/phusion_passenger/common_library.rb +441 -0
- data/lib/phusion_passenger/console_text_template.rb +4 -16
- data/lib/phusion_passenger/constants.rb +1 -8
- data/lib/phusion_passenger/debug_logging.rb +5 -2
- data/lib/phusion_passenger/dependencies.rb +51 -13
- data/lib/phusion_passenger/loader_shared_helpers.rb +318 -0
- data/lib/phusion_passenger/message_channel.rb +3 -47
- data/lib/phusion_passenger/message_client.rb +2 -2
- data/lib/phusion_passenger/native_support.rb +36 -15
- data/lib/phusion_passenger/packaging.rb +8 -11
- data/lib/phusion_passenger/platform_info.rb +25 -17
- data/lib/phusion_passenger/platform_info/apache.rb +10 -7
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +10 -30
- data/lib/phusion_passenger/platform_info/compiler.rb +93 -34
- data/lib/phusion_passenger/platform_info/ruby.rb +37 -97
- data/lib/phusion_passenger/preloader_shared_helpers.rb +121 -0
- data/lib/phusion_passenger/public_api.rb +1 -4
- data/lib/phusion_passenger/rack/{request_handler.rb → thread_handler_extension.rb} +14 -63
- data/lib/phusion_passenger/rails3_extensions/init.rb +9 -8
- data/lib/phusion_passenger/request_handler.rb +500 -0
- data/lib/phusion_passenger/request_handler/thread_handler.rb +360 -0
- data/lib/phusion_passenger/ruby_core_enhancements.rb +142 -0
- data/lib/phusion_passenger/standalone/command.rb +36 -15
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +16 -8
- data/lib/phusion_passenger/standalone/runtime_installer.rb +169 -72
- data/lib/phusion_passenger/standalone/start_command.rb +44 -39
- data/lib/phusion_passenger/standalone/utils.rb +5 -5
- data/lib/phusion_passenger/utils.rb +35 -914
- data/lib/phusion_passenger/utils/ansi_colors.rb +59 -0
- data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
- data/lib/phusion_passenger/utils/robust_interruption.rb +134 -0
- data/lib/phusion_passenger/utils/tee_input.rb +174 -0
- data/lib/phusion_passenger/utils/tmpio.rb +33 -0
- data/lib/phusion_passenger/utils/unseekable_socket.rb +6 -0
- data/resources/mime.types +5 -1
- data/{lib/phusion_passenger/templates → resources}/standalone_default_root/index.html +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/config_snippets.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/deployment_example.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/no_write_permission_to_passenger_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/apache2/welcome.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/error_layout.css +6 -0
- data/resources/templates/error_layout.html.template +89 -0
- data/resources/templates/general_error.html.template +1 -0
- data/resources/templates/general_error_with_html.html.template +1 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/ask_for_extra_configure_flags.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/cannot_write_to_dir.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/config_snippets_inserted.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/confirm_extra_configure_flags.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/deployment_example.txt.erb +0 -0
- data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +8 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_downloaded.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/pcre_could_not_be_extracted.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/query_download_and_install.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/nginx/welcome.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/cannot_write_to_dir.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/config.erb +26 -5
- data/{lib/phusion_passenger → resources}/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/run_installer_as_root.txt.erb +0 -0
- data/{lib/phusion_passenger → resources}/templates/standalone/welcome.txt.erb +0 -0
- data/resources/templates/undisclosed_error.html.template +25 -0
- data/test/config.json.example +42 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +86 -0
- data/test/cxx/ApplicationPool2/OptionsTest.cpp +44 -0
- data/test/cxx/ApplicationPool2/PoolTest.cpp +1234 -0
- data/test/cxx/ApplicationPool2/ProcessTest.cpp +131 -0
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +229 -0
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +744 -0
- data/test/cxx/BufferedIOTest.cpp +7 -7
- data/test/cxx/CxxTestMain.cpp +65 -2
- data/test/cxx/FileBackedPipeTest.cpp +626 -0
- data/test/cxx/FileChangeCheckerTest.cpp +20 -18
- data/test/cxx/FilterSupportTest.cpp +5 -5
- data/test/cxx/IOUtilsTest.cpp +11 -4
- data/test/cxx/MessageReadersWritersTest.cpp +1 -1
- data/test/cxx/MessageServerTest.cpp +31 -30
- data/test/cxx/RequestHandlerTest.cpp +777 -0
- data/test/cxx/ScgiRequestParserTest.cpp +36 -16
- data/test/cxx/ServerInstanceDirTest.cpp +1 -1
- data/test/cxx/StringMapTest.cpp +61 -0
- data/test/cxx/TemplateTest.cpp +118 -0
- data/test/cxx/TestSupport.cpp +25 -68
- data/test/cxx/TestSupport.h +81 -41
- data/test/cxx/{LoggingTest.cpp → UnionStationTest.cpp} +79 -74
- data/test/cxx/UtilsTest.cpp +59 -5
- data/test/integration_tests/apache2_tests.rb +2 -2
- data/test/integration_tests/nginx_tests.rb +1 -1
- data/test/integration_tests/spec_helper.rb +7 -5
- data/test/oxt/oxt_test_main.cpp +2 -0
- data/test/oxt/syscall_interruption_test.cpp +1 -0
- data/test/ruby/classic_rails/loader_spec.rb +48 -0
- data/test/ruby/classic_rails/preloader_spec.rb +54 -0
- data/test/ruby/rack/loader_spec.rb +62 -0
- data/test/ruby/rack/preloader_spec.rb +74 -0
- data/test/ruby/{abstract_request_handler_spec.rb → request_handler_spec.rb} +31 -68
- data/test/ruby/shared/loader_spec.rb +241 -0
- data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +141 -182
- data/test/ruby/shared/ruby_loader_spec.rb +55 -0
- data/test/ruby/spec_helper.rb +8 -53
- data/test/ruby/utils/file_system_watcher_spec.rb +9 -1
- data/test/ruby/utils_spec.rb +10 -683
- data/test/stub/rack/config.ru +28 -3
- data/test/stub/rack/start.rb +47 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/Rakefile +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/application_controller.rb +0 -2
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_1.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/bar_controller_2.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/controllers/foo_controller.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/app/helpers/application_helper.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/boot.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/database.yml +3 -3
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environment.rb +5 -2
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/development.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/production.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/environments/staging.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/inflections.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/initializers/mime_types.rb +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/config/routes.rb +1 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/about +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/console +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/dbconsole +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/destroy +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/generate +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/benchmarker +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/profiler +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/performance/request +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/plugin +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/inspector +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/reaper +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/process/spawner +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/runner +0 -0
- data/test/stub/{rails_apps/2.3/foobar → rails2.3}/script/server +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/Gemfile +0 -0
- data/test/stub/rails3.0/Gemfile.lock +80 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/Rakefile +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/controllers/application_controller.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/helpers/application_helper.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/app/views/layouts/application.html.erb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config.ru +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/application.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/boot.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/database.yml +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environment.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/development.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/production.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/environments/test.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/backtrace_silencers.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/inflections.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/mime_types.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/passenger.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/secret_token.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/initializers/session_store.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/locales/en.yml +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/config/routes.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/db/seeds.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/doc/README_FOR_APP +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/404.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/422.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/500.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/favicon.ico +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/index.html +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/public/robots.txt +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/script/rails +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/performance/browsing_test.rb +0 -0
- data/test/stub/{rails_apps/3.0/empty → rails3.0}/test/test_helper.rb +0 -0
- data/test/stub/start_error.pl +24 -0
- data/test/stub/wsgi/passenger_wsgi.py +71 -3
- data/test/support/apache2_controller.rb +2 -2
- data/test/support/placebo-preloader.rb +88 -0
- data/test/support/test_helper.rb +1 -14
- data/test/tut/tut.h +11 -4
- metadata +590 -326
- data.tar.gz.asc +0 -12
- data/PACKAGING.TXT +0 -25
- data/build/config.rb +0 -46
- data/ext/apache2/HelperAgent.cpp +0 -364
- data/ext/boost/call_traits.hpp +0 -24
- data/ext/boost/detail/call_traits.hpp +0 -164
- data/ext/common/AbstractSpawnManager.h +0 -110
- data/ext/common/AgentBase.cpp +0 -432
- data/ext/common/ApplicationPool/Client.h +0 -788
- data/ext/common/ApplicationPool/Interface.h +0 -295
- data/ext/common/ApplicationPool/Pool.h +0 -1327
- data/ext/common/ApplicationPool/Server.h +0 -479
- data/ext/common/MessageChannel.h +0 -494
- data/ext/common/PoolOptions.h +0 -518
- data/ext/common/Process.h +0 -253
- data/ext/common/Session.h +0 -436
- data/ext/common/SpawnManager.h +0 -611
- data/ext/google/ChangeLog +0 -167
- data/ext/google/dense_hash_map +0 -310
- data/ext/google/dense_hash_set +0 -287
- data/ext/google/sparse_hash_map +0 -294
- data/ext/google/sparse_hash_set +0 -275
- data/ext/google/sparsehash/densehashtable.h +0 -1062
- data/ext/google/sparsehash/sparseconfig.h +0 -55
- data/ext/google/sparsehash/sparsehashtable.h +0 -1015
- data/ext/google/sparsetable +0 -1468
- data/ext/google/type_traits.h +0 -250
- data/ext/nginx/HelperAgent.cpp +0 -1355
- data/ext/nginx/ScgiRequestParser.h +0 -375
- data/ext/oxt/backtrace.cpp +0 -185
- data/ext/oxt/tracable_exception.cpp +0 -89
- data/helper-scripts/passenger-spawn-server +0 -106
- data/lib/phusion_passenger/abstract_request_handler.rb +0 -766
- data/lib/phusion_passenger/abstract_server.rb +0 -372
- data/lib/phusion_passenger/abstract_server_collection.rb +0 -335
- data/lib/phusion_passenger/app_process.rb +0 -174
- data/lib/phusion_passenger/classic_rails/application_spawner.rb +0 -344
- data/lib/phusion_passenger/classic_rails/framework_spawner.rb +0 -311
- data/lib/phusion_passenger/exceptions.rb +0 -103
- data/lib/phusion_passenger/html_template.rb +0 -107
- data/lib/phusion_passenger/rack/application_spawner.rb +0 -231
- data/lib/phusion_passenger/spawn_manager.rb +0 -359
- data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +0 -38
- data/lib/phusion_passenger/templates/app_init_error.html.erb +0 -64
- data/lib/phusion_passenger/templates/database_error.html.erb +0 -66
- data/lib/phusion_passenger/templates/error_layout.html.erb +0 -39
- data/lib/phusion_passenger/templates/framework_init_error.html.erb +0 -39
- data/lib/phusion_passenger/templates/general_error.html.erb +0 -22
- data/lib/phusion_passenger/templates/load_error.html.erb +0 -46
- data/lib/phusion_passenger/templates/version_not_found.html.erb +0 -34
- data/lib/phusion_passenger/utils/rewindable_input.rb +0 -125
- data/lib/phusion_passenger/wsgi/application_spawner.rb +0 -108
- data/test/config.yml.example +0 -41
- data/test/cxx/ApplicationPool_PoolTest.cpp +0 -33
- data/test/cxx/ApplicationPool_PoolTestCases.cpp +0 -1029
- data/test/cxx/ApplicationPool_ServerTest.cpp +0 -308
- data/test/cxx/ApplicationPool_Server_PoolTest.cpp +0 -80
- data/test/cxx/MessageChannelTest.cpp +0 -557
- data/test/cxx/PoolOptionsTest.cpp +0 -116
- data/test/cxx/SpawnManagerTest.cpp +0 -161
- data/test/ruby/abstract_server_collection_spec.rb +0 -247
- data/test/ruby/abstract_server_spec.rb +0 -61
- data/test/ruby/app_process_spec.rb +0 -43
- data/test/ruby/classic_rails/application_spawner_spec.rb +0 -89
- data/test/ruby/classic_rails/framework_spawner_spec.rb +0 -92
- data/test/ruby/rack/application_spawner_spec.rb +0 -116
- data/test/ruby/shared/abstract_server_spec.rb +0 -23
- data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +0 -38
- data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +0 -19
- data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +0 -15
- data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +0 -27
- data/test/ruby/shared/spawners/preloading_spawner_spec.rb +0 -29
- data/test/ruby/shared/spawners/reload_all_spec.rb +0 -36
- data/test/ruby/shared/spawners/reload_single_spec.rb +0 -52
- data/test/ruby/shared/spawners/spawn_server_spec.rb +0 -28
- data/test/ruby/shared/spawners/spawner_spec.rb +0 -273
- data/test/ruby/shared/utils/pseudo_io_spec.rb +0 -60
- data/test/ruby/spawn_manager_spec.rb +0 -134
- data/test/ruby/wsgi/application_spawner_spec.rb +0 -50
- data/test/stub/message_channel.rb +0 -11
- data/test/stub/message_channel_2.rb +0 -12
- data/test/stub/message_channel_3.rb +0 -19
- data/test/stub/rails_apps/3.0/empty/Gemfile.lock +0 -73
- data/test/stub/spawn_server.rb +0 -22
- metadata.gz.asc +0 -12
@@ -27,11 +27,11 @@
|
|
27
27
|
namespace boost
|
28
28
|
{
|
29
29
|
|
30
|
-
class thread_interrupted:
|
30
|
+
class BOOST_SYMBOL_VISIBLE thread_interrupted:
|
31
31
|
public oxt::tracable_exception
|
32
32
|
{};
|
33
33
|
|
34
|
-
class thread_exception:
|
34
|
+
class BOOST_SYMBOL_VISIBLE thread_exception:
|
35
35
|
public oxt::tracable_exception
|
36
36
|
{
|
37
37
|
protected:
|
@@ -85,8 +85,8 @@ namespace boost
|
|
85
85
|
int m_sys_err;
|
86
86
|
};
|
87
87
|
|
88
|
-
class condition_error:
|
89
|
-
public
|
88
|
+
class BOOST_SYMBOL_VISIBLE condition_error:
|
89
|
+
public oxt::tracable_exception
|
90
90
|
{
|
91
91
|
public:
|
92
92
|
const char* what() const throw()
|
@@ -96,7 +96,7 @@ namespace boost
|
|
96
96
|
};
|
97
97
|
|
98
98
|
|
99
|
-
class lock_error:
|
99
|
+
class BOOST_SYMBOL_VISIBLE lock_error:
|
100
100
|
public thread_exception
|
101
101
|
{
|
102
102
|
public:
|
@@ -130,7 +130,7 @@ namespace boost
|
|
130
130
|
}
|
131
131
|
};
|
132
132
|
|
133
|
-
class thread_resource_error:
|
133
|
+
class BOOST_SYMBOL_VISIBLE thread_resource_error:
|
134
134
|
public thread_exception
|
135
135
|
{
|
136
136
|
public:
|
@@ -163,7 +163,7 @@ namespace boost
|
|
163
163
|
|
164
164
|
};
|
165
165
|
|
166
|
-
class unsupported_thread_option:
|
166
|
+
class BOOST_SYMBOL_VISIBLE unsupported_thread_option:
|
167
167
|
public thread_exception
|
168
168
|
{
|
169
169
|
public:
|
@@ -185,7 +185,7 @@ namespace boost
|
|
185
185
|
|
186
186
|
};
|
187
187
|
|
188
|
-
class invalid_thread_argument:
|
188
|
+
class BOOST_SYMBOL_VISIBLE invalid_thread_argument:
|
189
189
|
public thread_exception
|
190
190
|
{
|
191
191
|
public:
|
@@ -207,7 +207,7 @@ namespace boost
|
|
207
207
|
|
208
208
|
};
|
209
209
|
|
210
|
-
class thread_permission_error:
|
210
|
+
class BOOST_SYMBOL_VISIBLE thread_permission_error:
|
211
211
|
public thread_exception
|
212
212
|
{
|
213
213
|
public:
|
data/ext/boost/thread/future.hpp
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// (C) Copyright 2008-10 Anthony Williams
|
1
|
+
// (C) Copyright 2008-10 Anthony Williams
|
2
2
|
//
|
3
3
|
// Distributed under the Boost Software License, Version 1.0. (See
|
4
4
|
// accompanying file LICENSE_1_0.txt or copy at
|
@@ -111,7 +111,7 @@ namespace boost
|
|
111
111
|
do_callback(lock);
|
112
112
|
return external_waiters.insert(external_waiters.end(),&cv);
|
113
113
|
}
|
114
|
-
|
114
|
+
|
115
115
|
void remove_external_waiter(waiter_list::iterator it)
|
116
116
|
{
|
117
117
|
boost::lock_guard<boost::mutex> lock(mutex);
|
@@ -132,7 +132,7 @@ namespace boost
|
|
132
132
|
struct relocker
|
133
133
|
{
|
134
134
|
boost::unique_lock<boost::mutex>& lock;
|
135
|
-
|
135
|
+
|
136
136
|
relocker(boost::unique_lock<boost::mutex>& lock_):
|
137
137
|
lock(lock_)
|
138
138
|
{
|
@@ -155,7 +155,7 @@ namespace boost
|
|
155
155
|
local_callback();
|
156
156
|
}
|
157
157
|
}
|
158
|
-
|
158
|
+
|
159
159
|
|
160
160
|
void wait(bool rethrow=true)
|
161
161
|
{
|
@@ -185,7 +185,7 @@ namespace boost
|
|
185
185
|
}
|
186
186
|
return true;
|
187
187
|
}
|
188
|
-
|
188
|
+
|
189
189
|
void mark_exceptional_finish_internal(boost::exception_ptr const& e)
|
190
190
|
{
|
191
191
|
exception=e;
|
@@ -213,7 +213,7 @@ namespace boost
|
|
213
213
|
{
|
214
214
|
callback=boost::bind(f,boost::ref(*u));
|
215
215
|
}
|
216
|
-
|
216
|
+
|
217
217
|
private:
|
218
218
|
future_object_base(future_object_base const&);
|
219
219
|
future_object_base& operator=(future_object_base const&);
|
@@ -238,7 +238,7 @@ namespace boost
|
|
238
238
|
{
|
239
239
|
storage.reset(new T(t));
|
240
240
|
}
|
241
|
-
|
241
|
+
|
242
242
|
static void init(storage_type& storage,rvalue_source_type t)
|
243
243
|
{
|
244
244
|
storage.reset(new T(static_cast<rvalue_source_type>(t)));
|
@@ -249,7 +249,7 @@ namespace boost
|
|
249
249
|
storage.reset();
|
250
250
|
}
|
251
251
|
};
|
252
|
-
|
252
|
+
|
253
253
|
template<typename T>
|
254
254
|
struct future_traits<T&>
|
255
255
|
{
|
@@ -296,7 +296,7 @@ namespace boost
|
|
296
296
|
typedef typename future_traits<T>::source_reference_type source_reference_type;
|
297
297
|
typedef typename future_traits<T>::rvalue_source_type rvalue_source_type;
|
298
298
|
typedef typename future_traits<T>::move_dest_type move_dest_type;
|
299
|
-
|
299
|
+
|
300
300
|
storage_type result;
|
301
301
|
|
302
302
|
future_object():
|
@@ -353,6 +353,8 @@ namespace boost
|
|
353
353
|
struct future_object<void>:
|
354
354
|
detail::future_object_base
|
355
355
|
{
|
356
|
+
typedef void move_dest_type;
|
357
|
+
|
356
358
|
future_object()
|
357
359
|
{}
|
358
360
|
|
@@ -371,7 +373,7 @@ namespace boost
|
|
371
373
|
{
|
372
374
|
wait();
|
373
375
|
}
|
374
|
-
|
376
|
+
|
375
377
|
future_state::state get_state()
|
376
378
|
{
|
377
379
|
boost::lock_guard<boost::mutex> guard(mutex);
|
@@ -394,7 +396,7 @@ namespace boost
|
|
394
396
|
{
|
395
397
|
struct registered_waiter;
|
396
398
|
typedef std::vector<registered_waiter>::size_type count_type;
|
397
|
-
|
399
|
+
|
398
400
|
struct registered_waiter
|
399
401
|
{
|
400
402
|
boost::shared_ptr<detail::future_object_base> future;
|
@@ -408,44 +410,54 @@ namespace boost
|
|
408
410
|
{}
|
409
411
|
|
410
412
|
};
|
411
|
-
|
413
|
+
|
412
414
|
struct all_futures_lock
|
413
415
|
{
|
414
|
-
|
416
|
+
#ifdef _MANAGED
|
417
|
+
typedef std::ptrdiff_t count_type_portable;
|
418
|
+
#else
|
419
|
+
typedef count_type count_type_portable;
|
420
|
+
#endif
|
421
|
+
count_type_portable count;
|
422
|
+
|
415
423
|
boost::scoped_array<boost::unique_lock<boost::mutex> > locks;
|
416
|
-
|
424
|
+
|
417
425
|
all_futures_lock(std::vector<registered_waiter>& futures):
|
418
426
|
count(futures.size()),locks(new boost::unique_lock<boost::mutex>[count])
|
419
427
|
{
|
420
|
-
for(
|
428
|
+
for(count_type_portable i=0;i<count;++i)
|
421
429
|
{
|
430
|
+
#if defined __DECCXX || defined __SUNPRO_CC
|
431
|
+
locks[i]=boost::unique_lock<boost::mutex>(futures[i].future->mutex).move();
|
432
|
+
#else
|
422
433
|
locks[i]=boost::unique_lock<boost::mutex>(futures[i].future->mutex);
|
434
|
+
#endif
|
423
435
|
}
|
424
436
|
}
|
425
|
-
|
437
|
+
|
426
438
|
void lock()
|
427
439
|
{
|
428
440
|
boost::lock(locks.get(),locks.get()+count);
|
429
441
|
}
|
430
|
-
|
442
|
+
|
431
443
|
void unlock()
|
432
444
|
{
|
433
|
-
for(
|
445
|
+
for(count_type_portable i=0;i<count;++i)
|
434
446
|
{
|
435
447
|
locks[i].unlock();
|
436
448
|
}
|
437
449
|
}
|
438
450
|
};
|
439
|
-
|
451
|
+
|
440
452
|
boost::condition_variable_any cv;
|
441
453
|
std::vector<registered_waiter> futures;
|
442
454
|
count_type future_count;
|
443
|
-
|
455
|
+
|
444
456
|
public:
|
445
457
|
future_waiter():
|
446
458
|
future_count(0)
|
447
459
|
{}
|
448
|
-
|
460
|
+
|
449
461
|
template<typename F>
|
450
462
|
void add(F& f)
|
451
463
|
{
|
@@ -471,7 +483,7 @@ namespace boost
|
|
471
483
|
cv.wait(lk);
|
472
484
|
}
|
473
485
|
}
|
474
|
-
|
486
|
+
|
475
487
|
~future_waiter()
|
476
488
|
{
|
477
489
|
for(count_type i=0;i<futures.size();++i)
|
@@ -479,9 +491,9 @@ namespace boost
|
|
479
491
|
futures[i].future->remove_external_waiter(futures[i].wait_iterator);
|
480
492
|
}
|
481
493
|
}
|
482
|
-
|
494
|
+
|
483
495
|
};
|
484
|
-
|
496
|
+
|
485
497
|
}
|
486
498
|
|
487
499
|
template <typename R>
|
@@ -495,13 +507,13 @@ namespace boost
|
|
495
507
|
{
|
496
508
|
BOOST_STATIC_CONSTANT(bool, value=false);
|
497
509
|
};
|
498
|
-
|
510
|
+
|
499
511
|
template<typename T>
|
500
512
|
struct is_future_type<unique_future<T> >
|
501
513
|
{
|
502
514
|
BOOST_STATIC_CONSTANT(bool, value=true);
|
503
515
|
};
|
504
|
-
|
516
|
+
|
505
517
|
template<typename T>
|
506
518
|
struct is_future_type<shared_future<T> >
|
507
519
|
{
|
@@ -531,7 +543,7 @@ namespace boost
|
|
531
543
|
f2.wait();
|
532
544
|
f3.wait();
|
533
545
|
}
|
534
|
-
|
546
|
+
|
535
547
|
template<typename F1,typename F2,typename F3,typename F4>
|
536
548
|
void wait_for_all(F1& f1,F2& f2,F3& f3,F4& f4)
|
537
549
|
{
|
@@ -556,7 +568,7 @@ namespace boost
|
|
556
568
|
{
|
557
569
|
if(begin==end)
|
558
570
|
return end;
|
559
|
-
|
571
|
+
|
560
572
|
detail::future_waiter waiter;
|
561
573
|
for(Iterator current=begin;current!=end;++current)
|
562
574
|
{
|
@@ -583,7 +595,7 @@ namespace boost
|
|
583
595
|
waiter.add(f3);
|
584
596
|
return waiter.wait();
|
585
597
|
}
|
586
|
-
|
598
|
+
|
587
599
|
template<typename F1,typename F2,typename F3,typename F4>
|
588
600
|
unsigned wait_for_any(F1& f1,F2& f2,F3& f3,F4& f4)
|
589
601
|
{
|
@@ -606,7 +618,7 @@ namespace boost
|
|
606
618
|
waiter.add(f5);
|
607
619
|
return waiter.wait();
|
608
620
|
}
|
609
|
-
|
621
|
+
|
610
622
|
template <typename R>
|
611
623
|
class promise;
|
612
624
|
|
@@ -620,7 +632,7 @@ namespace boost
|
|
620
632
|
unique_future& operator=(unique_future& rhs);// = delete;
|
621
633
|
|
622
634
|
typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
|
623
|
-
|
635
|
+
|
624
636
|
future_ptr future;
|
625
637
|
|
626
638
|
friend class shared_future<R>;
|
@@ -639,7 +651,7 @@ namespace boost
|
|
639
651
|
|
640
652
|
unique_future()
|
641
653
|
{}
|
642
|
-
|
654
|
+
|
643
655
|
~unique_future()
|
644
656
|
{}
|
645
657
|
|
@@ -689,7 +701,7 @@ namespace boost
|
|
689
701
|
|
690
702
|
return future->get();
|
691
703
|
}
|
692
|
-
|
704
|
+
|
693
705
|
// functions to check state, and wait for ready
|
694
706
|
state get_state() const
|
695
707
|
{
|
@@ -699,23 +711,23 @@ namespace boost
|
|
699
711
|
}
|
700
712
|
return future->get_state();
|
701
713
|
}
|
702
|
-
|
714
|
+
|
703
715
|
|
704
716
|
bool is_ready() const
|
705
717
|
{
|
706
718
|
return get_state()==future_state::ready;
|
707
719
|
}
|
708
|
-
|
720
|
+
|
709
721
|
bool has_exception() const
|
710
722
|
{
|
711
723
|
return future && future->has_exception();
|
712
724
|
}
|
713
|
-
|
725
|
+
|
714
726
|
bool has_value() const
|
715
727
|
{
|
716
728
|
return future && future->has_value();
|
717
729
|
}
|
718
|
-
|
730
|
+
|
719
731
|
void wait() const
|
720
732
|
{
|
721
733
|
if(!future)
|
@@ -724,13 +736,13 @@ namespace boost
|
|
724
736
|
}
|
725
737
|
future->wait(false);
|
726
738
|
}
|
727
|
-
|
739
|
+
|
728
740
|
template<typename Duration>
|
729
741
|
bool timed_wait(Duration const& rel_time) const
|
730
742
|
{
|
731
743
|
return timed_wait_until(boost::get_system_time()+rel_time);
|
732
744
|
}
|
733
|
-
|
745
|
+
|
734
746
|
bool timed_wait_until(boost::system_time const& abs_time) const
|
735
747
|
{
|
736
748
|
if(!future)
|
@@ -739,14 +751,21 @@ namespace boost
|
|
739
751
|
}
|
740
752
|
return future->timed_wait_until(abs_time);
|
741
753
|
}
|
742
|
-
|
754
|
+
|
743
755
|
};
|
744
756
|
|
757
|
+
#ifdef BOOST_NO_RVALUE_REFERENCES
|
758
|
+
template <typename T>
|
759
|
+
struct has_move_emulation_enabled_aux<unique_future<T> >
|
760
|
+
: BOOST_MOVE_BOOST_NS::integral_constant<bool, true>
|
761
|
+
{};
|
762
|
+
#endif
|
763
|
+
|
745
764
|
template <typename R>
|
746
765
|
class shared_future
|
747
766
|
{
|
748
767
|
typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
|
749
|
-
|
768
|
+
|
750
769
|
future_ptr future;
|
751
770
|
|
752
771
|
// shared_future(const unique_future<R>& other);
|
@@ -755,7 +774,7 @@ namespace boost
|
|
755
774
|
friend class detail::future_waiter;
|
756
775
|
friend class promise<R>;
|
757
776
|
friend class packaged_task<R>;
|
758
|
-
|
777
|
+
|
759
778
|
shared_future(future_ptr future_):
|
760
779
|
future(future_)
|
761
780
|
{}
|
@@ -799,7 +818,7 @@ namespace boost
|
|
799
818
|
other.future.reset();
|
800
819
|
return *this;
|
801
820
|
}
|
802
|
-
#else
|
821
|
+
#else
|
803
822
|
shared_future(boost::detail::thread_move_t<shared_future> other):
|
804
823
|
future(other->future)
|
805
824
|
{
|
@@ -837,6 +856,7 @@ namespace boost
|
|
837
856
|
}
|
838
857
|
|
839
858
|
// retrieving the value
|
859
|
+
//typename detail::future_object<R>::move_dest_type get()
|
840
860
|
R get()
|
841
861
|
{
|
842
862
|
if(!future)
|
@@ -846,7 +866,7 @@ namespace boost
|
|
846
866
|
|
847
867
|
return future->get();
|
848
868
|
}
|
849
|
-
|
869
|
+
|
850
870
|
// functions to check state, and wait for ready
|
851
871
|
state get_state() const
|
852
872
|
{
|
@@ -856,18 +876,18 @@ namespace boost
|
|
856
876
|
}
|
857
877
|
return future->get_state();
|
858
878
|
}
|
859
|
-
|
879
|
+
|
860
880
|
|
861
881
|
bool is_ready() const
|
862
882
|
{
|
863
883
|
return get_state()==future_state::ready;
|
864
884
|
}
|
865
|
-
|
885
|
+
|
866
886
|
bool has_exception() const
|
867
887
|
{
|
868
888
|
return future && future->has_exception();
|
869
889
|
}
|
870
|
-
|
890
|
+
|
871
891
|
bool has_value() const
|
872
892
|
{
|
873
893
|
return future && future->has_value();
|
@@ -881,13 +901,13 @@ namespace boost
|
|
881
901
|
}
|
882
902
|
future->wait(false);
|
883
903
|
}
|
884
|
-
|
904
|
+
|
885
905
|
template<typename Duration>
|
886
906
|
bool timed_wait(Duration const& rel_time) const
|
887
907
|
{
|
888
908
|
return timed_wait_until(boost::get_system_time()+rel_time);
|
889
909
|
}
|
890
|
-
|
910
|
+
|
891
911
|
bool timed_wait_until(boost::system_time const& abs_time) const
|
892
912
|
{
|
893
913
|
if(!future)
|
@@ -896,36 +916,43 @@ namespace boost
|
|
896
916
|
}
|
897
917
|
return future->timed_wait_until(abs_time);
|
898
918
|
}
|
899
|
-
|
919
|
+
|
900
920
|
};
|
901
921
|
|
922
|
+
#ifdef BOOST_NO_RVALUE_REFERENCES
|
923
|
+
template <typename T>
|
924
|
+
struct has_move_emulation_enabled_aux<shared_future<T> >
|
925
|
+
: BOOST_MOVE_BOOST_NS::integral_constant<bool, true>
|
926
|
+
{};
|
927
|
+
#endif
|
928
|
+
|
902
929
|
template <typename R>
|
903
930
|
class promise
|
904
931
|
{
|
905
932
|
typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
|
906
|
-
|
933
|
+
|
907
934
|
future_ptr future;
|
908
935
|
bool future_obtained;
|
909
|
-
|
936
|
+
|
910
937
|
promise(promise & rhs);// = delete;
|
911
938
|
promise & operator=(promise & rhs);// = delete;
|
912
939
|
|
913
940
|
void lazy_init()
|
914
941
|
{
|
915
|
-
if(!future)
|
942
|
+
if(!atomic_load(&future))
|
916
943
|
{
|
917
|
-
|
918
|
-
future
|
944
|
+
future_ptr blank;
|
945
|
+
atomic_compare_exchange(&future,&blank,future_ptr(new detail::future_object<R>));
|
919
946
|
}
|
920
947
|
}
|
921
|
-
|
948
|
+
|
922
949
|
public:
|
923
950
|
// template <class Allocator> explicit promise(Allocator a);
|
924
951
|
|
925
952
|
promise():
|
926
953
|
future(),future_obtained(false)
|
927
954
|
{}
|
928
|
-
|
955
|
+
|
929
956
|
~promise()
|
930
957
|
{
|
931
958
|
if(future)
|
@@ -945,12 +972,14 @@ namespace boost
|
|
945
972
|
future_obtained(rhs.future_obtained)
|
946
973
|
{
|
947
974
|
future.swap(rhs.future);
|
975
|
+
rhs.future_obtained=false;
|
948
976
|
}
|
949
977
|
promise & operator=(promise&& rhs)
|
950
978
|
{
|
951
979
|
future.swap(rhs.future);
|
952
980
|
future_obtained=rhs.future_obtained;
|
953
981
|
rhs.future.reset();
|
982
|
+
rhs.future_obtained=false;
|
954
983
|
return *this;
|
955
984
|
}
|
956
985
|
#else
|
@@ -958,12 +987,14 @@ namespace boost
|
|
958
987
|
future(rhs->future),future_obtained(rhs->future_obtained)
|
959
988
|
{
|
960
989
|
rhs->future.reset();
|
990
|
+
rhs->future_obtained=false;
|
961
991
|
}
|
962
992
|
promise & operator=(boost::detail::thread_move_t<promise> rhs)
|
963
993
|
{
|
964
994
|
future=rhs->future;
|
965
995
|
future_obtained=rhs->future_obtained;
|
966
996
|
rhs->future.reset();
|
997
|
+
rhs->future_obtained=false;
|
967
998
|
return *this;
|
968
999
|
}
|
969
1000
|
|
@@ -971,8 +1002,8 @@ namespace boost
|
|
971
1002
|
{
|
972
1003
|
return boost::detail::thread_move_t<promise>(*this);
|
973
1004
|
}
|
974
|
-
#endif
|
975
|
-
|
1005
|
+
#endif
|
1006
|
+
|
976
1007
|
void swap(promise& other)
|
977
1008
|
{
|
978
1009
|
future.swap(other.future);
|
@@ -1031,26 +1062,26 @@ namespace boost
|
|
1031
1062
|
lazy_init();
|
1032
1063
|
future->set_wait_callback(f,this);
|
1033
1064
|
}
|
1034
|
-
|
1065
|
+
|
1035
1066
|
};
|
1036
1067
|
|
1037
1068
|
template <>
|
1038
1069
|
class promise<void>
|
1039
1070
|
{
|
1040
1071
|
typedef boost::shared_ptr<detail::future_object<void> > future_ptr;
|
1041
|
-
|
1072
|
+
|
1042
1073
|
future_ptr future;
|
1043
1074
|
bool future_obtained;
|
1044
|
-
|
1075
|
+
|
1045
1076
|
promise(promise & rhs);// = delete;
|
1046
1077
|
promise & operator=(promise & rhs);// = delete;
|
1047
1078
|
|
1048
1079
|
void lazy_init()
|
1049
1080
|
{
|
1050
|
-
if(!future)
|
1081
|
+
if(!atomic_load(&future))
|
1051
1082
|
{
|
1052
|
-
|
1053
|
-
future
|
1083
|
+
future_ptr blank;
|
1084
|
+
atomic_compare_exchange(&future,&blank,future_ptr(new detail::future_object<void>));
|
1054
1085
|
}
|
1055
1086
|
}
|
1056
1087
|
public:
|
@@ -1059,7 +1090,7 @@ namespace boost
|
|
1059
1090
|
promise():
|
1060
1091
|
future(),future_obtained(false)
|
1061
1092
|
{}
|
1062
|
-
|
1093
|
+
|
1063
1094
|
~promise()
|
1064
1095
|
{
|
1065
1096
|
if(future)
|
@@ -1079,12 +1110,14 @@ namespace boost
|
|
1079
1110
|
future_obtained(rhs.future_obtained)
|
1080
1111
|
{
|
1081
1112
|
future.swap(rhs.future);
|
1113
|
+
rhs.future_obtained=false;
|
1082
1114
|
}
|
1083
1115
|
promise & operator=(promise&& rhs)
|
1084
1116
|
{
|
1085
1117
|
future.swap(rhs.future);
|
1086
1118
|
future_obtained=rhs.future_obtained;
|
1087
1119
|
rhs.future.reset();
|
1120
|
+
rhs.future_obtained=false;
|
1088
1121
|
return *this;
|
1089
1122
|
}
|
1090
1123
|
#else
|
@@ -1092,12 +1125,14 @@ namespace boost
|
|
1092
1125
|
future(rhs->future),future_obtained(rhs->future_obtained)
|
1093
1126
|
{
|
1094
1127
|
rhs->future.reset();
|
1128
|
+
rhs->future_obtained=false;
|
1095
1129
|
}
|
1096
1130
|
promise & operator=(boost::detail::thread_move_t<promise> rhs)
|
1097
1131
|
{
|
1098
1132
|
future=rhs->future;
|
1099
1133
|
future_obtained=rhs->future_obtained;
|
1100
1134
|
rhs->future.reset();
|
1135
|
+
rhs->future_obtained=false;
|
1101
1136
|
return *this;
|
1102
1137
|
}
|
1103
1138
|
|
@@ -1106,7 +1141,7 @@ namespace boost
|
|
1106
1141
|
return boost::detail::thread_move_t<promise>(*this);
|
1107
1142
|
}
|
1108
1143
|
#endif
|
1109
|
-
|
1144
|
+
|
1110
1145
|
void swap(promise& other)
|
1111
1146
|
{
|
1112
1147
|
future.swap(other.future);
|
@@ -1117,7 +1152,7 @@ namespace boost
|
|
1117
1152
|
unique_future<void> get_future()
|
1118
1153
|
{
|
1119
1154
|
lazy_init();
|
1120
|
-
|
1155
|
+
|
1121
1156
|
if(future_obtained)
|
1122
1157
|
{
|
1123
1158
|
boost::throw_exception(future_already_retrieved());
|
@@ -1154,9 +1189,16 @@ namespace boost
|
|
1154
1189
|
lazy_init();
|
1155
1190
|
future->set_wait_callback(f,this);
|
1156
1191
|
}
|
1157
|
-
|
1192
|
+
|
1158
1193
|
};
|
1159
1194
|
|
1195
|
+
#ifdef BOOST_NO_RVALUE_REFERENCES
|
1196
|
+
template <typename T>
|
1197
|
+
struct has_move_emulation_enabled_aux<promise<T> >
|
1198
|
+
: BOOST_MOVE_BOOST_NS::integral_constant<bool, true>
|
1199
|
+
{};
|
1200
|
+
#endif
|
1201
|
+
|
1160
1202
|
namespace detail
|
1161
1203
|
{
|
1162
1204
|
template<typename R>
|
@@ -1191,12 +1233,12 @@ namespace boost
|
|
1191
1233
|
this->mark_exceptional_finish_internal(boost::copy_exception(boost::broken_promise()));
|
1192
1234
|
}
|
1193
1235
|
}
|
1194
|
-
|
1195
|
-
|
1236
|
+
|
1237
|
+
|
1196
1238
|
virtual void do_run()=0;
|
1197
1239
|
};
|
1198
|
-
|
1199
|
-
|
1240
|
+
|
1241
|
+
|
1200
1242
|
template<typename R,typename F>
|
1201
1243
|
struct task_object:
|
1202
1244
|
task_base<R>
|
@@ -1205,10 +1247,16 @@ namespace boost
|
|
1205
1247
|
task_object(F const& f_):
|
1206
1248
|
f(f_)
|
1207
1249
|
{}
|
1250
|
+
#ifndef BOOST_NO_RVALUE_REFERENCES
|
1251
|
+
task_object(F&& f_):
|
1252
|
+
f(f_)
|
1253
|
+
{}
|
1254
|
+
#else
|
1208
1255
|
task_object(boost::detail::thread_move_t<F> f_):
|
1209
1256
|
f(f_)
|
1210
1257
|
{}
|
1211
|
-
|
1258
|
+
#endif
|
1259
|
+
|
1212
1260
|
void do_run()
|
1213
1261
|
{
|
1214
1262
|
try
|
@@ -1230,10 +1278,16 @@ namespace boost
|
|
1230
1278
|
task_object(F const& f_):
|
1231
1279
|
f(f_)
|
1232
1280
|
{}
|
1281
|
+
#ifndef BOOST_NO_RVALUE_REFERENCES
|
1282
|
+
task_object(F&& f_):
|
1283
|
+
f(f_)
|
1284
|
+
{}
|
1285
|
+
#else
|
1233
1286
|
task_object(boost::detail::thread_move_t<F> f_):
|
1234
1287
|
f(f_)
|
1235
1288
|
{}
|
1236
|
-
|
1289
|
+
#endif
|
1290
|
+
|
1237
1291
|
void do_run()
|
1238
1292
|
{
|
1239
1293
|
try
|
@@ -1249,7 +1303,7 @@ namespace boost
|
|
1249
1303
|
};
|
1250
1304
|
|
1251
1305
|
}
|
1252
|
-
|
1306
|
+
|
1253
1307
|
|
1254
1308
|
template<typename R>
|
1255
1309
|
class packaged_task
|
@@ -1259,12 +1313,12 @@ namespace boost
|
|
1259
1313
|
|
1260
1314
|
packaged_task(packaged_task&);// = delete;
|
1261
1315
|
packaged_task& operator=(packaged_task&);// = delete;
|
1262
|
-
|
1316
|
+
|
1263
1317
|
public:
|
1264
1318
|
packaged_task():
|
1265
1319
|
future_obtained(false)
|
1266
1320
|
{}
|
1267
|
-
|
1321
|
+
|
1268
1322
|
// construction and destruction
|
1269
1323
|
template <class F>
|
1270
1324
|
explicit packaged_task(F const& f):
|
@@ -1273,11 +1327,18 @@ namespace boost
|
|
1273
1327
|
explicit packaged_task(R(*f)()):
|
1274
1328
|
task(new detail::task_object<R,R(*)()>(f)),future_obtained(false)
|
1275
1329
|
{}
|
1276
|
-
|
1330
|
+
|
1331
|
+
#ifndef BOOST_NO_RVALUE_REFERENCES
|
1332
|
+
template <class F>
|
1333
|
+
explicit packaged_task(F&& f):
|
1334
|
+
task(new detail::task_object<R,F>(f)),future_obtained(false)
|
1335
|
+
{}
|
1336
|
+
#else
|
1277
1337
|
template <class F>
|
1278
1338
|
explicit packaged_task(boost::detail::thread_move_t<F> f):
|
1279
1339
|
task(new detail::task_object<R,F>(f)),future_obtained(false)
|
1280
1340
|
{}
|
1341
|
+
#endif
|
1281
1342
|
|
1282
1343
|
// template <class F, class Allocator>
|
1283
1344
|
// explicit packaged_task(F const& f, Allocator a);
|
@@ -1326,7 +1387,7 @@ namespace boost
|
|
1326
1387
|
}
|
1327
1388
|
#endif
|
1328
1389
|
|
1329
|
-
|
1390
|
+
void swap(packaged_task& other)
|
1330
1391
|
{
|
1331
1392
|
task.swap(other.task);
|
1332
1393
|
std::swap(future_obtained,other.future_obtained);
|
@@ -1349,7 +1410,7 @@ namespace boost
|
|
1349
1410
|
boost::throw_exception(future_already_retrieved());
|
1350
1411
|
}
|
1351
1412
|
}
|
1352
|
-
|
1413
|
+
|
1353
1414
|
|
1354
1415
|
// execution
|
1355
1416
|
void operator()()
|
@@ -1366,9 +1427,16 @@ namespace boost
|
|
1366
1427
|
{
|
1367
1428
|
task->set_wait_callback(f,this);
|
1368
1429
|
}
|
1369
|
-
|
1430
|
+
|
1370
1431
|
};
|
1371
1432
|
|
1433
|
+
#ifdef BOOST_NO_RVALUE_REFERENCES
|
1434
|
+
template <typename T>
|
1435
|
+
struct has_move_emulation_enabled_aux<packaged_task<T> >
|
1436
|
+
: BOOST_MOVE_BOOST_NS::integral_constant<bool, true>
|
1437
|
+
{};
|
1438
|
+
#endif
|
1439
|
+
|
1372
1440
|
}
|
1373
1441
|
|
1374
1442
|
|