passenger 5.3.3 → 5.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1070) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +8 -0
  3. data/build/support/cxx_dependency_map.rb +151 -83
  4. data/dev/configkit-schemas/index.json +3 -3
  5. data/src/agent/Core/AdminPanelConnector.h +5 -3
  6. data/src/agent/Core/ApplicationPool/Common.h +1 -2
  7. data/src/agent/Core/ApplicationPool/Context.h +1 -2
  8. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
  9. data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
  10. data/src/agent/Core/Config.h +1 -1
  11. data/src/agent/Core/Controller.h +2 -1
  12. data/src/agent/Core/Controller/Config.h +6 -5
  13. data/src/agent/Core/Controller/Hooks.cpp +11 -0
  14. data/src/agent/Core/Controller/SendRequest.cpp +7 -7
  15. data/src/agent/Core/CoreMain.cpp +0 -2
  16. data/src/agent/Core/SpawningKit/Context.h +1 -3
  17. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
  18. data/src/agent/Core/SpawningKit/Handshake/Perform.h +2 -2
  19. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +17 -38
  20. data/src/agent/Core/SpawningKit/PipeWatcher.h +5 -3
  21. data/src/agent/Core/SpawningKit/UserSwitchingRules.h +13 -5
  22. data/src/agent/Shared/ApiServerUtils.h +2 -2
  23. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -18
  24. data/src/agent/Watchdog/Config.h +1 -1
  25. data/src/agent/Watchdog/WatchdogMain.cpp +20 -20
  26. data/src/apache2_module/Config.cpp +7 -6
  27. data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
  28. data/src/cxx_supportlib/Constants.h +1 -1
  29. data/src/cxx_supportlib/Exceptions.h +0 -1
  30. data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +3 -2
  31. data/src/cxx_supportlib/ResourceLocator.h +3 -21
  32. data/src/cxx_supportlib/SafeLibev.h +6 -6
  33. data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
  34. data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -3
  35. data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
  36. data/src/cxx_supportlib/ServerKit/HttpServer.h +27 -15
  37. data/src/cxx_supportlib/ServerKit/Server.h +2 -2
  38. data/src/cxx_supportlib/SystemTools/README.md +1 -0
  39. data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +222 -0
  40. data/src/cxx_supportlib/SystemTools/UserDatabase.h +151 -0
  41. data/src/cxx_supportlib/Utils.cpp +1 -113
  42. data/src/cxx_supportlib/Utils.h +1 -29
  43. data/src/cxx_supportlib/Utils/MessagePassing.h +3 -3
  44. data/src/cxx_supportlib/WatchdogLauncher.h +1 -2
  45. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +6 -2
  46. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +1 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +3 -2
  48. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +31 -1
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +133 -0
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +151 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +149 -22
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +140 -49
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +145 -35
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +75 -41
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +139 -49
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +98 -45
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +42 -49
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +45 -38
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +349 -109
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +959 -108
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +198 -54
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +424 -284
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +116 -47
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +99 -16
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +4 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +235 -49
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +613 -0
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +1139 -1216
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -14
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +26 -6
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +27 -14
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +61 -21
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +462 -226
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +7 -7
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +94 -64
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +20 -18
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +109 -0
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +1 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +1 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +404 -77
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +212 -51
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +2 -2
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +68 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +8 -6
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +94 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +114 -0
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +151 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +398 -13
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +287 -165
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +33 -0
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +15 -1
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +65 -14
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +5 -1
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +17 -8
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +17 -8
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +27 -15
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +41 -17
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +86 -0
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{function.hpp → functional.hpp} +10 -10
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +3 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +3 -1
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +3 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +3 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +54 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +158 -3
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +2 -2
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +90 -9
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +117 -39
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +97 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +6 -6
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +24 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +17 -4
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +34 -18
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +17 -4
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +152 -51
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +80 -27
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +19 -6
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +93 -23
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +76 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +13 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +11 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +27 -13
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +7 -6
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +43 -10
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +54 -30
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/{task_io_service.ipp → scheduler.ipp} +167 -70
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +17 -4
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +46 -26
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +36 -30
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +39 -30
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +43 -21
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +129 -26
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +181 -0
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +136 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +13 -13
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +15 -14
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -5
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -51
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +241 -0
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +128 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +36 -14
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +2 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +42 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +17 -5
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +3 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +61 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +10 -9
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +29 -19
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +7 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +26 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +7 -1
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +3 -3
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +5 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +37 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +82 -0
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +5 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +10 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +86 -20
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +9 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +10 -8
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +101 -20
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +14 -7
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +20 -8
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +13 -8
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +15 -8
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +25 -11
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +15 -8
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +99 -31
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +96 -35
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +92 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +2 -2
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +2 -2
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +7 -3
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +106 -0
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +25 -24
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +6 -92
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +136 -0
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +38 -22
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +30 -19
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service.hpp → scheduler.hpp} +57 -45
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_operation.hpp → scheduler_operation.hpp} +19 -17
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_thread_info.hpp → scheduler_thread_info.hpp} +10 -10
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +9 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +37 -18
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +54 -34
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +9 -5
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +14 -13
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +9 -6
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +10 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +2 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -1
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +72 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +7 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +144 -0
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +10 -10
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +49 -0
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +9 -5
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +44 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +91 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +45 -15
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +29 -2
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +11 -5
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +2 -2
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +2 -2
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +29 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +74 -18
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +8 -6
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +74 -0
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +110 -0
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +17 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +413 -0
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +343 -0
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +172 -0
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +22 -0
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +228 -0
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +67 -0
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +878 -0
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +93 -0
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/redirect_error.hpp +296 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/redirect_error.hpp +69 -0
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +1 -1
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +1 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +3 -2
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +1 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +1 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +1 -1
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +1 -1
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +4 -4
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +11 -73
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +4 -23
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +86 -15
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +92 -19
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +549 -119
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +79 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +80 -0
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +109 -0
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +84 -0
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +388 -0
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +40 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +7 -32
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +347 -0
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +176 -0
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +79 -0
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +341 -379
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +173 -343
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +559 -206
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +30 -30
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +254 -72
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +12 -4
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +36 -0
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +75 -0
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +87 -0
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +129 -0
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +78 -0
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +855 -94
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +358 -449
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +165 -418
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +878 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +386 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +6 -743
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +20 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +79 -19
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +111 -23
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +164 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +136 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +104 -14
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +185 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +131 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +50 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +5 -5
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +821 -71
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +23 -4
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +31 -99
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +313 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +2 -2
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +5 -10
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +16 -19
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +1 -1
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +28 -14
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +55 -47
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +28 -14
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +76 -44
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +28 -14
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +85 -33
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +2 -14
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +56 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +218 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +55 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +187 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +263 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +237 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +131 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +3 -90
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +48 -24
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +3 -3
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +1 -1
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +48 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +1 -1
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +23 -21
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +3 -2
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +1 -1
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +128 -0
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +30 -2
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +138 -46
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +15 -15
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +646 -0
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +17 -24
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +326 -3
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +63 -44
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +109 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +94 -64
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +328 -12
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +13 -6
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1148 -247
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +88 -56
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +736 -3
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +11 -11
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +41 -45
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +422 -3
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +32 -24
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +114 -48
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +85 -46
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +89 -18
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -4
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +33 -62
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +27 -23
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +10 -14
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +2 -8
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +22 -25
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +5 -4
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +40 -17
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +2 -2
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +4 -10
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -9
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +2 -8
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +27 -19
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -8
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -9
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +8 -12
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +86 -102
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +7 -13
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -13
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +90 -85
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +3 -9
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +4 -23
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +209 -175
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +88 -56
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +80 -0
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +131 -0
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +4 -19
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +234 -0
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +24 -0
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +35 -0
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +40 -0
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +20 -0
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +26 -0
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +199 -0
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +27 -0
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +26 -0
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +70 -3
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +73 -0
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +17 -2
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +62 -20
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +22 -30
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +14 -10
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +15 -15
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +15 -15
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +346 -3
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +26 -20
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +333 -0
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +6 -6
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +344 -3
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +31 -37
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +328 -3
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +29 -37
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +321 -12
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +13 -6
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +11 -0
  469. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +50 -1
  470. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +58 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +1 -0
  472. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +688 -220
  473. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +25 -21
  474. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +86 -0
  475. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +1 -18
  476. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +9 -10
  477. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +2 -1
  478. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +7 -8
  479. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +1 -36
  480. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +108 -34
  481. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations.hpp +28 -0
  482. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +35 -0
  483. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +107 -0
  484. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +189 -0
  485. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations.hpp +28 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +35 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +238 -0
  488. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +1111 -0
  489. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +840 -0
  490. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +1656 -0
  491. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +402 -0
  492. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +106 -0
  493. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +1301 -0
  494. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +142 -0
  495. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations.hpp +28 -0
  496. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +35 -0
  497. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +72 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +83 -0
  499. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_arm.hpp +67 -0
  500. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_ppc.hpp +42 -0
  501. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_x86.hpp +58 -0
  502. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +3 -3
  503. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_extend.hpp +105 -0
  504. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -1
  505. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +1 -1
  506. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +2 -0
  507. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +8 -9
  508. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +8 -7
  509. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +14 -16
  510. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +548 -126
  511. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +134 -0
  512. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +36 -44
  513. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +524 -96
  514. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +70 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +14 -16
  516. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +27 -59
  517. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +104 -57
  518. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +268 -340
  519. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +9 -9
  520. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +22 -24
  521. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +55 -80
  522. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +88 -46
  523. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +30 -103
  524. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/string_ops.hpp +61 -0
  525. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +42 -0
  526. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +46 -0
  527. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +42 -0
  528. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +42 -0
  529. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +47 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +43 -0
  531. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +43 -0
  532. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +46 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +43 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +43 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +37 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_cc.hpp +30 -30
  537. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +36 -36
  538. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +0 -10
  539. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +28 -30
  540. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +2 -4
  541. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +1 -1
  542. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +14 -8
  543. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +1 -1
  544. data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +2 -4
  545. data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +2 -2
  546. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +0 -1
  547. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +9 -9
  548. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +7 -6
  549. data/src/cxx_supportlib/vendor-modified/boost/config.hpp +4 -4
  550. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +26 -4
  551. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +12 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +30 -2
  553. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +13 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +11 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +32 -2
  556. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/diab.hpp +26 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +11 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +33 -6
  559. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +11 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +8 -1
  561. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +11 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +11 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +28 -2
  564. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +17 -1
  565. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +8 -142
  566. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +14 -3
  567. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +16 -0
  568. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +37 -9
  569. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +19 -0
  570. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +169 -0
  571. data/src/cxx_supportlib/vendor-modified/boost/config/{posix_features.hpp → detail/posix_features.hpp} +0 -0
  572. data/src/cxx_supportlib/vendor-modified/boost/config/{select_compiler_config.hpp → detail/select_compiler_config.hpp} +15 -5
  573. data/src/cxx_supportlib/vendor-modified/boost/config/{select_platform_config.hpp → detail/select_platform_config.hpp} +8 -3
  574. data/src/cxx_supportlib/vendor-modified/boost/config/{select_stdlib_config.hpp → detail/select_stdlib_config.hpp} +5 -0
  575. data/src/cxx_supportlib/vendor-modified/boost/config/{suffix.hpp → detail/suffix.hpp} +27 -27
  576. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +26 -0
  577. data/src/cxx_supportlib/vendor-modified/boost/config/helper_macros.hpp +37 -0
  578. data/src/cxx_supportlib/vendor-modified/boost/config/platform/aix.hpp +1 -1
  579. data/src/cxx_supportlib/vendor-modified/boost/config/platform/beos.hpp +1 -1
  580. data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +1 -1
  581. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cray.hpp +1 -1
  582. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +12 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +1 -1
  584. data/src/cxx_supportlib/vendor-modified/boost/config/platform/hpux.hpp +1 -1
  585. data/src/cxx_supportlib/vendor-modified/boost/config/platform/irix.hpp +1 -1
  586. data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +4 -3
  587. data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
  588. data/src/cxx_supportlib/vendor-modified/boost/config/platform/qnxnto.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +1 -1
  590. data/src/cxx_supportlib/vendor-modified/boost/config/platform/symbian.hpp +1 -1
  591. data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +155 -91
  592. data/src/cxx_supportlib/vendor-modified/boost/config/platform/zos.hpp +32 -0
  593. data/src/cxx_supportlib/vendor-modified/boost/config/pragma_message.hpp +31 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +21 -2
  595. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +2 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +20 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +35 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +2 -0
  599. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +3 -1
  600. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -0
  601. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +2 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +2 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +2 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +60 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +279 -0
  606. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +19 -19
  607. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +5 -5
  608. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +58 -58
  609. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +7 -28
  610. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +57 -57
  611. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +3 -3
  612. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +10 -10
  613. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
  614. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +18 -18
  615. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +122 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +8 -8
  617. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +7 -7
  618. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +1 -1
  619. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +49 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +258 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +119 -134
  622. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +15 -15
  623. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +55 -55
  624. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +714 -282
  625. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +55 -0
  626. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +47 -0
  627. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +2 -2
  628. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +30 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +4 -29
  630. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +9 -9
  631. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +2 -2
  632. data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +2 -2
  633. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
  634. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +8 -8
  635. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +2 -2
  636. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +37 -35
  637. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +41 -41
  638. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +4 -4
  639. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +4 -4
  640. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +69 -16
  641. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair_key_mapped_of_value.hpp +55 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +2 -2
  643. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +7 -7
  644. data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +2 -2
  645. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +1 -1
  646. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +180 -116
  647. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -2
  648. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +36 -0
  649. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -2
  650. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +2 -2
  651. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +8 -8
  652. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +0 -6
  653. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +874 -572
  654. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +497 -248
  655. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -42
  656. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +326 -246
  657. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +19 -19
  658. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +122 -78
  659. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +165 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -8
  661. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -8
  662. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -4
  663. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +6 -6
  664. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  665. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -4
  666. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +19 -19
  667. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +285 -110
  668. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +35 -53
  669. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +18 -19
  670. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +25 -25
  671. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +24 -9
  672. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +194 -142
  673. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -5
  674. data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +5 -5
  675. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +395 -421
  676. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/float_functions.hpp +0 -0
  677. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/hash_float.hpp +4 -4
  678. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/limits.hpp +0 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/extensions.hpp +112 -16
  680. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash.hpp +195 -7
  681. data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash_fwd.hpp +3 -3
  682. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +53 -44
  683. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +80 -2
  684. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +1 -1
  685. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +233 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -2
  687. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +26 -16
  688. data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +20 -34
  689. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +8 -5
  690. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -0
  691. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +2 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +7 -6
  693. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +6 -6
  694. data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +8 -94
  695. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +1 -8
  696. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +3 -3
  697. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +6 -4
  698. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +3 -3
  699. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +2 -2
  700. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +6 -6
  701. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +52 -52
  702. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +14 -27
  703. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +0 -1
  704. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -1
  705. data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +36 -5
  706. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +10 -9
  707. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +10 -12
  708. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +18 -10
  709. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +12 -12
  710. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +65 -20
  711. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +32 -23
  712. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +6 -5
  713. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +10 -7
  714. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -3
  715. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +20 -0
  716. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +31 -8
  717. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +10 -4
  718. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +3 -1
  719. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +2 -264
  720. data/src/cxx_supportlib/vendor-modified/boost/enable_shared_from_this.hpp +1 -1
  721. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +38 -21
  722. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +10 -9
  723. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +3 -2
  724. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +7 -6
  725. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -6
  726. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +10 -7
  727. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +8 -6
  728. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +13 -47
  729. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +5 -4
  730. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +5 -4
  731. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +12 -4
  732. data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +2 -0
  733. data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +102 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +20 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +9 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/functional/hash.hpp +1 -2
  737. data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +1 -6
  738. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +508 -390
  739. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +9 -1
  740. data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +3 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -3
  742. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +1 -1
  743. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +7 -20
  744. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +2 -2
  745. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +1 -1
  746. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +1 -1
  747. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +5 -5
  748. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +108 -2
  749. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +15 -5
  750. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
  751. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +8 -4
  752. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +147 -64
  753. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -2
  754. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +3 -3
  755. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +15 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +2 -2
  757. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +9 -2
  758. data/src/cxx_supportlib/vendor-modified/boost/intrusive_ptr.hpp +1 -1
  759. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +84 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +0 -2
  761. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +3 -2
  762. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +8 -10
  763. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +2 -1
  764. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +7 -6
  765. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +7 -4
  766. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +6 -2
  767. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +7 -7
  768. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
  769. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +36 -92
  770. data/src/cxx_supportlib/vendor-modified/boost/make_shared.hpp +1 -2
  771. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +2 -1
  772. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +57 -3
  773. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +1 -1
  774. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +12 -1
  775. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +40 -9
  776. data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +6 -0
  777. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +253 -0
  778. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +563 -4
  779. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +324 -1071
  780. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +10 -10
  781. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +111 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +12 -11
  783. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/is_sorted.hpp +55 -0
  784. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +59 -143
  785. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +6 -6
  786. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +334 -0
  787. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +207 -0
  788. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +2 -1
  789. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +86 -0
  790. data/src/cxx_supportlib/vendor-modified/boost/move/algo/unique.hpp +55 -0
  791. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +1 -9
  792. data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +3 -4
  793. data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +25 -0
  794. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +59 -0
  795. data/src/cxx_supportlib/vendor-modified/boost/{intrusive → move}/detail/pointer_element.hpp +12 -12
  796. data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +45 -0
  797. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +19 -5
  798. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
  799. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +1 -1
  800. data/src/cxx_supportlib/vendor-modified/boost/mpl/get_tag.hpp +26 -0
  801. data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +85 -55
  802. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
  803. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/conversion_traits.hpp +0 -7
  804. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +4 -13
  805. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +26 -7
  806. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +98 -0
  807. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -10
  808. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +17 -21
  809. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +25 -6
  810. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +15 -15
  811. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
  812. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +499 -0
  813. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +126 -21
  814. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +10 -9
  816. data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +1 -1
  817. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +6 -1
  818. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +1 -1
  819. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +8 -1
  820. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +3 -1
  821. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +1 -0
  822. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +53 -0
  823. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +2 -2
  825. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -3
  826. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +80 -0
  827. data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +87 -0
  828. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +9 -2
  829. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +43 -0
  830. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +58 -0
  831. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +4 -4
  832. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +63 -0
  833. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +63 -0
  834. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +9 -3
  835. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +7 -2
  836. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +13 -5
  837. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +47 -0
  838. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +11 -4
  839. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +47 -0
  840. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +60 -0
  841. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  842. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -9
  843. data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +27 -27
  844. data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +3 -0
  845. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +2 -2
  846. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +0 -11
  847. data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +12 -0
  848. data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -1
  849. data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +17 -17
  850. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -1
  851. data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +6 -2
  852. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +6 -4
  853. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +1 -0
  854. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +1 -1
  855. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +2 -2
  856. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +2 -2
  857. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +56 -11
  858. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +10 -10
  859. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
  860. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +6 -1
  861. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +37 -13
  862. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +4 -4
  863. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +9 -6
  864. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -1
  865. data/src/cxx_supportlib/vendor-modified/boost/scoped_array.hpp +1 -2
  866. data/src/cxx_supportlib/vendor-modified/boost/scoped_ptr.hpp +1 -2
  867. data/src/cxx_supportlib/vendor-modified/boost/shared_array.hpp +1 -1
  868. data/src/cxx_supportlib/vendor-modified/boost/shared_ptr.hpp +1 -1
  869. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +333 -656
  870. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +4 -2
  871. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +1 -1
  872. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +148 -0
  873. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +91 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +6 -6
  875. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +15 -3
  876. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
  877. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
  878. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +3 -2
  879. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
  880. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
  881. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
  882. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +7 -0
  883. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
  884. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
  885. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
  886. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
  887. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
  888. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +1 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
  890. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
  891. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +3 -2
  892. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
  893. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
  894. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +29 -0
  895. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +21 -3
  896. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +1 -1
  897. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +6 -6
  898. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +26 -26
  899. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -16
  900. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -2
  901. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +19 -19
  902. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +11 -12
  903. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +15 -16
  904. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +22 -22
  905. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +135 -90
  906. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +23 -23
  907. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +140 -111
  908. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +297 -49
  909. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
  910. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +30 -30
  911. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +30 -30
  912. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +4 -2
  913. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +5 -7
  914. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +19 -19
  915. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +5 -15
  916. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +118 -183
  917. data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_redef_macros.hpp +0 -0
  918. data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_undef_macros.hpp +0 -0
  919. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +62 -11
  920. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/log.hpp +15 -0
  921. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +0 -2
  922. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform.hpp +2 -0
  923. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +478 -0
  924. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +51 -85
  925. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +11 -3
  926. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +10 -4
  927. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +1 -0
  928. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +10 -0
  929. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +15 -4
  930. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +9 -0
  931. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +320 -92
  932. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +10 -0
  933. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +187 -112
  934. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +137 -164
  935. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +67 -37
  936. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +42 -0
  937. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +15 -9
  938. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +65 -33
  939. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +84 -158
  940. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +143 -35
  941. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_heap_alloc.hpp +32 -2
  942. data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +8 -1
  943. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_only.hpp +1 -1
  944. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +579 -589
  945. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -1
  946. data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +5 -2
  947. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +7 -9
  948. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +8 -8
  949. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
  950. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +6 -2
  951. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +5 -8
  952. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +6 -0
  953. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +6 -0
  954. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +6 -0
  955. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -0
  956. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +7 -0
  957. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +6 -0
  958. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +6 -0
  959. data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +7 -0
  960. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +8 -0
  961. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +6 -0
  962. data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +6 -0
  963. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +12 -1
  964. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +37 -0
  965. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +71 -14
  966. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +1 -1
  967. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +4 -1
  968. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +370 -102
  969. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +94 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +1177 -572
  971. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +2 -2
  972. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +24 -0
  973. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +25 -0
  974. data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +8 -0
  975. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +3 -0
  976. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +3 -0
  977. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +3 -0
  978. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +3 -0
  979. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +3 -0
  980. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +93 -0
  981. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +95 -2
  982. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +3 -0
  983. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +11 -2
  984. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +90 -0
  985. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +2 -1
  986. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +6 -0
  987. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +2 -1
  988. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +10 -2
  989. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +90 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +1 -0
  991. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +12 -2
  992. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +20 -2
  993. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +16 -2
  994. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +10 -2
  995. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +29 -0
  996. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +29 -0
  997. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +29 -0
  998. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_list_constructible.hpp +48 -0
  999. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +14 -3
  1000. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +14 -4
  1001. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +67 -0
  1002. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +6 -0
  1003. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +6 -0
  1004. data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +35 -0
  1005. data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +6 -0
  1006. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +6 -0
  1007. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +7 -0
  1008. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +6 -0
  1009. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +5 -0
  1010. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv_ref.hpp +30 -0
  1011. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +6 -0
  1012. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +7 -0
  1013. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -0
  1014. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +5 -0
  1015. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +9 -0
  1016. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -3
  1017. data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +34 -0
  1018. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -85
  1019. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +1 -2
  1020. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +6 -0
  1021. data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +2 -0
  1022. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +24 -14
  1023. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +18 -12
  1024. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4018 -4052
  1025. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +57 -97
  1026. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +56 -95
  1027. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +2150 -1777
  1028. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -38
  1029. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1630 -1420
  1030. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -37
  1031. data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +6 -3
  1032. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +55 -0
  1033. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +14 -17
  1034. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +44 -20
  1035. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +30 -30
  1036. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1037. data/src/cxx_supportlib/vendor-modified/boost/weak_ptr.hpp +1 -1
  1038. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  1039. data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
  1040. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +8 -1
  1041. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +7 -1
  1042. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
  1043. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +4 -4
  1044. metadata +201 -47
  1045. data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +0 -96
  1046. data/src/cxx_supportlib/MessageClient.h +0 -309
  1047. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +0 -40
  1048. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +0 -80
  1049. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +0 -40
  1050. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +0 -40
  1051. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +0 -230
  1052. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +0 -156
  1053. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +0 -157
  1054. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +0 -42
  1055. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +0 -42
  1056. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +0 -436
  1057. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +0 -176
  1058. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +0 -396
  1059. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +0 -526
  1060. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +0 -573
  1061. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +0 -503
  1062. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +0 -186
  1063. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +0 -42
  1064. data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +0 -33
  1065. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +0 -47
  1066. data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +0 -20
  1067. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex_assert.hpp +0 -724
  1068. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +0 -149
  1069. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +0 -155
  1070. data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +0 -43
@@ -0,0 +1,176 @@
1
+ //
2
+ // impl/io_context.ipp
3
+ // ~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2018 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_IMPL_IO_CONTEXT_IPP
12
+ #define BOOST_ASIO_IMPL_IO_CONTEXT_IPP
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/io_context.hpp>
20
+ #include <boost/asio/detail/concurrency_hint.hpp>
21
+ #include <boost/asio/detail/limits.hpp>
22
+ #include <boost/asio/detail/scoped_ptr.hpp>
23
+ #include <boost/asio/detail/service_registry.hpp>
24
+ #include <boost/asio/detail/throw_error.hpp>
25
+
26
+ #if defined(BOOST_ASIO_HAS_IOCP)
27
+ # include <boost/asio/detail/win_iocp_io_context.hpp>
28
+ #else
29
+ # include <boost/asio/detail/scheduler.hpp>
30
+ #endif
31
+
32
+ #include <boost/asio/detail/push_options.hpp>
33
+
34
+ namespace boost {
35
+ namespace asio {
36
+
37
+ io_context::io_context()
38
+ : impl_(add_impl(new impl_type(*this, BOOST_ASIO_CONCURRENCY_HINT_DEFAULT)))
39
+ {
40
+ }
41
+
42
+ io_context::io_context(int concurrency_hint)
43
+ : impl_(add_impl(new impl_type(*this, concurrency_hint == 1
44
+ ? BOOST_ASIO_CONCURRENCY_HINT_1 : concurrency_hint)))
45
+ {
46
+ }
47
+
48
+ io_context::impl_type& io_context::add_impl(io_context::impl_type* impl)
49
+ {
50
+ boost::asio::detail::scoped_ptr<impl_type> scoped_impl(impl);
51
+ boost::asio::add_service<impl_type>(*this, scoped_impl.get());
52
+ return *scoped_impl.release();
53
+ }
54
+
55
+ io_context::~io_context()
56
+ {
57
+ }
58
+
59
+ io_context::count_type io_context::run()
60
+ {
61
+ boost::system::error_code ec;
62
+ count_type s = impl_.run(ec);
63
+ boost::asio::detail::throw_error(ec);
64
+ return s;
65
+ }
66
+
67
+ #if !defined(BOOST_ASIO_NO_DEPRECATED)
68
+ io_context::count_type io_context::run(boost::system::error_code& ec)
69
+ {
70
+ return impl_.run(ec);
71
+ }
72
+ #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
73
+
74
+ io_context::count_type io_context::run_one()
75
+ {
76
+ boost::system::error_code ec;
77
+ count_type s = impl_.run_one(ec);
78
+ boost::asio::detail::throw_error(ec);
79
+ return s;
80
+ }
81
+
82
+ #if !defined(BOOST_ASIO_NO_DEPRECATED)
83
+ io_context::count_type io_context::run_one(boost::system::error_code& ec)
84
+ {
85
+ return impl_.run_one(ec);
86
+ }
87
+ #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
88
+
89
+ io_context::count_type io_context::poll()
90
+ {
91
+ boost::system::error_code ec;
92
+ count_type s = impl_.poll(ec);
93
+ boost::asio::detail::throw_error(ec);
94
+ return s;
95
+ }
96
+
97
+ #if !defined(BOOST_ASIO_NO_DEPRECATED)
98
+ io_context::count_type io_context::poll(boost::system::error_code& ec)
99
+ {
100
+ return impl_.poll(ec);
101
+ }
102
+ #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
103
+
104
+ io_context::count_type io_context::poll_one()
105
+ {
106
+ boost::system::error_code ec;
107
+ count_type s = impl_.poll_one(ec);
108
+ boost::asio::detail::throw_error(ec);
109
+ return s;
110
+ }
111
+
112
+ #if !defined(BOOST_ASIO_NO_DEPRECATED)
113
+ io_context::count_type io_context::poll_one(boost::system::error_code& ec)
114
+ {
115
+ return impl_.poll_one(ec);
116
+ }
117
+ #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
118
+
119
+ void io_context::stop()
120
+ {
121
+ impl_.stop();
122
+ }
123
+
124
+ bool io_context::stopped() const
125
+ {
126
+ return impl_.stopped();
127
+ }
128
+
129
+ void io_context::restart()
130
+ {
131
+ impl_.restart();
132
+ }
133
+
134
+ io_context::service::service(boost::asio::io_context& owner)
135
+ : execution_context::service(owner)
136
+ {
137
+ }
138
+
139
+ io_context::service::~service()
140
+ {
141
+ }
142
+
143
+ void io_context::service::shutdown()
144
+ {
145
+ #if !defined(BOOST_ASIO_NO_DEPRECATED)
146
+ shutdown_service();
147
+ #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
148
+ }
149
+
150
+ #if !defined(BOOST_ASIO_NO_DEPRECATED)
151
+ void io_context::service::shutdown_service()
152
+ {
153
+ }
154
+ #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
155
+
156
+ void io_context::service::notify_fork(io_context::fork_event ev)
157
+ {
158
+ #if !defined(BOOST_ASIO_NO_DEPRECATED)
159
+ fork_service(ev);
160
+ #else // !defined(BOOST_ASIO_NO_DEPRECATED)
161
+ (void)ev;
162
+ #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
163
+ }
164
+
165
+ #if !defined(BOOST_ASIO_NO_DEPRECATED)
166
+ void io_context::service::fork_service(io_context::fork_event)
167
+ {
168
+ }
169
+ #endif // !defined(BOOST_ASIO_NO_DEPRECATED)
170
+
171
+ } // namespace asio
172
+ } // namespace boost
173
+
174
+ #include <boost/asio/detail/pop_options.hpp>
175
+
176
+ #endif // BOOST_ASIO_IMPL_IO_CONTEXT_IPP
@@ -0,0 +1,79 @@
1
+ //
2
+ // impl/post.hpp
3
+ // ~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2018 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_IMPL_POST_HPP
12
+ #define BOOST_ASIO_IMPL_POST_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/associated_allocator.hpp>
20
+ #include <boost/asio/associated_executor.hpp>
21
+ #include <boost/asio/detail/work_dispatcher.hpp>
22
+
23
+ #include <boost/asio/detail/push_options.hpp>
24
+
25
+ namespace boost {
26
+ namespace asio {
27
+
28
+ template <typename CompletionToken>
29
+ BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, void()) post(
30
+ BOOST_ASIO_MOVE_ARG(CompletionToken) token)
31
+ {
32
+ typedef BOOST_ASIO_HANDLER_TYPE(CompletionToken, void()) handler;
33
+
34
+ async_completion<CompletionToken, void()> init(token);
35
+
36
+ typename associated_executor<handler>::type ex(
37
+ (get_associated_executor)(init.completion_handler));
38
+
39
+ typename associated_allocator<handler>::type alloc(
40
+ (get_associated_allocator)(init.completion_handler));
41
+
42
+ ex.post(BOOST_ASIO_MOVE_CAST(handler)(init.completion_handler), alloc);
43
+
44
+ return init.result.get();
45
+ }
46
+
47
+ template <typename Executor, typename CompletionToken>
48
+ BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, void()) post(
49
+ const Executor& ex, BOOST_ASIO_MOVE_ARG(CompletionToken) token,
50
+ typename enable_if<is_executor<Executor>::value>::type*)
51
+ {
52
+ typedef BOOST_ASIO_HANDLER_TYPE(CompletionToken, void()) handler;
53
+
54
+ async_completion<CompletionToken, void()> init(token);
55
+
56
+ typename associated_allocator<handler>::type alloc(
57
+ (get_associated_allocator)(init.completion_handler));
58
+
59
+ ex.post(detail::work_dispatcher<handler>(init.completion_handler), alloc);
60
+
61
+ return init.result.get();
62
+ }
63
+
64
+ template <typename ExecutionContext, typename CompletionToken>
65
+ inline BOOST_ASIO_INITFN_RESULT_TYPE(CompletionToken, void()) post(
66
+ ExecutionContext& ctx, BOOST_ASIO_MOVE_ARG(CompletionToken) token,
67
+ typename enable_if<is_convertible<
68
+ ExecutionContext&, execution_context&>::value>::type*)
69
+ {
70
+ return (post)(ctx.get_executor(),
71
+ BOOST_ASIO_MOVE_CAST(CompletionToken)(token));
72
+ }
73
+
74
+ } // namespace asio
75
+ } // namespace boost
76
+
77
+ #include <boost/asio/detail/pop_options.hpp>
78
+
79
+ #endif // BOOST_ASIO_IMPL_POST_HPP
@@ -2,7 +2,7 @@
2
2
  // impl/read.hpp
3
3
  // ~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -16,6 +16,8 @@
16
16
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
17
 
18
18
  #include <algorithm>
19
+ #include <boost/asio/associated_allocator.hpp>
20
+ #include <boost/asio/associated_executor.hpp>
19
21
  #include <boost/asio/buffer.hpp>
20
22
  #include <boost/asio/completion_condition.hpp>
21
23
  #include <boost/asio/detail/array_fwd.hpp>
@@ -35,30 +37,46 @@
35
37
  namespace boost {
36
38
  namespace asio {
37
39
 
40
+ namespace detail
41
+ {
42
+ template <typename SyncReadStream, typename MutableBufferSequence,
43
+ typename MutableBufferIterator, typename CompletionCondition>
44
+ std::size_t read_buffer_sequence(SyncReadStream& s,
45
+ const MutableBufferSequence& buffers, const MutableBufferIterator&,
46
+ CompletionCondition completion_condition, boost::system::error_code& ec)
47
+ {
48
+ ec = boost::system::error_code();
49
+ boost::asio::detail::consuming_buffers<mutable_buffer,
50
+ MutableBufferSequence, MutableBufferIterator> tmp(buffers);
51
+ while (!tmp.empty())
52
+ {
53
+ if (std::size_t max_size = detail::adapt_completion_condition_result(
54
+ completion_condition(ec, tmp.total_consumed())))
55
+ tmp.consume(s.read_some(tmp.prepare(max_size), ec));
56
+ else
57
+ break;
58
+ }
59
+ return tmp.total_consumed();;
60
+ }
61
+ } // namespace detail
62
+
38
63
  template <typename SyncReadStream, typename MutableBufferSequence,
39
64
  typename CompletionCondition>
40
65
  std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
41
- CompletionCondition completion_condition, boost::system::error_code& ec)
66
+ CompletionCondition completion_condition, boost::system::error_code& ec,
67
+ typename enable_if<
68
+ is_mutable_buffer_sequence<MutableBufferSequence>::value
69
+ >::type*)
42
70
  {
43
- ec = boost::system::error_code();
44
- boost::asio::detail::consuming_buffers<
45
- mutable_buffer, MutableBufferSequence> tmp(buffers);
46
- std::size_t total_transferred = 0;
47
- tmp.prepare(detail::adapt_completion_condition_result(
48
- completion_condition(ec, total_transferred)));
49
- while (tmp.begin() != tmp.end())
50
- {
51
- std::size_t bytes_transferred = s.read_some(tmp, ec);
52
- tmp.consume(bytes_transferred);
53
- total_transferred += bytes_transferred;
54
- tmp.prepare(detail::adapt_completion_condition_result(
55
- completion_condition(ec, total_transferred)));
56
- }
57
- return total_transferred;
71
+ return detail::read_buffer_sequence(s, buffers,
72
+ boost::asio::buffer_sequence_begin(buffers), completion_condition, ec);
58
73
  }
59
74
 
60
75
  template <typename SyncReadStream, typename MutableBufferSequence>
61
- inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers)
76
+ inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
77
+ typename enable_if<
78
+ is_mutable_buffer_sequence<MutableBufferSequence>::value
79
+ >::type*)
62
80
  {
63
81
  boost::system::error_code ec;
64
82
  std::size_t bytes_transferred = read(s, buffers, transfer_all(), ec);
@@ -68,7 +86,10 @@ inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers)
68
86
 
69
87
  template <typename SyncReadStream, typename MutableBufferSequence>
70
88
  inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
71
- boost::system::error_code& ec)
89
+ boost::system::error_code& ec,
90
+ typename enable_if<
91
+ is_mutable_buffer_sequence<MutableBufferSequence>::value
92
+ >::type*)
72
93
  {
73
94
  return read(s, buffers, transfer_all(), ec);
74
95
  }
@@ -76,7 +97,10 @@ inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
76
97
  template <typename SyncReadStream, typename MutableBufferSequence,
77
98
  typename CompletionCondition>
78
99
  inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
79
- CompletionCondition completion_condition)
100
+ CompletionCondition completion_condition,
101
+ typename enable_if<
102
+ is_mutable_buffer_sequence<MutableBufferSequence>::value
103
+ >::type*)
80
104
  {
81
105
  boost::system::error_code ec;
82
106
  std::size_t bytes_transferred = read(s, buffers, completion_condition, ec);
@@ -84,19 +108,25 @@ inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
84
108
  return bytes_transferred;
85
109
  }
86
110
 
87
- #if !defined(BOOST_ASIO_NO_IOSTREAM)
88
-
89
- template <typename SyncReadStream, typename Allocator,
111
+ template <typename SyncReadStream, typename DynamicBuffer,
90
112
  typename CompletionCondition>
91
113
  std::size_t read(SyncReadStream& s,
92
- boost::asio::basic_streambuf<Allocator>& b,
93
- CompletionCondition completion_condition, boost::system::error_code& ec)
114
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
115
+ CompletionCondition completion_condition, boost::system::error_code& ec,
116
+ typename enable_if<
117
+ is_dynamic_buffer<typename decay<DynamicBuffer>::type>::value
118
+ >::type*)
94
119
  {
120
+ typename decay<DynamicBuffer>::type b(
121
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers));
122
+
95
123
  ec = boost::system::error_code();
96
124
  std::size_t total_transferred = 0;
97
125
  std::size_t max_size = detail::adapt_completion_condition_result(
98
126
  completion_condition(ec, total_transferred));
99
- std::size_t bytes_available = read_size_helper(b, max_size);
127
+ std::size_t bytes_available = std::min<std::size_t>(
128
+ std::max<std::size_t>(512, b.capacity() - b.size()),
129
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
100
130
  while (bytes_available > 0)
101
131
  {
102
132
  std::size_t bytes_transferred = s.read_some(b.prepare(bytes_available), ec);
@@ -104,27 +134,81 @@ std::size_t read(SyncReadStream& s,
104
134
  total_transferred += bytes_transferred;
105
135
  max_size = detail::adapt_completion_condition_result(
106
136
  completion_condition(ec, total_transferred));
107
- bytes_available = read_size_helper(b, max_size);
137
+ bytes_available = std::min<std::size_t>(
138
+ std::max<std::size_t>(512, b.capacity() - b.size()),
139
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
108
140
  }
109
141
  return total_transferred;
110
142
  }
111
143
 
112
- template <typename SyncReadStream, typename Allocator>
144
+ template <typename SyncReadStream, typename DynamicBuffer>
113
145
  inline std::size_t read(SyncReadStream& s,
114
- boost::asio::basic_streambuf<Allocator>& b)
146
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
147
+ typename enable_if<
148
+ is_dynamic_buffer<typename decay<DynamicBuffer>::type>::value
149
+ >::type*)
115
150
  {
116
151
  boost::system::error_code ec;
117
- std::size_t bytes_transferred = read(s, b, transfer_all(), ec);
152
+ std::size_t bytes_transferred = read(s,
153
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers), transfer_all(), ec);
118
154
  boost::asio::detail::throw_error(ec, "read");
119
155
  return bytes_transferred;
120
156
  }
121
157
 
158
+ template <typename SyncReadStream, typename DynamicBuffer>
159
+ inline std::size_t read(SyncReadStream& s,
160
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
161
+ boost::system::error_code& ec,
162
+ typename enable_if<
163
+ is_dynamic_buffer<typename decay<DynamicBuffer>::type>::value
164
+ >::type*)
165
+ {
166
+ return read(s, BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
167
+ transfer_all(), ec);
168
+ }
169
+
170
+ template <typename SyncReadStream, typename DynamicBuffer,
171
+ typename CompletionCondition>
172
+ inline std::size_t read(SyncReadStream& s,
173
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
174
+ CompletionCondition completion_condition,
175
+ typename enable_if<
176
+ is_dynamic_buffer<typename decay<DynamicBuffer>::type>::value
177
+ >::type*)
178
+ {
179
+ boost::system::error_code ec;
180
+ std::size_t bytes_transferred = read(s,
181
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
182
+ completion_condition, ec);
183
+ boost::asio::detail::throw_error(ec, "read");
184
+ return bytes_transferred;
185
+ }
186
+
187
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
188
+ #if !defined(BOOST_ASIO_NO_IOSTREAM)
189
+
190
+ template <typename SyncReadStream, typename Allocator,
191
+ typename CompletionCondition>
192
+ inline std::size_t read(SyncReadStream& s,
193
+ boost::asio::basic_streambuf<Allocator>& b,
194
+ CompletionCondition completion_condition, boost::system::error_code& ec)
195
+ {
196
+ return read(s, basic_streambuf_ref<Allocator>(b), completion_condition, ec);
197
+ }
198
+
199
+ template <typename SyncReadStream, typename Allocator>
200
+ inline std::size_t read(SyncReadStream& s,
201
+ boost::asio::basic_streambuf<Allocator>& b)
202
+ {
203
+ return read(s, basic_streambuf_ref<Allocator>(b));
204
+ }
205
+
122
206
  template <typename SyncReadStream, typename Allocator>
123
207
  inline std::size_t read(SyncReadStream& s,
124
208
  boost::asio::basic_streambuf<Allocator>& b,
125
209
  boost::system::error_code& ec)
126
210
  {
127
- return read(s, b, transfer_all(), ec);
211
+ return read(s, basic_streambuf_ref<Allocator>(b), ec);
128
212
  }
129
213
 
130
214
  template <typename SyncReadStream, typename Allocator,
@@ -133,18 +217,17 @@ inline std::size_t read(SyncReadStream& s,
133
217
  boost::asio::basic_streambuf<Allocator>& b,
134
218
  CompletionCondition completion_condition)
135
219
  {
136
- boost::system::error_code ec;
137
- std::size_t bytes_transferred = read(s, b, completion_condition, ec);
138
- boost::asio::detail::throw_error(ec, "read");
139
- return bytes_transferred;
220
+ return read(s, basic_streambuf_ref<Allocator>(b), completion_condition);
140
221
  }
141
222
 
142
223
  #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
224
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
143
225
 
144
226
  namespace detail
145
227
  {
146
228
  template <typename AsyncReadStream, typename MutableBufferSequence,
147
- typename CompletionCondition, typename ReadHandler>
229
+ typename MutableBufferIterator, typename CompletionCondition,
230
+ typename ReadHandler>
148
231
  class read_op
149
232
  : detail::base_from_completion_cond<CompletionCondition>
150
233
  {
@@ -156,7 +239,6 @@ namespace detail
156
239
  stream_(stream),
157
240
  buffers_(buffers),
158
241
  start_(0),
159
- total_transferred_(0),
160
242
  handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler))
161
243
  {
162
244
  }
@@ -167,7 +249,6 @@ namespace detail
167
249
  stream_(other.stream_),
168
250
  buffers_(other.buffers_),
169
251
  start_(other.start_),
170
- total_transferred_(other.total_transferred_),
171
252
  handler_(other.handler_)
172
253
  {
173
254
  }
@@ -177,7 +258,6 @@ namespace detail
177
258
  stream_(other.stream_),
178
259
  buffers_(other.buffers_),
179
260
  start_(other.start_),
180
- total_transferred_(other.total_transferred_),
181
261
  handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(other.handler_))
182
262
  {
183
263
  }
@@ -186,285 +266,39 @@ namespace detail
186
266
  void operator()(const boost::system::error_code& ec,
187
267
  std::size_t bytes_transferred, int start = 0)
188
268
  {
269
+ std::size_t max_size;
189
270
  switch (start_ = start)
190
271
  {
191
272
  case 1:
192
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
193
- for (;;)
273
+ max_size = this->check_for_completion(ec, buffers_.total_consumed());
274
+ do
194
275
  {
195
- stream_.async_read_some(buffers_,
276
+ stream_.async_read_some(buffers_.prepare(max_size),
196
277
  BOOST_ASIO_MOVE_CAST(read_op)(*this));
197
278
  return; default:
198
- total_transferred_ += bytes_transferred;
199
279
  buffers_.consume(bytes_transferred);
200
- buffers_.prepare(this->check_for_completion(ec, total_transferred_));
201
- if ((!ec && bytes_transferred == 0)
202
- || buffers_.begin() == buffers_.end())
203
- break;
204
- }
205
-
206
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
207
- }
208
- }
209
-
210
- //private:
211
- AsyncReadStream& stream_;
212
- boost::asio::detail::consuming_buffers<
213
- mutable_buffer, MutableBufferSequence> buffers_;
214
- int start_;
215
- std::size_t total_transferred_;
216
- ReadHandler handler_;
217
- };
218
-
219
- template <typename AsyncReadStream,
220
- typename CompletionCondition, typename ReadHandler>
221
- class read_op<AsyncReadStream, boost::asio::mutable_buffers_1,
222
- CompletionCondition, ReadHandler>
223
- : detail::base_from_completion_cond<CompletionCondition>
224
- {
225
- public:
226
- read_op(AsyncReadStream& stream,
227
- const boost::asio::mutable_buffers_1& buffers,
228
- CompletionCondition completion_condition, ReadHandler& handler)
229
- : detail::base_from_completion_cond<
230
- CompletionCondition>(completion_condition),
231
- stream_(stream),
232
- buffer_(buffers),
233
- start_(0),
234
- total_transferred_(0),
235
- handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler))
236
- {
237
- }
238
-
239
- #if defined(BOOST_ASIO_HAS_MOVE)
240
- read_op(const read_op& other)
241
- : detail::base_from_completion_cond<CompletionCondition>(other),
242
- stream_(other.stream_),
243
- buffer_(other.buffer_),
244
- start_(other.start_),
245
- total_transferred_(other.total_transferred_),
246
- handler_(other.handler_)
247
- {
248
- }
249
-
250
- read_op(read_op&& other)
251
- : detail::base_from_completion_cond<CompletionCondition>(other),
252
- stream_(other.stream_),
253
- buffer_(other.buffer_),
254
- start_(other.start_),
255
- total_transferred_(other.total_transferred_),
256
- handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(other.handler_))
257
- {
258
- }
259
- #endif // defined(BOOST_ASIO_HAS_MOVE)
260
-
261
- void operator()(const boost::system::error_code& ec,
262
- std::size_t bytes_transferred, int start = 0)
263
- {
264
- std::size_t n = 0;
265
- switch (start_ = start)
266
- {
267
- case 1:
268
- n = this->check_for_completion(ec, total_transferred_);
269
- for (;;)
270
- {
271
- stream_.async_read_some(
272
- boost::asio::buffer(buffer_ + total_transferred_, n),
273
- BOOST_ASIO_MOVE_CAST(read_op)(*this));
274
- return; default:
275
- total_transferred_ += bytes_transferred;
276
- if ((!ec && bytes_transferred == 0)
277
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
278
- || total_transferred_ == boost::asio::buffer_size(buffer_))
279
- break;
280
- }
281
-
282
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
283
- }
284
- }
285
-
286
- //private:
287
- AsyncReadStream& stream_;
288
- boost::asio::mutable_buffer buffer_;
289
- int start_;
290
- std::size_t total_transferred_;
291
- ReadHandler handler_;
292
- };
293
-
294
- template <typename AsyncReadStream, typename Elem,
295
- typename CompletionCondition, typename ReadHandler>
296
- class read_op<AsyncReadStream, boost::array<Elem, 2>,
297
- CompletionCondition, ReadHandler>
298
- : detail::base_from_completion_cond<CompletionCondition>
299
- {
300
- public:
301
- read_op(AsyncReadStream& stream, const boost::array<Elem, 2>& buffers,
302
- CompletionCondition completion_condition, ReadHandler& handler)
303
- : detail::base_from_completion_cond<
304
- CompletionCondition>(completion_condition),
305
- stream_(stream),
306
- buffers_(buffers),
307
- start_(0),
308
- total_transferred_(0),
309
- handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler))
310
- {
311
- }
312
-
313
- #if defined(BOOST_ASIO_HAS_MOVE)
314
- read_op(const read_op& other)
315
- : detail::base_from_completion_cond<CompletionCondition>(other),
316
- stream_(other.stream_),
317
- buffers_(other.buffers_),
318
- start_(other.start_),
319
- total_transferred_(other.total_transferred_),
320
- handler_(other.handler_)
321
- {
322
- }
323
-
324
- read_op(read_op&& other)
325
- : detail::base_from_completion_cond<CompletionCondition>(other),
326
- stream_(other.stream_),
327
- buffers_(other.buffers_),
328
- start_(other.start_),
329
- total_transferred_(other.total_transferred_),
330
- handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(other.handler_))
331
- {
332
- }
333
- #endif // defined(BOOST_ASIO_HAS_MOVE)
334
-
335
- void operator()(const boost::system::error_code& ec,
336
- std::size_t bytes_transferred, int start = 0)
337
- {
338
- typename boost::asio::detail::dependent_type<Elem,
339
- boost::array<boost::asio::mutable_buffer, 2> >::type bufs = {{
340
- boost::asio::mutable_buffer(buffers_[0]),
341
- boost::asio::mutable_buffer(buffers_[1]) }};
342
- std::size_t buffer_size0 = boost::asio::buffer_size(bufs[0]);
343
- std::size_t buffer_size1 = boost::asio::buffer_size(bufs[1]);
344
- std::size_t n = 0;
345
- switch (start_ = start)
346
- {
347
- case 1:
348
- n = this->check_for_completion(ec, total_transferred_);
349
- for (;;)
350
- {
351
- bufs[0] = boost::asio::buffer(bufs[0] + total_transferred_, n);
352
- bufs[1] = boost::asio::buffer(
353
- bufs[1] + (total_transferred_ < buffer_size0
354
- ? 0 : total_transferred_ - buffer_size0),
355
- n - boost::asio::buffer_size(bufs[0]));
356
- stream_.async_read_some(bufs, BOOST_ASIO_MOVE_CAST(read_op)(*this));
357
- return; default:
358
- total_transferred_ += bytes_transferred;
359
- if ((!ec && bytes_transferred == 0)
360
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
361
- || total_transferred_ == buffer_size0 + buffer_size1)
362
- break;
363
- }
364
-
365
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
366
- }
367
- }
368
-
369
- //private:
370
- AsyncReadStream& stream_;
371
- boost::array<Elem, 2> buffers_;
372
- int start_;
373
- std::size_t total_transferred_;
374
- ReadHandler handler_;
375
- };
376
-
377
- #if defined(BOOST_ASIO_HAS_STD_ARRAY)
378
-
379
- template <typename AsyncReadStream, typename Elem,
380
- typename CompletionCondition, typename ReadHandler>
381
- class read_op<AsyncReadStream, std::array<Elem, 2>,
382
- CompletionCondition, ReadHandler>
383
- : detail::base_from_completion_cond<CompletionCondition>
384
- {
385
- public:
386
- read_op(AsyncReadStream& stream, const std::array<Elem, 2>& buffers,
387
- CompletionCondition completion_condition, ReadHandler& handler)
388
- : detail::base_from_completion_cond<
389
- CompletionCondition>(completion_condition),
390
- stream_(stream),
391
- buffers_(buffers),
392
- start_(0),
393
- total_transferred_(0),
394
- handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler))
395
- {
396
- }
397
-
398
- #if defined(BOOST_ASIO_HAS_MOVE)
399
- read_op(const read_op& other)
400
- : detail::base_from_completion_cond<CompletionCondition>(other),
401
- stream_(other.stream_),
402
- buffers_(other.buffers_),
403
- start_(other.start_),
404
- total_transferred_(other.total_transferred_),
405
- handler_(other.handler_)
406
- {
407
- }
408
-
409
- read_op(read_op&& other)
410
- : detail::base_from_completion_cond<CompletionCondition>(other),
411
- stream_(other.stream_),
412
- buffers_(other.buffers_),
413
- start_(other.start_),
414
- total_transferred_(other.total_transferred_),
415
- handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(other.handler_))
416
- {
417
- }
418
- #endif // defined(BOOST_ASIO_HAS_MOVE)
419
-
420
- void operator()(const boost::system::error_code& ec,
421
- std::size_t bytes_transferred, int start = 0)
422
- {
423
- typename boost::asio::detail::dependent_type<Elem,
424
- std::array<boost::asio::mutable_buffer, 2> >::type bufs = {{
425
- boost::asio::mutable_buffer(buffers_[0]),
426
- boost::asio::mutable_buffer(buffers_[1]) }};
427
- std::size_t buffer_size0 = boost::asio::buffer_size(bufs[0]);
428
- std::size_t buffer_size1 = boost::asio::buffer_size(bufs[1]);
429
- std::size_t n = 0;
430
- switch (start_ = start)
431
- {
432
- case 1:
433
- n = this->check_for_completion(ec, total_transferred_);
434
- for (;;)
435
- {
436
- bufs[0] = boost::asio::buffer(bufs[0] + total_transferred_, n);
437
- bufs[1] = boost::asio::buffer(
438
- bufs[1] + (total_transferred_ < buffer_size0
439
- ? 0 : total_transferred_ - buffer_size0),
440
- n - boost::asio::buffer_size(bufs[0]));
441
- stream_.async_read_some(bufs, BOOST_ASIO_MOVE_CAST(read_op)(*this));
442
- return; default:
443
- total_transferred_ += bytes_transferred;
444
- if ((!ec && bytes_transferred == 0)
445
- || (n = this->check_for_completion(ec, total_transferred_)) == 0
446
- || total_transferred_ == buffer_size0 + buffer_size1)
280
+ if ((!ec && bytes_transferred == 0) || buffers_.empty())
447
281
  break;
448
- }
282
+ max_size = this->check_for_completion(ec, buffers_.total_consumed());
283
+ } while (max_size > 0);
449
284
 
450
- handler_(ec, static_cast<const std::size_t&>(total_transferred_));
285
+ handler_(ec, buffers_.total_consumed());
451
286
  }
452
287
  }
453
288
 
454
289
  //private:
455
290
  AsyncReadStream& stream_;
456
- std::array<Elem, 2> buffers_;
291
+ boost::asio::detail::consuming_buffers<mutable_buffer,
292
+ MutableBufferSequence, MutableBufferIterator> buffers_;
457
293
  int start_;
458
- std::size_t total_transferred_;
459
294
  ReadHandler handler_;
460
295
  };
461
296
 
462
- #endif // defined(BOOST_ASIO_HAS_STD_ARRAY)
463
-
464
297
  template <typename AsyncReadStream, typename MutableBufferSequence,
465
- typename CompletionCondition, typename ReadHandler>
298
+ typename MutableBufferIterator, typename CompletionCondition,
299
+ typename ReadHandler>
466
300
  inline void* asio_handler_allocate(std::size_t size,
467
- read_op<AsyncReadStream, MutableBufferSequence,
301
+ read_op<AsyncReadStream, MutableBufferSequence, MutableBufferIterator,
468
302
  CompletionCondition, ReadHandler>* this_handler)
469
303
  {
470
304
  return boost_asio_handler_alloc_helpers::allocate(
@@ -472,9 +306,10 @@ namespace detail
472
306
  }
473
307
 
474
308
  template <typename AsyncReadStream, typename MutableBufferSequence,
475
- typename CompletionCondition, typename ReadHandler>
309
+ typename MutableBufferIterator, typename CompletionCondition,
310
+ typename ReadHandler>
476
311
  inline void asio_handler_deallocate(void* pointer, std::size_t size,
477
- read_op<AsyncReadStream, MutableBufferSequence,
312
+ read_op<AsyncReadStream, MutableBufferSequence, MutableBufferIterator,
478
313
  CompletionCondition, ReadHandler>* this_handler)
479
314
  {
480
315
  boost_asio_handler_alloc_helpers::deallocate(
@@ -482,9 +317,10 @@ namespace detail
482
317
  }
483
318
 
484
319
  template <typename AsyncReadStream, typename MutableBufferSequence,
485
- typename CompletionCondition, typename ReadHandler>
320
+ typename MutableBufferIterator, typename CompletionCondition,
321
+ typename ReadHandler>
486
322
  inline bool asio_handler_is_continuation(
487
- read_op<AsyncReadStream, MutableBufferSequence,
323
+ read_op<AsyncReadStream, MutableBufferSequence, MutableBufferIterator,
488
324
  CompletionCondition, ReadHandler>* this_handler)
489
325
  {
490
326
  return this_handler->start_ == 0 ? true
@@ -493,10 +329,10 @@ namespace detail
493
329
  }
494
330
 
495
331
  template <typename Function, typename AsyncReadStream,
496
- typename MutableBufferSequence, typename CompletionCondition,
497
- typename ReadHandler>
332
+ typename MutableBufferSequence, typename MutableBufferIterator,
333
+ typename CompletionCondition, typename ReadHandler>
498
334
  inline void asio_handler_invoke(Function& function,
499
- read_op<AsyncReadStream, MutableBufferSequence,
335
+ read_op<AsyncReadStream, MutableBufferSequence, MutableBufferIterator,
500
336
  CompletionCondition, ReadHandler>* this_handler)
501
337
  {
502
338
  boost_asio_handler_invoke_helpers::invoke(
@@ -504,38 +340,93 @@ namespace detail
504
340
  }
505
341
 
506
342
  template <typename Function, typename AsyncReadStream,
507
- typename MutableBufferSequence, typename CompletionCondition,
508
- typename ReadHandler>
343
+ typename MutableBufferSequence, typename MutableBufferIterator,
344
+ typename CompletionCondition, typename ReadHandler>
509
345
  inline void asio_handler_invoke(const Function& function,
510
- read_op<AsyncReadStream, MutableBufferSequence,
346
+ read_op<AsyncReadStream, MutableBufferSequence, MutableBufferIterator,
511
347
  CompletionCondition, ReadHandler>* this_handler)
512
348
  {
513
349
  boost_asio_handler_invoke_helpers::invoke(
514
350
  function, this_handler->handler_);
515
351
  }
352
+
353
+ template <typename AsyncReadStream, typename MutableBufferSequence,
354
+ typename MutableBufferIterator, typename CompletionCondition,
355
+ typename ReadHandler>
356
+ inline void start_read_buffer_sequence_op(AsyncReadStream& stream,
357
+ const MutableBufferSequence& buffers, const MutableBufferIterator&,
358
+ CompletionCondition completion_condition, ReadHandler& handler)
359
+ {
360
+ detail::read_op<AsyncReadStream, MutableBufferSequence,
361
+ MutableBufferIterator, CompletionCondition, ReadHandler>(
362
+ stream, buffers, completion_condition, handler)(
363
+ boost::system::error_code(), 0, 1);
364
+ }
516
365
  } // namespace detail
517
366
 
367
+ #if !defined(GENERATING_DOCUMENTATION)
368
+
369
+ template <typename AsyncReadStream, typename MutableBufferSequence,
370
+ typename MutableBufferIterator, typename CompletionCondition,
371
+ typename ReadHandler, typename Allocator>
372
+ struct associated_allocator<
373
+ detail::read_op<AsyncReadStream, MutableBufferSequence,
374
+ MutableBufferIterator, CompletionCondition, ReadHandler>,
375
+ Allocator>
376
+ {
377
+ typedef typename associated_allocator<ReadHandler, Allocator>::type type;
378
+
379
+ static type get(
380
+ const detail::read_op<AsyncReadStream, MutableBufferSequence,
381
+ MutableBufferIterator, CompletionCondition, ReadHandler>& h,
382
+ const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
383
+ {
384
+ return associated_allocator<ReadHandler, Allocator>::get(h.handler_, a);
385
+ }
386
+ };
387
+
388
+ template <typename AsyncReadStream, typename MutableBufferSequence,
389
+ typename MutableBufferIterator, typename CompletionCondition,
390
+ typename ReadHandler, typename Executor>
391
+ struct associated_executor<
392
+ detail::read_op<AsyncReadStream, MutableBufferSequence,
393
+ MutableBufferIterator, CompletionCondition, ReadHandler>,
394
+ Executor>
395
+ {
396
+ typedef typename associated_executor<ReadHandler, Executor>::type type;
397
+
398
+ static type get(
399
+ const detail::read_op<AsyncReadStream, MutableBufferSequence,
400
+ MutableBufferIterator, CompletionCondition, ReadHandler>& h,
401
+ const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
402
+ {
403
+ return associated_executor<ReadHandler, Executor>::get(h.handler_, ex);
404
+ }
405
+ };
406
+
407
+ #endif // !defined(GENERATING_DOCUMENTATION)
408
+
518
409
  template <typename AsyncReadStream, typename MutableBufferSequence,
519
410
  typename CompletionCondition, typename ReadHandler>
520
411
  inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
521
412
  void (boost::system::error_code, std::size_t))
522
413
  async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
523
414
  CompletionCondition completion_condition,
524
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
415
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
416
+ typename enable_if<
417
+ is_mutable_buffer_sequence<MutableBufferSequence>::value
418
+ >::type*)
525
419
  {
526
420
  // If you get an error on the following line it means that your handler does
527
421
  // not meet the documented type requirements for a ReadHandler.
528
422
  BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
529
423
 
530
- detail::async_result_init<
531
- ReadHandler, void (boost::system::error_code, std::size_t)> init(
532
- BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
424
+ async_completion<ReadHandler,
425
+ void (boost::system::error_code, std::size_t)> init(handler);
533
426
 
534
- detail::read_op<AsyncReadStream, MutableBufferSequence,
535
- CompletionCondition, BOOST_ASIO_HANDLER_TYPE(
536
- ReadHandler, void (boost::system::error_code, std::size_t))>(
537
- s, buffers, completion_condition, init.handler)(
538
- boost::system::error_code(), 0, 1);
427
+ detail::start_read_buffer_sequence_op(s, buffers,
428
+ boost::asio::buffer_sequence_begin(buffers), completion_condition,
429
+ init.completion_handler);
539
430
 
540
431
  return init.result.get();
541
432
  }
@@ -545,42 +436,41 @@ template <typename AsyncReadStream, typename MutableBufferSequence,
545
436
  inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
546
437
  void (boost::system::error_code, std::size_t))
547
438
  async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
548
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
439
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
440
+ typename enable_if<
441
+ is_mutable_buffer_sequence<MutableBufferSequence>::value
442
+ >::type*)
549
443
  {
550
444
  // If you get an error on the following line it means that your handler does
551
445
  // not meet the documented type requirements for a ReadHandler.
552
446
  BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
553
447
 
554
- detail::async_result_init<
555
- ReadHandler, void (boost::system::error_code, std::size_t)> init(
556
- BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
448
+ async_completion<ReadHandler,
449
+ void (boost::system::error_code, std::size_t)> init(handler);
557
450
 
558
- detail::read_op<AsyncReadStream, MutableBufferSequence,
559
- detail::transfer_all_t, BOOST_ASIO_HANDLER_TYPE(
560
- ReadHandler, void (boost::system::error_code, std::size_t))>(
561
- s, buffers, transfer_all(), init.handler)(
562
- boost::system::error_code(), 0, 1);
451
+ detail::start_read_buffer_sequence_op(s, buffers,
452
+ boost::asio::buffer_sequence_begin(buffers), transfer_all(),
453
+ init.completion_handler);
563
454
 
564
455
  return init.result.get();
565
456
  }
566
457
 
567
- #if !defined(BOOST_ASIO_NO_IOSTREAM)
568
-
569
458
  namespace detail
570
459
  {
571
- template <typename AsyncReadStream, typename Allocator,
460
+ template <typename AsyncReadStream, typename DynamicBuffer,
572
461
  typename CompletionCondition, typename ReadHandler>
573
- class read_streambuf_op
462
+ class read_dynbuf_op
574
463
  : detail::base_from_completion_cond<CompletionCondition>
575
464
  {
576
465
  public:
577
- read_streambuf_op(AsyncReadStream& stream,
578
- basic_streambuf<Allocator>& streambuf,
466
+ template <typename BufferSequence>
467
+ read_dynbuf_op(AsyncReadStream& stream,
468
+ BOOST_ASIO_MOVE_ARG(BufferSequence) buffers,
579
469
  CompletionCondition completion_condition, ReadHandler& handler)
580
470
  : detail::base_from_completion_cond<
581
471
  CompletionCondition>(completion_condition),
582
472
  stream_(stream),
583
- streambuf_(streambuf),
473
+ buffers_(BOOST_ASIO_MOVE_CAST(BufferSequence)(buffers)),
584
474
  start_(0),
585
475
  total_transferred_(0),
586
476
  handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(handler))
@@ -588,20 +478,20 @@ namespace detail
588
478
  }
589
479
 
590
480
  #if defined(BOOST_ASIO_HAS_MOVE)
591
- read_streambuf_op(const read_streambuf_op& other)
481
+ read_dynbuf_op(const read_dynbuf_op& other)
592
482
  : detail::base_from_completion_cond<CompletionCondition>(other),
593
483
  stream_(other.stream_),
594
- streambuf_(other.streambuf_),
484
+ buffers_(other.buffers_),
595
485
  start_(other.start_),
596
486
  total_transferred_(other.total_transferred_),
597
487
  handler_(other.handler_)
598
488
  {
599
489
  }
600
490
 
601
- read_streambuf_op(read_streambuf_op&& other)
491
+ read_dynbuf_op(read_dynbuf_op&& other)
602
492
  : detail::base_from_completion_cond<CompletionCondition>(other),
603
493
  stream_(other.stream_),
604
- streambuf_(other.streambuf_),
494
+ buffers_(BOOST_ASIO_MOVE_CAST(DynamicBuffer)(other.buffers_)),
605
495
  start_(other.start_),
606
496
  total_transferred_(other.total_transferred_),
607
497
  handler_(BOOST_ASIO_MOVE_CAST(ReadHandler)(other.handler_))
@@ -617,16 +507,24 @@ namespace detail
617
507
  {
618
508
  case 1:
619
509
  max_size = this->check_for_completion(ec, total_transferred_);
620
- bytes_available = read_size_helper(streambuf_, max_size);
510
+ bytes_available = std::min<std::size_t>(
511
+ std::max<std::size_t>(512,
512
+ buffers_.capacity() - buffers_.size()),
513
+ std::min<std::size_t>(max_size,
514
+ buffers_.max_size() - buffers_.size()));
621
515
  for (;;)
622
516
  {
623
- stream_.async_read_some(streambuf_.prepare(bytes_available),
624
- BOOST_ASIO_MOVE_CAST(read_streambuf_op)(*this));
517
+ stream_.async_read_some(buffers_.prepare(bytes_available),
518
+ BOOST_ASIO_MOVE_CAST(read_dynbuf_op)(*this));
625
519
  return; default:
626
520
  total_transferred_ += bytes_transferred;
627
- streambuf_.commit(bytes_transferred);
521
+ buffers_.commit(bytes_transferred);
628
522
  max_size = this->check_for_completion(ec, total_transferred_);
629
- bytes_available = read_size_helper(streambuf_, max_size);
523
+ bytes_available = std::min<std::size_t>(
524
+ std::max<std::size_t>(512,
525
+ buffers_.capacity() - buffers_.size()),
526
+ std::min<std::size_t>(max_size,
527
+ buffers_.max_size() - buffers_.size()));
630
528
  if ((!ec && bytes_transferred == 0) || bytes_available == 0)
631
529
  break;
632
530
  }
@@ -637,36 +535,36 @@ namespace detail
637
535
 
638
536
  //private:
639
537
  AsyncReadStream& stream_;
640
- boost::asio::basic_streambuf<Allocator>& streambuf_;
538
+ DynamicBuffer buffers_;
641
539
  int start_;
642
540
  std::size_t total_transferred_;
643
541
  ReadHandler handler_;
644
542
  };
645
543
 
646
- template <typename AsyncReadStream, typename Allocator,
544
+ template <typename AsyncReadStream, typename DynamicBuffer,
647
545
  typename CompletionCondition, typename ReadHandler>
648
546
  inline void* asio_handler_allocate(std::size_t size,
649
- read_streambuf_op<AsyncReadStream, Allocator,
547
+ read_dynbuf_op<AsyncReadStream, DynamicBuffer,
650
548
  CompletionCondition, ReadHandler>* this_handler)
651
549
  {
652
550
  return boost_asio_handler_alloc_helpers::allocate(
653
551
  size, this_handler->handler_);
654
552
  }
655
553
 
656
- template <typename AsyncReadStream, typename Allocator,
554
+ template <typename AsyncReadStream, typename DynamicBuffer,
657
555
  typename CompletionCondition, typename ReadHandler>
658
556
  inline void asio_handler_deallocate(void* pointer, std::size_t size,
659
- read_streambuf_op<AsyncReadStream, Allocator,
557
+ read_dynbuf_op<AsyncReadStream, DynamicBuffer,
660
558
  CompletionCondition, ReadHandler>* this_handler)
661
559
  {
662
560
  boost_asio_handler_alloc_helpers::deallocate(
663
561
  pointer, size, this_handler->handler_);
664
562
  }
665
563
 
666
- template <typename AsyncReadStream, typename Allocator,
564
+ template <typename AsyncReadStream, typename DynamicBuffer,
667
565
  typename CompletionCondition, typename ReadHandler>
668
566
  inline bool asio_handler_is_continuation(
669
- read_streambuf_op<AsyncReadStream, Allocator,
567
+ read_dynbuf_op<AsyncReadStream, DynamicBuffer,
670
568
  CompletionCondition, ReadHandler>* this_handler)
671
569
  {
672
570
  return this_handler->start_ == 0 ? true
@@ -675,9 +573,10 @@ namespace detail
675
573
  }
676
574
 
677
575
  template <typename Function, typename AsyncReadStream,
678
- typename Allocator, typename CompletionCondition, typename ReadHandler>
576
+ typename DynamicBuffer, typename CompletionCondition,
577
+ typename ReadHandler>
679
578
  inline void asio_handler_invoke(Function& function,
680
- read_streambuf_op<AsyncReadStream, Allocator,
579
+ read_dynbuf_op<AsyncReadStream, DynamicBuffer,
681
580
  CompletionCondition, ReadHandler>* this_handler)
682
581
  {
683
582
  boost_asio_handler_invoke_helpers::invoke(
@@ -685,9 +584,10 @@ namespace detail
685
584
  }
686
585
 
687
586
  template <typename Function, typename AsyncReadStream,
688
- typename Allocator, typename CompletionCondition, typename ReadHandler>
587
+ typename DynamicBuffer, typename CompletionCondition,
588
+ typename ReadHandler>
689
589
  inline void asio_handler_invoke(const Function& function,
690
- read_streambuf_op<AsyncReadStream, Allocator,
590
+ read_dynbuf_op<AsyncReadStream, DynamicBuffer,
691
591
  CompletionCondition, ReadHandler>* this_handler)
692
592
  {
693
593
  boost_asio_handler_invoke_helpers::invoke(
@@ -695,57 +595,119 @@ namespace detail
695
595
  }
696
596
  } // namespace detail
697
597
 
698
- template <typename AsyncReadStream, typename Allocator,
598
+ #if !defined(GENERATING_DOCUMENTATION)
599
+
600
+ template <typename AsyncReadStream, typename DynamicBuffer,
601
+ typename CompletionCondition, typename ReadHandler, typename Allocator>
602
+ struct associated_allocator<
603
+ detail::read_dynbuf_op<AsyncReadStream,
604
+ DynamicBuffer, CompletionCondition, ReadHandler>,
605
+ Allocator>
606
+ {
607
+ typedef typename associated_allocator<ReadHandler, Allocator>::type type;
608
+
609
+ static type get(
610
+ const detail::read_dynbuf_op<AsyncReadStream,
611
+ DynamicBuffer, CompletionCondition, ReadHandler>& h,
612
+ const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
613
+ {
614
+ return associated_allocator<ReadHandler, Allocator>::get(h.handler_, a);
615
+ }
616
+ };
617
+
618
+ template <typename AsyncReadStream, typename DynamicBuffer,
619
+ typename CompletionCondition, typename ReadHandler, typename Executor>
620
+ struct associated_executor<
621
+ detail::read_dynbuf_op<AsyncReadStream,
622
+ DynamicBuffer, CompletionCondition, ReadHandler>,
623
+ Executor>
624
+ {
625
+ typedef typename associated_executor<ReadHandler, Executor>::type type;
626
+
627
+ static type get(
628
+ const detail::read_dynbuf_op<AsyncReadStream,
629
+ DynamicBuffer, CompletionCondition, ReadHandler>& h,
630
+ const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
631
+ {
632
+ return associated_executor<ReadHandler, Executor>::get(h.handler_, ex);
633
+ }
634
+ };
635
+
636
+ #endif // !defined(GENERATING_DOCUMENTATION)
637
+
638
+ template <typename AsyncReadStream,
639
+ typename DynamicBuffer, typename ReadHandler>
640
+ inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
641
+ void (boost::system::error_code, std::size_t))
642
+ async_read(AsyncReadStream& s,
643
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
644
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
645
+ typename enable_if<
646
+ is_dynamic_buffer<typename decay<DynamicBuffer>::type>::value
647
+ >::type*)
648
+ {
649
+ return async_read(s,
650
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
651
+ transfer_all(), BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
652
+ }
653
+
654
+ template <typename AsyncReadStream, typename DynamicBuffer,
699
655
  typename CompletionCondition, typename ReadHandler>
700
656
  inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
701
657
  void (boost::system::error_code, std::size_t))
702
658
  async_read(AsyncReadStream& s,
703
- boost::asio::basic_streambuf<Allocator>& b,
659
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
704
660
  CompletionCondition completion_condition,
705
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
661
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
662
+ typename enable_if<
663
+ is_dynamic_buffer<typename decay<DynamicBuffer>::type>::value
664
+ >::type*)
706
665
  {
707
666
  // If you get an error on the following line it means that your handler does
708
667
  // not meet the documented type requirements for a ReadHandler.
709
668
  BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
710
669
 
711
- detail::async_result_init<
712
- ReadHandler, void (boost::system::error_code, std::size_t)> init(
713
- BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
670
+ async_completion<ReadHandler,
671
+ void (boost::system::error_code, std::size_t)> init(handler);
714
672
 
715
- detail::read_streambuf_op<AsyncReadStream, Allocator,
716
- CompletionCondition, BOOST_ASIO_HANDLER_TYPE(
717
- ReadHandler, void (boost::system::error_code, std::size_t))>(
718
- s, b, completion_condition, init.handler)(
719
- boost::system::error_code(), 0, 1);
673
+ detail::read_dynbuf_op<AsyncReadStream,
674
+ typename decay<DynamicBuffer>::type,
675
+ CompletionCondition, BOOST_ASIO_HANDLER_TYPE(
676
+ ReadHandler, void (boost::system::error_code, std::size_t))>(
677
+ s, BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
678
+ completion_condition, init.completion_handler)(
679
+ boost::system::error_code(), 0, 1);
720
680
 
721
681
  return init.result.get();
722
682
  }
723
683
 
684
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
685
+ #if !defined(BOOST_ASIO_NO_IOSTREAM)
686
+
724
687
  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
725
688
  inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
726
689
  void (boost::system::error_code, std::size_t))
727
- async_read(AsyncReadStream& s,
728
- boost::asio::basic_streambuf<Allocator>& b,
690
+ async_read(AsyncReadStream& s, basic_streambuf<Allocator>& b,
729
691
  BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
730
692
  {
731
- // If you get an error on the following line it means that your handler does
732
- // not meet the documented type requirements for a ReadHandler.
733
- BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
734
-
735
- detail::async_result_init<
736
- ReadHandler, void (boost::system::error_code, std::size_t)> init(
693
+ return async_read(s, basic_streambuf_ref<Allocator>(b),
737
694
  BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
695
+ }
738
696
 
739
- detail::read_streambuf_op<AsyncReadStream, Allocator,
740
- detail::transfer_all_t, BOOST_ASIO_HANDLER_TYPE(
741
- ReadHandler, void (boost::system::error_code, std::size_t))>(
742
- s, b, transfer_all(), init.handler)(
743
- boost::system::error_code(), 0, 1);
744
-
745
- return init.result.get();
697
+ template <typename AsyncReadStream, typename Allocator,
698
+ typename CompletionCondition, typename ReadHandler>
699
+ inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
700
+ void (boost::system::error_code, std::size_t))
701
+ async_read(AsyncReadStream& s, basic_streambuf<Allocator>& b,
702
+ CompletionCondition completion_condition,
703
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
704
+ {
705
+ return async_read(s, basic_streambuf_ref<Allocator>(b),
706
+ completion_condition, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
746
707
  }
747
708
 
748
709
  #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
710
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
749
711
 
750
712
  } // namespace asio
751
713
  } // namespace boost