passenger 3.9.1.beta → 3.9.2.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/.travis.yml +13 -0
- data/CONTRIBUTING.md +287 -0
- data/INSTALL.md +7 -0
- data/NEWS +32 -0
- data/README.md +46 -0
- data/Rakefile +2 -2
- data/bin/passenger +1 -1
- data/bin/passenger-config +1 -1
- data/bin/passenger-install-apache2-module +1 -1
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-memory-stats +1 -1
- data/bin/passenger-status +1 -1
- data/build/agents.rb +7 -7
- data/build/apache2.rb +2 -2
- data/build/basics.rb +3 -7
- data/build/common_library.rb +14 -7
- data/build/cplusplus_support.rb +1 -1
- data/build/cxx_tests.rb +19 -7
- data/build/documentation.rb +1 -1
- data/build/integration_tests.rb +2 -2
- data/build/misc.rb +6 -6
- data/build/nginx.rb +1 -1
- data/build/oxt_tests.rb +1 -1
- data/build/packaging.rb +13 -23
- data/build/rake_extensions.rb +1 -1
- data/build/rpm.rb +1 -1
- data/build/ruby_extension.rb +2 -2
- data/build/ruby_tests.rb +4 -4
- data/build/test_basics.rb +15 -2
- data/dev/copy_boost_headers.rb +18 -8
- data/dev/find_owner_pipe_leaks.rb +1 -1
- data/dev/render_error_pages.rb +1 -1
- data/dev/run_travis.sh +39 -0
- data/doc/Architectural overview.html +55 -21
- data/doc/{DebuggingAndStressTesting.txt.md → DebuggingAndStressTesting.md} +12 -1
- data/doc/Security of user switching support.html +47 -16
- data/doc/Users guide Apache.html +802 -378
- data/doc/Users guide Apache.idmap.txt +85 -209
- data/doc/Users guide Apache.txt +65 -338
- data/doc/Users guide Nginx.html +715 -252
- data/doc/Users guide Nginx.idmap.txt +71 -147
- data/doc/Users guide Nginx.txt +29 -245
- data/doc/Users guide Standalone.html +45 -14
- data/doc/Users guide Standalone.idmap.txt +0 -2
- data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +1 -1
- data/doc/users_guide_snippets/installation.txt +604 -0
- data/doc/users_guide_snippets/support_information.txt +5 -4
- data/doc/users_guide_snippets/tips.txt +54 -1
- data/ext/apache2/Bucket.cpp +1 -1
- data/ext/apache2/Bucket.h +1 -1
- data/ext/apache2/Configuration.cpp +2 -14
- data/ext/apache2/Configuration.h +1 -1
- data/ext/apache2/Configuration.hpp +3 -22
- data/ext/apache2/DirectoryMapper.h +1 -1
- data/ext/apache2/Hooks.cpp +5 -5
- data/ext/apache2/Hooks.h +1 -1
- data/ext/apache2/mod_passenger.c +1 -1
- data/ext/boost/aligned_storage.hpp +181 -0
- data/ext/boost/array.hpp +446 -0
- data/ext/boost/cerrno.hpp +331 -0
- data/ext/boost/chrono/ceil.hpp +36 -0
- data/ext/boost/chrono/clock_string.hpp +25 -0
- data/ext/boost/chrono/config.hpp +215 -0
- data/ext/boost/chrono/detail/is_evenly_divisible_by.hpp +31 -0
- data/ext/boost/chrono/detail/static_assert.hpp +30 -0
- data/ext/boost/chrono/detail/system.hpp +29 -0
- data/ext/boost/chrono/duration.hpp +795 -0
- data/ext/boost/chrono/system_clocks.hpp +233 -0
- data/ext/boost/chrono/time_point.hpp +379 -0
- data/ext/boost/concept_check.hpp +5 -5
- data/ext/boost/config/compiler/borland.hpp +29 -27
- data/ext/boost/config/compiler/clang.hpp +40 -26
- data/ext/boost/config/compiler/codegear.hpp +20 -19
- data/ext/boost/config/compiler/common_edg.hpp +27 -25
- data/ext/boost/config/compiler/cray.hpp +24 -22
- data/ext/boost/config/compiler/digitalmars.hpp +26 -24
- data/ext/boost/config/compiler/gcc.hpp +32 -30
- data/ext/boost/config/compiler/gcc_xml.hpp +26 -25
- data/ext/boost/config/compiler/hp_acc.hpp +26 -24
- data/ext/boost/config/compiler/intel.hpp +26 -24
- data/ext/boost/config/compiler/metrowerks.hpp +27 -25
- data/ext/boost/config/compiler/mpw.hpp +27 -25
- data/ext/boost/config/compiler/pathscale.hpp +41 -41
- data/ext/boost/config/compiler/pgi.hpp +70 -29
- data/ext/boost/config/compiler/sunpro_cc.hpp +27 -25
- data/ext/boost/config/compiler/vacpp.hpp +36 -26
- data/ext/boost/config/compiler/visualc.hpp +80 -57
- data/ext/boost/config/stdlib/dinkumware.hpp +25 -22
- data/ext/boost/config/stdlib/libcomo.hpp +23 -20
- data/ext/boost/config/stdlib/libcpp.hpp +5 -4
- data/ext/boost/config/stdlib/libstdcpp3.hpp +34 -25
- data/ext/boost/config/stdlib/modena.hpp +23 -20
- data/ext/boost/config/stdlib/msl.hpp +23 -20
- data/ext/boost/config/stdlib/roguewave.hpp +23 -20
- data/ext/boost/config/stdlib/sgi.hpp +23 -20
- data/ext/boost/config/stdlib/stlport.hpp +23 -24
- data/ext/boost/config/stdlib/vacpp.hpp +23 -20
- data/ext/boost/config/suffix.hpp +266 -75
- data/ext/boost/container/container_fwd.hpp +39 -43
- data/ext/boost/date_time/adjust_functors.hpp +1 -1
- data/ext/boost/date_time/c_time.hpp +1 -1
- data/ext/boost/date_time/compiler_config.hpp +1 -1
- data/ext/boost/date_time/constrained_value.hpp +1 -1
- data/ext/boost/date_time/date.hpp +3 -3
- data/ext/boost/date_time/date_clock_device.hpp +1 -1
- data/ext/boost/date_time/date_defs.hpp +1 -1
- data/ext/boost/date_time/date_duration.hpp +9 -9
- data/ext/boost/date_time/date_duration_types.hpp +1 -1
- data/ext/boost/date_time/date_facet.hpp +7 -4
- data/ext/boost/date_time/date_format_simple.hpp +1 -1
- data/ext/boost/date_time/date_formatting.hpp +4 -2
- data/ext/boost/date_time/date_formatting_limited.hpp +1 -1
- data/ext/boost/date_time/date_formatting_locales.hpp +1 -1
- data/ext/boost/date_time/date_generator_formatter.hpp +1 -1
- data/ext/boost/date_time/date_generator_parser.hpp +1 -1
- data/ext/boost/date_time/date_generators.hpp +35 -35
- data/ext/boost/date_time/date_iterator.hpp +15 -15
- data/ext/boost/date_time/date_names_put.hpp +26 -26
- data/ext/boost/date_time/date_parsing.hpp +3 -1
- data/ext/boost/date_time/dst_rules.hpp +2 -2
- data/ext/boost/date_time/filetime_functions.hpp +1 -1
- data/ext/boost/date_time/format_date_parser.hpp +1 -7
- data/ext/boost/date_time/gregorian/conversion.hpp +1 -1
- data/ext/boost/date_time/gregorian/formatters.hpp +1 -1
- data/ext/boost/date_time/gregorian/formatters_limited.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_calendar.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_date.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_day.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_duration.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_duration_types.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_month.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_weekday.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_year.hpp +1 -1
- data/ext/boost/date_time/gregorian/greg_ymd.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian_io.hpp +1 -1
- data/ext/boost/date_time/gregorian/gregorian_types.hpp +1 -1
- data/ext/boost/date_time/gregorian/parsers.hpp +1 -1
- data/ext/boost/date_time/gregorian_calendar.hpp +1 -1
- data/ext/boost/date_time/gregorian_calendar.ipp +1 -1
- data/ext/boost/date_time/int_adapter.hpp +1 -1
- data/ext/boost/date_time/iso_format.hpp +1 -1
- data/ext/boost/date_time/locale_config.hpp +1 -1
- data/ext/boost/date_time/microsec_time_clock.hpp +1 -1
- data/ext/boost/date_time/parse_format_base.hpp +1 -1
- data/ext/boost/date_time/period.hpp +1 -1
- data/ext/boost/date_time/period_formatter.hpp +5 -5
- data/ext/boost/date_time/period_parser.hpp +1 -1
- data/ext/boost/date_time/posix_time/conversion.hpp +1 -1
- data/ext/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_config.hpp +2 -2
- data/ext/boost/date_time/posix_time/posix_time_duration.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_io.hpp +1 -1
- data/ext/boost/date_time/posix_time/posix_time_system.hpp +1 -1
- data/ext/boost/date_time/posix_time/ptime.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_formatters.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_parsers.hpp +1 -1
- data/ext/boost/date_time/posix_time/time_period.hpp +1 -1
- data/ext/boost/date_time/special_defs.hpp +1 -1
- data/ext/boost/date_time/special_values_formatter.hpp +1 -1
- data/ext/boost/date_time/string_convert.hpp +1 -1
- data/ext/boost/date_time/string_parse_tree.hpp +1 -1
- data/ext/boost/date_time/strings_from_facet.hpp +1 -1
- data/ext/boost/date_time/time.hpp +1 -1
- data/ext/boost/date_time/time_clock.hpp +1 -1
- data/ext/boost/date_time/time_defs.hpp +1 -1
- data/ext/boost/date_time/time_duration.hpp +17 -6
- data/ext/boost/date_time/time_facet.hpp +1 -1
- data/ext/boost/date_time/time_formatting_streams.hpp +1 -1
- data/ext/boost/date_time/time_iterator.hpp +17 -17
- data/ext/boost/date_time/time_parsing.hpp +6 -3
- data/ext/boost/date_time/time_resolution_traits.hpp +1 -1
- data/ext/boost/date_time/time_system_counted.hpp +1 -1
- data/ext/boost/date_time/time_system_split.hpp +1 -1
- data/ext/boost/date_time/wrapping_int.hpp +27 -27
- data/ext/boost/date_time/year_month_day.hpp +1 -1
- data/ext/boost/detail/container_fwd.hpp +162 -0
- data/ext/boost/detail/is_incrementable.hpp +134 -0
- data/ext/boost/detail/scoped_enum_emulation.hpp +337 -0
- data/ext/boost/exception/detail/attribute_noreturn.hpp +1 -1
- data/ext/boost/exception/detail/error_info_impl.hpp +2 -1
- data/ext/boost/exception/detail/exception_ptr.hpp +7 -2
- data/ext/boost/exception/exception.hpp +29 -2
- data/ext/boost/exception/info.hpp +1 -1
- data/ext/boost/foreach.hpp +1128 -0
- data/ext/boost/foreach_fwd.hpp +51 -0
- data/ext/boost/function/function_template.hpp +50 -1
- data/ext/boost/functional/hash.hpp +7 -0
- data/ext/boost/functional/hash/detail/container_fwd_0x.hpp +29 -0
- data/ext/boost/functional/hash/detail/float_functions.hpp +246 -0
- data/ext/boost/functional/hash/detail/hash_float.hpp +268 -0
- data/ext/boost/functional/hash/detail/limits.hpp +61 -0
- data/ext/boost/functional/hash/extensions.hpp +367 -0
- data/ext/boost/functional/hash/hash.hpp +509 -0
- data/ext/boost/functional/hash/hash_fwd.hpp +40 -0
- data/ext/boost/functional/hash_fwd.hpp +7 -0
- data/ext/boost/indirect_reference.hpp +43 -0
- data/ext/boost/integer.hpp +19 -15
- data/ext/boost/integer/static_log2.hpp +127 -0
- data/ext/boost/integer_traits.hpp +1 -1
- data/ext/boost/iterator/iterator_facade.hpp +32 -36
- data/ext/boost/iterator/reverse_iterator.hpp +1 -1
- data/ext/boost/iterator/transform_iterator.hpp +1 -1
- data/ext/boost/lambda/core.hpp +79 -0
- data/ext/boost/lambda/detail/actions.hpp +174 -0
- data/ext/boost/lambda/detail/arity_code.hpp +110 -0
- data/ext/boost/lambda/detail/function_adaptors.hpp +789 -0
- data/ext/boost/lambda/detail/is_instance_of.hpp +104 -0
- data/ext/boost/lambda/detail/lambda_config.hpp +48 -0
- data/ext/boost/lambda/detail/lambda_functor_base.hpp +615 -0
- data/ext/boost/lambda/detail/lambda_functors.hpp +324 -0
- data/ext/boost/lambda/detail/lambda_fwd.hpp +74 -0
- data/ext/boost/lambda/detail/lambda_traits.hpp +578 -0
- data/ext/boost/lambda/detail/member_ptr.hpp +737 -0
- data/ext/boost/lambda/detail/operator_actions.hpp +139 -0
- data/ext/boost/lambda/detail/operator_lambda_func_base.hpp +271 -0
- data/ext/boost/lambda/detail/operator_return_type_traits.hpp +917 -0
- data/ext/boost/lambda/detail/operators.hpp +370 -0
- data/ext/boost/lambda/detail/ret.hpp +325 -0
- data/ext/boost/lambda/detail/return_type_traits.hpp +282 -0
- data/ext/boost/lambda/detail/select_functions.hpp +74 -0
- data/ext/boost/lambda/lambda.hpp +34 -0
- data/ext/boost/lexical_cast.hpp +807 -497
- data/ext/boost/libs/system/src/error_code.cpp +430 -0
- data/ext/boost/libs/system/src/local_free_on_destruction.hpp +40 -0
- data/ext/boost/libs/thread/src/future.cpp +61 -0
- data/ext/boost/{src → libs/thread/src}/pthread/once.cpp +28 -9
- data/ext/boost/{src → libs/thread/src}/pthread/thread.cpp +139 -47
- data/ext/boost/{src → libs/thread/src}/pthread/timeconv.inl +0 -0
- data/ext/boost/{src → libs/thread/src}/tss_null.cpp +2 -2
- data/ext/boost/math/policies/policy.hpp +4 -4
- data/ext/boost/math/special_functions/fpclassify.hpp +10 -6
- data/ext/boost/math/special_functions/math_fwd.hpp +226 -0
- data/ext/boost/math/tools/config.hpp +10 -1
- data/ext/boost/move/move.hpp +70 -19
- data/ext/boost/mpl/O1_size.hpp +1 -1
- data/ext/boost/mpl/O1_size_fwd.hpp +1 -1
- data/ext/boost/mpl/accumulate.hpp +39 -0
- data/ext/boost/mpl/advance.hpp +1 -1
- data/ext/boost/mpl/advance_fwd.hpp +1 -1
- data/ext/boost/mpl/alias.hpp +21 -0
- data/ext/boost/mpl/always.hpp +1 -1
- data/ext/boost/mpl/and.hpp +1 -1
- data/ext/boost/mpl/apply.hpp +1 -1
- data/ext/boost/mpl/apply_fwd.hpp +1 -1
- data/ext/boost/mpl/apply_wrap.hpp +1 -1
- data/ext/boost/mpl/arg.hpp +1 -1
- data/ext/boost/mpl/arg_fwd.hpp +1 -1
- data/ext/boost/mpl/arithmetic.hpp +25 -0
- data/ext/boost/mpl/as_sequence.hpp +38 -0
- data/ext/boost/mpl/assert.hpp +1 -1
- data/ext/boost/mpl/at.hpp +1 -1
- data/ext/boost/mpl/at_fwd.hpp +1 -1
- data/ext/boost/mpl/aux_/O1_size_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/adl_barrier.hpp +1 -1
- data/ext/boost/mpl/aux_/advance_backward.hpp +1 -1
- data/ext/boost/mpl/aux_/advance_forward.hpp +1 -1
- data/ext/boost/mpl/aux_/apply_1st.hpp +35 -0
- data/ext/boost/mpl/aux_/arg_typedef.hpp +1 -1
- data/ext/boost/mpl/aux_/arithmetic_op.hpp +1 -1
- data/ext/boost/mpl/aux_/arity.hpp +1 -1
- data/ext/boost/mpl/aux_/arity_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/at_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/back_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/basic_bind.hpp +21 -0
- data/ext/boost/mpl/aux_/begin_end_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/clear_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/common_name_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/comparison_op.hpp +1 -1
- data/ext/boost/mpl/aux_/config/adl.hpp +1 -1
- data/ext/boost/mpl/aux_/config/arrays.hpp +1 -1
- data/ext/boost/mpl/aux_/config/bind.hpp +1 -1
- data/ext/boost/mpl/aux_/config/compiler.hpp +1 -1
- data/ext/boost/mpl/aux_/config/ctps.hpp +1 -1
- data/ext/boost/mpl/aux_/config/dependent_nttp.hpp +35 -0
- data/ext/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp +27 -0
- data/ext/boost/mpl/aux_/config/dtp.hpp +1 -1
- data/ext/boost/mpl/aux_/config/eti.hpp +1 -1
- data/ext/boost/mpl/aux_/config/forwarding.hpp +1 -1
- data/ext/boost/mpl/aux_/config/gcc.hpp +1 -1
- data/ext/boost/mpl/aux_/config/has_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/config/has_xxx.hpp +1 -1
- data/ext/boost/mpl/aux_/config/integral.hpp +1 -1
- data/ext/boost/mpl/aux_/config/intel.hpp +1 -1
- data/ext/boost/mpl/aux_/config/lambda.hpp +1 -1
- data/ext/boost/mpl/aux_/config/msvc.hpp +1 -1
- data/ext/boost/mpl/aux_/config/msvc_typename.hpp +1 -1
- data/ext/boost/mpl/aux_/config/nttp.hpp +1 -1
- data/ext/boost/mpl/aux_/config/operators.hpp +33 -0
- data/ext/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
- data/ext/boost/mpl/aux_/config/pp_counter.hpp +1 -1
- data/ext/boost/mpl/aux_/config/preprocessor.hpp +1 -1
- data/ext/boost/mpl/aux_/config/static_constant.hpp +1 -1
- data/ext/boost/mpl/aux_/config/ttp.hpp +1 -1
- data/ext/boost/mpl/aux_/config/typeof.hpp +1 -1
- data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +1 -1
- data/ext/boost/mpl/aux_/config/workaround.hpp +1 -1
- data/ext/boost/mpl/aux_/contains_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/count_args.hpp +105 -0
- data/ext/boost/mpl/aux_/count_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/empty_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/erase_impl.hpp +69 -0
- data/ext/boost/mpl/aux_/erase_key_impl.hpp +32 -0
- data/ext/boost/mpl/aux_/filter_iter.hpp +140 -0
- data/ext/boost/mpl/aux_/fold_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/fold_impl_body.hpp +365 -0
- data/ext/boost/mpl/aux_/fold_op.hpp +37 -0
- data/ext/boost/mpl/aux_/fold_pred.hpp +37 -0
- data/ext/boost/mpl/aux_/front_impl.hpp +41 -0
- data/ext/boost/mpl/aux_/full_lambda.hpp +1 -1
- data/ext/boost/mpl/aux_/has_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/has_begin.hpp +1 -1
- data/ext/boost/mpl/aux_/has_key_impl.hpp +34 -0
- data/ext/boost/mpl/aux_/has_rebind.hpp +99 -0
- data/ext/boost/mpl/aux_/has_size.hpp +1 -1
- data/ext/boost/mpl/aux_/has_tag.hpp +1 -1
- data/ext/boost/mpl/aux_/has_type.hpp +1 -1
- data/ext/boost/mpl/aux_/include_preprocessed.hpp +1 -1
- data/ext/boost/mpl/aux_/insert_impl.hpp +68 -0
- data/ext/boost/mpl/aux_/insert_range_impl.hpp +77 -0
- data/ext/boost/mpl/aux_/inserter_algorithm.hpp +1 -1
- data/ext/boost/mpl/aux_/integral_wrapper.hpp +1 -1
- data/ext/boost/mpl/aux_/is_msvc_eti_arg.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_apply.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_fold_if_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_fold_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/iter_push_front.hpp +36 -0
- data/ext/boost/mpl/aux_/joint_iter.hpp +120 -0
- data/ext/boost/mpl/aux_/lambda_arity_param.hpp +1 -1
- data/ext/boost/mpl/aux_/lambda_no_ctps.hpp +193 -0
- data/ext/boost/mpl/aux_/lambda_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/lambda_support.hpp +1 -1
- data/ext/boost/mpl/aux_/largest_int.hpp +1 -1
- data/ext/boost/mpl/aux_/logical_op.hpp +165 -0
- data/ext/boost/mpl/aux_/msvc_dtw.hpp +68 -0
- data/ext/boost/mpl/aux_/msvc_eti_base.hpp +1 -1
- data/ext/boost/mpl/aux_/msvc_is_class.hpp +58 -0
- data/ext/boost/mpl/aux_/msvc_never_true.hpp +1 -1
- data/ext/boost/mpl/aux_/msvc_type.hpp +1 -1
- data/ext/boost/mpl/aux_/na.hpp +1 -1
- data/ext/boost/mpl/aux_/na_assert.hpp +1 -1
- data/ext/boost/mpl/aux_/na_fwd.hpp +1 -1
- data/ext/boost/mpl/aux_/na_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/nttp_decl.hpp +1 -1
- data/ext/boost/mpl/aux_/numeric_cast_utils.hpp +1 -1
- data/ext/boost/mpl/aux_/numeric_op.hpp +1 -1
- data/ext/boost/mpl/aux_/order_impl.hpp +76 -0
- data/ext/boost/mpl/aux_/overload_names.hpp +48 -0
- data/ext/boost/mpl/aux_/partition_op.hpp +58 -0
- data/ext/boost/mpl/aux_/pop_back_impl.hpp +34 -0
- data/ext/boost/mpl/aux_/pop_front_impl.hpp +44 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp +461 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/arg.hpp +117 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp +300 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bind.hpp +397 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/inherit.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/quote.hpp +119 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp +306 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bind.hpp +403 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp +117 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp +300 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp +397 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp +558 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp +406 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bind.hpp +515 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp +53 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp +536 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp +132 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp +132 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/and.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp +247 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bind.hpp +432 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp +149 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/divides.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp +293 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/greater.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp +293 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/less.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/minus.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp +115 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/or.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/plus.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp +343 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp +343 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/times.hpp +148 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/and.hpp +71 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply.hpp +160 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp +138 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bind.hpp +432 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp +151 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/divides.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/greater.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/less.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/minus.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp +115 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp +102 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/or.hpp +71 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/plus.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/quote.hpp +116 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp +114 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp +46 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/times.hpp +150 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp +456 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bind.hpp +561 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp +147 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/divides.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/minus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/plus.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/times.hpp +146 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/and.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp +268 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp +50 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp +78 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp +486 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp +590 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp +134 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp +166 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp +245 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/less.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/list.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/map.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp +101 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/or.hpp +73 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp +116 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp +295 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/set.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/times.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp +109 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp +556 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp +534 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/and.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp +169 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp +369 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp +466 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp +157 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp +229 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/less.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp +111 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp +98 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/or.hpp +69 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp +110 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp +110 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp +40 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/times.hpp +156 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/and.hpp +64 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply.hpp +139 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp +84 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/arg.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp +440 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bind.hpp +561 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp +52 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitand.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitor.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/bitxor.hpp +142 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/deque.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/divides.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/equal_to.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp +554 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/greater.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/inherit.hpp +125 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp +133 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp +180 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp +228 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/less.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/less_equal.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/list.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/list_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/map.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/minus.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/modulus.hpp +99 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp +92 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/or.hpp +64 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/placeholders.hpp +105 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/plus.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/quote.hpp +123 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp +231 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/set.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/set_c.hpp +328 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/shift_left.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/shift_right.hpp +97 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/template_arity.hpp +11 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/times.hpp +141 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp +94 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/vector.hpp +323 -0
- data/ext/boost/mpl/aux_/preprocessed/plain/vector_c.hpp +309 -0
- data/ext/boost/mpl/aux_/preprocessor/add.hpp +65 -0
- data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/default_params.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/enum.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/ext_params.hpp +78 -0
- data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/is_seq.hpp +54 -0
- data/ext/boost/mpl/aux_/preprocessor/params.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/partial_spec_params.hpp +32 -0
- data/ext/boost/mpl/aux_/preprocessor/range.hpp +23 -0
- data/ext/boost/mpl/aux_/preprocessor/repeat.hpp +51 -0
- data/ext/boost/mpl/aux_/preprocessor/sub.hpp +1 -1
- data/ext/boost/mpl/aux_/preprocessor/token_equal.hpp +56 -0
- data/ext/boost/mpl/aux_/preprocessor/tuple.hpp +29 -0
- data/ext/boost/mpl/aux_/ptr_to_ref.hpp +46 -0
- data/ext/boost/mpl/aux_/push_back_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/push_front_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/range_c/O1_size.hpp +31 -0
- data/ext/boost/mpl/aux_/range_c/back.hpp +34 -0
- data/ext/boost/mpl/aux_/range_c/empty.hpp +37 -0
- data/ext/boost/mpl/aux_/range_c/front.hpp +33 -0
- data/ext/boost/mpl/aux_/range_c/iterator.hpp +106 -0
- data/ext/boost/mpl/aux_/range_c/size.hpp +37 -0
- data/ext/boost/mpl/aux_/range_c/tag.hpp +24 -0
- data/ext/boost/mpl/aux_/reverse_fold_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/reverse_fold_impl_body.hpp +412 -0
- data/ext/boost/mpl/aux_/reverse_iter_fold_impl.hpp +43 -0
- data/ext/boost/mpl/aux_/sequence_wrapper.hpp +292 -0
- data/ext/boost/mpl/aux_/shift_op.hpp +87 -0
- data/ext/boost/mpl/aux_/single_element_iter.hpp +118 -0
- data/ext/boost/mpl/aux_/size_impl.hpp +1 -1
- data/ext/boost/mpl/aux_/sort_impl.hpp +121 -0
- data/ext/boost/mpl/aux_/static_cast.hpp +1 -1
- data/ext/boost/mpl/aux_/template_arity.hpp +1 -1
- data/ext/boost/mpl/aux_/template_arity_fwd.hpp +1 -1
- data/ext/boost/mpl/aux_/test.hpp +32 -0
- data/ext/boost/mpl/aux_/test/assert.hpp +29 -0
- data/ext/boost/mpl/aux_/test/data.hpp +25 -0
- data/ext/boost/mpl/aux_/test/test_case.hpp +21 -0
- data/ext/boost/mpl/aux_/traits_lambda_spec.hpp +1 -1
- data/ext/boost/mpl/aux_/transform_iter.hpp +123 -0
- data/ext/boost/mpl/aux_/type_wrapper.hpp +1 -1
- data/ext/boost/mpl/aux_/unwrap.hpp +47 -0
- data/ext/boost/mpl/aux_/value_wknd.hpp +1 -1
- data/ext/boost/mpl/aux_/yes_no.hpp +1 -1
- data/ext/boost/mpl/back.hpp +39 -0
- data/ext/boost/mpl/back_fwd.hpp +1 -1
- data/ext/boost/mpl/back_inserter.hpp +1 -1
- data/ext/boost/mpl/base.hpp +35 -0
- data/ext/boost/mpl/begin.hpp +19 -0
- data/ext/boost/mpl/begin_end.hpp +1 -1
- data/ext/boost/mpl/begin_end_fwd.hpp +1 -1
- data/ext/boost/mpl/bind.hpp +1 -1
- data/ext/boost/mpl/bind_fwd.hpp +1 -1
- data/ext/boost/mpl/bitand.hpp +45 -0
- data/ext/boost/mpl/bitor.hpp +45 -0
- data/ext/boost/mpl/bitwise.hpp +24 -0
- data/ext/boost/mpl/bitxor.hpp +23 -0
- data/ext/boost/mpl/bool.hpp +1 -1
- data/ext/boost/mpl/bool_fwd.hpp +1 -1
- data/ext/boost/mpl/char.hpp +22 -0
- data/ext/boost/mpl/char_fwd.hpp +27 -0
- data/ext/boost/mpl/clear.hpp +1 -1
- data/ext/boost/mpl/clear_fwd.hpp +1 -1
- data/ext/boost/mpl/comparison.hpp +1 -1
- data/ext/boost/mpl/contains.hpp +1 -1
- data/ext/boost/mpl/contains_fwd.hpp +1 -1
- data/ext/boost/mpl/copy.hpp +58 -0
- data/ext/boost/mpl/copy_if.hpp +96 -0
- data/ext/boost/mpl/count.hpp +40 -0
- data/ext/boost/mpl/count_fwd.hpp +24 -0
- data/ext/boost/mpl/count_if.hpp +79 -0
- data/ext/boost/mpl/deque.hpp +58 -0
- data/ext/boost/mpl/deref.hpp +1 -1
- data/ext/boost/mpl/distance.hpp +1 -1
- data/ext/boost/mpl/distance_fwd.hpp +1 -1
- data/ext/boost/mpl/divides.hpp +21 -0
- data/ext/boost/mpl/empty.hpp +39 -0
- data/ext/boost/mpl/empty_base.hpp +59 -0
- data/ext/boost/mpl/empty_fwd.hpp +1 -1
- data/ext/boost/mpl/empty_sequence.hpp +42 -0
- data/ext/boost/mpl/end.hpp +19 -0
- data/ext/boost/mpl/equal.hpp +112 -0
- data/ext/boost/mpl/equal_to.hpp +1 -1
- data/ext/boost/mpl/erase.hpp +42 -0
- data/ext/boost/mpl/erase_fwd.hpp +24 -0
- data/ext/boost/mpl/erase_key.hpp +41 -0
- data/ext/boost/mpl/erase_key_fwd.hpp +24 -0
- data/ext/boost/mpl/eval_if.hpp +1 -1
- data/ext/boost/mpl/filter_view.hpp +46 -0
- data/ext/boost/mpl/find.hpp +1 -1
- data/ext/boost/mpl/find_if.hpp +1 -1
- data/ext/boost/mpl/fold.hpp +1 -1
- data/ext/boost/mpl/for_each.hpp +116 -0
- data/ext/boost/mpl/front.hpp +39 -0
- data/ext/boost/mpl/front_fwd.hpp +1 -1
- data/ext/boost/mpl/front_inserter.hpp +1 -1
- data/ext/boost/mpl/greater.hpp +1 -1
- data/ext/boost/mpl/greater_equal.hpp +1 -1
- data/ext/boost/mpl/has_key.hpp +41 -0
- data/ext/boost/mpl/has_key_fwd.hpp +25 -0
- data/ext/boost/mpl/has_xxx.hpp +1 -1
- data/ext/boost/mpl/identity.hpp +1 -1
- data/ext/boost/mpl/if.hpp +1 -1
- data/ext/boost/mpl/index_if.hpp +60 -0
- data/ext/boost/mpl/index_of.hpp +39 -0
- data/ext/boost/mpl/inherit.hpp +229 -0
- data/ext/boost/mpl/inherit_linearly.hpp +39 -0
- data/ext/boost/mpl/insert.hpp +41 -0
- data/ext/boost/mpl/insert_fwd.hpp +24 -0
- data/ext/boost/mpl/insert_range.hpp +41 -0
- data/ext/boost/mpl/insert_range_fwd.hpp +24 -0
- data/ext/boost/mpl/inserter.hpp +1 -1
- data/ext/boost/mpl/int.hpp +1 -1
- data/ext/boost/mpl/int_fwd.hpp +1 -1
- data/ext/boost/mpl/integral_c.hpp +1 -1
- data/ext/boost/mpl/integral_c_fwd.hpp +1 -1
- data/ext/boost/mpl/integral_c_tag.hpp +1 -1
- data/ext/boost/mpl/is_placeholder.hpp +67 -0
- data/ext/boost/mpl/is_sequence.hpp +112 -0
- data/ext/boost/mpl/iter_fold.hpp +1 -1
- data/ext/boost/mpl/iter_fold_if.hpp +1 -1
- data/ext/boost/mpl/iterator_category.hpp +35 -0
- data/ext/boost/mpl/iterator_range.hpp +1 -1
- data/ext/boost/mpl/iterator_tags.hpp +1 -1
- data/ext/boost/mpl/joint_view.hpp +65 -0
- data/ext/boost/mpl/key_type.hpp +42 -0
- data/ext/boost/mpl/key_type_fwd.hpp +25 -0
- data/ext/boost/mpl/lambda.hpp +1 -1
- data/ext/boost/mpl/lambda_fwd.hpp +1 -1
- data/ext/boost/mpl/less.hpp +1 -1
- data/ext/boost/mpl/less_equal.hpp +1 -1
- data/ext/boost/mpl/limits/arity.hpp +1 -1
- data/ext/boost/mpl/limits/list.hpp +1 -1
- data/ext/boost/mpl/limits/map.hpp +21 -0
- data/ext/boost/mpl/limits/set.hpp +21 -0
- data/ext/boost/mpl/limits/string.hpp +21 -0
- data/ext/boost/mpl/limits/unrolling.hpp +21 -0
- data/ext/boost/mpl/limits/vector.hpp +1 -1
- data/ext/boost/mpl/list.hpp +1 -1
- data/ext/boost/mpl/list/aux_/O1_size.hpp +1 -1
- data/ext/boost/mpl/list/aux_/begin_end.hpp +1 -1
- data/ext/boost/mpl/list/aux_/clear.hpp +1 -1
- data/ext/boost/mpl/list/aux_/empty.hpp +1 -1
- data/ext/boost/mpl/list/aux_/front.hpp +1 -1
- data/ext/boost/mpl/list/aux_/include_preprocessed.hpp +1 -1
- data/ext/boost/mpl/list/aux_/item.hpp +1 -1
- data/ext/boost/mpl/list/aux_/iterator.hpp +1 -1
- data/ext/boost/mpl/list/aux_/numbered.hpp +68 -0
- data/ext/boost/mpl/list/aux_/numbered_c.hpp +71 -0
- data/ext/boost/mpl/list/aux_/pop_front.hpp +1 -1
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp +164 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp +173 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list30.hpp +189 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp +183 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list40.hpp +209 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp +193 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list50.hpp +229 -0
- data/ext/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp +203 -0
- data/ext/boost/mpl/list/aux_/push_back.hpp +1 -1
- data/ext/boost/mpl/list/aux_/push_front.hpp +1 -1
- data/ext/boost/mpl/list/aux_/size.hpp +1 -1
- data/ext/boost/mpl/list/aux_/tag.hpp +1 -1
- data/ext/boost/mpl/list/list0.hpp +1 -1
- data/ext/boost/mpl/list/list0_c.hpp +31 -0
- data/ext/boost/mpl/list/list10.hpp +1 -1
- data/ext/boost/mpl/list/list10_c.hpp +43 -0
- data/ext/boost/mpl/list/list20.hpp +1 -1
- data/ext/boost/mpl/list/list20_c.hpp +43 -0
- data/ext/boost/mpl/list/list30.hpp +43 -0
- data/ext/boost/mpl/list/list30_c.hpp +43 -0
- data/ext/boost/mpl/list/list40.hpp +43 -0
- data/ext/boost/mpl/list/list40_c.hpp +43 -0
- data/ext/boost/mpl/list/list50.hpp +43 -0
- data/ext/boost/mpl/list/list50_c.hpp +43 -0
- data/ext/boost/mpl/list_c.hpp +60 -0
- data/ext/boost/mpl/logical.hpp +1 -1
- data/ext/boost/mpl/long.hpp +1 -1
- data/ext/boost/mpl/long_fwd.hpp +1 -1
- data/ext/boost/mpl/lower_bound.hpp +143 -0
- data/ext/boost/mpl/map.hpp +57 -0
- data/ext/boost/mpl/map/aux_/at_impl.hpp +144 -0
- data/ext/boost/mpl/map/aux_/begin_end_impl.hpp +50 -0
- data/ext/boost/mpl/map/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/map/aux_/contains_impl.hpp +43 -0
- data/ext/boost/mpl/map/aux_/empty_impl.hpp +34 -0
- data/ext/boost/mpl/map/aux_/erase_impl.hpp +41 -0
- data/ext/boost/mpl/map/aux_/erase_key_impl.hpp +53 -0
- data/ext/boost/mpl/map/aux_/has_key_impl.hpp +44 -0
- data/ext/boost/mpl/map/aux_/include_preprocessed.hpp +53 -0
- data/ext/boost/mpl/map/aux_/insert_impl.hpp +72 -0
- data/ext/boost/mpl/map/aux_/item.hpp +138 -0
- data/ext/boost/mpl/map/aux_/iterator.hpp +169 -0
- data/ext/boost/mpl/map/aux_/key_type_impl.hpp +36 -0
- data/ext/boost/mpl/map/aux_/map0.hpp +74 -0
- data/ext/boost/mpl/map/aux_/numbered.hpp +110 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp +350 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp +370 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp +390 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp +410 -0
- data/ext/boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp +430 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map10.hpp +290 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map20.hpp +310 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map30.hpp +330 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map40.hpp +350 -0
- data/ext/boost/mpl/map/aux_/preprocessed/plain/map50.hpp +370 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp +150 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp +170 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp +190 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp +210 -0
- data/ext/boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp +230 -0
- data/ext/boost/mpl/map/aux_/size_impl.hpp +33 -0
- data/ext/boost/mpl/map/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/map/aux_/value_type_impl.hpp +36 -0
- data/ext/boost/mpl/map/map0.hpp +36 -0
- data/ext/boost/mpl/map/map10.hpp +44 -0
- data/ext/boost/mpl/map/map20.hpp +44 -0
- data/ext/boost/mpl/map/map30.hpp +44 -0
- data/ext/boost/mpl/map/map40.hpp +44 -0
- data/ext/boost/mpl/map/map50.hpp +44 -0
- data/ext/boost/mpl/math/fixed_c.hpp +36 -0
- data/ext/boost/mpl/math/is_even.hpp +54 -0
- data/ext/boost/mpl/math/rational_c.hpp +37 -0
- data/ext/boost/mpl/max.hpp +19 -0
- data/ext/boost/mpl/max_element.hpp +72 -0
- data/ext/boost/mpl/min.hpp +19 -0
- data/ext/boost/mpl/min_element.hpp +40 -0
- data/ext/boost/mpl/min_max.hpp +46 -0
- data/ext/boost/mpl/minus.hpp +1 -1
- data/ext/boost/mpl/modulus.hpp +22 -0
- data/ext/boost/mpl/multiplies.hpp +1 -1
- data/ext/boost/mpl/multiset/aux_/count_impl.hpp +82 -0
- data/ext/boost/mpl/multiset/aux_/insert_impl.hpp +34 -0
- data/ext/boost/mpl/multiset/aux_/item.hpp +114 -0
- data/ext/boost/mpl/multiset/aux_/multiset0.hpp +34 -0
- data/ext/boost/mpl/multiset/aux_/tag.hpp +23 -0
- data/ext/boost/mpl/multiset/multiset0.hpp +36 -0
- data/ext/boost/mpl/negate.hpp +1 -1
- data/ext/boost/mpl/next.hpp +1 -1
- data/ext/boost/mpl/next_prior.hpp +1 -1
- data/ext/boost/mpl/not.hpp +1 -1
- data/ext/boost/mpl/not_equal_to.hpp +1 -1
- data/ext/boost/mpl/numeric_cast.hpp +1 -1
- data/ext/boost/mpl/or.hpp +1 -1
- data/ext/boost/mpl/order.hpp +41 -0
- data/ext/boost/mpl/order_fwd.hpp +25 -0
- data/ext/boost/mpl/pair.hpp +1 -1
- data/ext/boost/mpl/pair_view.hpp +169 -0
- data/ext/boost/mpl/partition.hpp +53 -0
- data/ext/boost/mpl/placeholders.hpp +1 -1
- data/ext/boost/mpl/plus.hpp +1 -1
- data/ext/boost/mpl/pop_back.hpp +39 -0
- data/ext/boost/mpl/pop_back_fwd.hpp +1 -1
- data/ext/boost/mpl/pop_front.hpp +39 -0
- data/ext/boost/mpl/pop_front_fwd.hpp +1 -1
- data/ext/boost/mpl/print.hpp +74 -0
- data/ext/boost/mpl/prior.hpp +1 -1
- data/ext/boost/mpl/protect.hpp +1 -1
- data/ext/boost/mpl/push_back.hpp +1 -1
- data/ext/boost/mpl/push_back_fwd.hpp +1 -1
- data/ext/boost/mpl/push_front.hpp +1 -1
- data/ext/boost/mpl/push_front_fwd.hpp +1 -1
- data/ext/boost/mpl/quote.hpp +1 -1
- data/ext/boost/mpl/range_c.hpp +48 -0
- data/ext/boost/mpl/remove.hpp +52 -0
- data/ext/boost/mpl/remove_if.hpp +1 -1
- data/ext/boost/mpl/replace.hpp +55 -0
- data/ext/boost/mpl/replace_if.hpp +88 -0
- data/ext/boost/mpl/reverse.hpp +38 -0
- data/ext/boost/mpl/reverse_fold.hpp +1 -1
- data/ext/boost/mpl/reverse_iter_fold.hpp +56 -0
- data/ext/boost/mpl/same_as.hpp +1 -1
- data/ext/boost/mpl/sequence_tag.hpp +1 -1
- data/ext/boost/mpl/sequence_tag_fwd.hpp +1 -1
- data/ext/boost/mpl/set.hpp +57 -0
- data/ext/boost/mpl/set/aux_/at_impl.hpp +40 -0
- data/ext/boost/mpl/set/aux_/begin_end_impl.hpp +43 -0
- data/ext/boost/mpl/set/aux_/clear_impl.hpp +35 -0
- data/ext/boost/mpl/set/aux_/empty_impl.hpp +34 -0
- data/ext/boost/mpl/set/aux_/erase_impl.hpp +41 -0
- data/ext/boost/mpl/set/aux_/erase_key_impl.hpp +53 -0
- data/ext/boost/mpl/set/aux_/has_key_impl.hpp +60 -0
- data/ext/boost/mpl/set/aux_/include_preprocessed.hpp +42 -0
- data/ext/boost/mpl/set/aux_/insert_impl.hpp +65 -0
- data/ext/boost/mpl/set/aux_/item.hpp +80 -0
- data/ext/boost/mpl/set/aux_/iterator.hpp +98 -0
- data/ext/boost/mpl/set/aux_/key_type_impl.hpp +34 -0
- data/ext/boost/mpl/set/aux_/numbered.hpp +48 -0
- data/ext/boost/mpl/set/aux_/numbered_c.hpp +48 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set10.hpp +140 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp +145 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set20.hpp +168 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp +154 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set30.hpp +195 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp +164 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set40.hpp +221 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp +174 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set50.hpp +250 -0
- data/ext/boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp +184 -0
- data/ext/boost/mpl/set/aux_/set0.hpp +69 -0
- data/ext/boost/mpl/set/aux_/size_impl.hpp +33 -0
- data/ext/boost/mpl/set/aux_/tag.hpp +24 -0
- data/ext/boost/mpl/set/aux_/value_type_impl.hpp +34 -0
- data/ext/boost/mpl/set/set0.hpp +35 -0
- data/ext/boost/mpl/set/set0_c.hpp +32 -0
- data/ext/boost/mpl/set/set10.hpp +44 -0
- data/ext/boost/mpl/set/set10_c.hpp +45 -0
- data/ext/boost/mpl/set/set20.hpp +44 -0
- data/ext/boost/mpl/set/set20_c.hpp +45 -0
- data/ext/boost/mpl/set/set30.hpp +44 -0
- data/ext/boost/mpl/set/set30_c.hpp +45 -0
- data/ext/boost/mpl/set/set40.hpp +44 -0
- data/ext/boost/mpl/set/set40_c.hpp +45 -0
- data/ext/boost/mpl/set/set50.hpp +44 -0
- data/ext/boost/mpl/set/set50_c.hpp +45 -0
- data/ext/boost/mpl/set_c.hpp +60 -0
- data/ext/boost/mpl/shift_left.hpp +22 -0
- data/ext/boost/mpl/shift_right.hpp +22 -0
- data/ext/boost/mpl/single_view.hpp +38 -0
- data/ext/boost/mpl/size.hpp +1 -1
- data/ext/boost/mpl/size_fwd.hpp +1 -1
- data/ext/boost/mpl/size_t.hpp +1 -1
- data/ext/boost/mpl/size_t_fwd.hpp +1 -1
- data/ext/boost/mpl/sizeof.hpp +36 -0
- data/ext/boost/mpl/sort.hpp +27 -0
- data/ext/boost/mpl/stable_partition.hpp +75 -0
- data/ext/boost/mpl/string.hpp +607 -0
- data/ext/boost/mpl/switch.hpp +49 -0
- data/ext/boost/mpl/tag.hpp +1 -1
- data/ext/boost/mpl/times.hpp +1 -1
- data/ext/boost/mpl/transform.hpp +145 -0
- data/ext/boost/mpl/transform_view.hpp +46 -0
- data/ext/boost/mpl/unique.hpp +85 -0
- data/ext/boost/mpl/unpack_args.hpp +150 -0
- data/ext/boost/mpl/upper_bound.hpp +141 -0
- data/ext/boost/mpl/value_type.hpp +42 -0
- data/ext/boost/mpl/value_type_fwd.hpp +25 -0
- data/ext/boost/mpl/vector.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/O1_size.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/at.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/back.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/begin_end.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/clear.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/empty.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/front.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/include_preprocessed.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/item.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/iterator.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/numbered.hpp +218 -0
- data/ext/boost/mpl/vector/aux_/numbered_c.hpp +77 -0
- data/ext/boost/mpl/vector/aux_/pop_back.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/pop_front.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp +1528 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp +149 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp +1804 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp +195 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp +2124 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp +238 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp +2444 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp +281 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp +2764 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp +325 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp +149 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp +195 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp +1464 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp +238 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp +1784 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp +281 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp +2104 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp +325 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp +154 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp +163 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp +179 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp +173 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp +199 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp +183 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp +219 -0
- data/ext/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp +193 -0
- data/ext/boost/mpl/vector/aux_/push_back.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/push_front.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/size.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/tag.hpp +1 -1
- data/ext/boost/mpl/vector/aux_/vector0.hpp +1 -1
- data/ext/boost/mpl/vector/vector0.hpp +1 -1
- data/ext/boost/mpl/vector/vector0_c.hpp +31 -0
- data/ext/boost/mpl/vector/vector10.hpp +1 -1
- data/ext/boost/mpl/vector/vector10_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector20.hpp +1 -1
- data/ext/boost/mpl/vector/vector20_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector30.hpp +45 -0
- data/ext/boost/mpl/vector/vector30_c.hpp +47 -0
- data/ext/boost/mpl/vector/vector40.hpp +45 -0
- data/ext/boost/mpl/vector/vector40_c.hpp +46 -0
- data/ext/boost/mpl/vector/vector50.hpp +45 -0
- data/ext/boost/mpl/vector/vector50_c.hpp +46 -0
- data/ext/boost/mpl/vector_c.hpp +61 -0
- data/ext/boost/mpl/void.hpp +1 -1
- data/ext/boost/mpl/void_fwd.hpp +1 -1
- data/ext/boost/mpl/zip_view.hpp +65 -0
- data/ext/boost/numeric/conversion/converter_policies.hpp +8 -0
- data/ext/boost/optional/optional.hpp +2 -2
- data/ext/boost/pointee.hpp +74 -0
- data/ext/boost/preprocessor/{control/deduce_d.hpp → dec.hpp} +3 -8
- data/ext/boost/preprocessor/enum_params_with_a_default.hpp +17 -0
- data/ext/boost/preprocessor/enum_shifted_params.hpp +17 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/lower2.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/bounds/upper2.hpp +99 -0
- data/ext/boost/preprocessor/iteration/detail/iter/forward2.hpp +1338 -0
- data/ext/boost/preprocessor/iteration/detail/iter/reverse1.hpp +1296 -0
- data/ext/boost/preprocessor/repeat_2nd.hpp +17 -0
- data/ext/boost/preprocessor/repetition/enum_params_with_a_default.hpp +25 -0
- data/ext/boost/range/algorithm/equal.hpp +15 -5
- data/ext/boost/range/as_literal.hpp +1 -1
- data/ext/boost/range/size.hpp +3 -3
- data/ext/boost/range/size_type.hpp +33 -23
- data/ext/boost/ratio/config.hpp +86 -0
- data/ext/boost/ratio/detail/mpl/abs.hpp +89 -0
- data/ext/boost/ratio/detail/mpl/gcd.hpp +124 -0
- data/ext/boost/ratio/detail/mpl/lcm.hpp +126 -0
- data/ext/boost/ratio/detail/mpl/sign.hpp +89 -0
- data/ext/boost/ratio/detail/overflow_helpers.hpp +367 -0
- data/ext/boost/ratio/ratio.hpp +233 -0
- data/ext/boost/ratio/ratio_fwd.hpp +84 -0
- data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +3 -3
- data/ext/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +150 -0
- data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +27 -2
- data/ext/boost/swap.hpp +12 -0
- data/ext/boost/system/api_config.hpp +42 -0
- data/ext/boost/system/config.hpp +69 -0
- data/ext/boost/system/error_code.hpp +513 -0
- data/ext/boost/system/system_error.hpp +80 -0
- data/ext/boost/thread/barrier.hpp +4 -4
- data/ext/boost/thread/cv_status.hpp +26 -0
- data/ext/boost/thread/detail/config.hpp +119 -5
- data/ext/boost/thread/detail/delete.hpp +45 -0
- data/ext/boost/thread/detail/memory.hpp +156 -0
- data/ext/boost/thread/detail/move.hpp +181 -1
- data/ext/boost/thread/detail/platform.hpp +3 -1
- data/ext/boost/thread/detail/thread.hpp +254 -157
- data/ext/boost/thread/detail/thread_interruption.hpp +12 -11
- data/ext/boost/thread/exceptions.hpp +125 -136
- data/ext/boost/thread/future.hpp +778 -353
- data/ext/boost/thread/locks.hpp +548 -347
- data/ext/boost/thread/once.hpp +3 -1
- data/ext/boost/thread/pthread/condition_variable.hpp +140 -31
- data/ext/boost/thread/pthread/condition_variable_fwd.hpp +143 -15
- data/ext/boost/thread/pthread/mutex.hpp +76 -24
- data/ext/boost/thread/pthread/once.hpp +53 -22
- data/ext/boost/thread/pthread/recursive_mutex.hpp +74 -27
- data/ext/boost/thread/pthread/shared_mutex.hpp +250 -2
- data/ext/boost/thread/pthread/thread_data.hpp +109 -6
- data/ext/boost/thread/pthread/thread_heap_alloc.hpp +4 -4
- data/ext/boost/thread/reverse_lock.hpp +58 -0
- data/ext/boost/thread/shared_lock_guard.hpp +52 -0
- data/ext/boost/thread/shared_mutex.hpp +7 -2
- data/ext/boost/thread/thread.hpp +2 -1
- data/ext/boost/thread/v2/thread.hpp +56 -0
- data/ext/boost/thread/xtime.hpp +4 -4
- data/ext/boost/throw_exception.hpp +13 -4
- data/ext/boost/tuple/detail/tuple_basic.hpp +980 -0
- data/ext/boost/tuple/tuple.hpp +90 -0
- data/ext/boost/type_traits/add_cv.hpp +48 -0
- data/ext/boost/type_traits/common_type.hpp +158 -0
- data/ext/boost/type_traits/cv_traits.hpp +24 -0
- data/ext/boost/type_traits/decay.hpp +44 -0
- data/ext/boost/type_traits/detail/bool_trait_def.hpp +1 -1
- data/ext/boost/type_traits/detail/bool_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_def.hpp +1 -1
- data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/detail/type_trait_def.hpp +1 -1
- data/ext/boost/type_traits/detail/type_trait_undef.hpp +1 -1
- data/ext/boost/type_traits/has_nothrow_assign.hpp +44 -0
- data/ext/boost/type_traits/has_trivial_assign.hpp +57 -0
- data/ext/boost/type_traits/intrinsics.hpp +4 -3
- data/ext/boost/type_traits/is_compound.hpp +46 -0
- data/ext/boost/type_traits/is_empty.hpp +229 -0
- data/ext/boost/type_traits/is_object.hpp +53 -0
- data/ext/boost/type_traits/is_stateless.hpp +48 -0
- data/ext/boost/type_traits/object_traits.hpp +33 -0
- data/ext/boost/type_traits/remove_bounds.hpp +48 -0
- data/ext/boost/type_traits/remove_volatile.hpp +88 -0
- data/ext/boost/type_traits/same_traits.hpp +15 -0
- data/ext/boost/type_traits/transform_traits.hpp +21 -0
- data/ext/boost/typeof/message.hpp +8 -0
- data/ext/boost/typeof/native.hpp +60 -0
- data/ext/boost/typeof/typeof.hpp +218 -0
- data/ext/boost/utility/declval.hpp +7 -2
- data/ext/boost/utility/detail/result_of_iterate.hpp +98 -32
- data/ext/boost/utility/result_of.hpp +92 -8
- data/ext/boost/version.hpp +32 -0
- data/ext/common/Account.h +1 -1
- data/ext/common/AccountsDatabase.cpp +1 -1
- data/ext/common/AccountsDatabase.h +1 -1
- data/ext/common/AgentsStarter.cpp +5 -6
- data/ext/common/AgentsStarter.h +4 -4
- data/ext/common/AgentsStarter.hpp +4 -6
- data/ext/common/AnsiColorConstants.h +1 -1
- data/ext/common/ApplicationPool2/Common.h +62 -2
- data/ext/common/ApplicationPool2/ComponentInfo.h +1 -1
- data/ext/common/ApplicationPool2/Group.h +411 -150
- data/ext/common/ApplicationPool2/Implementation.cpp +367 -86
- data/ext/common/ApplicationPool2/Options.h +6 -2
- data/ext/common/ApplicationPool2/PipeWatcher.h +1 -1
- data/ext/common/ApplicationPool2/Pool.h +260 -137
- data/ext/common/ApplicationPool2/Process.h +28 -27
- data/ext/common/ApplicationPool2/Session.h +4 -2
- data/ext/common/ApplicationPool2/Socket.h +1 -1
- data/ext/common/ApplicationPool2/Spawner.h +133 -77
- data/ext/common/ApplicationPool2/SuperGroup.h +16 -15
- data/ext/common/BackgroundEventLoop.cpp +1 -1
- data/ext/common/BackgroundEventLoop.h +1 -1
- data/ext/common/Constants.h +2 -2
- data/ext/common/EventedBufferedInput.h +1 -1
- data/ext/common/EventedClient.h +1 -1
- data/ext/common/EventedMessageServer.h +1 -1
- data/ext/common/EventedServer.h +1 -1
- data/ext/common/Exceptions.h +1 -1
- data/ext/common/FileDescriptor.h +1 -1
- data/ext/common/HttpConstants.h +8 -8
- data/ext/common/IniFile.h +1 -1
- data/ext/common/Logging.cpp +45 -20
- data/ext/common/Logging.h +16 -65
- data/ext/common/MessageClient.h +1 -1
- data/ext/common/MessageReadersWriters.h +1 -1
- data/ext/common/MessageServer.h +1 -1
- data/ext/common/MultiLibeio.cpp +1 -1
- data/ext/common/MultiLibeio.h +1 -1
- data/ext/common/RandomGenerator.h +1 -1
- data/ext/common/ResourceLocator.h +1 -1
- data/ext/common/SafeLibev.h +1 -1
- data/ext/common/ServerInstanceDir.h +1 -1
- data/ext/common/StaticString.h +1 -1
- data/ext/common/StringListCreator.h +1 -1
- data/ext/common/UnionStation.h +1 -1
- data/ext/common/Utils.cpp +6 -1
- data/ext/common/Utils.h +9 -1
- data/ext/common/Utils/BlockingQueue.h +1 -1
- data/ext/common/Utils/CachedFileStat.cpp +1 -1
- data/ext/common/Utils/CachedFileStat.h +1 -1
- data/ext/common/Utils/CachedFileStat.hpp +1 -1
- data/ext/common/Utils/FileChangeChecker.h +1 -1
- data/ext/common/Utils/HashMap.h +1 -1
- data/ext/common/Utils/HttpHeaderBufferer.h +1 -1
- data/ext/common/Utils/IOUtils.cpp +3 -3
- data/ext/common/Utils/IOUtils.h +1 -1
- data/ext/common/Utils/MemZeroGuard.h +1 -1
- data/ext/common/Utils/MemoryBarrier.h +1 -1
- data/ext/common/Utils/MessageIO.h +1 -1
- data/ext/common/Utils/MessagePassing.h +304 -0
- data/ext/common/Utils/ProcessMetricsCollector.h +1 -1
- data/ext/common/Utils/ScopeGuard.h +1 -1
- data/ext/common/Utils/StrIntUtils.cpp +40 -1
- data/ext/common/Utils/StrIntUtils.h +7 -1
- data/ext/common/Utils/StringMap.h +1 -1
- data/ext/common/Utils/SystemTime.cpp +1 -1
- data/ext/common/Utils/SystemTime.h +1 -1
- data/ext/common/Utils/Timer.h +1 -1
- data/ext/common/Utils/VariantMap.h +1 -1
- data/ext/common/agents/Base.cpp +182 -10
- data/ext/common/agents/Base.h +1 -1
- data/ext/common/agents/HelperAgent/AgentOptions.h +1 -1
- data/ext/common/agents/HelperAgent/BacktracesServer.h +1 -1
- data/ext/common/agents/HelperAgent/FileBackedPipe.h +1 -1
- data/ext/common/agents/HelperAgent/Main.cpp +13 -5
- data/ext/common/agents/HelperAgent/RequestHandler.cpp +1 -1
- data/ext/common/agents/HelperAgent/RequestHandler.h +23 -9
- data/ext/common/agents/HelperAgent/ScgiRequestParser.h +1 -1
- data/ext/common/agents/LoggingAgent/DataStoreId.h +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.cpp +1 -1
- data/ext/common/agents/LoggingAgent/FilterSupport.h +1 -1
- data/ext/common/agents/LoggingAgent/LoggingServer.h +89 -214
- data/ext/common/agents/LoggingAgent/Main.cpp +9 -19
- data/ext/common/agents/LoggingAgent/RemoteSender.h +9 -2
- data/ext/common/agents/SpawnPreparer.cpp +70 -30
- data/ext/common/agents/Watchdog/Main.cpp +1 -1
- data/ext/libeio/Changes +4 -0
- data/ext/libeio/ecb.h +281 -24
- data/ext/libeio/eio.c +48 -63
- data/ext/libeio/eio.h +7 -6
- data/ext/libeio/libeio.m4 +0 -16
- data/ext/libeio/xthread.h +2 -2
- data/ext/libev/configure +299 -271
- data/ext/nginx/Configuration.c +15 -52
- data/ext/nginx/Configuration.h +0 -2
- data/ext/nginx/ContentHandler.c +13 -2
- data/ext/nginx/ngx_http_passenger_module.c +2 -19
- data/ext/oxt/detail/spin_lock_pthreads.hpp +1 -1
- data/ext/oxt/dynamic_thread_group.hpp +2 -2
- data/ext/oxt/spin_lock.hpp +1 -1
- data/ext/oxt/system_calls.cpp +36 -13
- data/ext/oxt/thread.hpp +11 -5
- data/ext/ruby/extconf.rb +1 -1
- data/ext/ruby/passenger_native_support.c +3 -2
- data/helper-scripts/classic-rails-loader.rb +3 -1
- data/helper-scripts/classic-rails-preloader.rb +4 -1
- data/helper-scripts/node-loader.js +1 -1
- data/helper-scripts/prespawn +1 -1
- data/helper-scripts/rack-loader.rb +3 -1
- data/helper-scripts/rack-preloader.rb +4 -1
- data/helper-scripts/system-memory-stats.py +185 -0
- data/helper-scripts/wsgi-loader.py +1 -1
- data/lib/phusion_passenger.rb +3 -3
- data/lib/phusion_passenger/abstract_installer.rb +1 -1
- data/lib/phusion_passenger/admin_tools.rb +1 -1
- data/lib/phusion_passenger/admin_tools/memory_stats.rb +1 -1
- data/lib/phusion_passenger/admin_tools/server_instance.rb +1 -1
- data/lib/phusion_passenger/analytics_logger.rb +10 -4
- data/lib/phusion_passenger/classic_rails/thread_handler_extension.rb +3 -2
- data/lib/phusion_passenger/common_library.rb +1 -1
- data/lib/phusion_passenger/console_text_template.rb +1 -1
- data/lib/phusion_passenger/constants.rb +6 -5
- data/lib/phusion_passenger/debug_logging.rb +5 -1
- data/lib/phusion_passenger/dependencies.rb +3 -3
- data/lib/phusion_passenger/loader_shared_helpers.rb +12 -7
- data/lib/phusion_passenger/message_channel.rb +1 -1
- data/lib/phusion_passenger/message_client.rb +1 -1
- data/lib/phusion_passenger/native_support.rb +1 -1
- data/lib/phusion_passenger/packaging.rb +7 -4
- data/lib/phusion_passenger/platform_info.rb +1 -1
- data/lib/phusion_passenger/platform_info/apache.rb +2 -2
- data/lib/phusion_passenger/platform_info/binary_compatibility.rb +14 -5
- data/lib/phusion_passenger/platform_info/compiler.rb +8 -1
- data/lib/phusion_passenger/platform_info/curl.rb +1 -1
- data/lib/phusion_passenger/platform_info/linux.rb +1 -1
- data/lib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/lib/phusion_passenger/platform_info/ruby.rb +2 -2
- data/lib/phusion_passenger/platform_info/zlib.rb +1 -1
- data/lib/phusion_passenger/plugin.rb +2 -2
- data/lib/phusion_passenger/preloader_shared_helpers.rb +14 -1
- data/lib/phusion_passenger/public_api.rb +8 -2
- data/lib/phusion_passenger/{classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb → rack/out_of_band_gc.rb} +35 -28
- data/lib/phusion_passenger/rack/thread_handler_extension.rb +31 -6
- data/lib/phusion_passenger/rails3_extensions/init.rb +15 -9
- data/lib/phusion_passenger/request_handler.rb +104 -47
- data/lib/phusion_passenger/request_handler/thread_handler.rb +28 -7
- data/lib/phusion_passenger/ruby_core_enhancements.rb +34 -5
- data/lib/phusion_passenger/simple_benchmarking.rb +1 -1
- data/lib/phusion_passenger/standalone/app_finder.rb +1 -1
- data/lib/phusion_passenger/standalone/command.rb +5 -5
- data/lib/phusion_passenger/standalone/config_file.rb +1 -1
- data/lib/phusion_passenger/standalone/help_command.rb +1 -1
- data/lib/phusion_passenger/standalone/main.rb +1 -1
- data/lib/phusion_passenger/standalone/package_runtime_command.rb +1 -1
- data/lib/phusion_passenger/standalone/runtime_installer.rb +1 -1
- data/lib/phusion_passenger/standalone/start_command.rb +73 -21
- data/lib/phusion_passenger/standalone/status_command.rb +1 -1
- data/lib/phusion_passenger/standalone/stop_command.rb +1 -1
- data/lib/phusion_passenger/standalone/utils.rb +2 -2
- data/lib/phusion_passenger/standalone/version_command.rb +1 -1
- data/lib/phusion_passenger/utils.rb +1 -1
- data/lib/phusion_passenger/utils/ansi_colors.rb +2 -2
- data/lib/phusion_passenger/utils/file_system_watcher.rb +1 -1
- data/lib/phusion_passenger/utils/hosts_file_parser.rb +2 -2
- data/lib/phusion_passenger/utils/robust_interruption.rb +10 -6
- data/lib/phusion_passenger/utils/tmpdir.rb +2 -2
- data/lib/phusion_passenger/utils/unseekable_socket.rb +1 -1
- data/lib/phusion_passenger/wsgi/request_handler.py +1 -1
- data/resources/templates/error_layout.html.template +4 -0
- data/resources/templates/nginx/not_available_when_natively_packaged.txt.erb +1 -1
- data/resources/templates/standalone/config.erb +1 -0
- data/test/.rspec +3 -0
- data/test/config.json.travis +15 -0
- data/test/cxx/ApplicationPool2/DirectSpawnerTest.cpp +3 -2
- data/test/cxx/ApplicationPool2/PoolTest.cpp +349 -128
- data/test/cxx/ApplicationPool2/SmartSpawnerTest.cpp +21 -18
- data/test/cxx/ApplicationPool2/SpawnerTestCases.cpp +141 -118
- data/test/cxx/BufferedIOTest.cpp +11 -11
- data/test/cxx/CxxTestMain.cpp +40 -11
- data/test/cxx/EventedClientTest.cpp +18 -18
- data/test/cxx/FilterSupportTest.cpp +1 -1
- data/test/cxx/IOUtilsTest.cpp +18 -10
- data/test/cxx/MessageIOTest.cpp +9 -9
- data/test/cxx/MessagePassingTest.cpp +81 -0
- data/test/cxx/MessageReadersWritersTest.cpp +3 -4
- data/test/cxx/RequestHandlerTest.cpp +69 -9
- data/test/cxx/TestSupport.h +3 -1
- data/test/cxx/UnionStationTest.cpp +43 -82
- data/test/gdbinit.example +31 -0
- data/test/integration_tests/nginx_tests.rb +48 -0
- data/test/integration_tests/spec_helper.rb +1 -0
- data/test/ruby/analytics_logger_spec.rb +11 -19
- data/test/ruby/classic_rails/loader_spec.rb +3 -4
- data/test/ruby/classic_rails/preloader_spec.rb +3 -4
- data/test/ruby/rack/loader_spec.rb +2 -22
- data/test/ruby/rack/preloader_spec.rb +2 -28
- data/test/ruby/rails3.0/loader_spec.rb +26 -0
- data/test/ruby/rails3.0/preloader_spec.rb +32 -0
- data/test/ruby/rails3.1/loader_spec.rb +26 -0
- data/test/ruby/rails3.1/preloader_spec.rb +32 -0
- data/test/ruby/rails3.2/loader_spec.rb +26 -0
- data/test/ruby/rails3.2/preloader_spec.rb +32 -0
- data/test/ruby/request_handler_spec.rb +104 -13
- data/test/ruby/shared/{loader_spec.rb → loader_sharedspec.rb} +1 -1
- data/test/ruby/shared/rails/{analytics_logging_extensions_spec.rb → analytics_logging_extensions_sharedspec.rb} +26 -27
- data/test/ruby/shared/{ruby_loader_spec.rb → ruby_loader_sharedspec.rb} +1 -1
- data/test/ruby/spec_helper.rb +3 -3
- data/test/stub/rails2.3/app/helpers/bar_helper.rb +2 -0
- data/test/stub/rails2.3/app/helpers/foo_helper.rb +2 -0
- data/test/stub/rails3.0/config/environments/production.rb +1 -1
- data/test/stub/rails3.1/Gemfile +37 -0
- data/test/stub/rails3.1/Gemfile.lock +115 -0
- data/test/stub/rails3.1/README +261 -0
- data/test/stub/rails3.1/Rakefile +7 -0
- data/test/stub/rails3.1/app/assets/images/rails.png +0 -0
- data/test/stub/rails3.1/app/assets/javascripts/application.js +9 -0
- data/test/stub/rails3.1/app/assets/stylesheets/application.css +7 -0
- data/test/stub/rails3.1/app/controllers/application_controller.rb +3 -0
- data/test/stub/rails3.1/app/helpers/application_helper.rb +2 -0
- data/test/stub/rails3.1/app/views/layouts/application.html.erb +14 -0
- data/test/stub/rails3.1/config.ru +4 -0
- data/test/stub/rails3.1/config/application.rb +48 -0
- data/test/stub/rails3.1/config/boot.rb +6 -0
- data/test/stub/rails3.1/config/database.yml +25 -0
- data/test/stub/rails3.1/config/environment.rb +5 -0
- data/test/stub/rails3.1/config/environments/development.rb +30 -0
- data/test/stub/rails3.1/config/environments/production.rb +60 -0
- data/test/stub/rails3.1/config/environments/test.rb +39 -0
- data/test/stub/rails3.1/config/initializers/backtrace_silencers.rb +7 -0
- data/test/stub/rails3.1/config/initializers/inflections.rb +10 -0
- data/test/stub/rails3.1/config/initializers/mime_types.rb +5 -0
- data/test/stub/rails3.1/config/initializers/passenger.rb +1 -0
- data/test/stub/rails3.1/config/initializers/secret_token.rb +7 -0
- data/test/stub/rails3.1/config/initializers/session_store.rb +8 -0
- data/test/stub/rails3.1/config/initializers/wrap_parameters.rb +14 -0
- data/test/stub/rails3.1/config/locales/en.yml +5 -0
- data/test/stub/rails3.1/config/routes.rb +58 -0
- data/test/stub/rails3.1/db/seeds.rb +7 -0
- data/test/stub/rails3.1/doc/README_FOR_APP +2 -0
- data/test/stub/rails3.1/public/404.html +26 -0
- data/test/stub/rails3.1/public/422.html +26 -0
- data/test/stub/rails3.1/public/500.html +26 -0
- data/test/stub/rails3.1/public/favicon.ico +0 -0
- data/test/stub/rails3.1/public/index.html +241 -0
- data/test/stub/rails3.1/public/robots.txt +5 -0
- data/test/stub/rails3.1/script/rails +6 -0
- data/test/stub/rails3.1/test/performance/browsing_test.rb +12 -0
- data/test/stub/rails3.1/test/test_helper.rb +13 -0
- data/test/stub/rails3.2/Gemfile +39 -0
- data/test/stub/rails3.2/Gemfile.lock +113 -0
- data/test/stub/rails3.2/Rakefile +7 -0
- data/test/stub/rails3.2/app/assets/images/rails.png +0 -0
- data/test/stub/rails3.2/app/assets/javascripts/application.js +15 -0
- data/test/stub/rails3.2/app/assets/stylesheets/application.css +13 -0
- data/test/stub/rails3.2/app/controllers/application_controller.rb +3 -0
- data/test/stub/rails3.2/app/helpers/application_helper.rb +2 -0
- data/test/stub/rails3.2/app/views/layouts/application.html.erb +14 -0
- data/test/stub/rails3.2/config.ru +4 -0
- data/test/stub/rails3.2/config/application.rb +62 -0
- data/test/stub/rails3.2/config/boot.rb +6 -0
- data/test/stub/rails3.2/config/database.yml +25 -0
- data/test/stub/rails3.2/config/environment.rb +5 -0
- data/test/stub/rails3.2/config/environments/development.rb +37 -0
- data/test/stub/rails3.2/config/environments/production.rb +67 -0
- data/test/stub/rails3.2/config/environments/test.rb +37 -0
- data/test/stub/rails3.2/config/initializers/backtrace_silencers.rb +7 -0
- data/test/stub/rails3.2/config/initializers/inflections.rb +15 -0
- data/test/stub/rails3.2/config/initializers/mime_types.rb +5 -0
- data/test/stub/rails3.2/config/initializers/passenger.rb +1 -0
- data/test/stub/rails3.2/config/initializers/secret_token.rb +7 -0
- data/test/stub/rails3.2/config/initializers/session_store.rb +8 -0
- data/test/stub/rails3.2/config/initializers/wrap_parameters.rb +14 -0
- data/test/stub/rails3.2/config/locales/en.yml +5 -0
- data/test/stub/rails3.2/config/routes.rb +58 -0
- data/test/stub/rails3.2/db/seeds.rb +7 -0
- data/test/stub/rails3.2/doc/README_FOR_APP +2 -0
- data/test/stub/rails3.2/public/404.html +26 -0
- data/test/stub/rails3.2/public/422.html +26 -0
- data/test/stub/rails3.2/public/500.html +25 -0
- data/test/stub/rails3.2/public/favicon.ico +0 -0
- data/test/stub/rails3.2/public/index.html +241 -0
- data/test/stub/rails3.2/public/robots.txt +5 -0
- data/test/stub/rails3.2/script/rails +6 -0
- data/test/stub/rails3.2/test/performance/browsing_test.rb +12 -0
- data/test/stub/rails3.2/test/test_helper.rb +13 -0
- data/test/stub/wsgi/passenger_wsgi.py +12 -3
- data/test/support/test_helper.rb +5 -3
- data/test/tut/tut.h +61 -0
- metadata +1173 -236
- data/DEVELOPERS.TXT +0 -108
- data/INSTALL +0 -6
- data/README +0 -45
- data/ext/boost/config/platform/win32.hpp +0 -71
- data/ext/boost/implicit_cast.hpp +0 -29
- data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +0 -61
- data/ext/boost/preprocessor/arithmetic/mod.hpp +0 -39
- data/ext/boost/preprocessor/comparison/less_equal.hpp +0 -39
- data/ext/boost/preprocessor/logical/not.hpp +0 -30
- data/ext/boost/preprocessor/seq/cat.hpp +0 -49
- data/ext/boost/preprocessor/seq/fold_left.hpp +0 -1070
- data/ext/boost/preprocessor/seq/transform.hpp +0 -48
- data/ext/boost/smart_ptr/detail/atomic_count_win32.hpp +0 -63
- data/ext/boost/smart_ptr/detail/sp_counted_base_w32.hpp +0 -130
- data/ext/boost/utility.hpp +0 -20
- data/ext/boost/utility/base_from_member.hpp +0 -87
- data/ext/boost/utility/binary.hpp +0 -708
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +0 -67
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +0 -48
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +0 -59
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +0 -130
- data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +0 -47
- data/lib/phusion_passenger/classic_rails_extensions/init.rb +0 -125
@@ -1,4 +1,4 @@
|
|
1
|
-
# Phusion Passenger -
|
1
|
+
# Phusion Passenger - https://www.phusionpassenger.com/
|
2
2
|
# Copyright (c) 2010-2012 Phusion
|
3
3
|
#
|
4
4
|
# "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
@@ -34,7 +34,7 @@ class Command
|
|
34
34
|
:env => ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development',
|
35
35
|
:max_pool_size => 6,
|
36
36
|
:min_instances => 1,
|
37
|
-
:spawn_method => 'smart',
|
37
|
+
:spawn_method => Kernel.respond_to?(:fork) ? 'smart' : 'direct',
|
38
38
|
:nginx_version => PREFERRED_NGINX_VERSION
|
39
39
|
}.freeze
|
40
40
|
|
@@ -61,13 +61,13 @@ private
|
|
61
61
|
require 'daemon_controller'
|
62
62
|
begin
|
63
63
|
require 'daemon_controller/version'
|
64
|
-
too_old = DaemonController::VERSION_STRING < '1.
|
64
|
+
too_old = DaemonController::VERSION_STRING < '1.1.0'
|
65
65
|
rescue LoadError
|
66
66
|
too_old = true
|
67
67
|
end
|
68
68
|
if too_old
|
69
69
|
error "Your version of daemon_controller is too old. " <<
|
70
|
-
"You must install 1.
|
70
|
+
"You must install 1.1.0 or later. Please upgrade:\n\n" <<
|
71
71
|
|
72
72
|
" sudo gem uninstall FooBarWidget-daemon_controller\n" <<
|
73
73
|
" sudo gem install daemon_controller"
|
@@ -188,7 +188,7 @@ private
|
|
188
188
|
if debugging?
|
189
189
|
f.puts "agents=#{PhusionPassenger.agents_dir}"
|
190
190
|
else
|
191
|
-
f.puts "agents=#{
|
191
|
+
f.puts "agents=#{@runtime_dirs[:support_dir]}"
|
192
192
|
end
|
193
193
|
f.puts "helper_scripts=#{PhusionPassenger.helper_scripts_dir}"
|
194
194
|
f.puts "resources=#{PhusionPassenger.resources_dir}"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Phusion Passenger -
|
1
|
+
# Phusion Passenger - https://www.phusionpassenger.com/
|
2
2
|
# Copyright (c) 2010-2012 Phusion
|
3
3
|
#
|
4
4
|
# "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
@@ -156,6 +156,10 @@ private
|
|
156
156
|
wrap_desc("Enable rolling restarts (Enterprise only)")) do
|
157
157
|
@options[:rolling_restarts] = true
|
158
158
|
end
|
159
|
+
opts.on("--resist-deployment-errors",
|
160
|
+
wrap_desc("Enable deployment error resistance (Enterprise only)")) do
|
161
|
+
@options[:resist_deployment_errors] = true
|
162
|
+
end
|
159
163
|
opts.on("--union-station-gateway HOST:PORT", String,
|
160
164
|
wrap_desc("Specify Union Station Gateway host and port")) do |value|
|
161
165
|
host, port = value.split(":", 2)
|
@@ -252,27 +256,72 @@ private
|
|
252
256
|
end
|
253
257
|
end
|
254
258
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
|
260
|
+
require 'java'
|
261
|
+
|
262
|
+
def check_port(host_name, port)
|
263
|
+
channel = java.nio.channels.SocketChannel.open
|
259
264
|
begin
|
260
|
-
|
261
|
-
|
262
|
-
if
|
265
|
+
address = java.net.InetSocketAddress.new(host_name, port)
|
266
|
+
channel.configure_blocking(false)
|
267
|
+
if channel.connect(address)
|
268
|
+
return true
|
269
|
+
end
|
270
|
+
|
271
|
+
deadline = Time.now.to_f + 0.1
|
272
|
+
done = false
|
273
|
+
while true
|
263
274
|
begin
|
264
|
-
|
265
|
-
|
275
|
+
if channel.finish_connect
|
276
|
+
return true
|
277
|
+
end
|
278
|
+
rescue java.net.ConnectException => e
|
279
|
+
if e.message =~ /Connection refused/i
|
280
|
+
return false
|
281
|
+
else
|
282
|
+
throw e
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
# Not done connecting and no error.
|
287
|
+
sleep 0.01
|
288
|
+
if Time.now.to_f >= deadline
|
289
|
+
return false
|
266
290
|
end
|
267
|
-
else
|
268
|
-
raise Errno::ECONNREFUSED
|
269
291
|
end
|
292
|
+
ensure
|
293
|
+
channel.close
|
294
|
+
end
|
295
|
+
end
|
296
|
+
else
|
297
|
+
def check_port(address, port)
|
298
|
+
begin
|
299
|
+
socket = Socket.new(Socket::Constants::AF_INET, Socket::Constants::SOCK_STREAM, 0)
|
300
|
+
sockaddr = Socket.pack_sockaddr_in(port, address)
|
301
|
+
begin
|
302
|
+
socket.connect_nonblock(sockaddr)
|
303
|
+
rescue Errno::ENOENT, Errno::EINPROGRESS, Errno::EAGAIN, Errno::EWOULDBLOCK
|
304
|
+
if select(nil, [socket], nil, 0.1)
|
305
|
+
begin
|
306
|
+
socket.connect_nonblock(sockaddr)
|
307
|
+
rescue Errno::EISCONN
|
308
|
+
rescue Errno::EINVAL
|
309
|
+
if RUBY_PLATFORM =~ /freebsd/i
|
310
|
+
raise Errno::ECONNREFUSED
|
311
|
+
else
|
312
|
+
raise
|
313
|
+
end
|
314
|
+
end
|
315
|
+
else
|
316
|
+
raise Errno::ECONNREFUSED
|
317
|
+
end
|
318
|
+
end
|
319
|
+
return true
|
320
|
+
rescue Errno::ECONNREFUSED
|
321
|
+
return false
|
322
|
+
ensure
|
323
|
+
socket.close if socket && !socket.closed?
|
270
324
|
end
|
271
|
-
return true
|
272
|
-
rescue Errno::ECONNREFUSED
|
273
|
-
return false
|
274
|
-
ensure
|
275
|
-
socket.close if socket
|
276
325
|
end
|
277
326
|
end
|
278
327
|
|
@@ -334,13 +383,16 @@ private
|
|
334
383
|
end
|
335
384
|
end
|
336
385
|
nginx_bin = @options[:nginx_bin] || "#{nginx_dir}/nginx"
|
337
|
-
|
386
|
+
result = {
|
338
387
|
:root => root,
|
339
388
|
:support_dir => "#{root}/support-#{PlatformInfo.cxx_binary_compatibility_id}",
|
340
389
|
:nginx_dir => nginx_dir,
|
341
390
|
:ruby_dir => "#{root}/rubyext-#{PlatformInfo.ruby_extension_binary_compatibility_id}",
|
342
391
|
:nginx_installed => File.exist?(nginx_bin)
|
343
392
|
}
|
393
|
+
result[:support_dir_installed] = File.exist?(result[:support_dir] + "/PassengerWatchdog")
|
394
|
+
result[:everything_installed] = result[:nginx_installed] && result[:support_dir_installed]
|
395
|
+
return result
|
344
396
|
end
|
345
397
|
|
346
398
|
def determine_nginx_runtime_dir(runtime_dir)
|
@@ -348,8 +400,8 @@ private
|
|
348
400
|
end
|
349
401
|
|
350
402
|
def ensure_nginx_installed
|
351
|
-
if !@runtime_dirs[:
|
352
|
-
if @options[:nginx_bin]
|
403
|
+
if !@runtime_dirs[:everything_installed]
|
404
|
+
if !@runtime_dirs[:nginx_installed] && @options[:nginx_bin]
|
353
405
|
error "The given Nginx binary '#{@options[:nginx_bin]}' does not exist."
|
354
406
|
exit 1
|
355
407
|
else
|
@@ -446,7 +498,7 @@ private
|
|
446
498
|
end
|
447
499
|
end
|
448
500
|
ensure
|
449
|
-
Process.kill('TERM', f.pid)
|
501
|
+
Process.kill('TERM', f.pid) rescue nil
|
450
502
|
end
|
451
503
|
end
|
452
504
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Phusion Passenger -
|
1
|
+
# Phusion Passenger - https://www.phusionpassenger.com/
|
2
2
|
# Copyright (c) 2010 Phusion
|
3
3
|
#
|
4
4
|
# "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
@@ -43,4 +43,4 @@ private
|
|
43
43
|
end
|
44
44
|
|
45
45
|
end
|
46
|
-
end
|
46
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Phusion Passenger -
|
1
|
+
# Phusion Passenger - https://www.phusionpassenger.com/
|
2
2
|
# Copyright (c) 2010 Phusion
|
3
3
|
#
|
4
4
|
# "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
@@ -56,4 +56,4 @@ module AnsiColors
|
|
56
56
|
end
|
57
57
|
|
58
58
|
end # module Utils
|
59
|
-
end # module PhusionPassenger
|
59
|
+
end # module PhusionPassenger
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# encoding: binary
|
2
|
-
# Phusion Passenger -
|
2
|
+
# Phusion Passenger - https://www.phusionpassenger.com/
|
3
3
|
# Copyright (c) 2010 Phusion
|
4
4
|
#
|
5
5
|
# "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
@@ -127,4 +127,4 @@ private
|
|
127
127
|
end
|
128
128
|
|
129
129
|
end
|
130
|
-
end
|
130
|
+
end
|
@@ -61,13 +61,17 @@ module RobustInterruption
|
|
61
61
|
def self.raise(thread, exception = Interrupted)
|
62
62
|
RobustInterruption.disable_interruptions do
|
63
63
|
data = thread[:robust_interruption]
|
64
|
-
data
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
64
|
+
if data
|
65
|
+
data.interrupted = true
|
66
|
+
if data.try_lock
|
67
|
+
begin
|
68
|
+
thread.raise(exception)
|
69
|
+
ensure
|
70
|
+
data.unlock
|
71
|
+
end
|
70
72
|
end
|
73
|
+
else
|
74
|
+
thread.raise(exception)
|
71
75
|
end
|
72
76
|
end
|
73
77
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Phusion Passenger -
|
1
|
+
# Phusion Passenger - https://www.phusionpassenger.com/
|
2
2
|
# Copyright (c) 2010 Phusion
|
3
3
|
#
|
4
4
|
# "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
|
@@ -67,4 +67,4 @@ protected
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
end
|
70
|
+
end
|
@@ -48,6 +48,10 @@
|
|
48
48
|
<dd><pre>{{ENVVARS|default=Unknown}}</pre></dd>
|
49
49
|
<dt>Ulimits</dt>
|
50
50
|
<dd><pre>{{ULIMIT|default=Unknown}}</pre></dd>
|
51
|
+
{{if SYSMEMORY}}
|
52
|
+
<dt>System memory usage</dt>
|
53
|
+
<dd><pre>{{SYSMEMORY|default=Unknown}}</pre></dd>
|
54
|
+
{{/if}}
|
51
55
|
{{if RUBY_INFO}}
|
52
56
|
<dt>General Ruby interpreter information</dt>
|
53
57
|
<dd><pre>{{RUBY_INFO}}</pre></dd>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<red>passenger-install-nginx-module is not available when packaged</red>
|
2
2
|
|
3
|
-
This Phusion Passenger installation is provided by your packager (as opposed to being installed from source). As such, you cannot use passenger-install-nginx-module. If you want to use passenger-install-nginx-module, please install Phusion Passenger from source by downloading it from <b>www.
|
3
|
+
This Phusion Passenger installation is provided by your packager (as opposed to being installed from source). As such, you cannot use passenger-install-nginx-module. If you want to use passenger-install-nginx-module, please install Phusion Passenger from source by downloading it from <b>www.phusionpassenger.com</b>.
|
4
4
|
|
5
5
|
For more information about using Phusion Passenger for Nginx, please consult the documentation at one of the following places:
|
6
6
|
|
@@ -47,6 +47,7 @@ http {
|
|
47
47
|
<% if @options[:user] %>passenger_default_user <%= @options[:user] %>;<% end %>
|
48
48
|
<% if debugging? %>passenger_log_level 2;<% end %>
|
49
49
|
<% if @options[:rolling_restarts] %>passenger_rolling_restarts on;<% end %>
|
50
|
+
<% if @options[:resist_deployment_errors] %>passenger_resist_deployment_errors on;<% end %>
|
50
51
|
|
51
52
|
<% if @options[:union_station_gateway_address] %>
|
52
53
|
union_station_gateway_address <%= @options[:union_station_gateway_address] %>;
|
data/test/.rspec
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
{
|
2
|
+
"normal_user_1": "games",
|
3
|
+
"normal_user_2": "daemon",
|
4
|
+
"default_user": "man",
|
5
|
+
"normal_group_1": "daemon",
|
6
|
+
"normal_group_2": "man",
|
7
|
+
"default_group": "games",
|
8
|
+
|
9
|
+
"nonexistant_user": "xxxxxxxxxxxxxxxxxxx",
|
10
|
+
"nonexistant_group": "xxxxxxxxxxxxxxxxxxx",
|
11
|
+
"nonexistant_uid": 9999,
|
12
|
+
"nonexistant_gid": 9999
|
13
|
+
|
14
|
+
// nginx: /usr/local/sbin/nginx
|
15
|
+
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#include <TestSupport.h>
|
2
2
|
#include <ApplicationPool2/Spawner.h>
|
3
3
|
#include <Utils/json.h>
|
4
|
+
#include <fcntl.h>
|
4
5
|
|
5
6
|
using namespace Passenger;
|
6
7
|
using namespace Passenger::ApplicationPool2;
|
@@ -48,7 +49,7 @@ namespace tut {
|
|
48
49
|
options.startTimeout = 300;
|
49
50
|
|
50
51
|
DirectSpawner spawner(bg.safe, *resourceLocator, generation);
|
51
|
-
spawner.forwardStderr = false;
|
52
|
+
spawner.getConfig()->forwardStderr = false;
|
52
53
|
|
53
54
|
try {
|
54
55
|
spawner.spawn(options);
|
@@ -71,7 +72,7 @@ namespace tut {
|
|
71
72
|
options.startupFile = ".";
|
72
73
|
|
73
74
|
DirectSpawner spawner(bg.safe, *resourceLocator, generation);
|
74
|
-
spawner.forwardStderr = false;
|
75
|
+
spawner.getConfig()->forwardStderr = false;
|
75
76
|
|
76
77
|
try {
|
77
78
|
spawner.spawn(options);
|
@@ -18,8 +18,11 @@ namespace tut {
|
|
18
18
|
ServerInstanceDirPtr serverInstanceDir;
|
19
19
|
ServerInstanceDir::GenerationPtr generation;
|
20
20
|
BackgroundEventLoop bg;
|
21
|
+
SpawnerConfigPtr spawnerConfig;
|
21
22
|
SpawnerFactoryPtr spawnerFactory;
|
22
23
|
PoolPtr pool;
|
24
|
+
Pool::DebugSupportPtr debug;
|
25
|
+
Ticket ticket;
|
23
26
|
GetCallback callback;
|
24
27
|
SessionPtr currentSession;
|
25
28
|
ExceptionPtr currentException;
|
@@ -31,7 +34,9 @@ namespace tut {
|
|
31
34
|
ApplicationPool2_PoolTest() {
|
32
35
|
createServerInstanceDirAndGeneration(serverInstanceDir, generation);
|
33
36
|
retainSessions = false;
|
34
|
-
|
37
|
+
spawnerConfig = make_shared<SpawnerConfig>();
|
38
|
+
spawnerFactory = make_shared<SpawnerFactory>(bg.safe, *resourceLocator, generation,
|
39
|
+
RandomGeneratorPtr(), spawnerConfig);
|
35
40
|
pool = make_shared<Pool>(bg.safe.get(), spawnerFactory);
|
36
41
|
bg.start();
|
37
42
|
callback = boost::bind(&ApplicationPool2_PoolTest::_callback, this, _1, _2);
|
@@ -41,17 +46,35 @@ namespace tut {
|
|
41
46
|
// Explicitly destroy these here because they can run
|
42
47
|
// additional code that depend on other fields in this
|
43
48
|
// class.
|
44
|
-
setLogLevel(0);
|
45
49
|
TRACE_POINT();
|
46
50
|
pool->destroy();
|
47
51
|
UPDATE_TRACE_POINT();
|
48
52
|
pool.reset();
|
49
53
|
UPDATE_TRACE_POINT();
|
50
|
-
|
51
|
-
|
52
|
-
|
54
|
+
clearAllSessions();
|
55
|
+
setLogLevel(0);
|
56
|
+
SystemTime::releaseAll();
|
57
|
+
}
|
58
|
+
|
59
|
+
void initPoolDebugging() {
|
60
|
+
pool->initDebugging();
|
61
|
+
debug = pool->debugSupport;
|
53
62
|
}
|
54
63
|
|
64
|
+
void clearAllSessions() {
|
65
|
+
SessionPtr myCurrentSession;
|
66
|
+
list<SessionPtr> mySessions;
|
67
|
+
{
|
68
|
+
LockGuard l(syncher);
|
69
|
+
myCurrentSession = currentSession;
|
70
|
+
mySessions = sessions;
|
71
|
+
currentSession.reset();
|
72
|
+
sessions.clear();
|
73
|
+
}
|
74
|
+
myCurrentSession.reset();
|
75
|
+
mySessions.clear();
|
76
|
+
}
|
77
|
+
|
55
78
|
Options createOptions() {
|
56
79
|
Options options;
|
57
80
|
options.spawnMethod = "dummy";
|
@@ -139,6 +162,25 @@ namespace tut {
|
|
139
162
|
);
|
140
163
|
return body;
|
141
164
|
}
|
165
|
+
|
166
|
+
// Ensure that n processes exist.
|
167
|
+
Options ensureMinProcesses(unsigned int n) {
|
168
|
+
Options options = createOptions();
|
169
|
+
options.minProcesses = n;
|
170
|
+
pool->asyncGet(options, callback);
|
171
|
+
EVENTUALLY(5,
|
172
|
+
result = number == 1;
|
173
|
+
);
|
174
|
+
EVENTUALLY(5,
|
175
|
+
result = pool->getProcessCount() == n;
|
176
|
+
);
|
177
|
+
currentSession.reset();
|
178
|
+
return options;
|
179
|
+
}
|
180
|
+
|
181
|
+
void disableProcess(ProcessPtr process, AtomicInt *result) {
|
182
|
+
*result = (int) pool->disableProcess(process->gupid);
|
183
|
+
}
|
142
184
|
};
|
143
185
|
|
144
186
|
DEFINE_TEST_GROUP_WITH_LIMIT(ApplicationPool2_PoolTest, 100);
|
@@ -233,7 +275,7 @@ namespace tut {
|
|
233
275
|
}
|
234
276
|
|
235
277
|
TEST_METHOD(5) {
|
236
|
-
// If one matching process already exists but it's at full
|
278
|
+
// If one matching process already exists but it's at full utilization,
|
237
279
|
// and the limits and pool capacity allow spawning of a new process,
|
238
280
|
// then get() will put the get action on the group's wait
|
239
281
|
// queue while spawning a process in the background.
|
@@ -242,28 +284,30 @@ namespace tut {
|
|
242
284
|
|
243
285
|
// Here we test the case in which the existing process becomes
|
244
286
|
// available first.
|
287
|
+
initPoolDebugging();
|
245
288
|
|
246
289
|
// Spawn a regular process and keep its session open.
|
247
290
|
Options options = createOptions();
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
);
|
252
|
-
SessionPtr session1 = currentSession;
|
253
|
-
ProcessPtr process1 = currentSession->getProcess();
|
254
|
-
currentSession.reset();
|
291
|
+
debug->messages->send("Proceed with spawn loop iteration 1");
|
292
|
+
SessionPtr session1 = pool->get(options, &ticket);
|
293
|
+
ProcessPtr process1 = session1->getProcess();
|
255
294
|
|
256
295
|
// Now spawn a process that never finishes.
|
257
|
-
SpawnerPtr spawner = process1->getGroup()->spawner;
|
258
|
-
dynamic_pointer_cast<DummySpawner>(spawner)->spawnTime = 5000000;
|
259
296
|
pool->asyncGet(options, callback);
|
260
297
|
|
261
298
|
// Release the session on the first process.
|
262
299
|
session1.reset();
|
263
300
|
|
264
|
-
|
301
|
+
EVENTUALLY(1,
|
302
|
+
result = number == 1;
|
303
|
+
);
|
265
304
|
ensure_equals("The first process handled the second asyncGet() request",
|
266
305
|
currentSession->getProcess(), process1);
|
306
|
+
|
307
|
+
debug->messages->send("Proceed with spawn loop iteration 2");
|
308
|
+
EVENTUALLY(5,
|
309
|
+
result = number == 1;
|
310
|
+
);
|
267
311
|
}
|
268
312
|
|
269
313
|
TEST_METHOD(6) {
|
@@ -341,7 +385,7 @@ namespace tut {
|
|
341
385
|
options.minProcesses = 2;
|
342
386
|
pool->setMax(2);
|
343
387
|
GroupPtr group = pool->findOrCreateGroup(options);
|
344
|
-
|
388
|
+
spawnerConfig->concurrency = 2;
|
345
389
|
{
|
346
390
|
LockGuard l(pool->syncher);
|
347
391
|
group->spawn();
|
@@ -395,8 +439,7 @@ namespace tut {
|
|
395
439
|
options.appGroupName = "test";
|
396
440
|
options.minProcesses = 2;
|
397
441
|
pool->setMax(2);
|
398
|
-
|
399
|
-
dynamic_pointer_cast<DummySpawner>(group->spawner)->concurrency = 2;
|
442
|
+
spawnerConfig->concurrency = 2;
|
400
443
|
|
401
444
|
vector<SessionPtr> sessions;
|
402
445
|
int expectedNumber = 1;
|
@@ -445,7 +488,7 @@ namespace tut {
|
|
445
488
|
options.minProcesses = 2;
|
446
489
|
pool->setMax(3);
|
447
490
|
GroupPtr group = pool->findOrCreateGroup(options);
|
448
|
-
|
491
|
+
spawnerConfig->concurrency = 2;
|
449
492
|
|
450
493
|
vector<SessionPtr> sessions;
|
451
494
|
int expectedNumber = 1;
|
@@ -464,7 +507,7 @@ namespace tut {
|
|
464
507
|
|
465
508
|
// The next asyncGet() should spawn a new process and the action should be queued.
|
466
509
|
ScopedLock l(pool->syncher);
|
467
|
-
|
510
|
+
spawnerConfig->spawnTime = 5000000;
|
468
511
|
pool->asyncGet(options, callback, false);
|
469
512
|
ensure(group->spawning());
|
470
513
|
ensure_equals(group->getWaitlist.size(), 1u);
|
@@ -487,7 +530,7 @@ namespace tut {
|
|
487
530
|
options.minProcesses = 2;
|
488
531
|
pool->setMax(3);
|
489
532
|
GroupPtr group = pool->findOrCreateGroup(options);
|
490
|
-
|
533
|
+
spawnerConfig->concurrency = 2;
|
491
534
|
|
492
535
|
vector<SessionPtr> sessions;
|
493
536
|
int expectedNumber = 1;
|
@@ -598,11 +641,60 @@ namespace tut {
|
|
598
641
|
ensure_equals(superGroup1->getProcessCount(), 0u);
|
599
642
|
}
|
600
643
|
|
644
|
+
TEST_METHOD(22) {
|
645
|
+
// Suppose the pool is full, and one tries to asyncGet() from a nonexistant group,
|
646
|
+
// and the process that is selected for killing is the sole process in its group.
|
647
|
+
// If there were waiters in the group then those waiters will be satisfied after
|
648
|
+
// capacity has become free.
|
649
|
+
Options options = createOptions();
|
650
|
+
pool->setMax(2);
|
651
|
+
|
652
|
+
// Get from /foo and retain its session.
|
653
|
+
options.appRoot = "/foo";
|
654
|
+
SystemTime::force(1);
|
655
|
+
SessionPtr session1 = pool->get(options, &ticket);
|
656
|
+
GroupPtr fooGroup = session1->getGroup();
|
657
|
+
|
658
|
+
// Get from /bar and retain its session.
|
659
|
+
options.appRoot = "/bar";
|
660
|
+
SystemTime::force(2);
|
661
|
+
SessionPtr session2 = pool->get(options, &ticket);
|
662
|
+
|
663
|
+
// Request another get(). /foo will now have 1 waiter in its waitlist.
|
664
|
+
options.appRoot = "/foo";
|
665
|
+
pool->asyncGet(options, callback);
|
666
|
+
{
|
667
|
+
LockGuard l(pool->syncher);
|
668
|
+
ensure("(1)", !session1->getProcess()->detached());
|
669
|
+
ensure("(2)", !fooGroup->detached());
|
670
|
+
ensure_equals("(3)", fooGroup->getWaitlist.size(), 1u);
|
671
|
+
}
|
672
|
+
|
673
|
+
// This kill the process for /foo.
|
674
|
+
SystemTime::force(3);
|
675
|
+
options.appRoot = "/baz";
|
676
|
+
SessionPtr session3 = pool->get(options, &ticket);
|
677
|
+
{
|
678
|
+
LockGuard l(pool->syncher);
|
679
|
+
ensure("(4)", session1->getProcess()->detached());
|
680
|
+
ensure("(5)", !fooGroup->detached());
|
681
|
+
ensure_equals("(6)", fooGroup->getWaitlist.size(), 1u);
|
682
|
+
ensure_equals("(7)", pool->getWaitlist.size(), 0u);
|
683
|
+
}
|
684
|
+
|
685
|
+
// Make process /bar available for killing.
|
686
|
+
session2.reset();
|
687
|
+
EVENTUALLY(5,
|
688
|
+
result = number == 1;
|
689
|
+
);
|
690
|
+
}
|
691
|
+
|
601
692
|
|
602
693
|
/*********** Test detachProcess() ***********/
|
603
694
|
|
604
695
|
TEST_METHOD(30) {
|
605
|
-
// detachProcess() detaches the process from the group.
|
696
|
+
// detachProcess() detaches the process from the group. The pool
|
697
|
+
// will restore the minimum number of processes afterwards.
|
606
698
|
Options options = createOptions();
|
607
699
|
options.appGroupName = "test";
|
608
700
|
options.minProcesses = 2;
|
@@ -616,8 +708,9 @@ namespace tut {
|
|
616
708
|
|
617
709
|
pool->detachProcess(currentSession->getProcess());
|
618
710
|
ensure(currentSession->getProcess()->detached());
|
619
|
-
|
620
|
-
|
711
|
+
EVENTUALLY(5,
|
712
|
+
result = pool->getProcessCount() == 2;
|
713
|
+
);
|
621
714
|
}
|
622
715
|
|
623
716
|
TEST_METHOD(31) {
|
@@ -627,7 +720,7 @@ namespace tut {
|
|
627
720
|
Options options = createOptions();
|
628
721
|
options.appGroupName = "test";
|
629
722
|
pool->setMax(1);
|
630
|
-
|
723
|
+
spawnerConfig->spawnTime = 1000000;
|
631
724
|
|
632
725
|
pool->asyncGet(options, callback);
|
633
726
|
EVENTUALLY(5,
|
@@ -647,9 +740,13 @@ namespace tut {
|
|
647
740
|
{
|
648
741
|
LockGuard l(pool->syncher);
|
649
742
|
ensure(pool->superGroups.get("test")->defaultGroup->spawning());
|
650
|
-
ensure_equals(pool->superGroups.get("test")->defaultGroup->
|
743
|
+
ensure_equals(pool->superGroups.get("test")->defaultGroup->enabledCount, 0);
|
651
744
|
ensure_equals(pool->superGroups.get("test")->defaultGroup->getWaitlist.size(), 1u);
|
652
745
|
}
|
746
|
+
|
747
|
+
EVENTUALLY(5,
|
748
|
+
result = number == 2;
|
749
|
+
);
|
653
750
|
}
|
654
751
|
|
655
752
|
TEST_METHOD(32) {
|
@@ -658,8 +755,9 @@ namespace tut {
|
|
658
755
|
// by the waiters.
|
659
756
|
Options options = createOptions();
|
660
757
|
options.appGroupName = "test";
|
758
|
+
options.minProcesses = 0;
|
661
759
|
pool->setMax(1);
|
662
|
-
|
760
|
+
spawnerConfig->spawnTime = 30000;
|
663
761
|
|
664
762
|
// Begin spawning a process.
|
665
763
|
pool->asyncGet(options, callback);
|
@@ -668,7 +766,8 @@ namespace tut {
|
|
668
766
|
// asyncGet() on another group should now put it on the waiting list.
|
669
767
|
Options options2 = createOptions();
|
670
768
|
options2.appGroupName = "test2";
|
671
|
-
|
769
|
+
options2.minProcesses = 0;
|
770
|
+
spawnerConfig->spawnTime = 90000;
|
672
771
|
pool->asyncGet(options2, callback);
|
673
772
|
{
|
674
773
|
LockGuard l(pool->syncher);
|
@@ -688,6 +787,9 @@ namespace tut {
|
|
688
787
|
ensure(pool->superGroups.get("test2") != NULL);
|
689
788
|
ensure_equals(pool->getWaitlist.size(), 0u);
|
690
789
|
}
|
790
|
+
EVENTUALLY(5,
|
791
|
+
result = number == 2;
|
792
|
+
);
|
691
793
|
}
|
692
794
|
|
693
795
|
TEST_METHOD(33) {
|
@@ -713,48 +815,182 @@ namespace tut {
|
|
713
815
|
|
714
816
|
TEST_METHOD(40) {
|
715
817
|
// Disabling a process under idle conditions should succeed immediately.
|
716
|
-
|
818
|
+
ensureMinProcesses(2);
|
819
|
+
vector<ProcessPtr> processes = pool->getProcesses();
|
820
|
+
ensure_equals("Disabling succeeds",
|
821
|
+
pool->disableProcess(processes[0]->gupid), DR_SUCCESS);
|
822
|
+
|
823
|
+
LockGuard l(pool->syncher);
|
824
|
+
ensure(!processes[0]->detached());
|
825
|
+
ensure_equals("Process is disabled",
|
826
|
+
processes[0]->enabled,
|
827
|
+
Process::DISABLED);
|
828
|
+
ensure("Other processes are not affected",
|
829
|
+
!processes[1]->detached());
|
830
|
+
ensure_equals("Other processes are not affected",
|
831
|
+
processes[1]->enabled, Process::ENABLED);
|
832
|
+
}
|
833
|
+
|
834
|
+
TEST_METHOD(41) {
|
835
|
+
// Disabling the sole process in a group should trigger a new process spawn.
|
836
|
+
ensureMinProcesses(1);
|
717
837
|
Options options = createOptions();
|
718
|
-
|
719
|
-
|
720
|
-
pool->
|
838
|
+
SessionPtr session = pool->get(options, &ticket);
|
839
|
+
|
840
|
+
ensure_equals(pool->getProcessCount(), 1u);
|
841
|
+
ensure(!pool->isSpawning());
|
842
|
+
|
843
|
+
spawnerConfig->spawnTime = 60000;
|
844
|
+
AtomicInt code = -1;
|
845
|
+
TempThread thr(boost::bind(&ApplicationPool2_PoolTest::disableProcess,
|
846
|
+
this, session->getProcess(), &code));
|
847
|
+
EVENTUALLY2(100, 1,
|
848
|
+
result = pool->isSpawning();
|
849
|
+
);
|
850
|
+
EVENTUALLY(1,
|
851
|
+
result = pool->getProcessCount() == 2u;
|
852
|
+
);
|
853
|
+
ensure_equals((int) code, -1);
|
854
|
+
session.reset();
|
855
|
+
EVENTUALLY(1,
|
856
|
+
result = code == (int) DR_SUCCESS;
|
857
|
+
);
|
858
|
+
}
|
859
|
+
|
860
|
+
TEST_METHOD(42) {
|
861
|
+
// If there are no enabled processes in the group, then disabling should
|
862
|
+
// succeed after the new process has been spawned.
|
863
|
+
initPoolDebugging();
|
864
|
+
debug->messages->send("Proceed with spawn loop iteration 1");
|
865
|
+
debug->messages->send("Proceed with spawn loop iteration 2");
|
866
|
+
|
867
|
+
Options options = createOptions();
|
868
|
+
SessionPtr session1 = pool->get(options, &ticket);
|
869
|
+
SessionPtr session2 = pool->get(options, &ticket);
|
870
|
+
ensure_equals(pool->getProcessCount(), 2u);
|
871
|
+
GroupPtr group = session1->getGroup();
|
872
|
+
|
873
|
+
AtomicInt code1 = -1, code2 = -1;
|
874
|
+
TempThread thr(boost::bind(&ApplicationPool2_PoolTest::disableProcess,
|
875
|
+
this, session1->getProcess(), &code1));
|
876
|
+
TempThread thr2(boost::bind(&ApplicationPool2_PoolTest::disableProcess,
|
877
|
+
this, session2->getProcess(), &code2));
|
878
|
+
EVENTUALLY(2,
|
879
|
+
LockGuard l(pool->syncher);
|
880
|
+
result = group->enabledCount == 0
|
881
|
+
&& group->disablingCount == 2
|
882
|
+
&& group->disabledCount == 0;
|
883
|
+
);
|
884
|
+
session1.reset();
|
885
|
+
session2.reset();
|
886
|
+
SHOULD_NEVER_HAPPEN(20,
|
887
|
+
result = code1 != -1 || code2 != -1;
|
888
|
+
);
|
889
|
+
|
890
|
+
debug->messages->send("Proceed with spawn loop iteration 3");
|
721
891
|
EVENTUALLY(5,
|
722
|
-
result =
|
892
|
+
result = code1 == DR_SUCCESS;
|
723
893
|
);
|
724
894
|
EVENTUALLY(5,
|
725
|
-
result =
|
895
|
+
result = code2 == DR_SUCCESS;
|
726
896
|
);
|
897
|
+
{
|
898
|
+
LockGuard l(pool->syncher);
|
899
|
+
ensure_equals(group->enabledCount, 1);
|
900
|
+
ensure_equals(group->disablingCount, 0);
|
901
|
+
ensure_equals(group->disabledCount, 2);
|
902
|
+
}
|
903
|
+
}
|
727
904
|
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
905
|
+
TEST_METHOD(43) {
|
906
|
+
// Suppose that a previous disable command triggered a new process spawn,
|
907
|
+
// and the spawn fails. Then any disabling processes should become enabled
|
908
|
+
// again, and the callbacks for the previous disable commands should be called.
|
909
|
+
initPoolDebugging();
|
910
|
+
debug->messages->send("Proceed with spawn loop iteration 1");
|
911
|
+
debug->messages->send("Proceed with spawn loop iteration 2");
|
912
|
+
|
913
|
+
Options options = createOptions();
|
914
|
+
options.minProcesses = 2;
|
915
|
+
SessionPtr session1 = pool->get(options, &ticket);
|
916
|
+
SessionPtr session2 = pool->get(options, &ticket);
|
917
|
+
ensure_equals(pool->getProcessCount(), 2u);
|
918
|
+
|
919
|
+
AtomicInt code1 = -1, code2 = -1;
|
920
|
+
TempThread thr(boost::bind(&ApplicationPool2_PoolTest::disableProcess,
|
921
|
+
this, session1->getProcess(), &code1));
|
922
|
+
TempThread thr2(boost::bind(&ApplicationPool2_PoolTest::disableProcess,
|
923
|
+
this, session2->getProcess(), &code2));
|
924
|
+
EVENTUALLY(2,
|
925
|
+
GroupPtr group = session1->getGroup();
|
926
|
+
LockGuard l(pool->syncher);
|
927
|
+
result = group->enabledCount == 0
|
928
|
+
&& group->disablingCount == 2
|
929
|
+
&& group->disabledCount == 0;
|
930
|
+
);
|
931
|
+
SHOULD_NEVER_HAPPEN(20,
|
932
|
+
result = code1 != -1 || code2 != -1;
|
933
|
+
);
|
934
|
+
|
935
|
+
setLogLevel(-2);
|
936
|
+
debug->messages->send("Fail spawn loop iteration 3");
|
937
|
+
EVENTUALLY(5,
|
938
|
+
result = code1 == DR_ERROR;
|
939
|
+
);
|
940
|
+
EVENTUALLY(5,
|
941
|
+
result = code2 == DR_ERROR;
|
942
|
+
);
|
943
|
+
{
|
944
|
+
GroupPtr group = session1->getGroup();
|
945
|
+
LockGuard l(pool->syncher);
|
946
|
+
ensure_equals(group->enabledCount, 2);
|
947
|
+
ensure_equals(group->disablingCount, 0);
|
948
|
+
ensure_equals(group->disabledCount, 0);
|
949
|
+
}
|
733
950
|
}
|
734
951
|
|
735
|
-
//
|
736
|
-
//
|
952
|
+
// asyncGet() should not select a disabling process if there are enabled processes.
|
953
|
+
// asyncGet() should not select a disabling process when non-rolling restarting.
|
954
|
+
// asyncGet() should select a disabling process if there are no enabled processes
|
955
|
+
// in the group. If this happens then asyncGet() will also spawn a new process.
|
956
|
+
// asyncGet() should not select a disabled process.
|
737
957
|
|
738
|
-
//
|
739
|
-
// and the
|
740
|
-
//
|
741
|
-
//
|
958
|
+
// If there are no enabled processes and all disabling processes are at full
|
959
|
+
// utilization, and the process that was being spawned becomes available
|
960
|
+
// earlier than any of the disabling processes, then the newly spawned process
|
961
|
+
// should handle the request.
|
742
962
|
|
743
|
-
//
|
744
|
-
//
|
963
|
+
// A disabling process becomes disabled as soon as it's done with
|
964
|
+
// all its request.
|
745
965
|
|
746
|
-
|
747
|
-
|
966
|
+
TEST_METHOD(50) {
|
967
|
+
// Disabling a process that's already being disabled should result in the
|
968
|
+
// callback being called after disabling is done.
|
969
|
+
ensureMinProcesses(2);
|
970
|
+
Options options = createOptions();
|
971
|
+
SessionPtr session = pool->get(options, &ticket);
|
748
972
|
|
749
|
-
|
750
|
-
|
973
|
+
AtomicInt code = -1;
|
974
|
+
TempThread thr(boost::bind(&ApplicationPool2_PoolTest::disableProcess,
|
975
|
+
this, session->getProcess(), &code));
|
976
|
+
SHOULD_NEVER_HAPPEN(100,
|
977
|
+
result = code != -1;
|
978
|
+
);
|
979
|
+
session.reset();
|
980
|
+
EVENTUALLY(1,
|
981
|
+
result = code != -1;
|
982
|
+
);
|
983
|
+
ensure_equals(code, (int) DR_SUCCESS);
|
984
|
+
}
|
751
985
|
|
752
|
-
// Enabling a process that's disabled
|
986
|
+
// Enabling a process that's disabled succeeds immediately.
|
987
|
+
// Enabling a process that's disabling succeeds immediately. The disable
|
988
|
+
// callbacks will be called with DR_CANCELED.
|
753
989
|
|
754
990
|
|
755
991
|
/*********** Other tests ***********/
|
756
992
|
|
757
|
-
TEST_METHOD(
|
993
|
+
TEST_METHOD(60) {
|
758
994
|
// The pool is considered to be at full capacity if and only
|
759
995
|
// if all SuperGroups are at full capacity.
|
760
996
|
Options options = createOptions();
|
@@ -778,7 +1014,7 @@ namespace tut {
|
|
778
1014
|
ensure(!pool->atFullCapacity());
|
779
1015
|
}
|
780
1016
|
|
781
|
-
TEST_METHOD(
|
1017
|
+
TEST_METHOD(61) {
|
782
1018
|
// If the pool is at full capacity, then increasing 'max' will cause
|
783
1019
|
// new processes to be spawned. Any queued get requests are processed
|
784
1020
|
// as those new processes become available or as existing processes
|
@@ -801,7 +1037,7 @@ namespace tut {
|
|
801
1037
|
ensure_equals(pool->getProcessCount(), 3u);
|
802
1038
|
}
|
803
1039
|
|
804
|
-
TEST_METHOD(
|
1040
|
+
TEST_METHOD(62) {
|
805
1041
|
// Each spawned process has a GUPID, which can be looked up
|
806
1042
|
// through findProcessByGupid().
|
807
1043
|
Options options = createOptions();
|
@@ -814,13 +1050,13 @@ namespace tut {
|
|
814
1050
|
ensure_equals(currentSession->getProcess(), pool->findProcessByGupid(gupid));
|
815
1051
|
}
|
816
1052
|
|
817
|
-
TEST_METHOD(
|
1053
|
+
TEST_METHOD(63) {
|
818
1054
|
// findProcessByGupid() returns a NULL pointer if there is
|
819
1055
|
// no matching process.
|
820
1056
|
ensure(pool->findProcessByGupid("none") == NULL);
|
821
1057
|
}
|
822
1058
|
|
823
|
-
TEST_METHOD(
|
1059
|
+
TEST_METHOD(64) {
|
824
1060
|
// Test process idle cleaning.
|
825
1061
|
Options options = createOptions();
|
826
1062
|
retainSessions = true;
|
@@ -851,7 +1087,7 @@ namespace tut {
|
|
851
1087
|
);
|
852
1088
|
}
|
853
1089
|
|
854
|
-
TEST_METHOD(
|
1090
|
+
TEST_METHOD(65) {
|
855
1091
|
// Test spawner idle cleaning.
|
856
1092
|
Options options = createOptions();
|
857
1093
|
options.appGroupName = "test1";
|
@@ -877,7 +1113,7 @@ namespace tut {
|
|
877
1113
|
);
|
878
1114
|
}
|
879
1115
|
|
880
|
-
TEST_METHOD(
|
1116
|
+
TEST_METHOD(66) {
|
881
1117
|
// It should restart the app if restart.txt is created or updated.
|
882
1118
|
TempDirCopy dir("stub/wsgi", "tmp.wsgi");
|
883
1119
|
Options options = createOptions();
|
@@ -913,19 +1149,21 @@ namespace tut {
|
|
913
1149
|
ensure_equals(sendRequest(options, "/"), "restarted 2");
|
914
1150
|
}
|
915
1151
|
|
916
|
-
TEST_METHOD(
|
1152
|
+
TEST_METHOD(67) {
|
917
1153
|
// Test spawn exceptions.
|
918
1154
|
TempDirCopy dir("stub/wsgi", "tmp.wsgi");
|
919
1155
|
Options options = createOptions();
|
920
1156
|
options.appRoot = "tmp.wsgi";
|
921
1157
|
options.appType = "wsgi";
|
922
1158
|
options.spawnMethod = "direct";
|
923
|
-
|
1159
|
+
spawnerConfig->forwardStderr = false;
|
924
1160
|
|
925
1161
|
writeFile("tmp.wsgi/passenger_wsgi.py",
|
926
1162
|
"import sys\n"
|
927
1163
|
"sys.stderr.write('Something went wrong!')\n"
|
928
1164
|
"exit(1)\n");
|
1165
|
+
|
1166
|
+
setLogLevel(-2);
|
929
1167
|
pool->asyncGet(options, callback);
|
930
1168
|
EVENTUALLY(5,
|
931
1169
|
result = number == 1;
|
@@ -936,7 +1174,7 @@ namespace tut {
|
|
936
1174
|
ensure_equals(e->getErrorPage(), "Something went wrong!");
|
937
1175
|
}
|
938
1176
|
|
939
|
-
TEST_METHOD(
|
1177
|
+
TEST_METHOD(68) {
|
940
1178
|
// If a process fails to spawn, then it stops trying to spawn minProcesses processes.
|
941
1179
|
TempDirCopy dir("stub/wsgi", "tmp.wsgi");
|
942
1180
|
Options options = createOptions();
|
@@ -944,9 +1182,10 @@ namespace tut {
|
|
944
1182
|
options.appType = "wsgi";
|
945
1183
|
options.spawnMethod = "direct";
|
946
1184
|
options.minProcesses = 4;
|
947
|
-
|
1185
|
+
spawnerConfig->forwardStderr = false;
|
948
1186
|
|
949
1187
|
writeFile("tmp.wsgi/counter", "0");
|
1188
|
+
chmod("tmp.wsgi/counter", 0666);
|
950
1189
|
// Our application starts successfully the first two times,
|
951
1190
|
// and fails all the other times.
|
952
1191
|
writeFile("tmp.wsgi/passenger_wsgi.py",
|
@@ -963,6 +1202,7 @@ namespace tut {
|
|
963
1202
|
" sys.stderr.write('Something went wrong!')\n"
|
964
1203
|
" exit(1)\n");
|
965
1204
|
|
1205
|
+
setLogLevel(-2);
|
966
1206
|
pool->asyncGet(options, callback);
|
967
1207
|
EVENTUALLY(5,
|
968
1208
|
result = number == 1;
|
@@ -971,14 +1211,14 @@ namespace tut {
|
|
971
1211
|
result = pool->getProcessCount() == 2;
|
972
1212
|
);
|
973
1213
|
EVENTUALLY(2,
|
974
|
-
result = !pool->
|
1214
|
+
result = !pool->isSpawning();
|
975
1215
|
);
|
976
1216
|
SHOULD_NEVER_HAPPEN(500,
|
977
1217
|
result = pool->getProcessCount() > 2;
|
978
1218
|
);
|
979
1219
|
}
|
980
1220
|
|
981
|
-
TEST_METHOD(
|
1221
|
+
TEST_METHOD(69) {
|
982
1222
|
// It removes the process from the pool if session->initiate() fails.
|
983
1223
|
Options options = createOptions();
|
984
1224
|
options.appRoot = "stub/wsgi";
|
@@ -1006,7 +1246,7 @@ namespace tut {
|
|
1006
1246
|
ensure_equals(pool->getProcessCount(), 0u);
|
1007
1247
|
}
|
1008
1248
|
|
1009
|
-
TEST_METHOD(
|
1249
|
+
TEST_METHOD(70) {
|
1010
1250
|
// When a process has become idle, and there are waiters on the pool,
|
1011
1251
|
// consider detaching it in order to satisfy a waiter.
|
1012
1252
|
Options options1 = createOptions();
|
@@ -1033,84 +1273,63 @@ namespace tut {
|
|
1033
1273
|
ensure_equals(pool->getProcessCount(), 2u);
|
1034
1274
|
SuperGroupPtr superGroup1 = pool->superGroups.get("stub/rack");
|
1035
1275
|
SuperGroupPtr superGroup2 = pool->superGroups.get("stub/rack");
|
1036
|
-
ensure_equals(superGroup1->defaultGroup->
|
1037
|
-
ensure_equals(superGroup2->defaultGroup->
|
1276
|
+
ensure_equals(superGroup1->defaultGroup->enabledCount, 1);
|
1277
|
+
ensure_equals(superGroup2->defaultGroup->enabledCount, 1);
|
1038
1278
|
}
|
1039
1279
|
|
1040
|
-
TEST_METHOD(
|
1280
|
+
TEST_METHOD(71) {
|
1041
1281
|
// A process is detached after processing maxRequests sessions.
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
pool->setMax(1);
|
1047
|
-
pool->get(options, &ticket).reset();
|
1048
|
-
|
1049
|
-
vector<ProcessPtr> processes = pool->getProcesses();
|
1050
|
-
ensure_equals(processes.size(), 1u);
|
1051
|
-
pid_t origPid = processes[0]->pid;
|
1282
|
+
Options options = createOptions();
|
1283
|
+
options.minProcesses = 0;
|
1284
|
+
options.maxRequests = 5;
|
1285
|
+
pool->setMax(1);
|
1052
1286
|
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
ensure_equals(processes[0]->pid, origPid);
|
1058
|
-
}
|
1287
|
+
SessionPtr session = pool->get(options, &ticket);
|
1288
|
+
ensure_equals(pool->getProcessCount(), 1u);
|
1289
|
+
pid_t origPid = session->getPid();
|
1290
|
+
session.reset();
|
1059
1291
|
|
1292
|
+
for (int i = 0; i < 3; i++) {
|
1060
1293
|
pool->get(options, &ticket).reset();
|
1294
|
+
ensure_equals(pool->getProcessCount(), 1u);
|
1295
|
+
ensure_equals(pool->getProcesses()[0]->pid, origPid);
|
1061
1296
|
}
|
1297
|
+
|
1298
|
+
pool->get(options, &ticket).reset();
|
1062
1299
|
EVENTUALLY(2,
|
1063
1300
|
result = pool->getProcessCount() == 0;
|
1064
1301
|
);
|
1065
1302
|
}
|
1066
1303
|
|
1067
|
-
TEST_METHOD(
|
1304
|
+
TEST_METHOD(72) {
|
1068
1305
|
// If we restart while spawning is in progress, then the spawn
|
1069
1306
|
// loop will exit as soon as it has detected that we're restarting.
|
1070
1307
|
TempDirCopy dir("stub/wsgi", "tmp.wsgi");
|
1071
|
-
|
1072
|
-
spawnerFactory->dummySpawnerCreationSleepTime = 100000;
|
1073
|
-
|
1308
|
+
initPoolDebugging();
|
1074
1309
|
Options options = createOptions();
|
1075
1310
|
options.appRoot = "tmp.wsgi";
|
1076
1311
|
options.minProcesses = 3;
|
1077
1312
|
|
1078
|
-
// Trigger spawn loop
|
1079
|
-
pool->findOrCreateGroup(options);
|
1080
|
-
ScopedLock l(pool->syncher);
|
1081
|
-
pool->asyncGet(options, callback, false);
|
1082
|
-
// Wait until spawn loop tries to grab the lock.
|
1083
|
-
EVENTUALLY(3,
|
1084
|
-
LockGuard l2(pool->debugSyncher);
|
1085
|
-
result = pool->spawnLoopIteration == 1;
|
1086
|
-
);
|
1087
|
-
l.unlock();
|
1088
|
-
|
1089
|
-
// At this point, the spawn loop is about to attach its first spawned
|
1090
|
-
// process to the group. We wait until it has succeeded doing so.
|
1091
|
-
// Remaining maximum time in the spawn loop: 2*20=40 msec.
|
1092
|
-
EVENTUALLY2(200, 0,
|
1093
|
-
result = pool->getProcessCount() == 1;
|
1094
|
-
);
|
1095
|
-
|
1096
|
-
// Trigger restart. It will immediately detach the sole process in the pool,
|
1097
|
-
// and it will finish after approximately 100 msec,
|
1098
|
-
// allowing the spawn loop to detect that the restart flag is true.
|
1099
|
-
touchFile("tmp.wsgi/tmp/restart.txt");
|
1313
|
+
// Trigger spawn loop and freeze it at the point where it's spawning a process.
|
1100
1314
|
pool->asyncGet(options, callback);
|
1101
|
-
|
1315
|
+
debug->debugger->recv("Begin spawn loop iteration 1");
|
1102
1316
|
|
1103
|
-
//
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1317
|
+
// Trigger restart, freeze the restart procedure, then let spawn loop continue.
|
1318
|
+
touchFile("tmp.wsgi/tmp/restart.txt", 1);
|
1319
|
+
pool->asyncGet(options, callback);
|
1320
|
+
debug->debugger->recv("About to end restarting");
|
1321
|
+
debug->messages->send("Proceed with spawn loop iteration 1");
|
1322
|
+
|
1323
|
+
// The spawn loop will succeed at spawning this process.
|
1324
|
+
// After the spawn loop attaches the process, it should detect the
|
1325
|
+
// restart and stop, so that it never spawns the second and third processes.
|
1326
|
+
debug->debugger->recv("Spawn loop done");
|
1327
|
+
ensure_equals(debug->debugger->peek("At spawn loop iteration 2"), MessagePtr());
|
1328
|
+
ensure_equals(debug->debugger->peek("At spawn loop iteration 3"), MessagePtr());
|
1329
|
+
ensure_equals("(1)", pool->getProcessCount(), 1u);
|
1111
1330
|
}
|
1112
1331
|
|
1113
|
-
TEST_METHOD(
|
1332
|
+
TEST_METHOD(73) {
|
1114
1333
|
// If a get() request comes in while the restart is in progress, then
|
1115
1334
|
// that get() request will be put into the get waiters list, which will
|
1116
1335
|
// be processed after spawning is done.
|
@@ -1126,7 +1345,7 @@ namespace tut {
|
|
1126
1345
|
);
|
1127
1346
|
|
1128
1347
|
// Trigger a restart. The creation of the new spawner should take a while.
|
1129
|
-
|
1348
|
+
spawnerConfig->spawnerCreationSleepTime = 20000;
|
1130
1349
|
touchFile("tmp.wsgi/tmp/restart.txt");
|
1131
1350
|
pool->asyncGet(options, callback);
|
1132
1351
|
GroupPtr group = pool->findOrCreateGroup(options);
|
@@ -1143,14 +1362,15 @@ namespace tut {
|
|
1143
1362
|
pool->getProcessCount(), 2u);
|
1144
1363
|
}
|
1145
1364
|
|
1146
|
-
TEST_METHOD(
|
1365
|
+
TEST_METHOD(74) {
|
1147
1366
|
// If a process fails to spawn, it sends a SpawnException result to all get waiters.
|
1148
1367
|
TempDirCopy dir("stub/wsgi", "tmp.wsgi");
|
1368
|
+
chmod("tmp.wsgi", 0777);
|
1149
1369
|
Options options = createOptions();
|
1150
1370
|
options.appRoot = "tmp.wsgi";
|
1151
1371
|
options.appType = "wsgi";
|
1152
1372
|
options.spawnMethod = "direct";
|
1153
|
-
|
1373
|
+
spawnerConfig->forwardStderr = false;
|
1154
1374
|
pool->setMax(1);
|
1155
1375
|
|
1156
1376
|
writeFile("tmp.wsgi/passenger_wsgi.py",
|
@@ -1172,6 +1392,7 @@ namespace tut {
|
|
1172
1392
|
"exit(1)\n");
|
1173
1393
|
|
1174
1394
|
retainSessions = true;
|
1395
|
+
setLogLevel(-2);
|
1175
1396
|
pool->asyncGet(options, callback);
|
1176
1397
|
pool->asyncGet(options, callback);
|
1177
1398
|
pool->asyncGet(options, callback);
|
@@ -1191,7 +1412,7 @@ namespace tut {
|
|
1191
1412
|
ensure(sessions.empty());
|
1192
1413
|
}
|
1193
1414
|
|
1194
|
-
TEST_METHOD(
|
1415
|
+
TEST_METHOD(75) {
|
1195
1416
|
// If a process fails to spawn, the existing processes
|
1196
1417
|
// are kept alive.
|
1197
1418
|
TempDirCopy dir("stub/wsgi", "tmp.wsgi");
|
@@ -1200,7 +1421,7 @@ namespace tut {
|
|
1200
1421
|
options.appType = "wsgi";
|
1201
1422
|
options.spawnMethod = "direct";
|
1202
1423
|
options.minProcesses = 2;
|
1203
|
-
|
1424
|
+
spawnerConfig->forwardStderr = false;
|
1204
1425
|
|
1205
1426
|
// Spawn 2 processes.
|
1206
1427
|
retainSessions = true;
|
@@ -1217,7 +1438,7 @@ namespace tut {
|
|
1217
1438
|
"sys.stderr.write('Something went wrong!')\n"
|
1218
1439
|
"exit(1)\n");
|
1219
1440
|
try {
|
1220
|
-
|
1441
|
+
setLogLevel(-2);
|
1221
1442
|
currentSession = pool->get(options, &ticket);
|
1222
1443
|
fail("SpawnException expected");
|
1223
1444
|
} catch (const SpawnException &) {
|