passenger 6.0.16 → 6.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (286) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +22 -1
  3. data/build/integration_tests.rb +6 -6
  4. data/build/ruby_tests.rb +1 -1
  5. data/build/test_basics.rb +0 -1
  6. data/src/agent/Core/Config.h +1 -1
  7. data/src/agent/Core/Controller/Config.h +1 -1
  8. data/src/agent/Core/SpawningKit/PipeWatcher.h +18 -3
  9. data/src/agent/Watchdog/Config.h +1 -1
  10. data/src/cxx_supportlib/Constants.h +1 -1
  11. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
  12. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +1 -1
  13. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +344 -0
  14. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +686 -0
  15. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +56 -0
  16. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +81 -25
  17. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +68 -8
  18. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +46 -11
  19. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +4 -4
  20. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +1 -1
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +4 -4
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +2 -2
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +2 -2
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +3 -3
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +2 -2
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +3 -3
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +4 -4
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +2 -2
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +2 -2
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +13 -3
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +14 -3
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +13 -3
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +30 -305
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +90 -0
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +17 -18
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +98 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +330 -0
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +81 -15
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +4 -4
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +19 -11
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +37 -0
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +3 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +10 -2
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +14 -1
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +18 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +1 -2
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +7 -3
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +4 -14
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +22 -3
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +447 -142
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +57 -8
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +51 -6
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +5 -0
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +41 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +5 -0
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +13 -2
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +13 -2
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +4 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +9 -2
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +11 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +52 -8
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +13 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +5 -0
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +39 -6
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +5 -0
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +39 -6
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +5 -0
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +5 -0
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +5 -0
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +5 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +5 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +5 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +5 -0
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +5 -0
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +6 -9
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +3 -3
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +3 -3
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +70 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +146 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +35 -5
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +13 -3
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +7 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +180 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +89 -66
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +66 -45
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +13 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +1134 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +130 -106
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +377 -3
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +168 -29
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +149 -203
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +256 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +76 -80
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +40 -14
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +132 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +12 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +12 -3
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +12 -3
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +25 -6
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +25 -6
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +34 -45
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +28 -6
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +204 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +33 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +13 -3
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +21 -9
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +33 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +12 -3
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +40 -9
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +27 -6
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +104 -24
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +12 -3
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +70 -15
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +25 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +38 -30
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +27 -6
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -13
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +2 -2
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +17 -18
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +3 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +13 -3
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +11 -7
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -13
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +23 -18
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +2 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +2 -2
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +2 -2
  143. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +4 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
  147. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  148. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +3 -3
  150. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  151. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +2 -2
  152. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +2 -2
  153. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  154. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +10 -3
  157. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +9 -3
  158. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +9 -3
  159. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +6 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +8 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +33 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +9 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +29 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +13 -13
  169. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +80 -95
  170. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +10 -0
  171. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  172. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +738 -34
  173. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +38 -10
  174. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +1 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +2 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +3 -4
  177. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1150 -1213
  178. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +104 -12
  180. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +1 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +11 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +31 -331
  183. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +173 -0
  185. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +133 -0
  186. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +461 -566
  187. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +24 -24
  188. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +91 -0
  189. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +38 -0
  190. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +73 -0
  191. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +39 -0
  192. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +32 -4
  193. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -0
  194. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -16
  195. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +46 -0
  196. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  198. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  199. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
  200. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
  201. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +2 -2
  202. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  203. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  204. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  205. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  206. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
  209. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +159 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +9 -9
  216. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +45 -45
  217. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +8 -8
  218. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +37 -38
  219. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -0
  220. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +145 -90
  222. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +2 -0
  223. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +7 -7
  224. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +5 -5
  225. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +11 -9
  226. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +7 -7
  227. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
  228. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +8 -5
  230. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +4 -2
  232. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +2 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +8 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +111 -0
  235. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  237. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  238. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  239. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +6 -2
  240. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +7 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +2 -2
  244. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +10 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +38 -43
  246. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +52 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  249. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  250. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
  251. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +37 -7
  252. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +1921 -0
  253. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +66 -82
  254. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +6 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +109 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  257. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +45 -0
  258. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +732 -0
  259. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +49 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +586 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +49 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +166 -66
  263. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +145 -28
  264. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  265. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +1 -1
  266. data/src/ruby_native_extension/extconf.rb +1 -1
  267. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
  268. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  269. metadata +36 -19
  270. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
  271. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
  272. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
  273. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
  274. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
  275. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
  276. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
  277. data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
  278. data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
  279. data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -196
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -709
  282. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  283. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  284. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  285. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
  286. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
@@ -0,0 +1,90 @@
1
+ //
2
+ // consign.hpp
3
+ // ~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef BOOST_ASIO_CONSIGN_HPP
12
+ #define BOOST_ASIO_CONSIGN_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+
20
+ #if (defined(BOOST_ASIO_HAS_STD_TUPLE) \
21
+ && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)) \
22
+ || defined(GENERATING_DOCUMENTATION)
23
+
24
+ #include <tuple>
25
+ #include <boost/asio/detail/type_traits.hpp>
26
+
27
+ #include <boost/asio/detail/push_options.hpp>
28
+
29
+ namespace boost {
30
+ namespace asio {
31
+
32
+ /// Completion token type used to specify that the completion handler should
33
+ /// carry additional values along with it.
34
+ /**
35
+ * This completion token adapter is typically used to keep at least one copy of
36
+ * an object, such as a smart pointer, alive until the completion handler is
37
+ * called.
38
+ */
39
+ template <typename CompletionToken, typename... Values>
40
+ class consign_t
41
+ {
42
+ public:
43
+ /// Constructor.
44
+ template <typename T, typename... V>
45
+ BOOST_ASIO_CONSTEXPR explicit consign_t(
46
+ BOOST_ASIO_MOVE_ARG(T) completion_token,
47
+ BOOST_ASIO_MOVE_ARG(V)... values)
48
+ : token_(BOOST_ASIO_MOVE_CAST(T)(completion_token)),
49
+ values_(BOOST_ASIO_MOVE_CAST(V)(values)...)
50
+ {
51
+ }
52
+
53
+ #if defined(GENERATING_DOCUMENTATION)
54
+ private:
55
+ #endif // defined(GENERATING_DOCUMENTATION)
56
+ CompletionToken token_;
57
+ std::tuple<Values...> values_;
58
+ };
59
+
60
+ /// Completion token adapter used to specify that the completion handler should
61
+ /// carry additional values along with it.
62
+ /**
63
+ * This completion token adapter is typically used to keep at least one copy of
64
+ * an object, such as a smart pointer, alive until the completion handler is
65
+ * called.
66
+ */
67
+ template <typename CompletionToken, typename... Values>
68
+ BOOST_ASIO_NODISCARD inline BOOST_ASIO_CONSTEXPR consign_t<
69
+ typename decay<CompletionToken>::type, typename decay<Values>::type...>
70
+ consign(BOOST_ASIO_MOVE_ARG(CompletionToken) completion_token,
71
+ BOOST_ASIO_MOVE_ARG(Values)... values)
72
+ {
73
+ return consign_t<
74
+ typename decay<CompletionToken>::type, typename decay<Values>::type...>(
75
+ BOOST_ASIO_MOVE_CAST(CompletionToken)(completion_token),
76
+ BOOST_ASIO_MOVE_CAST(Values)(values)...);
77
+ }
78
+
79
+ } // namespace asio
80
+ } // namespace boost
81
+
82
+ #include <boost/asio/detail/pop_options.hpp>
83
+
84
+ #include <boost/asio/impl/consign.hpp>
85
+
86
+ #endif // (defined(BOOST_ASIO_HAS_STD_TUPLE)
87
+ // && defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES))
88
+ // || defined(GENERATING_DOCUMENTATION)
89
+
90
+ #endif // BOOST_ASIO_CONSIGN_HPP
@@ -19,8 +19,10 @@
19
19
  #include <boost/asio/async_result.hpp>
20
20
  #include <boost/asio/detail/type_traits.hpp>
21
21
  #include <boost/asio/execution_context.hpp>
22
+ #include <boost/asio/execution/blocking.hpp>
22
23
  #include <boost/asio/execution/executor.hpp>
23
24
  #include <boost/asio/is_executor.hpp>
25
+ #include <boost/asio/require.hpp>
24
26
 
25
27
  #include <boost/asio/detail/push_options.hpp>
26
28
 
@@ -68,12 +70,11 @@ template <typename> class initiate_defer_with_executor;
68
70
  * @code auto alloc = get_associated_allocator(handler); @endcode
69
71
  *
70
72
  * @li If <tt>execution::is_executor<Ex>::value</tt> is true, performs
71
- * @code execution::execute(
72
- * prefer(
73
- * require(ex, execution::blocking.never),
74
- * execution::relationship.continuation,
75
- * execution::allocator(alloc)),
76
- * std::forward<CompletionHandler>(completion_handler)); @endcode
73
+ * @code prefer(
74
+ * require(ex, execution::blocking.never),
75
+ * execution::relationship.continuation,
76
+ * execution::allocator(alloc)
77
+ * ).execute(std::forward<CompletionHandler>(completion_handler)); @endcode
77
78
  *
78
79
  * @li If <tt>execution::is_executor<Ex>::value</tt> is false, performs
79
80
  * @code ex.defer(
@@ -137,11 +138,8 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX(NullaryToken, void()) defer(
137
138
  * handler_ that is a decay-copy of @c completion_handler, and a function call
138
139
  * operator that performs:
139
140
  * @code auto a = get_associated_allocator(handler_);
140
- * execution::execute(
141
- * prefer(executor_,
142
- * execution::blocking.possibly,
143
- * execution::allocator(a)),
144
- * std::move(handler_)); @endcode
141
+ * prefer(executor_, execution::allocator(a)).execute(std::move(handler_));
142
+ * @endcode
145
143
  *
146
144
  * @li If <tt>execution::is_executor<Ex1>::value</tt> is false, constructs a
147
145
  * function object @c f with a member @c work_ that is initialised with
@@ -152,12 +150,11 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX(NullaryToken, void()) defer(
152
150
  * work_.reset(); @endcode
153
151
  *
154
152
  * @li If <tt>execution::is_executor<Ex>::value</tt> is true, performs
155
- * @code execution::execute(
156
- * prefer(
157
- * require(ex, execution::blocking.never),
158
- * execution::relationship.continuation,
159
- * execution::allocator(alloc)),
160
- * std::move(f)); @endcode
153
+ * @code prefer(
154
+ * require(ex, execution::blocking.never),
155
+ * execution::relationship.continuation,
156
+ * execution::allocator(alloc)
157
+ * ).execute(std::move(f)); @endcode
161
158
  *
162
159
  * @li If <tt>execution::is_executor<Ex>::value</tt> is false, performs
163
160
  * @code ex.defer(std::move(f), alloc); @endcode
@@ -173,7 +170,9 @@ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_PREFIX(NullaryToken, void()) defer(
173
170
  BOOST_ASIO_MOVE_ARG(NullaryToken) token
174
171
  BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(Executor),
175
172
  typename constraint<
176
- execution::is_executor<Executor>::value || is_executor<Executor>::value
173
+ (execution::is_executor<Executor>::value
174
+ && can_require<Executor, execution::blocking_t::never_t>::value)
175
+ || is_executor<Executor>::value
177
176
  >::type = 0)
178
177
  BOOST_ASIO_INITFN_AUTO_RESULT_TYPE_SUFFIX((
179
178
  async_initiate<NullaryToken, void()>(
@@ -950,9 +950,18 @@ struct associator<Associator,
950
950
  detail::binder0<Handler>, DefaultCandidate>
951
951
  : Associator<Handler, DefaultCandidate>
952
952
  {
953
- static typename Associator<Handler, DefaultCandidate>::type get(
954
- const detail::binder0<Handler>& h,
955
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
953
+ static typename Associator<Handler, DefaultCandidate>::type
954
+ get(const detail::binder0<Handler>& h) BOOST_ASIO_NOEXCEPT
955
+ {
956
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
957
+ }
958
+
959
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
960
+ typename Associator<Handler, DefaultCandidate>::type)
961
+ get(const detail::binder0<Handler>& h,
962
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
963
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
964
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
956
965
  {
957
966
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
958
967
  }
@@ -964,9 +973,18 @@ struct associator<Associator,
964
973
  detail::binder1<Handler, Arg1>, DefaultCandidate>
965
974
  : Associator<Handler, DefaultCandidate>
966
975
  {
967
- static typename Associator<Handler, DefaultCandidate>::type get(
968
- const detail::binder1<Handler, Arg1>& h,
969
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
976
+ static typename Associator<Handler, DefaultCandidate>::type
977
+ get(const detail::binder1<Handler, Arg1>& h) BOOST_ASIO_NOEXCEPT
978
+ {
979
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
980
+ }
981
+
982
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
983
+ typename Associator<Handler, DefaultCandidate>::type)
984
+ get(const detail::binder1<Handler, Arg1>& h,
985
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
986
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
987
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
970
988
  {
971
989
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
972
990
  }
@@ -979,9 +997,18 @@ struct associator<Associator,
979
997
  detail::binder2<Handler, Arg1, Arg2>, DefaultCandidate>
980
998
  : Associator<Handler, DefaultCandidate>
981
999
  {
982
- static typename Associator<Handler, DefaultCandidate>::type get(
983
- const detail::binder2<Handler, Arg1, Arg2>& h,
984
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1000
+ static typename Associator<Handler, DefaultCandidate>::type
1001
+ get(const detail::binder2<Handler, Arg1, Arg2>& h) BOOST_ASIO_NOEXCEPT
1002
+ {
1003
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
1004
+ }
1005
+
1006
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1007
+ typename Associator<Handler, DefaultCandidate>::type)
1008
+ get(const detail::binder2<Handler, Arg1, Arg2>& h,
1009
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1010
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1011
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
985
1012
  {
986
1013
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
987
1014
  }
@@ -994,9 +1021,18 @@ struct associator<Associator,
994
1021
  detail::binder3<Handler, Arg1, Arg2, Arg3>, DefaultCandidate>
995
1022
  : Associator<Handler, DefaultCandidate>
996
1023
  {
997
- static typename Associator<Handler, DefaultCandidate>::type get(
998
- const detail::binder3<Handler, Arg1, Arg2, Arg3>& h,
999
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1024
+ static typename Associator<Handler, DefaultCandidate>::type
1025
+ get(const detail::binder3<Handler, Arg1, Arg2, Arg3>& h) BOOST_ASIO_NOEXCEPT
1026
+ {
1027
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
1028
+ }
1029
+
1030
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1031
+ typename Associator<Handler, DefaultCandidate>::type)
1032
+ get(const detail::binder3<Handler, Arg1, Arg2, Arg3>& h,
1033
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1034
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1035
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
1000
1036
  {
1001
1037
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
1002
1038
  }
@@ -1009,9 +1045,19 @@ struct associator<Associator,
1009
1045
  detail::binder4<Handler, Arg1, Arg2, Arg3, Arg4>, DefaultCandidate>
1010
1046
  : Associator<Handler, DefaultCandidate>
1011
1047
  {
1012
- static typename Associator<Handler, DefaultCandidate>::type get(
1013
- const detail::binder4<Handler, Arg1, Arg2, Arg3, Arg4>& h,
1014
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1048
+ static typename Associator<Handler, DefaultCandidate>::type
1049
+ get(const detail::binder4<Handler, Arg1, Arg2, Arg3, Arg4>& h)
1050
+ BOOST_ASIO_NOEXCEPT
1051
+ {
1052
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
1053
+ }
1054
+
1055
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1056
+ typename Associator<Handler, DefaultCandidate>::type)
1057
+ get(const detail::binder4<Handler, Arg1, Arg2, Arg3, Arg4>& h,
1058
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1059
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1060
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
1015
1061
  {
1016
1062
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
1017
1063
  }
@@ -1024,9 +1070,19 @@ struct associator<Associator,
1024
1070
  detail::binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>, DefaultCandidate>
1025
1071
  : Associator<Handler, DefaultCandidate>
1026
1072
  {
1027
- static typename Associator<Handler, DefaultCandidate>::type get(
1028
- const detail::binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>& h,
1029
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1073
+ static typename Associator<Handler, DefaultCandidate>::type
1074
+ get(const detail::binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>& h)
1075
+ BOOST_ASIO_NOEXCEPT
1076
+ {
1077
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
1078
+ }
1079
+
1080
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1081
+ typename Associator<Handler, DefaultCandidate>::type)
1082
+ get(const detail::binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>& h,
1083
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1084
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1085
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
1030
1086
  {
1031
1087
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
1032
1088
  }
@@ -1040,9 +1096,18 @@ struct associator<Associator,
1040
1096
  detail::move_binder1<Handler, Arg1>, DefaultCandidate>
1041
1097
  : Associator<Handler, DefaultCandidate>
1042
1098
  {
1043
- static typename Associator<Handler, DefaultCandidate>::type get(
1044
- const detail::move_binder1<Handler, Arg1>& h,
1045
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1099
+ static typename Associator<Handler, DefaultCandidate>::type
1100
+ get(const detail::move_binder1<Handler, Arg1>& h) BOOST_ASIO_NOEXCEPT
1101
+ {
1102
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
1103
+ }
1104
+
1105
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1106
+ typename Associator<Handler, DefaultCandidate>::type)
1107
+ get(const detail::move_binder1<Handler, Arg1>& h,
1108
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1109
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1110
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
1046
1111
  {
1047
1112
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
1048
1113
  }
@@ -1055,9 +1120,18 @@ struct associator<Associator,
1055
1120
  detail::move_binder2<Handler, Arg1, Arg2>, DefaultCandidate>
1056
1121
  : Associator<Handler, DefaultCandidate>
1057
1122
  {
1058
- static typename Associator<Handler, DefaultCandidate>::type get(
1059
- const detail::move_binder2<Handler, Arg1, Arg2>& h,
1060
- const DefaultCandidate& c = DefaultCandidate()) BOOST_ASIO_NOEXCEPT
1123
+ static typename Associator<Handler, DefaultCandidate>::type
1124
+ get(const detail::move_binder2<Handler, Arg1, Arg2>& h) BOOST_ASIO_NOEXCEPT
1125
+ {
1126
+ return Associator<Handler, DefaultCandidate>::get(h.handler_);
1127
+ }
1128
+
1129
+ static BOOST_ASIO_AUTO_RETURN_TYPE_PREFIX2(
1130
+ typename Associator<Handler, DefaultCandidate>::type)
1131
+ get(const detail::move_binder2<Handler, Arg1, Arg2>& h,
1132
+ const DefaultCandidate& c) BOOST_ASIO_NOEXCEPT
1133
+ BOOST_ASIO_AUTO_RETURN_TYPE_SUFFIX((
1134
+ Associator<Handler, DefaultCandidate>::get(h.handler_, c)))
1061
1135
  {
1062
1136
  return Associator<Handler, DefaultCandidate>::get(h.handler_, c);
1063
1137
  }
@@ -0,0 +1,330 @@
1
+ //
2
+ // detail/composed_work.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2022 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef BOOST_ASIO_DETAIL_COMPOSED_WORK_HPP
12
+ #define BOOST_ASIO_DETAIL_COMPOSED_WORK_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include <boost/asio/detail/config.hpp>
19
+ #include <boost/asio/detail/type_traits.hpp>
20
+ #include <boost/asio/detail/variadic_templates.hpp>
21
+ #include <boost/asio/execution/executor.hpp>
22
+ #include <boost/asio/execution/outstanding_work.hpp>
23
+ #include <boost/asio/executor_work_guard.hpp>
24
+ #include <boost/asio/is_executor.hpp>
25
+ #include <boost/asio/system_executor.hpp>
26
+
27
+ #include <boost/asio/detail/push_options.hpp>
28
+
29
+ namespace boost {
30
+ namespace asio {
31
+ namespace detail {
32
+
33
+ template <typename Executor, typename = void>
34
+ class composed_work_guard
35
+ {
36
+ public:
37
+ typedef typename decay<
38
+ typename prefer_result<Executor,
39
+ execution::outstanding_work_t::tracked_t
40
+ >::type
41
+ >::type executor_type;
42
+
43
+ composed_work_guard(const Executor& ex)
44
+ : executor_(boost::asio::prefer(ex, execution::outstanding_work.tracked))
45
+ {
46
+ }
47
+
48
+ void reset()
49
+ {
50
+ }
51
+
52
+ executor_type get_executor() const BOOST_ASIO_NOEXCEPT
53
+ {
54
+ return executor_;
55
+ }
56
+
57
+ private:
58
+ executor_type executor_;
59
+ };
60
+
61
+ template <>
62
+ struct composed_work_guard<system_executor>
63
+ {
64
+ public:
65
+ typedef system_executor executor_type;
66
+
67
+ composed_work_guard(const system_executor&)
68
+ {
69
+ }
70
+
71
+ void reset()
72
+ {
73
+ }
74
+
75
+ executor_type get_executor() const BOOST_ASIO_NOEXCEPT
76
+ {
77
+ return system_executor();
78
+ }
79
+ };
80
+
81
+ #if !defined(BOOST_ASIO_NO_TS_EXECUTORS)
82
+
83
+ template <typename Executor>
84
+ struct composed_work_guard<Executor,
85
+ typename enable_if<
86
+ !execution::is_executor<Executor>::value
87
+ >::type> : executor_work_guard<Executor>
88
+ {
89
+ composed_work_guard(const Executor& ex)
90
+ : executor_work_guard<Executor>(ex)
91
+ {
92
+ }
93
+ };
94
+
95
+ #endif // !defined(BOOST_ASIO_NO_TS_EXECUTORS)
96
+
97
+ template <typename>
98
+ struct composed_io_executors;
99
+
100
+ template <>
101
+ struct composed_io_executors<void()>
102
+ {
103
+ composed_io_executors() BOOST_ASIO_NOEXCEPT
104
+ : head_(system_executor())
105
+ {
106
+ }
107
+
108
+ typedef system_executor head_type;
109
+ system_executor head_;
110
+ };
111
+
112
+ inline composed_io_executors<void()> make_composed_io_executors()
113
+ {
114
+ return composed_io_executors<void()>();
115
+ }
116
+
117
+ template <typename Head>
118
+ struct composed_io_executors<void(Head)>
119
+ {
120
+ explicit composed_io_executors(const Head& ex) BOOST_ASIO_NOEXCEPT
121
+ : head_(ex)
122
+ {
123
+ }
124
+
125
+ typedef Head head_type;
126
+ Head head_;
127
+ };
128
+
129
+ template <typename Head>
130
+ inline composed_io_executors<void(Head)>
131
+ make_composed_io_executors(const Head& head)
132
+ {
133
+ return composed_io_executors<void(Head)>(head);
134
+ }
135
+
136
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
137
+
138
+ template <typename Head, typename... Tail>
139
+ struct composed_io_executors<void(Head, Tail...)>
140
+ {
141
+ explicit composed_io_executors(const Head& head,
142
+ const Tail&... tail) BOOST_ASIO_NOEXCEPT
143
+ : head_(head),
144
+ tail_(tail...)
145
+ {
146
+ }
147
+
148
+ void reset()
149
+ {
150
+ head_.reset();
151
+ tail_.reset();
152
+ }
153
+
154
+ typedef Head head_type;
155
+ Head head_;
156
+ composed_io_executors<void(Tail...)> tail_;
157
+ };
158
+
159
+ template <typename Head, typename... Tail>
160
+ inline composed_io_executors<void(Head, Tail...)>
161
+ make_composed_io_executors(const Head& head, const Tail&... tail)
162
+ {
163
+ return composed_io_executors<void(Head, Tail...)>(head, tail...);
164
+ }
165
+
166
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
167
+
168
+ #define BOOST_ASIO_PRIVATE_COMPOSED_IO_EXECUTORS_DEF(n) \
169
+ template <typename Head, BOOST_ASIO_VARIADIC_TPARAMS(n)> \
170
+ struct composed_io_executors<void(Head, BOOST_ASIO_VARIADIC_TARGS(n))> \
171
+ { \
172
+ explicit composed_io_executors(const Head& head, \
173
+ BOOST_ASIO_VARIADIC_CONSTREF_PARAMS(n)) BOOST_ASIO_NOEXCEPT \
174
+ : head_(head), \
175
+ tail_(BOOST_ASIO_VARIADIC_BYVAL_ARGS(n)) \
176
+ { \
177
+ } \
178
+ \
179
+ void reset() \
180
+ { \
181
+ head_.reset(); \
182
+ tail_.reset(); \
183
+ } \
184
+ \
185
+ typedef Head head_type; \
186
+ Head head_; \
187
+ composed_io_executors<void(BOOST_ASIO_VARIADIC_TARGS(n))> tail_; \
188
+ }; \
189
+ \
190
+ template <typename Head, BOOST_ASIO_VARIADIC_TPARAMS(n)> \
191
+ inline composed_io_executors<void(Head, BOOST_ASIO_VARIADIC_TARGS(n))> \
192
+ make_composed_io_executors(const Head& head, \
193
+ BOOST_ASIO_VARIADIC_CONSTREF_PARAMS(n)) \
194
+ { \
195
+ return composed_io_executors< \
196
+ void(Head, BOOST_ASIO_VARIADIC_TARGS(n))>( \
197
+ head, BOOST_ASIO_VARIADIC_BYVAL_ARGS(n)); \
198
+ } \
199
+ /**/
200
+ BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_COMPOSED_IO_EXECUTORS_DEF)
201
+ #undef BOOST_ASIO_PRIVATE_COMPOSED_IO_EXECUTORS_DEF
202
+
203
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
204
+
205
+ template <typename>
206
+ struct composed_work;
207
+
208
+ template <>
209
+ struct composed_work<void()>
210
+ {
211
+ typedef composed_io_executors<void()> executors_type;
212
+
213
+ composed_work(const executors_type&) BOOST_ASIO_NOEXCEPT
214
+ : head_(system_executor())
215
+ {
216
+ }
217
+
218
+ void reset()
219
+ {
220
+ head_.reset();
221
+ }
222
+
223
+ typedef system_executor head_type;
224
+ composed_work_guard<system_executor> head_;
225
+ };
226
+
227
+ template <typename Head>
228
+ struct composed_work<void(Head)>
229
+ {
230
+ typedef composed_io_executors<void(Head)> executors_type;
231
+
232
+ explicit composed_work(const executors_type& ex) BOOST_ASIO_NOEXCEPT
233
+ : head_(ex.head_)
234
+ {
235
+ }
236
+
237
+ void reset()
238
+ {
239
+ head_.reset();
240
+ }
241
+
242
+ typedef Head head_type;
243
+ composed_work_guard<Head> head_;
244
+ };
245
+
246
+ #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
247
+
248
+ template <typename Head, typename... Tail>
249
+ struct composed_work<void(Head, Tail...)>
250
+ {
251
+ typedef composed_io_executors<void(Head, Tail...)> executors_type;
252
+
253
+ explicit composed_work(const executors_type& ex) BOOST_ASIO_NOEXCEPT
254
+ : head_(ex.head_),
255
+ tail_(ex.tail_)
256
+ {
257
+ }
258
+
259
+ void reset()
260
+ {
261
+ head_.reset();
262
+ tail_.reset();
263
+ }
264
+
265
+ typedef Head head_type;
266
+ composed_work_guard<Head> head_;
267
+ composed_work<void(Tail...)> tail_;
268
+ };
269
+
270
+ #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
271
+
272
+ #define BOOST_ASIO_PRIVATE_COMPOSED_WORK_DEF(n) \
273
+ template <typename Head, BOOST_ASIO_VARIADIC_TPARAMS(n)> \
274
+ struct composed_work<void(Head, BOOST_ASIO_VARIADIC_TARGS(n))> \
275
+ { \
276
+ typedef composed_io_executors<void(Head, \
277
+ BOOST_ASIO_VARIADIC_TARGS(n))> executors_type; \
278
+ \
279
+ explicit composed_work(const executors_type& ex) BOOST_ASIO_NOEXCEPT \
280
+ : head_(ex.head_), \
281
+ tail_(ex.tail_) \
282
+ { \
283
+ } \
284
+ \
285
+ void reset() \
286
+ { \
287
+ head_.reset(); \
288
+ tail_.reset(); \
289
+ } \
290
+ \
291
+ typedef Head head_type; \
292
+ composed_work_guard<Head> head_; \
293
+ composed_work<void(BOOST_ASIO_VARIADIC_TARGS(n))> tail_; \
294
+ }; \
295
+ /**/
296
+ BOOST_ASIO_VARIADIC_GENERATE(BOOST_ASIO_PRIVATE_COMPOSED_WORK_DEF)
297
+ #undef BOOST_ASIO_PRIVATE_COMPOSED_WORK_DEF
298
+
299
+ #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES)
300
+
301
+ template <typename IoObject>
302
+ inline typename IoObject::executor_type
303
+ get_composed_io_executor(IoObject& io_object,
304
+ typename enable_if<
305
+ !is_executor<IoObject>::value
306
+ >::type* = 0,
307
+ typename enable_if<
308
+ !execution::is_executor<IoObject>::value
309
+ >::type* = 0)
310
+ {
311
+ return io_object.get_executor();
312
+ }
313
+
314
+ template <typename Executor>
315
+ inline const Executor& get_composed_io_executor(const Executor& ex,
316
+ typename enable_if<
317
+ is_executor<Executor>::value
318
+ || execution::is_executor<Executor>::value
319
+ >::type* = 0)
320
+ {
321
+ return ex;
322
+ }
323
+
324
+ } // namespace detail
325
+ } // namespace asio
326
+ } // namespace boost
327
+
328
+ #include <boost/asio/detail/pop_options.hpp>
329
+
330
+ #endif // BOOST_ASIO_DETAIL_COMPOSED_WORK_HPP