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
@@ -2,7 +2,7 @@
2
2
  // impl/read_until.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)
@@ -19,6 +19,8 @@
19
19
  #include <string>
20
20
  #include <vector>
21
21
  #include <utility>
22
+ #include <boost/asio/associated_allocator.hpp>
23
+ #include <boost/asio/associated_executor.hpp>
22
24
  #include <boost/asio/buffer.hpp>
23
25
  #include <boost/asio/buffers_iterator.hpp>
24
26
  #include <boost/asio/detail/bind_handler.hpp>
@@ -34,32 +36,35 @@
34
36
  namespace boost {
35
37
  namespace asio {
36
38
 
37
- template <typename SyncReadStream, typename Allocator>
39
+ template <typename SyncReadStream, typename DynamicBuffer>
38
40
  inline std::size_t read_until(SyncReadStream& s,
39
- boost::asio::basic_streambuf<Allocator>& b, char delim)
41
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers, char delim)
40
42
  {
41
43
  boost::system::error_code ec;
42
- std::size_t bytes_transferred = read_until(s, b, delim, ec);
44
+ std::size_t bytes_transferred = read_until(s,
45
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers), delim, ec);
43
46
  boost::asio::detail::throw_error(ec, "read_until");
44
47
  return bytes_transferred;
45
48
  }
46
49
 
47
- template <typename SyncReadStream, typename Allocator>
50
+ template <typename SyncReadStream, typename DynamicBuffer>
48
51
  std::size_t read_until(SyncReadStream& s,
49
- boost::asio::basic_streambuf<Allocator>& b, char delim,
50
- boost::system::error_code& ec)
52
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
53
+ char delim, boost::system::error_code& ec)
51
54
  {
55
+ typename decay<DynamicBuffer>::type b(
56
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers));
57
+
52
58
  std::size_t search_position = 0;
53
59
  for (;;)
54
60
  {
55
61
  // Determine the range of the data to be searched.
56
- typedef typename boost::asio::basic_streambuf<
57
- Allocator>::const_buffers_type const_buffers_type;
58
- typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
59
- const_buffers_type buffers = b.data();
60
- iterator begin = iterator::begin(buffers);
62
+ typedef typename DynamicBuffer::const_buffers_type buffers_type;
63
+ typedef buffers_iterator<buffers_type> iterator;
64
+ buffers_type data_buffers = b.data();
65
+ iterator begin = iterator::begin(data_buffers);
61
66
  iterator start_pos = begin + search_position;
62
- iterator end = iterator::end(buffers);
67
+ iterator end = iterator::end(data_buffers);
63
68
 
64
69
  // Look for a match.
65
70
  iterator iter = std::find(start_pos, end, delim);
@@ -83,19 +88,23 @@ std::size_t read_until(SyncReadStream& s,
83
88
  }
84
89
 
85
90
  // Need more data.
86
- std::size_t bytes_to_read = read_size_helper(b, 65536);
91
+ std::size_t bytes_to_read = std::min<std::size_t>(
92
+ std::max<std::size_t>(512, b.capacity() - b.size()),
93
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
87
94
  b.commit(s.read_some(b.prepare(bytes_to_read), ec));
88
95
  if (ec)
89
96
  return 0;
90
97
  }
91
98
  }
92
99
 
93
- template <typename SyncReadStream, typename Allocator>
100
+ template <typename SyncReadStream, typename DynamicBuffer>
94
101
  inline std::size_t read_until(SyncReadStream& s,
95
- boost::asio::basic_streambuf<Allocator>& b, const std::string& delim)
102
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
103
+ BOOST_ASIO_STRING_VIEW_PARAM delim)
96
104
  {
97
105
  boost::system::error_code ec;
98
- std::size_t bytes_transferred = read_until(s, b, delim, ec);
106
+ std::size_t bytes_transferred = read_until(s,
107
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers), delim, ec);
99
108
  boost::asio::detail::throw_error(ec, "read_until");
100
109
  return bytes_transferred;
101
110
  }
@@ -135,22 +144,24 @@ namespace detail
135
144
  }
136
145
  } // namespace detail
137
146
 
138
- template <typename SyncReadStream, typename Allocator>
147
+ template <typename SyncReadStream, typename DynamicBuffer>
139
148
  std::size_t read_until(SyncReadStream& s,
140
- boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
141
- boost::system::error_code& ec)
149
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
150
+ BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec)
142
151
  {
152
+ typename decay<DynamicBuffer>::type b(
153
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers));
154
+
143
155
  std::size_t search_position = 0;
144
156
  for (;;)
145
157
  {
146
158
  // Determine the range of the data to be searched.
147
- typedef typename boost::asio::basic_streambuf<
148
- Allocator>::const_buffers_type const_buffers_type;
149
- typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
150
- const_buffers_type buffers = b.data();
151
- iterator begin = iterator::begin(buffers);
159
+ typedef typename DynamicBuffer::const_buffers_type buffers_type;
160
+ typedef buffers_iterator<buffers_type> iterator;
161
+ buffers_type data_buffers = b.data();
162
+ iterator begin = iterator::begin(data_buffers);
152
163
  iterator start_pos = begin + search_position;
153
- iterator end = iterator::end(buffers);
164
+ iterator end = iterator::end(data_buffers);
154
165
 
155
166
  // Look for a match.
156
167
  std::pair<iterator, bool> result = detail::partial_search(
@@ -183,41 +194,48 @@ std::size_t read_until(SyncReadStream& s,
183
194
  }
184
195
 
185
196
  // Need more data.
186
- std::size_t bytes_to_read = read_size_helper(b, 65536);
197
+ std::size_t bytes_to_read = std::min<std::size_t>(
198
+ std::max<std::size_t>(512, b.capacity() - b.size()),
199
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
187
200
  b.commit(s.read_some(b.prepare(bytes_to_read), ec));
188
201
  if (ec)
189
202
  return 0;
190
203
  }
191
204
  }
192
205
 
206
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
193
207
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
194
208
 
195
- template <typename SyncReadStream, typename Allocator>
209
+ template <typename SyncReadStream, typename DynamicBuffer>
196
210
  inline std::size_t read_until(SyncReadStream& s,
197
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr)
211
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
212
+ const boost::regex& expr)
198
213
  {
199
214
  boost::system::error_code ec;
200
- std::size_t bytes_transferred = read_until(s, b, expr, ec);
215
+ std::size_t bytes_transferred = read_until(s,
216
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers), expr, ec);
201
217
  boost::asio::detail::throw_error(ec, "read_until");
202
218
  return bytes_transferred;
203
219
  }
204
220
 
205
- template <typename SyncReadStream, typename Allocator>
221
+ template <typename SyncReadStream, typename DynamicBuffer>
206
222
  std::size_t read_until(SyncReadStream& s,
207
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
208
- boost::system::error_code& ec)
223
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
224
+ const boost::regex& expr, boost::system::error_code& ec)
209
225
  {
226
+ typename decay<DynamicBuffer>::type b(
227
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers));
228
+
210
229
  std::size_t search_position = 0;
211
230
  for (;;)
212
231
  {
213
232
  // Determine the range of the data to be searched.
214
- typedef typename boost::asio::basic_streambuf<
215
- Allocator>::const_buffers_type const_buffers_type;
216
- typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
217
- const_buffers_type buffers = b.data();
218
- iterator begin = iterator::begin(buffers);
233
+ typedef typename DynamicBuffer::const_buffers_type buffers_type;
234
+ typedef buffers_iterator<buffers_type> iterator;
235
+ buffers_type data_buffers = b.data();
236
+ iterator begin = iterator::begin(data_buffers);
219
237
  iterator start_pos = begin + search_position;
220
- iterator end = iterator::end(buffers);
238
+ iterator end = iterator::end(data_buffers);
221
239
 
222
240
  // Look for a match.
223
241
  boost::match_results<iterator,
@@ -261,23 +279,41 @@ std::size_t read_until(SyncReadStream& s,
261
279
 
262
280
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
263
281
 
264
- template <typename SyncReadStream, typename Allocator, typename MatchCondition>
282
+ template <typename SyncReadStream,
283
+ typename DynamicBuffer, typename MatchCondition>
284
+ inline std::size_t read_until(SyncReadStream& s,
285
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
286
+ MatchCondition match_condition,
287
+ typename enable_if<is_match_condition<MatchCondition>::value>::type*)
288
+ {
289
+ boost::system::error_code ec;
290
+ std::size_t bytes_transferred = read_until(s,
291
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
292
+ match_condition, ec);
293
+ boost::asio::detail::throw_error(ec, "read_until");
294
+ return bytes_transferred;
295
+ }
296
+
297
+ template <typename SyncReadStream,
298
+ typename DynamicBuffer, typename MatchCondition>
265
299
  std::size_t read_until(SyncReadStream& s,
266
- boost::asio::basic_streambuf<Allocator>& b,
300
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
267
301
  MatchCondition match_condition, boost::system::error_code& ec,
268
302
  typename enable_if<is_match_condition<MatchCondition>::value>::type*)
269
303
  {
304
+ typename decay<DynamicBuffer>::type b(
305
+ BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers));
306
+
270
307
  std::size_t search_position = 0;
271
308
  for (;;)
272
309
  {
273
310
  // Determine the range of the data to be searched.
274
- typedef typename boost::asio::basic_streambuf<
275
- Allocator>::const_buffers_type const_buffers_type;
276
- typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
277
- const_buffers_type buffers = b.data();
278
- iterator begin = iterator::begin(buffers);
311
+ typedef typename DynamicBuffer::const_buffers_type buffers_type;
312
+ typedef buffers_iterator<buffers_type> iterator;
313
+ buffers_type data_buffers = b.data();
314
+ iterator begin = iterator::begin(data_buffers);
279
315
  iterator start_pos = begin + search_position;
280
- iterator end = iterator::end(buffers);
316
+ iterator end = iterator::end(data_buffers);
281
317
 
282
318
  // Look for a match.
283
319
  std::pair<iterator, bool> result = match_condition(start_pos, end);
@@ -306,35 +342,100 @@ std::size_t read_until(SyncReadStream& s,
306
342
  }
307
343
 
308
344
  // Need more data.
309
- std::size_t bytes_to_read = read_size_helper(b, 65536);
345
+ std::size_t bytes_to_read = std::min<std::size_t>(
346
+ std::max<std::size_t>(512, b.capacity() - b.size()),
347
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
310
348
  b.commit(s.read_some(b.prepare(bytes_to_read), ec));
311
349
  if (ec)
312
350
  return 0;
313
351
  }
314
352
  }
315
353
 
354
+ #if !defined(BOOST_ASIO_NO_IOSTREAM)
355
+
356
+ template <typename SyncReadStream, typename Allocator>
357
+ inline std::size_t read_until(SyncReadStream& s,
358
+ boost::asio::basic_streambuf<Allocator>& b, char delim)
359
+ {
360
+ return read_until(s, basic_streambuf_ref<Allocator>(b), delim);
361
+ }
362
+
363
+ template <typename SyncReadStream, typename Allocator>
364
+ inline std::size_t read_until(SyncReadStream& s,
365
+ boost::asio::basic_streambuf<Allocator>& b, char delim,
366
+ boost::system::error_code& ec)
367
+ {
368
+ return read_until(s, basic_streambuf_ref<Allocator>(b), delim, ec);
369
+ }
370
+
371
+ template <typename SyncReadStream, typename Allocator>
372
+ inline std::size_t read_until(SyncReadStream& s,
373
+ boost::asio::basic_streambuf<Allocator>& b,
374
+ BOOST_ASIO_STRING_VIEW_PARAM delim)
375
+ {
376
+ return read_until(s, basic_streambuf_ref<Allocator>(b), delim);
377
+ }
378
+
379
+ template <typename SyncReadStream, typename Allocator>
380
+ inline std::size_t read_until(SyncReadStream& s,
381
+ boost::asio::basic_streambuf<Allocator>& b,
382
+ BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec)
383
+ {
384
+ return read_until(s, basic_streambuf_ref<Allocator>(b), delim, ec);
385
+ }
386
+
387
+ #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
388
+
389
+ template <typename SyncReadStream, typename Allocator>
390
+ inline std::size_t read_until(SyncReadStream& s,
391
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr)
392
+ {
393
+ return read_until(s, basic_streambuf_ref<Allocator>(b), expr);
394
+ }
395
+
396
+ template <typename SyncReadStream, typename Allocator>
397
+ inline std::size_t read_until(SyncReadStream& s,
398
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
399
+ boost::system::error_code& ec)
400
+ {
401
+ return read_until(s, basic_streambuf_ref<Allocator>(b), expr, ec);
402
+ }
403
+
404
+ #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
405
+
316
406
  template <typename SyncReadStream, typename Allocator, typename MatchCondition>
317
407
  inline std::size_t read_until(SyncReadStream& s,
318
408
  boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
319
409
  typename enable_if<is_match_condition<MatchCondition>::value>::type*)
320
410
  {
321
- boost::system::error_code ec;
322
- std::size_t bytes_transferred = read_until(s, b, match_condition, ec);
323
- boost::asio::detail::throw_error(ec, "read_until");
324
- return bytes_transferred;
411
+ return read_until(s, basic_streambuf_ref<Allocator>(b), match_condition);
412
+ }
413
+
414
+ template <typename SyncReadStream, typename Allocator, typename MatchCondition>
415
+ inline std::size_t read_until(SyncReadStream& s,
416
+ boost::asio::basic_streambuf<Allocator>& b,
417
+ MatchCondition match_condition, boost::system::error_code& ec,
418
+ typename enable_if<is_match_condition<MatchCondition>::value>::type*)
419
+ {
420
+ return read_until(s, basic_streambuf_ref<Allocator>(b), match_condition, ec);
325
421
  }
326
422
 
423
+ #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
424
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
425
+
327
426
  namespace detail
328
427
  {
329
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
428
+ template <typename AsyncReadStream,
429
+ typename DynamicBuffer, typename ReadHandler>
330
430
  class read_until_delim_op
331
431
  {
332
432
  public:
433
+ template <typename BufferSequence>
333
434
  read_until_delim_op(AsyncReadStream& stream,
334
- boost::asio::basic_streambuf<Allocator>& streambuf,
435
+ BOOST_ASIO_MOVE_ARG(BufferSequence) buffers,
335
436
  char delim, ReadHandler& handler)
336
437
  : stream_(stream),
337
- streambuf_(streambuf),
438
+ buffers_(BOOST_ASIO_MOVE_CAST(BufferSequence)(buffers)),
338
439
  delim_(delim),
339
440
  start_(0),
340
441
  search_position_(0),
@@ -345,7 +446,7 @@ namespace detail
345
446
  #if defined(BOOST_ASIO_HAS_MOVE)
346
447
  read_until_delim_op(const read_until_delim_op& other)
347
448
  : stream_(other.stream_),
348
- streambuf_(other.streambuf_),
449
+ buffers_(other.buffers_),
349
450
  delim_(other.delim_),
350
451
  start_(other.start_),
351
452
  search_position_(other.search_position_),
@@ -355,7 +456,7 @@ namespace detail
355
456
 
356
457
  read_until_delim_op(read_until_delim_op&& other)
357
458
  : stream_(other.stream_),
358
- streambuf_(other.streambuf_),
459
+ buffers_(BOOST_ASIO_MOVE_CAST(DynamicBuffer)(other.buffers_)),
359
460
  delim_(other.delim_),
360
461
  start_(other.start_),
361
462
  search_position_(other.search_position_),
@@ -376,13 +477,13 @@ namespace detail
376
477
  {
377
478
  {
378
479
  // Determine the range of the data to be searched.
379
- typedef typename boost::asio::basic_streambuf<
380
- Allocator>::const_buffers_type const_buffers_type;
381
- typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
382
- const_buffers_type buffers = streambuf_.data();
383
- iterator begin = iterator::begin(buffers);
480
+ typedef typename DynamicBuffer::const_buffers_type
481
+ buffers_type;
482
+ typedef buffers_iterator<buffers_type> iterator;
483
+ buffers_type data_buffers = buffers_.data();
484
+ iterator begin = iterator::begin(data_buffers);
384
485
  iterator start_pos = begin + search_position_;
385
- iterator end = iterator::end(buffers);
486
+ iterator end = iterator::end(data_buffers);
386
487
 
387
488
  // Look for a match.
388
489
  iterator iter = std::find(start_pos, end, delim_);
@@ -394,7 +495,7 @@ namespace detail
394
495
  }
395
496
 
396
497
  // No match yet. Check if buffer is full.
397
- else if (streambuf_.size() == streambuf_.max_size())
498
+ else if (buffers_.size() == buffers_.max_size())
398
499
  {
399
500
  search_position_ = not_found;
400
501
  bytes_to_read = 0;
@@ -405,7 +506,11 @@ namespace detail
405
506
  {
406
507
  // Next search can start with the new data.
407
508
  search_position_ = end - begin;
408
- bytes_to_read = read_size_helper(streambuf_, 65536);
509
+ bytes_to_read = std::min<std::size_t>(
510
+ std::max<std::size_t>(512,
511
+ buffers_.capacity() - buffers_.size()),
512
+ std::min<std::size_t>(65536,
513
+ buffers_.max_size() - buffers_.size()));
409
514
  }
410
515
  }
411
516
 
@@ -414,10 +519,10 @@ namespace detail
414
519
  break;
415
520
 
416
521
  // Start a new asynchronous read operation to obtain more data.
417
- stream_.async_read_some(streambuf_.prepare(bytes_to_read),
522
+ stream_.async_read_some(buffers_.prepare(bytes_to_read),
418
523
  BOOST_ASIO_MOVE_CAST(read_until_delim_op)(*this));
419
524
  return; default:
420
- streambuf_.commit(bytes_transferred);
525
+ buffers_.commit(bytes_transferred);
421
526
  if (ec || bytes_transferred == 0)
422
527
  break;
423
528
  }
@@ -436,97 +541,143 @@ namespace detail
436
541
 
437
542
  //private:
438
543
  AsyncReadStream& stream_;
439
- boost::asio::basic_streambuf<Allocator>& streambuf_;
544
+ DynamicBuffer buffers_;
440
545
  char delim_;
441
546
  int start_;
442
547
  std::size_t search_position_;
443
548
  ReadHandler handler_;
444
549
  };
445
550
 
446
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
551
+ template <typename AsyncReadStream,
552
+ typename DynamicBuffer, typename ReadHandler>
447
553
  inline void* asio_handler_allocate(std::size_t size,
448
554
  read_until_delim_op<AsyncReadStream,
449
- Allocator, ReadHandler>* this_handler)
555
+ DynamicBuffer, ReadHandler>* this_handler)
450
556
  {
451
557
  return boost_asio_handler_alloc_helpers::allocate(
452
558
  size, this_handler->handler_);
453
559
  }
454
560
 
455
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
561
+ template <typename AsyncReadStream,
562
+ typename DynamicBuffer, typename ReadHandler>
456
563
  inline void asio_handler_deallocate(void* pointer, std::size_t size,
457
564
  read_until_delim_op<AsyncReadStream,
458
- Allocator, ReadHandler>* this_handler)
565
+ DynamicBuffer, ReadHandler>* this_handler)
459
566
  {
460
567
  boost_asio_handler_alloc_helpers::deallocate(
461
568
  pointer, size, this_handler->handler_);
462
569
  }
463
570
 
464
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
571
+ template <typename AsyncReadStream,
572
+ typename DynamicBuffer, typename ReadHandler>
465
573
  inline bool asio_handler_is_continuation(
466
574
  read_until_delim_op<AsyncReadStream,
467
- Allocator, ReadHandler>* this_handler)
575
+ DynamicBuffer, ReadHandler>* this_handler)
468
576
  {
469
577
  return this_handler->start_ == 0 ? true
470
578
  : boost_asio_handler_cont_helpers::is_continuation(
471
579
  this_handler->handler_);
472
580
  }
473
581
 
474
- template <typename Function, typename AsyncReadStream, typename Allocator,
475
- typename ReadHandler>
582
+ template <typename Function, typename AsyncReadStream,
583
+ typename DynamicBuffer, typename ReadHandler>
476
584
  inline void asio_handler_invoke(Function& function,
477
585
  read_until_delim_op<AsyncReadStream,
478
- Allocator, ReadHandler>* this_handler)
586
+ DynamicBuffer, ReadHandler>* this_handler)
479
587
  {
480
588
  boost_asio_handler_invoke_helpers::invoke(
481
589
  function, this_handler->handler_);
482
590
  }
483
591
 
484
- template <typename Function, typename AsyncReadStream, typename Allocator,
485
- typename ReadHandler>
592
+ template <typename Function, typename AsyncReadStream,
593
+ typename DynamicBuffer, typename ReadHandler>
486
594
  inline void asio_handler_invoke(const Function& function,
487
595
  read_until_delim_op<AsyncReadStream,
488
- Allocator, ReadHandler>* this_handler)
596
+ DynamicBuffer, ReadHandler>* this_handler)
489
597
  {
490
598
  boost_asio_handler_invoke_helpers::invoke(
491
599
  function, this_handler->handler_);
492
600
  }
493
601
  } // namespace detail
494
602
 
495
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
603
+ #if !defined(GENERATING_DOCUMENTATION)
604
+
605
+ template <typename AsyncReadStream, typename DynamicBuffer,
606
+ typename ReadHandler, typename Allocator>
607
+ struct associated_allocator<
608
+ detail::read_until_delim_op<AsyncReadStream,
609
+ DynamicBuffer, ReadHandler>,
610
+ Allocator>
611
+ {
612
+ typedef typename associated_allocator<ReadHandler, Allocator>::type type;
613
+
614
+ static type get(
615
+ const detail::read_until_delim_op<AsyncReadStream,
616
+ DynamicBuffer, ReadHandler>& h,
617
+ const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
618
+ {
619
+ return associated_allocator<ReadHandler, Allocator>::get(h.handler_, a);
620
+ }
621
+ };
622
+
623
+ template <typename AsyncReadStream, typename DynamicBuffer,
624
+ typename ReadHandler, typename Executor>
625
+ struct associated_executor<
626
+ detail::read_until_delim_op<AsyncReadStream,
627
+ DynamicBuffer, ReadHandler>,
628
+ Executor>
629
+ {
630
+ typedef typename associated_executor<ReadHandler, Executor>::type type;
631
+
632
+ static type get(
633
+ const detail::read_until_delim_op<AsyncReadStream,
634
+ DynamicBuffer, ReadHandler>& h,
635
+ const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
636
+ {
637
+ return associated_executor<ReadHandler, Executor>::get(h.handler_, ex);
638
+ }
639
+ };
640
+
641
+ #endif // !defined(GENERATING_DOCUMENTATION)
642
+
643
+ template <typename AsyncReadStream,
644
+ typename DynamicBuffer, typename ReadHandler>
496
645
  BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
497
646
  void (boost::system::error_code, std::size_t))
498
647
  async_read_until(AsyncReadStream& s,
499
- boost::asio::basic_streambuf<Allocator>& b, char delim,
500
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
648
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
649
+ char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
501
650
  {
502
651
  // If you get an error on the following line it means that your handler does
503
652
  // not meet the documented type requirements for a ReadHandler.
504
653
  BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
505
654
 
506
- detail::async_result_init<
507
- ReadHandler, void (boost::system::error_code, std::size_t)> init(
508
- BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
655
+ async_completion<ReadHandler,
656
+ void (boost::system::error_code, std::size_t)> init(handler);
509
657
 
510
658
  detail::read_until_delim_op<AsyncReadStream,
511
- Allocator, BOOST_ASIO_HANDLER_TYPE(ReadHandler,
512
- void (boost::system::error_code, std::size_t))>(
513
- s, b, delim, init.handler)(
514
- boost::system::error_code(), 0, 1);
659
+ typename decay<DynamicBuffer>::type,
660
+ BOOST_ASIO_HANDLER_TYPE(ReadHandler,
661
+ void (boost::system::error_code, std::size_t))>(
662
+ s, BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
663
+ delim, init.completion_handler)(boost::system::error_code(), 0, 1);
515
664
 
516
665
  return init.result.get();
517
666
  }
518
667
 
519
668
  namespace detail
520
669
  {
521
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
670
+ template <typename AsyncReadStream,
671
+ typename DynamicBuffer, typename ReadHandler>
522
672
  class read_until_delim_string_op
523
673
  {
524
674
  public:
675
+ template <typename BufferSequence>
525
676
  read_until_delim_string_op(AsyncReadStream& stream,
526
- boost::asio::basic_streambuf<Allocator>& streambuf,
677
+ BOOST_ASIO_MOVE_ARG(BufferSequence) buffers,
527
678
  const std::string& delim, ReadHandler& handler)
528
679
  : stream_(stream),
529
- streambuf_(streambuf),
680
+ buffers_(BOOST_ASIO_MOVE_CAST(BufferSequence)(buffers)),
530
681
  delim_(delim),
531
682
  start_(0),
532
683
  search_position_(0),
@@ -537,7 +688,7 @@ namespace detail
537
688
  #if defined(BOOST_ASIO_HAS_MOVE)
538
689
  read_until_delim_string_op(const read_until_delim_string_op& other)
539
690
  : stream_(other.stream_),
540
- streambuf_(other.streambuf_),
691
+ buffers_(other.buffers_),
541
692
  delim_(other.delim_),
542
693
  start_(other.start_),
543
694
  search_position_(other.search_position_),
@@ -547,7 +698,7 @@ namespace detail
547
698
 
548
699
  read_until_delim_string_op(read_until_delim_string_op&& other)
549
700
  : stream_(other.stream_),
550
- streambuf_(other.streambuf_),
701
+ buffers_(BOOST_ASIO_MOVE_CAST(DynamicBuffer)(other.buffers_)),
551
702
  delim_(BOOST_ASIO_MOVE_CAST(std::string)(other.delim_)),
552
703
  start_(other.start_),
553
704
  search_position_(other.search_position_),
@@ -568,13 +719,13 @@ namespace detail
568
719
  {
569
720
  {
570
721
  // Determine the range of the data to be searched.
571
- typedef typename boost::asio::basic_streambuf<
572
- Allocator>::const_buffers_type const_buffers_type;
573
- typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
574
- const_buffers_type buffers = streambuf_.data();
575
- iterator begin = iterator::begin(buffers);
722
+ typedef typename DynamicBuffer::const_buffers_type
723
+ buffers_type;
724
+ typedef buffers_iterator<buffers_type> iterator;
725
+ buffers_type data_buffers = buffers_.data();
726
+ iterator begin = iterator::begin(data_buffers);
576
727
  iterator start_pos = begin + search_position_;
577
- iterator end = iterator::end(buffers);
728
+ iterator end = iterator::end(data_buffers);
578
729
 
579
730
  // Look for a match.
580
731
  std::pair<iterator, bool> result = detail::partial_search(
@@ -587,7 +738,7 @@ namespace detail
587
738
  }
588
739
 
589
740
  // No match yet. Check if buffer is full.
590
- else if (streambuf_.size() == streambuf_.max_size())
741
+ else if (buffers_.size() == buffers_.max_size())
591
742
  {
592
743
  search_position_ = not_found;
593
744
  bytes_to_read = 0;
@@ -608,7 +759,11 @@ namespace detail
608
759
  search_position_ = end - begin;
609
760
  }
610
761
 
611
- bytes_to_read = read_size_helper(streambuf_, 65536);
762
+ bytes_to_read = std::min<std::size_t>(
763
+ std::max<std::size_t>(512,
764
+ buffers_.capacity() - buffers_.size()),
765
+ std::min<std::size_t>(65536,
766
+ buffers_.max_size() - buffers_.size()));
612
767
  }
613
768
  }
614
769
 
@@ -617,10 +772,10 @@ namespace detail
617
772
  break;
618
773
 
619
774
  // Start a new asynchronous read operation to obtain more data.
620
- stream_.async_read_some(streambuf_.prepare(bytes_to_read),
775
+ stream_.async_read_some(buffers_.prepare(bytes_to_read),
621
776
  BOOST_ASIO_MOVE_CAST(read_until_delim_string_op)(*this));
622
777
  return; default:
623
- streambuf_.commit(bytes_transferred);
778
+ buffers_.commit(bytes_transferred);
624
779
  if (ec || bytes_transferred == 0)
625
780
  break;
626
781
  }
@@ -639,35 +794,38 @@ namespace detail
639
794
 
640
795
  //private:
641
796
  AsyncReadStream& stream_;
642
- boost::asio::basic_streambuf<Allocator>& streambuf_;
797
+ DynamicBuffer buffers_;
643
798
  std::string delim_;
644
799
  int start_;
645
800
  std::size_t search_position_;
646
801
  ReadHandler handler_;
647
802
  };
648
803
 
649
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
804
+ template <typename AsyncReadStream,
805
+ typename DynamicBuffer, typename ReadHandler>
650
806
  inline void* asio_handler_allocate(std::size_t size,
651
807
  read_until_delim_string_op<AsyncReadStream,
652
- Allocator, ReadHandler>* this_handler)
808
+ DynamicBuffer, ReadHandler>* this_handler)
653
809
  {
654
810
  return boost_asio_handler_alloc_helpers::allocate(
655
811
  size, this_handler->handler_);
656
812
  }
657
813
 
658
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
814
+ template <typename AsyncReadStream,
815
+ typename DynamicBuffer, typename ReadHandler>
659
816
  inline void asio_handler_deallocate(void* pointer, std::size_t size,
660
817
  read_until_delim_string_op<AsyncReadStream,
661
- Allocator, ReadHandler>* this_handler)
818
+ DynamicBuffer, ReadHandler>* this_handler)
662
819
  {
663
820
  boost_asio_handler_alloc_helpers::deallocate(
664
821
  pointer, size, this_handler->handler_);
665
822
  }
666
823
 
667
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
824
+ template <typename AsyncReadStream,
825
+ typename DynamicBuffer, typename ReadHandler>
668
826
  inline bool asio_handler_is_continuation(
669
827
  read_until_delim_string_op<AsyncReadStream,
670
- Allocator, ReadHandler>* this_handler)
828
+ DynamicBuffer, ReadHandler>* this_handler)
671
829
  {
672
830
  return this_handler->start_ == 0 ? true
673
831
  : boost_asio_handler_cont_helpers::is_continuation(
@@ -675,64 +833,109 @@ namespace detail
675
833
  }
676
834
 
677
835
  template <typename Function, typename AsyncReadStream,
678
- typename Allocator, typename ReadHandler>
836
+ typename DynamicBuffer, typename ReadHandler>
679
837
  inline void asio_handler_invoke(Function& function,
680
838
  read_until_delim_string_op<AsyncReadStream,
681
- Allocator, ReadHandler>* this_handler)
839
+ DynamicBuffer, ReadHandler>* this_handler)
682
840
  {
683
841
  boost_asio_handler_invoke_helpers::invoke(
684
842
  function, this_handler->handler_);
685
843
  }
686
844
 
687
845
  template <typename Function, typename AsyncReadStream,
688
- typename Allocator, typename ReadHandler>
846
+ typename DynamicBuffer, typename ReadHandler>
689
847
  inline void asio_handler_invoke(const Function& function,
690
848
  read_until_delim_string_op<AsyncReadStream,
691
- Allocator, ReadHandler>* this_handler)
849
+ DynamicBuffer, ReadHandler>* this_handler)
692
850
  {
693
851
  boost_asio_handler_invoke_helpers::invoke(
694
852
  function, this_handler->handler_);
695
853
  }
696
854
  } // namespace detail
697
855
 
698
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
856
+ #if !defined(GENERATING_DOCUMENTATION)
857
+
858
+ template <typename AsyncReadStream, typename DynamicBuffer,
859
+ typename ReadHandler, typename Allocator>
860
+ struct associated_allocator<
861
+ detail::read_until_delim_string_op<AsyncReadStream,
862
+ DynamicBuffer, ReadHandler>,
863
+ Allocator>
864
+ {
865
+ typedef typename associated_allocator<ReadHandler, Allocator>::type type;
866
+
867
+ static type get(
868
+ const detail::read_until_delim_string_op<AsyncReadStream,
869
+ DynamicBuffer, ReadHandler>& h,
870
+ const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
871
+ {
872
+ return associated_allocator<ReadHandler, Allocator>::get(h.handler_, a);
873
+ }
874
+ };
875
+
876
+ template <typename AsyncReadStream, typename DynamicBuffer,
877
+ typename ReadHandler, typename Executor>
878
+ struct associated_executor<
879
+ detail::read_until_delim_string_op<AsyncReadStream,
880
+ DynamicBuffer, ReadHandler>,
881
+ Executor>
882
+ {
883
+ typedef typename associated_executor<ReadHandler, Executor>::type type;
884
+
885
+ static type get(
886
+ const detail::read_until_delim_string_op<AsyncReadStream,
887
+ DynamicBuffer, ReadHandler>& h,
888
+ const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
889
+ {
890
+ return associated_executor<ReadHandler, Executor>::get(h.handler_, ex);
891
+ }
892
+ };
893
+
894
+ #endif // !defined(GENERATING_DOCUMENTATION)
895
+
896
+ template <typename AsyncReadStream,
897
+ typename DynamicBuffer, typename ReadHandler>
699
898
  BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
700
899
  void (boost::system::error_code, std::size_t))
701
900
  async_read_until(AsyncReadStream& s,
702
- boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
901
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
902
+ BOOST_ASIO_STRING_VIEW_PARAM delim,
703
903
  BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
704
904
  {
705
905
  // If you get an error on the following line it means that your handler does
706
906
  // not meet the documented type requirements for a ReadHandler.
707
907
  BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
708
908
 
709
- detail::async_result_init<
710
- ReadHandler, void (boost::system::error_code, std::size_t)> init(
711
- BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
909
+ async_completion<ReadHandler,
910
+ void (boost::system::error_code, std::size_t)> init(handler);
712
911
 
713
912
  detail::read_until_delim_string_op<AsyncReadStream,
714
- Allocator, BOOST_ASIO_HANDLER_TYPE(ReadHandler,
715
- void (boost::system::error_code, std::size_t))>(
716
- s, b, delim, init.handler)(
717
- boost::system::error_code(), 0, 1);
913
+ typename decay<DynamicBuffer>::type,
914
+ BOOST_ASIO_HANDLER_TYPE(ReadHandler,
915
+ void (boost::system::error_code, std::size_t))>(
916
+ s, BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
917
+ static_cast<std::string>(delim),
918
+ init.completion_handler)(boost::system::error_code(), 0, 1);
718
919
 
719
920
  return init.result.get();
720
921
  }
721
922
 
923
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
722
924
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
723
925
 
724
926
  namespace detail
725
927
  {
726
- template <typename AsyncReadStream, typename Allocator,
928
+ template <typename AsyncReadStream, typename DynamicBuffer,
727
929
  typename RegEx, typename ReadHandler>
728
930
  class read_until_expr_op
729
931
  {
730
932
  public:
933
+ template <typename BufferSequence>
731
934
  read_until_expr_op(AsyncReadStream& stream,
732
- boost::asio::basic_streambuf<Allocator>& streambuf,
935
+ BOOST_ASIO_MOVE_ARG(BufferSequence) buffers,
733
936
  const boost::regex& expr, ReadHandler& handler)
734
937
  : stream_(stream),
735
- streambuf_(streambuf),
938
+ buffers_(BOOST_ASIO_MOVE_CAST(BufferSequence)(buffers)),
736
939
  expr_(expr),
737
940
  start_(0),
738
941
  search_position_(0),
@@ -743,7 +946,7 @@ namespace detail
743
946
  #if defined(BOOST_ASIO_HAS_MOVE)
744
947
  read_until_expr_op(const read_until_expr_op& other)
745
948
  : stream_(other.stream_),
746
- streambuf_(other.streambuf_),
949
+ buffers_(other.buffers_),
747
950
  expr_(other.expr_),
748
951
  start_(other.start_),
749
952
  search_position_(other.search_position_),
@@ -753,7 +956,7 @@ namespace detail
753
956
 
754
957
  read_until_expr_op(read_until_expr_op&& other)
755
958
  : stream_(other.stream_),
756
- streambuf_(other.streambuf_),
959
+ buffers_(BOOST_ASIO_MOVE_CAST(DynamicBuffer)(other.buffers_)),
757
960
  expr_(other.expr_),
758
961
  start_(other.start_),
759
962
  search_position_(other.search_position_),
@@ -774,13 +977,13 @@ namespace detail
774
977
  {
775
978
  {
776
979
  // Determine the range of the data to be searched.
777
- typedef typename boost::asio::basic_streambuf<
778
- Allocator>::const_buffers_type const_buffers_type;
779
- typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
780
- const_buffers_type buffers = streambuf_.data();
781
- iterator begin = iterator::begin(buffers);
980
+ typedef typename DynamicBuffer::const_buffers_type
981
+ buffers_type;
982
+ typedef buffers_iterator<buffers_type> iterator;
983
+ buffers_type data_buffers = buffers_.data();
984
+ iterator begin = iterator::begin(data_buffers);
782
985
  iterator start_pos = begin + search_position_;
783
- iterator end = iterator::end(buffers);
986
+ iterator end = iterator::end(data_buffers);
784
987
 
785
988
  // Look for a match.
786
989
  boost::match_results<iterator,
@@ -796,7 +999,7 @@ namespace detail
796
999
  }
797
1000
 
798
1001
  // No match yet. Check if buffer is full.
799
- else if (streambuf_.size() == streambuf_.max_size())
1002
+ else if (buffers_.size() == buffers_.max_size())
800
1003
  {
801
1004
  search_position_ = not_found;
802
1005
  bytes_to_read = 0;
@@ -817,7 +1020,11 @@ namespace detail
817
1020
  search_position_ = end - begin;
818
1021
  }
819
1022
 
820
- bytes_to_read = read_size_helper(streambuf_, 65536);
1023
+ bytes_to_read = std::min<std::size_t>(
1024
+ std::max<std::size_t>(512,
1025
+ buffers_.capacity() - buffers_.size()),
1026
+ std::min<std::size_t>(65536,
1027
+ buffers_.max_size() - buffers_.size()));
821
1028
  }
822
1029
  }
823
1030
 
@@ -826,10 +1033,10 @@ namespace detail
826
1033
  break;
827
1034
 
828
1035
  // Start a new asynchronous read operation to obtain more data.
829
- stream_.async_read_some(streambuf_.prepare(bytes_to_read),
1036
+ stream_.async_read_some(buffers_.prepare(bytes_to_read),
830
1037
  BOOST_ASIO_MOVE_CAST(read_until_expr_op)(*this));
831
1038
  return; default:
832
- streambuf_.commit(bytes_transferred);
1039
+ buffers_.commit(bytes_transferred);
833
1040
  if (ec || bytes_transferred == 0)
834
1041
  break;
835
1042
  }
@@ -848,85 +1055,127 @@ namespace detail
848
1055
 
849
1056
  //private:
850
1057
  AsyncReadStream& stream_;
851
- boost::asio::basic_streambuf<Allocator>& streambuf_;
1058
+ DynamicBuffer buffers_;
852
1059
  RegEx expr_;
853
1060
  int start_;
854
1061
  std::size_t search_position_;
855
1062
  ReadHandler handler_;
856
1063
  };
857
1064
 
858
- template <typename AsyncReadStream, typename Allocator,
1065
+ template <typename AsyncReadStream, typename DynamicBuffer,
859
1066
  typename RegEx, typename ReadHandler>
860
1067
  inline void* asio_handler_allocate(std::size_t size,
861
1068
  read_until_expr_op<AsyncReadStream,
862
- Allocator, RegEx, ReadHandler>* this_handler)
1069
+ DynamicBuffer, RegEx, ReadHandler>* this_handler)
863
1070
  {
864
1071
  return boost_asio_handler_alloc_helpers::allocate(
865
1072
  size, this_handler->handler_);
866
1073
  }
867
1074
 
868
- template <typename AsyncReadStream, typename Allocator,
1075
+ template <typename AsyncReadStream, typename DynamicBuffer,
869
1076
  typename RegEx, typename ReadHandler>
870
1077
  inline void asio_handler_deallocate(void* pointer, std::size_t size,
871
1078
  read_until_expr_op<AsyncReadStream,
872
- Allocator, RegEx, ReadHandler>* this_handler)
1079
+ DynamicBuffer, RegEx, ReadHandler>* this_handler)
873
1080
  {
874
1081
  boost_asio_handler_alloc_helpers::deallocate(
875
1082
  pointer, size, this_handler->handler_);
876
1083
  }
877
1084
 
878
- template <typename AsyncReadStream, typename Allocator,
1085
+ template <typename AsyncReadStream, typename DynamicBuffer,
879
1086
  typename RegEx, typename ReadHandler>
880
1087
  inline bool asio_handler_is_continuation(
881
1088
  read_until_expr_op<AsyncReadStream,
882
- Allocator, RegEx, ReadHandler>* this_handler)
1089
+ DynamicBuffer, RegEx, ReadHandler>* this_handler)
883
1090
  {
884
1091
  return this_handler->start_ == 0 ? true
885
1092
  : boost_asio_handler_cont_helpers::is_continuation(
886
1093
  this_handler->handler_);
887
1094
  }
888
1095
 
889
- template <typename Function, typename AsyncReadStream, typename Allocator,
890
- typename RegEx, typename ReadHandler>
1096
+ template <typename Function, typename AsyncReadStream,
1097
+ typename DynamicBuffer, typename RegEx, typename ReadHandler>
891
1098
  inline void asio_handler_invoke(Function& function,
892
1099
  read_until_expr_op<AsyncReadStream,
893
- Allocator, RegEx, ReadHandler>* this_handler)
1100
+ DynamicBuffer, RegEx, ReadHandler>* this_handler)
894
1101
  {
895
1102
  boost_asio_handler_invoke_helpers::invoke(
896
1103
  function, this_handler->handler_);
897
1104
  }
898
1105
 
899
- template <typename Function, typename AsyncReadStream, typename Allocator,
900
- typename RegEx, typename ReadHandler>
1106
+ template <typename Function, typename AsyncReadStream,
1107
+ typename DynamicBuffer, typename RegEx, typename ReadHandler>
901
1108
  inline void asio_handler_invoke(const Function& function,
902
1109
  read_until_expr_op<AsyncReadStream,
903
- Allocator, RegEx, ReadHandler>* this_handler)
1110
+ DynamicBuffer, RegEx, ReadHandler>* this_handler)
904
1111
  {
905
1112
  boost_asio_handler_invoke_helpers::invoke(
906
1113
  function, this_handler->handler_);
907
1114
  }
908
1115
  } // namespace detail
909
1116
 
910
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
1117
+ #if !defined(GENERATING_DOCUMENTATION)
1118
+
1119
+ template <typename AsyncReadStream, typename DynamicBuffer,
1120
+ typename RegEx, typename ReadHandler, typename Allocator>
1121
+ struct associated_allocator<
1122
+ detail::read_until_expr_op<AsyncReadStream,
1123
+ DynamicBuffer, RegEx, ReadHandler>,
1124
+ Allocator>
1125
+ {
1126
+ typedef typename associated_allocator<ReadHandler, Allocator>::type type;
1127
+
1128
+ static type get(
1129
+ const detail::read_until_expr_op<AsyncReadStream,
1130
+ DynamicBuffer, RegEx, ReadHandler>& h,
1131
+ const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
1132
+ {
1133
+ return associated_allocator<ReadHandler, Allocator>::get(h.handler_, a);
1134
+ }
1135
+ };
1136
+
1137
+ template <typename AsyncReadStream, typename DynamicBuffer,
1138
+ typename RegEx, typename ReadHandler, typename Executor>
1139
+ struct associated_executor<
1140
+ detail::read_until_expr_op<AsyncReadStream,
1141
+ DynamicBuffer, RegEx, ReadHandler>,
1142
+ Executor>
1143
+ {
1144
+ typedef typename associated_executor<ReadHandler, Executor>::type type;
1145
+
1146
+ static type get(
1147
+ const detail::read_until_expr_op<AsyncReadStream,
1148
+ DynamicBuffer, RegEx, ReadHandler>& h,
1149
+ const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
1150
+ {
1151
+ return associated_executor<ReadHandler, Executor>::get(h.handler_, ex);
1152
+ }
1153
+ };
1154
+
1155
+ #endif // !defined(GENERATING_DOCUMENTATION)
1156
+
1157
+ template <typename AsyncReadStream,
1158
+ typename DynamicBuffer, typename ReadHandler>
911
1159
  BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
912
1160
  void (boost::system::error_code, std::size_t))
913
1161
  async_read_until(AsyncReadStream& s,
914
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
1162
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1163
+ const boost::regex& expr,
915
1164
  BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
916
1165
  {
917
1166
  // If you get an error on the following line it means that your handler does
918
1167
  // not meet the documented type requirements for a ReadHandler.
919
1168
  BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
920
1169
 
921
- detail::async_result_init<
922
- ReadHandler, void (boost::system::error_code, std::size_t)> init(
923
- BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
1170
+ async_completion<ReadHandler,
1171
+ void (boost::system::error_code, std::size_t)> init(handler);
924
1172
 
925
- detail::read_until_expr_op<AsyncReadStream, Allocator,
926
- boost::regex, BOOST_ASIO_HANDLER_TYPE(ReadHandler,
927
- void (boost::system::error_code, std::size_t))>(
928
- s, b, expr, init.handler)(
929
- boost::system::error_code(), 0, 1);
1173
+ detail::read_until_expr_op<AsyncReadStream,
1174
+ typename decay<DynamicBuffer>::type,
1175
+ boost::regex, BOOST_ASIO_HANDLER_TYPE(ReadHandler,
1176
+ void (boost::system::error_code, std::size_t))>(
1177
+ s, BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
1178
+ expr, init.completion_handler)(boost::system::error_code(), 0, 1);
930
1179
 
931
1180
  return init.result.get();
932
1181
  }
@@ -935,16 +1184,17 @@ async_read_until(AsyncReadStream& s,
935
1184
 
936
1185
  namespace detail
937
1186
  {
938
- template <typename AsyncReadStream, typename Allocator,
1187
+ template <typename AsyncReadStream, typename DynamicBuffer,
939
1188
  typename MatchCondition, typename ReadHandler>
940
1189
  class read_until_match_op
941
1190
  {
942
1191
  public:
1192
+ template <typename BufferSequence>
943
1193
  read_until_match_op(AsyncReadStream& stream,
944
- boost::asio::basic_streambuf<Allocator>& streambuf,
1194
+ BOOST_ASIO_MOVE_ARG(BufferSequence) buffers,
945
1195
  MatchCondition match_condition, ReadHandler& handler)
946
1196
  : stream_(stream),
947
- streambuf_(streambuf),
1197
+ buffers_(BOOST_ASIO_MOVE_CAST(BufferSequence)(buffers)),
948
1198
  match_condition_(match_condition),
949
1199
  start_(0),
950
1200
  search_position_(0),
@@ -955,7 +1205,7 @@ namespace detail
955
1205
  #if defined(BOOST_ASIO_HAS_MOVE)
956
1206
  read_until_match_op(const read_until_match_op& other)
957
1207
  : stream_(other.stream_),
958
- streambuf_(other.streambuf_),
1208
+ buffers_(other.buffers_),
959
1209
  match_condition_(other.match_condition_),
960
1210
  start_(other.start_),
961
1211
  search_position_(other.search_position_),
@@ -965,7 +1215,7 @@ namespace detail
965
1215
 
966
1216
  read_until_match_op(read_until_match_op&& other)
967
1217
  : stream_(other.stream_),
968
- streambuf_(other.streambuf_),
1218
+ buffers_(BOOST_ASIO_MOVE_CAST(DynamicBuffer)(other.buffers_)),
969
1219
  match_condition_(other.match_condition_),
970
1220
  start_(other.start_),
971
1221
  search_position_(other.search_position_),
@@ -986,13 +1236,13 @@ namespace detail
986
1236
  {
987
1237
  {
988
1238
  // Determine the range of the data to be searched.
989
- typedef typename boost::asio::basic_streambuf<
990
- Allocator>::const_buffers_type const_buffers_type;
991
- typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
992
- const_buffers_type buffers = streambuf_.data();
993
- iterator begin = iterator::begin(buffers);
1239
+ typedef typename DynamicBuffer::const_buffers_type
1240
+ buffers_type;
1241
+ typedef buffers_iterator<buffers_type> iterator;
1242
+ buffers_type data_buffers = buffers_.data();
1243
+ iterator begin = iterator::begin(data_buffers);
994
1244
  iterator start_pos = begin + search_position_;
995
- iterator end = iterator::end(buffers);
1245
+ iterator end = iterator::end(data_buffers);
996
1246
 
997
1247
  // Look for a match.
998
1248
  std::pair<iterator, bool> result = match_condition_(start_pos, end);
@@ -1004,7 +1254,7 @@ namespace detail
1004
1254
  }
1005
1255
 
1006
1256
  // No match yet. Check if buffer is full.
1007
- else if (streambuf_.size() == streambuf_.max_size())
1257
+ else if (buffers_.size() == buffers_.max_size())
1008
1258
  {
1009
1259
  search_position_ = not_found;
1010
1260
  bytes_to_read = 0;
@@ -1025,7 +1275,11 @@ namespace detail
1025
1275
  search_position_ = end - begin;
1026
1276
  }
1027
1277
 
1028
- bytes_to_read = read_size_helper(streambuf_, 65536);
1278
+ bytes_to_read = std::min<std::size_t>(
1279
+ std::max<std::size_t>(512,
1280
+ buffers_.capacity() - buffers_.size()),
1281
+ std::min<std::size_t>(65536,
1282
+ buffers_.max_size() - buffers_.size()));
1029
1283
  }
1030
1284
  }
1031
1285
 
@@ -1034,10 +1288,10 @@ namespace detail
1034
1288
  break;
1035
1289
 
1036
1290
  // Start a new asynchronous read operation to obtain more data.
1037
- stream_.async_read_some(streambuf_.prepare(bytes_to_read),
1291
+ stream_.async_read_some(buffers_.prepare(bytes_to_read),
1038
1292
  BOOST_ASIO_MOVE_CAST(read_until_match_op)(*this));
1039
1293
  return; default:
1040
- streambuf_.commit(bytes_transferred);
1294
+ buffers_.commit(bytes_transferred);
1041
1295
  if (ec || bytes_transferred == 0)
1042
1296
  break;
1043
1297
  }
@@ -1056,71 +1310,113 @@ namespace detail
1056
1310
 
1057
1311
  //private:
1058
1312
  AsyncReadStream& stream_;
1059
- boost::asio::basic_streambuf<Allocator>& streambuf_;
1313
+ DynamicBuffer buffers_;
1060
1314
  MatchCondition match_condition_;
1061
1315
  int start_;
1062
1316
  std::size_t search_position_;
1063
1317
  ReadHandler handler_;
1064
1318
  };
1065
1319
 
1066
- template <typename AsyncReadStream, typename Allocator,
1320
+ template <typename AsyncReadStream, typename DynamicBuffer,
1067
1321
  typename MatchCondition, typename ReadHandler>
1068
1322
  inline void* asio_handler_allocate(std::size_t size,
1069
- read_until_match_op<AsyncReadStream,
1070
- Allocator, MatchCondition, ReadHandler>* this_handler)
1323
+ read_until_match_op<AsyncReadStream, DynamicBuffer,
1324
+ MatchCondition, ReadHandler>* this_handler)
1071
1325
  {
1072
1326
  return boost_asio_handler_alloc_helpers::allocate(
1073
1327
  size, this_handler->handler_);
1074
1328
  }
1075
1329
 
1076
- template <typename AsyncReadStream, typename Allocator,
1330
+ template <typename AsyncReadStream, typename DynamicBuffer,
1077
1331
  typename MatchCondition, typename ReadHandler>
1078
1332
  inline void asio_handler_deallocate(void* pointer, std::size_t size,
1079
- read_until_match_op<AsyncReadStream,
1080
- Allocator, MatchCondition, ReadHandler>* this_handler)
1333
+ read_until_match_op<AsyncReadStream, DynamicBuffer,
1334
+ MatchCondition, ReadHandler>* this_handler)
1081
1335
  {
1082
1336
  boost_asio_handler_alloc_helpers::deallocate(
1083
1337
  pointer, size, this_handler->handler_);
1084
1338
  }
1085
1339
 
1086
- template <typename AsyncReadStream, typename Allocator,
1340
+ template <typename AsyncReadStream, typename DynamicBuffer,
1087
1341
  typename MatchCondition, typename ReadHandler>
1088
1342
  inline bool asio_handler_is_continuation(
1089
- read_until_match_op<AsyncReadStream,
1090
- Allocator, MatchCondition, ReadHandler>* this_handler)
1343
+ read_until_match_op<AsyncReadStream, DynamicBuffer,
1344
+ MatchCondition, ReadHandler>* this_handler)
1091
1345
  {
1092
1346
  return this_handler->start_ == 0 ? true
1093
1347
  : boost_asio_handler_cont_helpers::is_continuation(
1094
1348
  this_handler->handler_);
1095
1349
  }
1096
1350
 
1097
- template <typename Function, typename AsyncReadStream, typename Allocator,
1098
- typename MatchCondition, typename ReadHandler>
1351
+ template <typename Function, typename AsyncReadStream,
1352
+ typename DynamicBuffer, typename MatchCondition,
1353
+ typename ReadHandler>
1099
1354
  inline void asio_handler_invoke(Function& function,
1100
- read_until_match_op<AsyncReadStream,
1101
- Allocator, MatchCondition, ReadHandler>* this_handler)
1355
+ read_until_match_op<AsyncReadStream, DynamicBuffer,
1356
+ MatchCondition, ReadHandler>* this_handler)
1102
1357
  {
1103
1358
  boost_asio_handler_invoke_helpers::invoke(
1104
1359
  function, this_handler->handler_);
1105
1360
  }
1106
1361
 
1107
- template <typename Function, typename AsyncReadStream, typename Allocator,
1108
- typename MatchCondition, typename ReadHandler>
1362
+ template <typename Function, typename AsyncReadStream,
1363
+ typename DynamicBuffer, typename MatchCondition,
1364
+ typename ReadHandler>
1109
1365
  inline void asio_handler_invoke(const Function& function,
1110
- read_until_match_op<AsyncReadStream,
1111
- Allocator, MatchCondition, ReadHandler>* this_handler)
1366
+ read_until_match_op<AsyncReadStream, DynamicBuffer,
1367
+ MatchCondition, ReadHandler>* this_handler)
1112
1368
  {
1113
1369
  boost_asio_handler_invoke_helpers::invoke(
1114
1370
  function, this_handler->handler_);
1115
1371
  }
1116
1372
  } // namespace detail
1117
1373
 
1118
- template <typename AsyncReadStream, typename Allocator,
1374
+ #if !defined(GENERATING_DOCUMENTATION)
1375
+
1376
+ template <typename AsyncReadStream, typename DynamicBuffer,
1377
+ typename MatchCondition, typename ReadHandler, typename Allocator>
1378
+ struct associated_allocator<
1379
+ detail::read_until_match_op<AsyncReadStream,
1380
+ DynamicBuffer, MatchCondition, ReadHandler>,
1381
+ Allocator>
1382
+ {
1383
+ typedef typename associated_allocator<ReadHandler, Allocator>::type type;
1384
+
1385
+ static type get(
1386
+ const detail::read_until_match_op<AsyncReadStream,
1387
+ DynamicBuffer, MatchCondition, ReadHandler>& h,
1388
+ const Allocator& a = Allocator()) BOOST_ASIO_NOEXCEPT
1389
+ {
1390
+ return associated_allocator<ReadHandler, Allocator>::get(h.handler_, a);
1391
+ }
1392
+ };
1393
+
1394
+ template <typename AsyncReadStream, typename DynamicBuffer,
1395
+ typename MatchCondition, typename ReadHandler, typename Executor>
1396
+ struct associated_executor<
1397
+ detail::read_until_match_op<AsyncReadStream,
1398
+ DynamicBuffer, MatchCondition, ReadHandler>,
1399
+ Executor>
1400
+ {
1401
+ typedef typename associated_executor<ReadHandler, Executor>::type type;
1402
+
1403
+ static type get(
1404
+ const detail::read_until_match_op<AsyncReadStream,
1405
+ DynamicBuffer, MatchCondition, ReadHandler>& h,
1406
+ const Executor& ex = Executor()) BOOST_ASIO_NOEXCEPT
1407
+ {
1408
+ return associated_executor<ReadHandler, Executor>::get(h.handler_, ex);
1409
+ }
1410
+ };
1411
+
1412
+ #endif // !defined(GENERATING_DOCUMENTATION)
1413
+
1414
+ template <typename AsyncReadStream, typename DynamicBuffer,
1119
1415
  typename MatchCondition, typename ReadHandler>
1120
1416
  BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1121
1417
  void (boost::system::error_code, std::size_t))
1122
1418
  async_read_until(AsyncReadStream& s,
1123
- boost::asio::basic_streambuf<Allocator>& b,
1419
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1124
1420
  MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
1125
1421
  typename enable_if<is_match_condition<MatchCondition>::value>::type*)
1126
1422
  {
@@ -1128,19 +1424,76 @@ async_read_until(AsyncReadStream& s,
1128
1424
  // not meet the documented type requirements for a ReadHandler.
1129
1425
  BOOST_ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
1130
1426
 
1131
- detail::async_result_init<
1132
- ReadHandler, void (boost::system::error_code, std::size_t)> init(
1133
- BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
1427
+ async_completion<ReadHandler,
1428
+ void (boost::system::error_code, std::size_t)> init(handler);
1134
1429
 
1135
- detail::read_until_match_op<AsyncReadStream, Allocator,
1136
- MatchCondition, BOOST_ASIO_HANDLER_TYPE(ReadHandler,
1137
- void (boost::system::error_code, std::size_t))>(
1138
- s, b, match_condition, init.handler)(
1139
- boost::system::error_code(), 0, 1);
1430
+ detail::read_until_match_op<AsyncReadStream,
1431
+ typename decay<DynamicBuffer>::type,
1432
+ MatchCondition, BOOST_ASIO_HANDLER_TYPE(ReadHandler,
1433
+ void (boost::system::error_code, std::size_t))>(
1434
+ s, BOOST_ASIO_MOVE_CAST(DynamicBuffer)(buffers),
1435
+ match_condition, init.completion_handler)(
1436
+ boost::system::error_code(), 0, 1);
1140
1437
 
1141
1438
  return init.result.get();
1142
1439
  }
1143
1440
 
1441
+ #if !defined(BOOST_ASIO_NO_IOSTREAM)
1442
+
1443
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
1444
+ inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1445
+ void (boost::system::error_code, std::size_t))
1446
+ async_read_until(AsyncReadStream& s,
1447
+ boost::asio::basic_streambuf<Allocator>& b,
1448
+ char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
1449
+ {
1450
+ return async_read_until(s, basic_streambuf_ref<Allocator>(b),
1451
+ delim, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
1452
+ }
1453
+
1454
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
1455
+ inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1456
+ void (boost::system::error_code, std::size_t))
1457
+ async_read_until(AsyncReadStream& s,
1458
+ boost::asio::basic_streambuf<Allocator>& b,
1459
+ BOOST_ASIO_STRING_VIEW_PARAM delim,
1460
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
1461
+ {
1462
+ return async_read_until(s, basic_streambuf_ref<Allocator>(b),
1463
+ delim, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
1464
+ }
1465
+
1466
+ #if defined(BOOST_ASIO_HAS_BOOST_REGEX)
1467
+
1468
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
1469
+ inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1470
+ void (boost::system::error_code, std::size_t))
1471
+ async_read_until(AsyncReadStream& s,
1472
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
1473
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler)
1474
+ {
1475
+ return async_read_until(s, basic_streambuf_ref<Allocator>(b),
1476
+ expr, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
1477
+ }
1478
+
1479
+ #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1480
+
1481
+ template <typename AsyncReadStream, typename Allocator,
1482
+ typename MatchCondition, typename ReadHandler>
1483
+ inline BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1484
+ void (boost::system::error_code, std::size_t))
1485
+ async_read_until(AsyncReadStream& s,
1486
+ boost::asio::basic_streambuf<Allocator>& b,
1487
+ MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
1488
+ typename enable_if<is_match_condition<MatchCondition>::value>::type*)
1489
+ {
1490
+ return async_read_until(s, basic_streambuf_ref<Allocator>(b),
1491
+ match_condition, BOOST_ASIO_MOVE_CAST(ReadHandler)(handler));
1492
+ }
1493
+
1494
+ #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
1495
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
1496
+
1144
1497
  } // namespace asio
1145
1498
  } // namespace boost
1146
1499