passenger 5.3.3 → 5.3.4

Sign up to get free protection for your applications and to get access to all the features.
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
  // 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)
@@ -16,17 +16,18 @@
16
16
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
17
 
18
18
  #include <boost/asio/detail/config.hpp>
19
-
20
- #if !defined(BOOST_ASIO_NO_IOSTREAM)
21
-
22
19
  #include <cstddef>
23
20
  #include <string>
24
21
  #include <boost/asio/async_result.hpp>
25
- #include <boost/asio/basic_streambuf.hpp>
26
22
  #include <boost/asio/detail/regex_fwd.hpp>
23
+ #include <boost/asio/detail/string_view.hpp>
27
24
  #include <boost/asio/detail/type_traits.hpp>
28
25
  #include <boost/asio/error.hpp>
29
26
 
27
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
28
+ # include <boost/asio/basic_streambuf_fwd.hpp>
29
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
30
+
30
31
  #include <boost/asio/detail/push_options.hpp>
31
32
 
32
33
  namespace boost {
@@ -67,289 +68,1221 @@ struct is_match_condition
67
68
  /**
68
69
  * @defgroup read_until boost::asio::read_until
69
70
  *
70
- * @brief Read data into a streambuf until it contains a delimiter, matches a
71
- * regular expression, or a function object indicates a match.
71
+ * @brief Read data into a dynamic buffer sequence, or into a streambuf, until
72
+ * it contains a delimiter, matches a regular expression, or a function object
73
+ * indicates a match.
72
74
  */
73
75
  /*@{*/
74
76
 
75
- /// Read data into a streambuf until it contains a specified delimiter.
77
+ /// Read data into a dynamic buffer sequence until it contains a specified
78
+ /// delimiter.
76
79
  /**
77
- * This function is used to read data into the specified streambuf until the
78
- * streambuf's get area contains the specified delimiter. The call will block
79
- * until one of the following conditions is true:
80
+ * This function is used to read data into the specified dynamic buffer
81
+ * sequence until the dynamic buffer sequence's get area contains the specified
82
+ * delimiter. The call will block until one of the following conditions is
83
+ * true:
80
84
  *
81
- * @li The get area of the streambuf contains the specified delimiter.
85
+ * @li The get area of the dynamic buffer sequence contains the specified
86
+ * delimiter.
82
87
  *
83
88
  * @li An error occurred.
84
89
  *
85
90
  * This operation is implemented in terms of zero or more calls to the stream's
86
- * read_some function. If the streambuf's get area already contains the
87
- * delimiter, the function returns immediately.
91
+ * read_some function. If the dynamic buffer sequence's get area already
92
+ * contains the delimiter, the function returns immediately.
88
93
  *
89
94
  * @param s The stream from which the data is to be read. The type must support
90
95
  * the SyncReadStream concept.
91
96
  *
92
- * @param b A streambuf object into which the data will be read.
97
+ * @param buffers The dynamic buffer sequence into which the data will be read.
93
98
  *
94
99
  * @param delim The delimiter character.
95
100
  *
96
- * @returns The number of bytes in the streambuf's get area up to and including
97
- * the delimiter.
101
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
102
+ * and including the delimiter.
98
103
  *
99
104
  * @throws boost::system::system_error Thrown on failure.
100
105
  *
101
- * @note After a successful read_until operation, the streambuf may contain
102
- * additional data beyond the delimiter. An application will typically leave
103
- * that data in the streambuf for a subsequent read_until operation to examine.
106
+ * @note After a successful read_until operation, the dynamic buffer sequence
107
+ * may contain additional data beyond the delimiter. An application will
108
+ * typically leave that data in the dynamic buffer sequence for a subsequent
109
+ * read_until operation to examine.
104
110
  *
105
111
  * @par Example
106
- * To read data into a streambuf until a newline is encountered:
107
- * @code boost::asio::streambuf b;
108
- * boost::asio::read_until(s, b, '\n');
109
- * std::istream is(&b);
110
- * std::string line;
111
- * std::getline(is, line); @endcode
112
- * After the @c read_until operation completes successfully, the buffer @c b
112
+ * To read data into a @c std::string until a newline is encountered:
113
+ * @code std::string data;
114
+ * std::string n = boost::asio::read_until(s,
115
+ * boost::asio::dynamic_buffer(data), '\n');
116
+ * std::string line = data.substr(0, n);
117
+ * data.erase(0, n); @endcode
118
+ * After the @c read_until operation completes successfully, the string @c data
113
119
  * contains the delimiter:
114
120
  * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
115
- * The call to @c std::getline then extracts the data up to and including the
121
+ * The call to @c substr then extracts the data up to and including the
116
122
  * delimiter, so that the string @c line contains:
117
123
  * @code { 'a', 'b', ..., 'c', '\n' } @endcode
118
- * The remaining data is left in the buffer @c b as follows:
124
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
125
+ * follows:
119
126
  * @code { 'd', 'e', ... } @endcode
120
127
  * This data may be the start of a new line, to be extracted by a subsequent
121
128
  * @c read_until operation.
122
129
  */
123
- template <typename SyncReadStream, typename Allocator>
130
+ template <typename SyncReadStream, typename DynamicBuffer>
124
131
  std::size_t read_until(SyncReadStream& s,
125
- boost::asio::basic_streambuf<Allocator>& b, char delim);
132
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers, char delim);
126
133
 
127
- /// Read data into a streambuf until it contains a specified delimiter.
134
+ /// Read data into a dynamic buffer sequence until it contains a specified
135
+ /// delimiter.
128
136
  /**
129
- * This function is used to read data into the specified streambuf until the
130
- * streambuf's get area contains the specified delimiter. The call will block
131
- * until one of the following conditions is true:
137
+ * This function is used to read data into the specified dynamic buffer
138
+ * sequence until the dynamic buffer sequence's get area contains the specified
139
+ * delimiter. The call will block until one of the following conditions is
140
+ * true:
132
141
  *
133
- * @li The get area of the streambuf contains the specified delimiter.
142
+ * @li The get area of the dynamic buffer sequence contains the specified
143
+ * delimiter.
134
144
  *
135
145
  * @li An error occurred.
136
146
  *
137
147
  * This operation is implemented in terms of zero or more calls to the stream's
138
- * read_some function. If the streambuf's get area already contains the
139
- * delimiter, the function returns immediately.
148
+ * read_some function. If the dynamic buffer sequence's get area already
149
+ * contains the delimiter, the function returns immediately.
140
150
  *
141
151
  * @param s The stream from which the data is to be read. The type must support
142
152
  * the SyncReadStream concept.
143
153
  *
144
- * @param b A streambuf object into which the data will be read.
154
+ * @param buffers The dynamic buffer sequence into which the data will be read.
145
155
  *
146
156
  * @param delim The delimiter character.
147
157
  *
148
158
  * @param ec Set to indicate what error occurred, if any.
149
159
  *
150
- * @returns The number of bytes in the streambuf's get area up to and including
151
- * the delimiter. Returns 0 if an error occurred.
160
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
161
+ * and including the delimiter. Returns 0 if an error occurred.
152
162
  *
153
- * @note After a successful read_until operation, the streambuf may contain
154
- * additional data beyond the delimiter. An application will typically leave
155
- * that data in the streambuf for a subsequent read_until operation to examine.
163
+ * @note After a successful read_until operation, the dynamic buffer sequence
164
+ * may contain additional data beyond the delimiter. An application will
165
+ * typically leave that data in the dynamic buffer sequence for a subsequent
166
+ * read_until operation to examine.
156
167
  */
157
- template <typename SyncReadStream, typename Allocator>
168
+ template <typename SyncReadStream, typename DynamicBuffer>
158
169
  std::size_t read_until(SyncReadStream& s,
159
- boost::asio::basic_streambuf<Allocator>& b, char delim,
160
- boost::system::error_code& ec);
170
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
171
+ char delim, boost::system::error_code& ec);
161
172
 
162
- /// Read data into a streambuf until it contains a specified delimiter.
173
+ /// Read data into a dynamic buffer sequence until it contains a specified
174
+ /// delimiter.
163
175
  /**
164
- * This function is used to read data into the specified streambuf until the
165
- * streambuf's get area contains the specified delimiter. The call will block
166
- * until one of the following conditions is true:
176
+ * This function is used to read data into the specified dynamic buffer
177
+ * sequence until the dynamic buffer sequence's get area contains the specified
178
+ * delimiter. The call will block until one of the following conditions is
179
+ * true:
167
180
  *
168
- * @li The get area of the streambuf contains the specified delimiter.
181
+ * @li The get area of the dynamic buffer sequence contains the specified
182
+ * delimiter.
169
183
  *
170
184
  * @li An error occurred.
171
185
  *
172
186
  * This operation is implemented in terms of zero or more calls to the stream's
173
- * read_some function. If the streambuf's get area already contains the
174
- * delimiter, the function returns immediately.
187
+ * read_some function. If the dynamic buffer sequence's get area already
188
+ * contains the delimiter, the function returns immediately.
175
189
  *
176
190
  * @param s The stream from which the data is to be read. The type must support
177
191
  * the SyncReadStream concept.
178
192
  *
179
- * @param b A streambuf object into which the data will be read.
193
+ * @param buffers The dynamic buffer sequence into which the data will be read.
180
194
  *
181
195
  * @param delim The delimiter string.
182
196
  *
183
- * @returns The number of bytes in the streambuf's get area up to and including
184
- * the delimiter.
185
- *
186
- * @throws boost::system::system_error Thrown on failure.
197
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
198
+ * and including the delimiter.
187
199
  *
188
- * @note After a successful read_until operation, the streambuf may contain
189
- * additional data beyond the delimiter. An application will typically leave
190
- * that data in the streambuf for a subsequent read_until operation to examine.
200
+ * @note After a successful read_until operation, the dynamic buffer sequence
201
+ * may contain additional data beyond the delimiter. An application will
202
+ * typically leave that data in the dynamic buffer sequence for a subsequent
203
+ * read_until operation to examine.
191
204
  *
192
205
  * @par Example
193
- * To read data into a streambuf until a newline is encountered:
194
- * @code boost::asio::streambuf b;
195
- * boost::asio::read_until(s, b, "\r\n");
196
- * std::istream is(&b);
197
- * std::string line;
198
- * std::getline(is, line); @endcode
199
- * After the @c read_until operation completes successfully, the buffer @c b
206
+ * To read data into a @c std::string until a CR-LF sequence is encountered:
207
+ * @code std::string data;
208
+ * std::string n = boost::asio::read_until(s,
209
+ * boost::asio::dynamic_buffer(data), "\r\n");
210
+ * std::string line = data.substr(0, n);
211
+ * data.erase(0, n); @endcode
212
+ * After the @c read_until operation completes successfully, the string @c data
200
213
  * contains the delimiter:
201
214
  * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
202
- * The call to @c std::getline then extracts the data up to and including the
215
+ * The call to @c substr then extracts the data up to and including the
203
216
  * delimiter, so that the string @c line contains:
204
217
  * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
205
- * The remaining data is left in the buffer @c b as follows:
218
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
219
+ * follows:
206
220
  * @code { 'd', 'e', ... } @endcode
207
221
  * This data may be the start of a new line, to be extracted by a subsequent
208
222
  * @c read_until operation.
209
223
  */
210
- template <typename SyncReadStream, typename Allocator>
224
+ template <typename SyncReadStream, typename DynamicBuffer>
211
225
  std::size_t read_until(SyncReadStream& s,
212
- boost::asio::basic_streambuf<Allocator>& b, const std::string& delim);
226
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
227
+ BOOST_ASIO_STRING_VIEW_PARAM delim);
213
228
 
214
- /// Read data into a streambuf until it contains a specified delimiter.
229
+ /// Read data into a dynamic buffer sequence until it contains a specified
230
+ /// delimiter.
215
231
  /**
216
- * This function is used to read data into the specified streambuf until the
217
- * streambuf's get area contains the specified delimiter. The call will block
218
- * until one of the following conditions is true:
232
+ * This function is used to read data into the specified dynamic buffer
233
+ * sequence until the dynamic buffer sequence's get area contains the specified
234
+ * delimiter. The call will block until one of the following conditions is
235
+ * true:
219
236
  *
220
- * @li The get area of the streambuf contains the specified delimiter.
237
+ * @li The get area of the dynamic buffer sequence contains the specified
238
+ * delimiter.
221
239
  *
222
240
  * @li An error occurred.
223
241
  *
224
242
  * This operation is implemented in terms of zero or more calls to the stream's
225
- * read_some function. If the streambuf's get area already contains the
226
- * delimiter, the function returns immediately.
243
+ * read_some function. If the dynamic buffer sequence's get area already
244
+ * contains the delimiter, the function returns immediately.
227
245
  *
228
246
  * @param s The stream from which the data is to be read. The type must support
229
247
  * the SyncReadStream concept.
230
248
  *
231
- * @param b A streambuf object into which the data will be read.
249
+ * @param buffers The dynamic buffer sequence into which the data will be read.
232
250
  *
233
251
  * @param delim The delimiter string.
234
252
  *
235
253
  * @param ec Set to indicate what error occurred, if any.
236
254
  *
237
- * @returns The number of bytes in the streambuf's get area up to and including
238
- * the delimiter. Returns 0 if an error occurred.
255
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
256
+ * and including the delimiter. Returns 0 if an error occurred.
239
257
  *
240
- * @note After a successful read_until operation, the streambuf may contain
241
- * additional data beyond the delimiter. An application will typically leave
242
- * that data in the streambuf for a subsequent read_until operation to examine.
258
+ * @note After a successful read_until operation, the dynamic buffer sequence
259
+ * may contain additional data beyond the delimiter. An application will
260
+ * typically leave that data in the dynamic buffer sequence for a subsequent
261
+ * read_until operation to examine.
243
262
  */
244
- template <typename SyncReadStream, typename Allocator>
263
+ template <typename SyncReadStream, typename DynamicBuffer>
245
264
  std::size_t read_until(SyncReadStream& s,
246
- boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
265
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
266
+ BOOST_ASIO_STRING_VIEW_PARAM delim,
247
267
  boost::system::error_code& ec);
248
268
 
269
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
249
270
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
250
271
  || defined(GENERATING_DOCUMENTATION)
251
272
 
252
- /// Read data into a streambuf until some part of the data it contains matches
253
- /// a regular expression.
273
+ /// Read data into a dynamic buffer sequence until some part of the data it
274
+ /// contains matches a regular expression.
275
+ /**
276
+ * This function is used to read data into the specified dynamic buffer
277
+ * sequence until the dynamic buffer sequence's get area contains some data
278
+ * that matches a regular expression. The call will block until one of the
279
+ * following conditions is true:
280
+ *
281
+ * @li A substring of the dynamic buffer sequence's get area matches the
282
+ * regular expression.
283
+ *
284
+ * @li An error occurred.
285
+ *
286
+ * This operation is implemented in terms of zero or more calls to the stream's
287
+ * read_some function. If the dynamic buffer sequence's get area already
288
+ * contains data that matches the regular expression, the function returns
289
+ * immediately.
290
+ *
291
+ * @param s The stream from which the data is to be read. The type must support
292
+ * the SyncReadStream concept.
293
+ *
294
+ * @param buffers A dynamic buffer sequence into which the data will be read.
295
+ *
296
+ * @param expr The regular expression.
297
+ *
298
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
299
+ * and including the substring that matches the regular expression.
300
+ *
301
+ * @throws boost::system::system_error Thrown on failure.
302
+ *
303
+ * @note After a successful read_until operation, the dynamic buffer sequence
304
+ * may contain additional data beyond that which matched the regular
305
+ * expression. An application will typically leave that data in the dynamic
306
+ * buffer sequence for a subsequent read_until operation to examine.
307
+ *
308
+ * @par Example
309
+ * To read data into a @c std::string until a CR-LF sequence is encountered:
310
+ * @code std::string data;
311
+ * std::string n = boost::asio::read_until(s,
312
+ * boost::asio::dynamic_buffer(data), boost::regex("\r\n"));
313
+ * std::string line = data.substr(0, n);
314
+ * data.erase(0, n); @endcode
315
+ * After the @c read_until operation completes successfully, the string @c data
316
+ * contains the delimiter:
317
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
318
+ * The call to @c substr then extracts the data up to and including the
319
+ * delimiter, so that the string @c line contains:
320
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
321
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
322
+ * follows:
323
+ * @code { 'd', 'e', ... } @endcode
324
+ * This data may be the start of a new line, to be extracted by a subsequent
325
+ * @c read_until operation.
326
+ */
327
+ template <typename SyncReadStream, typename DynamicBuffer>
328
+ std::size_t read_until(SyncReadStream& s,
329
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
330
+ const boost::regex& expr);
331
+
332
+ /// Read data into a dynamic buffer sequence until some part of the data it
333
+ /// contains matches a regular expression.
334
+ /**
335
+ * This function is used to read data into the specified dynamic buffer
336
+ * sequence until the dynamic buffer sequence's get area contains some data
337
+ * that matches a regular expression. The call will block until one of the
338
+ * following conditions is true:
339
+ *
340
+ * @li A substring of the dynamic buffer sequence's get area matches the
341
+ * regular expression.
342
+ *
343
+ * @li An error occurred.
344
+ *
345
+ * This operation is implemented in terms of zero or more calls to the stream's
346
+ * read_some function. If the dynamic buffer sequence's get area already
347
+ * contains data that matches the regular expression, the function returns
348
+ * immediately.
349
+ *
350
+ * @param s The stream from which the data is to be read. The type must support
351
+ * the SyncReadStream concept.
352
+ *
353
+ * @param buffers A dynamic buffer sequence into which the data will be read.
354
+ *
355
+ * @param expr The regular expression.
356
+ *
357
+ * @param ec Set to indicate what error occurred, if any.
358
+ *
359
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
360
+ * and including the substring that matches the regular expression. Returns 0
361
+ * if an error occurred.
362
+ *
363
+ * @note After a successful read_until operation, the dynamic buffer sequence
364
+ * may contain additional data beyond that which matched the regular
365
+ * expression. An application will typically leave that data in the dynamic
366
+ * buffer sequence for a subsequent read_until operation to examine.
367
+ */
368
+ template <typename SyncReadStream, typename DynamicBuffer>
369
+ std::size_t read_until(SyncReadStream& s,
370
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
371
+ const boost::regex& expr, boost::system::error_code& ec);
372
+
373
+ #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
374
+ // || defined(GENERATING_DOCUMENTATION)
375
+
376
+ /// Read data into a dynamic buffer sequence until a function object indicates a
377
+ /// match.
378
+
379
+ /**
380
+ * This function is used to read data into the specified dynamic buffer
381
+ * sequence until a user-defined match condition function object, when applied
382
+ * to the data contained in the dynamic buffer sequence, indicates a successful
383
+ * match. The call will block until one of the following conditions is true:
384
+ *
385
+ * @li The match condition function object returns a std::pair where the second
386
+ * element evaluates to true.
387
+ *
388
+ * @li An error occurred.
389
+ *
390
+ * This operation is implemented in terms of zero or more calls to the stream's
391
+ * read_some function. If the match condition function object already indicates
392
+ * a match, the function returns immediately.
393
+ *
394
+ * @param s The stream from which the data is to be read. The type must support
395
+ * the SyncReadStream concept.
396
+ *
397
+ * @param buffers A dynamic buffer sequence into which the data will be read.
398
+ *
399
+ * @param match_condition The function object to be called to determine whether
400
+ * a match exists. The signature of the function object must be:
401
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
402
+ * @endcode
403
+ * where @c iterator represents the type:
404
+ * @code buffers_iterator<typename DynamicBuffer::const_buffers_type>
405
+ * @endcode
406
+ * The iterator parameters @c begin and @c end define the range of bytes to be
407
+ * scanned to determine whether there is a match. The @c first member of the
408
+ * return value is an iterator marking one-past-the-end of the bytes that have
409
+ * been consumed by the match function. This iterator is used to calculate the
410
+ * @c begin parameter for any subsequent invocation of the match condition. The
411
+ * @c second member of the return value is true if a match has been found, false
412
+ * otherwise.
413
+ *
414
+ * @returns The number of bytes in the dynamic_buffer's get area that
415
+ * have been fully consumed by the match function.
416
+ *
417
+ * @throws boost::system::system_error Thrown on failure.
418
+ *
419
+ * @note After a successful read_until operation, the dynamic buffer sequence
420
+ * may contain additional data beyond that which matched the function object.
421
+ * An application will typically leave that data in the dynamic buffer sequence
422
+ * for a subsequent read_until operation to examine.
423
+
424
+ * @note The default implementation of the @c is_match_condition type trait
425
+ * evaluates to true for function pointers and function objects with a
426
+ * @c result_type typedef. It must be specialised for other user-defined
427
+ * function objects.
428
+ *
429
+ * @par Examples
430
+ * To read data into a dynamic buffer sequence until whitespace is encountered:
431
+ * @code typedef boost::asio::buffers_iterator<
432
+ * boost::asio::const_buffers_1> iterator;
433
+ *
434
+ * std::pair<iterator, bool>
435
+ * match_whitespace(iterator begin, iterator end)
436
+ * {
437
+ * iterator i = begin;
438
+ * while (i != end)
439
+ * if (std::isspace(*i++))
440
+ * return std::make_pair(i, true);
441
+ * return std::make_pair(i, false);
442
+ * }
443
+ * ...
444
+ * std::string data;
445
+ * boost::asio::read_until(s, data, match_whitespace);
446
+ * @endcode
447
+ *
448
+ * To read data into a @c std::string until a matching character is found:
449
+ * @code class match_char
450
+ * {
451
+ * public:
452
+ * explicit match_char(char c) : c_(c) {}
453
+ *
454
+ * template <typename Iterator>
455
+ * std::pair<Iterator, bool> operator()(
456
+ * Iterator begin, Iterator end) const
457
+ * {
458
+ * Iterator i = begin;
459
+ * while (i != end)
460
+ * if (c_ == *i++)
461
+ * return std::make_pair(i, true);
462
+ * return std::make_pair(i, false);
463
+ * }
464
+ *
465
+ * private:
466
+ * char c_;
467
+ * };
468
+ *
469
+ * namespace asio {
470
+ * template <> struct is_match_condition<match_char>
471
+ * : public boost::true_type {};
472
+ * } // namespace asio
473
+ * ...
474
+ * std::string data;
475
+ * boost::asio::read_until(s, data, match_char('a'));
476
+ * @endcode
477
+ */
478
+ template <typename SyncReadStream,
479
+ typename DynamicBuffer, typename MatchCondition>
480
+ std::size_t read_until(SyncReadStream& s,
481
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
482
+ MatchCondition match_condition,
483
+ typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
484
+
485
+ /// Read data into a dynamic buffer sequence until a function object indicates a
486
+ /// match.
487
+ /**
488
+ * This function is used to read data into the specified dynamic buffer
489
+ * sequence until a user-defined match condition function object, when applied
490
+ * to the data contained in the dynamic buffer sequence, indicates a successful
491
+ * match. The call will block until one of the following conditions is true:
492
+ *
493
+ * @li The match condition function object returns a std::pair where the second
494
+ * element evaluates to true.
495
+ *
496
+ * @li An error occurred.
497
+ *
498
+ * This operation is implemented in terms of zero or more calls to the stream's
499
+ * read_some function. If the match condition function object already indicates
500
+ * a match, the function returns immediately.
501
+ *
502
+ * @param s The stream from which the data is to be read. The type must support
503
+ * the SyncReadStream concept.
504
+ *
505
+ * @param buffers A dynamic buffer sequence into which the data will be read.
506
+ *
507
+ * @param match_condition The function object to be called to determine whether
508
+ * a match exists. The signature of the function object must be:
509
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
510
+ * @endcode
511
+ * where @c iterator represents the type:
512
+ * @code buffers_iterator<DynamicBuffer::const_buffers_type>
513
+ * @endcode
514
+ * The iterator parameters @c begin and @c end define the range of bytes to be
515
+ * scanned to determine whether there is a match. The @c first member of the
516
+ * return value is an iterator marking one-past-the-end of the bytes that have
517
+ * been consumed by the match function. This iterator is used to calculate the
518
+ * @c begin parameter for any subsequent invocation of the match condition. The
519
+ * @c second member of the return value is true if a match has been found, false
520
+ * otherwise.
521
+ *
522
+ * @param ec Set to indicate what error occurred, if any.
523
+ *
524
+ * @returns The number of bytes in the dynamic buffer sequence's get area that
525
+ * have been fully consumed by the match function. Returns 0 if an error
526
+ * occurred.
527
+ *
528
+ * @note After a successful read_until operation, the dynamic buffer sequence
529
+ * may contain additional data beyond that which matched the function object.
530
+ * An application will typically leave that data in the dynamic buffer sequence
531
+ * for a subsequent read_until operation to examine.
532
+ *
533
+ * @note The default implementation of the @c is_match_condition type trait
534
+ * evaluates to true for function pointers and function objects with a
535
+ * @c result_type typedef. It must be specialised for other user-defined
536
+ * function objects.
537
+ */
538
+ template <typename SyncReadStream,
539
+ typename DynamicBuffer, typename MatchCondition>
540
+ std::size_t read_until(SyncReadStream& s,
541
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
542
+ MatchCondition match_condition, boost::system::error_code& ec,
543
+ typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
544
+
545
+ #if !defined(BOOST_ASIO_NO_IOSTREAM)
546
+
547
+ /// Read data into a streambuf until it contains a specified delimiter.
548
+ /**
549
+ * This function is used to read data into the specified streambuf until the
550
+ * streambuf's get area contains the specified delimiter. The call will block
551
+ * until one of the following conditions is true:
552
+ *
553
+ * @li The get area of the streambuf contains the specified delimiter.
554
+ *
555
+ * @li An error occurred.
556
+ *
557
+ * This operation is implemented in terms of zero or more calls to the stream's
558
+ * read_some function. If the streambuf's get area already contains the
559
+ * delimiter, the function returns immediately.
560
+ *
561
+ * @param s The stream from which the data is to be read. The type must support
562
+ * the SyncReadStream concept.
563
+ *
564
+ * @param b A streambuf object into which the data will be read.
565
+ *
566
+ * @param delim The delimiter character.
567
+ *
568
+ * @returns The number of bytes in the streambuf's get area up to and including
569
+ * the delimiter.
570
+ *
571
+ * @throws boost::system::system_error Thrown on failure.
572
+ *
573
+ * @note After a successful read_until operation, the streambuf may contain
574
+ * additional data beyond the delimiter. An application will typically leave
575
+ * that data in the streambuf for a subsequent read_until operation to examine.
576
+ *
577
+ * @par Example
578
+ * To read data into a streambuf until a newline is encountered:
579
+ * @code boost::asio::streambuf b;
580
+ * boost::asio::read_until(s, b, '\n');
581
+ * std::istream is(&b);
582
+ * std::string line;
583
+ * std::getline(is, line); @endcode
584
+ * After the @c read_until operation completes successfully, the buffer @c b
585
+ * contains the delimiter:
586
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
587
+ * The call to @c std::getline then extracts the data up to and including the
588
+ * newline (which is discarded), so that the string @c line contains:
589
+ * @code { 'a', 'b', ..., 'c' } @endcode
590
+ * The remaining data is left in the buffer @c b as follows:
591
+ * @code { 'd', 'e', ... } @endcode
592
+ * This data may be the start of a new line, to be extracted by a subsequent
593
+ * @c read_until operation.
594
+ */
595
+ template <typename SyncReadStream, typename Allocator>
596
+ std::size_t read_until(SyncReadStream& s,
597
+ boost::asio::basic_streambuf<Allocator>& b, char delim);
598
+
599
+ /// Read data into a streambuf until it contains a specified delimiter.
600
+ /**
601
+ * This function is used to read data into the specified streambuf until the
602
+ * streambuf's get area contains the specified delimiter. The call will block
603
+ * until one of the following conditions is true:
604
+ *
605
+ * @li The get area of the streambuf contains the specified delimiter.
606
+ *
607
+ * @li An error occurred.
608
+ *
609
+ * This operation is implemented in terms of zero or more calls to the stream's
610
+ * read_some function. If the streambuf's get area already contains the
611
+ * delimiter, the function returns immediately.
612
+ *
613
+ * @param s The stream from which the data is to be read. The type must support
614
+ * the SyncReadStream concept.
615
+ *
616
+ * @param b A streambuf object into which the data will be read.
617
+ *
618
+ * @param delim The delimiter character.
619
+ *
620
+ * @param ec Set to indicate what error occurred, if any.
621
+ *
622
+ * @returns The number of bytes in the streambuf's get area up to and including
623
+ * the delimiter. Returns 0 if an error occurred.
624
+ *
625
+ * @note After a successful read_until operation, the streambuf may contain
626
+ * additional data beyond the delimiter. An application will typically leave
627
+ * that data in the streambuf for a subsequent read_until operation to examine.
628
+ */
629
+ template <typename SyncReadStream, typename Allocator>
630
+ std::size_t read_until(SyncReadStream& s,
631
+ boost::asio::basic_streambuf<Allocator>& b, char delim,
632
+ boost::system::error_code& ec);
633
+
634
+ /// Read data into a streambuf until it contains a specified delimiter.
635
+ /**
636
+ * This function is used to read data into the specified streambuf until the
637
+ * streambuf's get area contains the specified delimiter. The call will block
638
+ * until one of the following conditions is true:
639
+ *
640
+ * @li The get area of the streambuf contains the specified delimiter.
641
+ *
642
+ * @li An error occurred.
643
+ *
644
+ * This operation is implemented in terms of zero or more calls to the stream's
645
+ * read_some function. If the streambuf's get area already contains the
646
+ * delimiter, the function returns immediately.
647
+ *
648
+ * @param s The stream from which the data is to be read. The type must support
649
+ * the SyncReadStream concept.
650
+ *
651
+ * @param b A streambuf object into which the data will be read.
652
+ *
653
+ * @param delim The delimiter string.
654
+ *
655
+ * @returns The number of bytes in the streambuf's get area up to and including
656
+ * the delimiter.
657
+ *
658
+ * @throws boost::system::system_error Thrown on failure.
659
+ *
660
+ * @note After a successful read_until operation, the streambuf may contain
661
+ * additional data beyond the delimiter. An application will typically leave
662
+ * that data in the streambuf for a subsequent read_until operation to examine.
663
+ *
664
+ * @par Example
665
+ * To read data into a streambuf until a newline is encountered:
666
+ * @code boost::asio::streambuf b;
667
+ * boost::asio::read_until(s, b, "\r\n");
668
+ * std::istream is(&b);
669
+ * std::string line;
670
+ * std::getline(is, line); @endcode
671
+ * After the @c read_until operation completes successfully, the buffer @c b
672
+ * contains the delimiter:
673
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
674
+ * The call to @c std::getline then extracts the data up to and including the
675
+ * newline (which is discarded), so that the string @c line contains:
676
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
677
+ * The remaining data is left in the buffer @c b as follows:
678
+ * @code { 'd', 'e', ... } @endcode
679
+ * This data may be the start of a new line, to be extracted by a subsequent
680
+ * @c read_until operation.
681
+ */
682
+ template <typename SyncReadStream, typename Allocator>
683
+ std::size_t read_until(SyncReadStream& s,
684
+ boost::asio::basic_streambuf<Allocator>& b,
685
+ BOOST_ASIO_STRING_VIEW_PARAM delim);
686
+
687
+ /// Read data into a streambuf until it contains a specified delimiter.
688
+ /**
689
+ * This function is used to read data into the specified streambuf until the
690
+ * streambuf's get area contains the specified delimiter. The call will block
691
+ * until one of the following conditions is true:
692
+ *
693
+ * @li The get area of the streambuf contains the specified delimiter.
694
+ *
695
+ * @li An error occurred.
696
+ *
697
+ * This operation is implemented in terms of zero or more calls to the stream's
698
+ * read_some function. If the streambuf's get area already contains the
699
+ * delimiter, the function returns immediately.
700
+ *
701
+ * @param s The stream from which the data is to be read. The type must support
702
+ * the SyncReadStream concept.
703
+ *
704
+ * @param b A streambuf object into which the data will be read.
705
+ *
706
+ * @param delim The delimiter string.
707
+ *
708
+ * @param ec Set to indicate what error occurred, if any.
709
+ *
710
+ * @returns The number of bytes in the streambuf's get area up to and including
711
+ * the delimiter. Returns 0 if an error occurred.
712
+ *
713
+ * @note After a successful read_until operation, the streambuf may contain
714
+ * additional data beyond the delimiter. An application will typically leave
715
+ * that data in the streambuf for a subsequent read_until operation to examine.
716
+ */
717
+ template <typename SyncReadStream, typename Allocator>
718
+ std::size_t read_until(SyncReadStream& s,
719
+ boost::asio::basic_streambuf<Allocator>& b,
720
+ BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec);
721
+
722
+ #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
723
+ || defined(GENERATING_DOCUMENTATION)
724
+
725
+ /// Read data into a streambuf until some part of the data it contains matches
726
+ /// a regular expression.
727
+ /**
728
+ * This function is used to read data into the specified streambuf until the
729
+ * streambuf's get area contains some data that matches a regular expression.
730
+ * The call will block until one of the following conditions is true:
731
+ *
732
+ * @li A substring of the streambuf's get area matches the regular expression.
733
+ *
734
+ * @li An error occurred.
735
+ *
736
+ * This operation is implemented in terms of zero or more calls to the stream's
737
+ * read_some function. If the streambuf's get area already contains data that
738
+ * matches the regular expression, the function returns immediately.
739
+ *
740
+ * @param s The stream from which the data is to be read. The type must support
741
+ * the SyncReadStream concept.
742
+ *
743
+ * @param b A streambuf object into which the data will be read.
744
+ *
745
+ * @param expr The regular expression.
746
+ *
747
+ * @returns The number of bytes in the streambuf's get area up to and including
748
+ * the substring that matches the regular expression.
749
+ *
750
+ * @throws boost::system::system_error Thrown on failure.
751
+ *
752
+ * @note After a successful read_until operation, the streambuf may contain
753
+ * additional data beyond that which matched the regular expression. An
754
+ * application will typically leave that data in the streambuf for a subsequent
755
+ * read_until operation to examine.
756
+ *
757
+ * @par Example
758
+ * To read data into a streambuf until a CR-LF sequence is encountered:
759
+ * @code boost::asio::streambuf b;
760
+ * boost::asio::read_until(s, b, boost::regex("\r\n"));
761
+ * std::istream is(&b);
762
+ * std::string line;
763
+ * std::getline(is, line); @endcode
764
+ * After the @c read_until operation completes successfully, the buffer @c b
765
+ * contains the data which matched the regular expression:
766
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
767
+ * The call to @c std::getline then extracts the data up to and including the
768
+ * newline (which is discarded), so that the string @c line contains:
769
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
770
+ * The remaining data is left in the buffer @c b as follows:
771
+ * @code { 'd', 'e', ... } @endcode
772
+ * This data may be the start of a new line, to be extracted by a subsequent
773
+ * @c read_until operation.
774
+ */
775
+ template <typename SyncReadStream, typename Allocator>
776
+ std::size_t read_until(SyncReadStream& s,
777
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
778
+
779
+ /// Read data into a streambuf until some part of the data it contains matches
780
+ /// a regular expression.
781
+ /**
782
+ * This function is used to read data into the specified streambuf until the
783
+ * streambuf's get area contains some data that matches a regular expression.
784
+ * The call will block until one of the following conditions is true:
785
+ *
786
+ * @li A substring of the streambuf's get area matches the regular expression.
787
+ *
788
+ * @li An error occurred.
789
+ *
790
+ * This operation is implemented in terms of zero or more calls to the stream's
791
+ * read_some function. If the streambuf's get area already contains data that
792
+ * matches the regular expression, the function returns immediately.
793
+ *
794
+ * @param s The stream from which the data is to be read. The type must support
795
+ * the SyncReadStream concept.
796
+ *
797
+ * @param b A streambuf object into which the data will be read.
798
+ *
799
+ * @param expr The regular expression.
800
+ *
801
+ * @param ec Set to indicate what error occurred, if any.
802
+ *
803
+ * @returns The number of bytes in the streambuf's get area up to and including
804
+ * the substring that matches the regular expression. Returns 0 if an error
805
+ * occurred.
806
+ *
807
+ * @note After a successful read_until operation, the streambuf may contain
808
+ * additional data beyond that which matched the regular expression. An
809
+ * application will typically leave that data in the streambuf for a subsequent
810
+ * read_until operation to examine.
811
+ */
812
+ template <typename SyncReadStream, typename Allocator>
813
+ std::size_t read_until(SyncReadStream& s,
814
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
815
+ boost::system::error_code& ec);
816
+
817
+ #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
818
+ // || defined(GENERATING_DOCUMENTATION)
819
+
820
+ /// Read data into a streambuf until a function object indicates a match.
821
+ /**
822
+ * This function is used to read data into the specified streambuf until a
823
+ * user-defined match condition function object, when applied to the data
824
+ * contained in the streambuf, indicates a successful match. The call will
825
+ * block until one of the following conditions is true:
826
+ *
827
+ * @li The match condition function object returns a std::pair where the second
828
+ * element evaluates to true.
829
+ *
830
+ * @li An error occurred.
831
+ *
832
+ * This operation is implemented in terms of zero or more calls to the stream's
833
+ * read_some function. If the match condition function object already indicates
834
+ * a match, the function returns immediately.
835
+ *
836
+ * @param s The stream from which the data is to be read. The type must support
837
+ * the SyncReadStream concept.
838
+ *
839
+ * @param b A streambuf object into which the data will be read.
840
+ *
841
+ * @param match_condition The function object to be called to determine whether
842
+ * a match exists. The signature of the function object must be:
843
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
844
+ * @endcode
845
+ * where @c iterator represents the type:
846
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
847
+ * @endcode
848
+ * The iterator parameters @c begin and @c end define the range of bytes to be
849
+ * scanned to determine whether there is a match. The @c first member of the
850
+ * return value is an iterator marking one-past-the-end of the bytes that have
851
+ * been consumed by the match function. This iterator is used to calculate the
852
+ * @c begin parameter for any subsequent invocation of the match condition. The
853
+ * @c second member of the return value is true if a match has been found, false
854
+ * otherwise.
855
+ *
856
+ * @returns The number of bytes in the streambuf's get area that have been fully
857
+ * consumed by the match function.
858
+ *
859
+ * @throws boost::system::system_error Thrown on failure.
860
+ *
861
+ * @note After a successful read_until operation, the streambuf may contain
862
+ * additional data beyond that which matched the function object. An application
863
+ * will typically leave that data in the streambuf for a subsequent read_until
864
+ * operation to examine.
865
+ *
866
+ * @note The default implementation of the @c is_match_condition type trait
867
+ * evaluates to true for function pointers and function objects with a
868
+ * @c result_type typedef. It must be specialised for other user-defined
869
+ * function objects.
870
+ *
871
+ * @par Examples
872
+ * To read data into a streambuf until whitespace is encountered:
873
+ * @code typedef boost::asio::buffers_iterator<
874
+ * boost::asio::streambuf::const_buffers_type> iterator;
875
+ *
876
+ * std::pair<iterator, bool>
877
+ * match_whitespace(iterator begin, iterator end)
878
+ * {
879
+ * iterator i = begin;
880
+ * while (i != end)
881
+ * if (std::isspace(*i++))
882
+ * return std::make_pair(i, true);
883
+ * return std::make_pair(i, false);
884
+ * }
885
+ * ...
886
+ * boost::asio::streambuf b;
887
+ * boost::asio::read_until(s, b, match_whitespace);
888
+ * @endcode
889
+ *
890
+ * To read data into a streambuf until a matching character is found:
891
+ * @code class match_char
892
+ * {
893
+ * public:
894
+ * explicit match_char(char c) : c_(c) {}
895
+ *
896
+ * template <typename Iterator>
897
+ * std::pair<Iterator, bool> operator()(
898
+ * Iterator begin, Iterator end) const
899
+ * {
900
+ * Iterator i = begin;
901
+ * while (i != end)
902
+ * if (c_ == *i++)
903
+ * return std::make_pair(i, true);
904
+ * return std::make_pair(i, false);
905
+ * }
906
+ *
907
+ * private:
908
+ * char c_;
909
+ * };
910
+ *
911
+ * namespace asio {
912
+ * template <> struct is_match_condition<match_char>
913
+ * : public boost::true_type {};
914
+ * } // namespace asio
915
+ * ...
916
+ * boost::asio::streambuf b;
917
+ * boost::asio::read_until(s, b, match_char('a'));
918
+ * @endcode
919
+ */
920
+ template <typename SyncReadStream, typename Allocator, typename MatchCondition>
921
+ std::size_t read_until(SyncReadStream& s,
922
+ boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
923
+ typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
924
+
925
+ /// Read data into a streambuf until a function object indicates a match.
926
+ /**
927
+ * This function is used to read data into the specified streambuf until a
928
+ * user-defined match condition function object, when applied to the data
929
+ * contained in the streambuf, indicates a successful match. The call will
930
+ * block until one of the following conditions is true:
931
+ *
932
+ * @li The match condition function object returns a std::pair where the second
933
+ * element evaluates to true.
934
+ *
935
+ * @li An error occurred.
936
+ *
937
+ * This operation is implemented in terms of zero or more calls to the stream's
938
+ * read_some function. If the match condition function object already indicates
939
+ * a match, the function returns immediately.
940
+ *
941
+ * @param s The stream from which the data is to be read. The type must support
942
+ * the SyncReadStream concept.
943
+ *
944
+ * @param b A streambuf object into which the data will be read.
945
+ *
946
+ * @param match_condition The function object to be called to determine whether
947
+ * a match exists. The signature of the function object must be:
948
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
949
+ * @endcode
950
+ * where @c iterator represents the type:
951
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
952
+ * @endcode
953
+ * The iterator parameters @c begin and @c end define the range of bytes to be
954
+ * scanned to determine whether there is a match. The @c first member of the
955
+ * return value is an iterator marking one-past-the-end of the bytes that have
956
+ * been consumed by the match function. This iterator is used to calculate the
957
+ * @c begin parameter for any subsequent invocation of the match condition. The
958
+ * @c second member of the return value is true if a match has been found, false
959
+ * otherwise.
960
+ *
961
+ * @param ec Set to indicate what error occurred, if any.
962
+ *
963
+ * @returns The number of bytes in the streambuf's get area that have been fully
964
+ * consumed by the match function. Returns 0 if an error occurred.
965
+ *
966
+ * @note After a successful read_until operation, the streambuf may contain
967
+ * additional data beyond that which matched the function object. An application
968
+ * will typically leave that data in the streambuf for a subsequent read_until
969
+ * operation to examine.
970
+ *
971
+ * @note The default implementation of the @c is_match_condition type trait
972
+ * evaluates to true for function pointers and function objects with a
973
+ * @c result_type typedef. It must be specialised for other user-defined
974
+ * function objects.
975
+ */
976
+ template <typename SyncReadStream, typename Allocator, typename MatchCondition>
977
+ std::size_t read_until(SyncReadStream& s,
978
+ boost::asio::basic_streambuf<Allocator>& b,
979
+ MatchCondition match_condition, boost::system::error_code& ec,
980
+ typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
981
+
982
+ #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
983
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
984
+
985
+ /*@}*/
986
+ /**
987
+ * @defgroup async_read_until boost::asio::async_read_until
988
+ *
989
+ * @brief Start an asynchronous operation to read data into a dynamic buffer
990
+ * sequence, or into a streambuf, until it contains a delimiter, matches a
991
+ * regular expression, or a function object indicates a match.
992
+ */
993
+ /*@{*/
994
+
995
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
996
+ /// until it contains a specified delimiter.
997
+ /**
998
+ * This function is used to asynchronously read data into the specified dynamic
999
+ * buffer sequence until the dynamic buffer sequence's get area contains the
1000
+ * specified delimiter. The function call always returns immediately. The
1001
+ * asynchronous operation will continue until one of the following conditions
1002
+ * is true:
1003
+ *
1004
+ * @li The get area of the dynamic buffer sequence contains the specified
1005
+ * delimiter.
1006
+ *
1007
+ * @li An error occurred.
1008
+ *
1009
+ * This operation is implemented in terms of zero or more calls to the stream's
1010
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1011
+ * the dynamic buffer sequence's get area already contains the delimiter, this
1012
+ * asynchronous operation completes immediately. The program must ensure that
1013
+ * the stream performs no other read operations (such as async_read,
1014
+ * async_read_until, the stream's async_read_some function, or any other
1015
+ * composed operations that perform reads) until this operation completes.
1016
+ *
1017
+ * @param s The stream from which the data is to be read. The type must support
1018
+ * the AsyncReadStream concept.
1019
+ *
1020
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1021
+ * Although the buffers object may be copied as necessary, ownership of the
1022
+ * underlying memory blocks is retained by the caller, which must guarantee
1023
+ * that they remain valid until the handler is called.
1024
+ *
1025
+ * @param delim The delimiter character.
1026
+ *
1027
+ * @param handler The handler to be called when the read operation completes.
1028
+ * Copies will be made of the handler as required. The function signature of the
1029
+ * handler must be:
1030
+ * @code void handler(
1031
+ * // Result of operation.
1032
+ * const boost::system::error_code& error,
1033
+ *
1034
+ * // The number of bytes in the dynamic buffer sequence's
1035
+ * // get area up to and including the delimiter.
1036
+ * // 0 if an error occurred.
1037
+ * std::size_t bytes_transferred
1038
+ * ); @endcode
1039
+ * Regardless of whether the asynchronous operation completes immediately or
1040
+ * not, the handler will not be invoked from within this function. Invocation of
1041
+ * the handler will be performed in a manner equivalent to using
1042
+ * boost::asio::io_context::post().
1043
+ *
1044
+ * @note After a successful async_read_until operation, the dynamic buffer
1045
+ * sequence may contain additional data beyond the delimiter. An application
1046
+ * will typically leave that data in the dynamic buffer sequence for a
1047
+ * subsequent async_read_until operation to examine.
1048
+ *
1049
+ * @par Example
1050
+ * To asynchronously read data into a @c std::string until a newline is
1051
+ * encountered:
1052
+ * @code std::string data;
1053
+ * ...
1054
+ * void handler(const boost::system::error_code& e, std::size_t size)
1055
+ * {
1056
+ * if (!e)
1057
+ * {
1058
+ * std::string line = data.substr(0, n);
1059
+ * data.erase(0, n);
1060
+ * ...
1061
+ * }
1062
+ * }
1063
+ * ...
1064
+ * boost::asio::async_read_until(s, data, '\n', handler); @endcode
1065
+ * After the @c async_read_until operation completes successfully, the buffer
1066
+ * @c data contains the delimiter:
1067
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
1068
+ * The call to @c substr then extracts the data up to and including the
1069
+ * delimiter, so that the string @c line contains:
1070
+ * @code { 'a', 'b', ..., 'c', '\n' } @endcode
1071
+ * After the call to @c erase, the remaining data is left in the buffer @c data
1072
+ * as follows:
1073
+ * @code { 'd', 'e', ... } @endcode
1074
+ * This data may be the start of a new line, to be extracted by a subsequent
1075
+ * @c async_read_until operation.
1076
+ */
1077
+ template <typename AsyncReadStream,
1078
+ typename DynamicBuffer, typename ReadHandler>
1079
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1080
+ void (boost::system::error_code, std::size_t))
1081
+ async_read_until(AsyncReadStream& s,
1082
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1083
+ char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
1084
+
1085
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1086
+ /// until it contains a specified delimiter.
254
1087
  /**
255
- * This function is used to read data into the specified streambuf until the
256
- * streambuf's get area contains some data that matches a regular expression.
257
- * The call will block until one of the following conditions is true:
1088
+ * This function is used to asynchronously read data into the specified dynamic
1089
+ * buffer sequence until the dynamic buffer sequence's get area contains the
1090
+ * specified delimiter. The function call always returns immediately. The
1091
+ * asynchronous operation will continue until one of the following conditions
1092
+ * is true:
258
1093
  *
259
- * @li A substring of the streambuf's get area matches the regular expression.
1094
+ * @li The get area of the dynamic buffer sequence contains the specified
1095
+ * delimiter.
260
1096
  *
261
1097
  * @li An error occurred.
262
1098
  *
263
1099
  * This operation is implemented in terms of zero or more calls to the stream's
264
- * read_some function. If the streambuf's get area already contains data that
265
- * matches the regular expression, the function returns immediately.
1100
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1101
+ * the dynamic buffer sequence's get area already contains the delimiter, this
1102
+ * asynchronous operation completes immediately. The program must ensure that
1103
+ * the stream performs no other read operations (such as async_read,
1104
+ * async_read_until, the stream's async_read_some function, or any other
1105
+ * composed operations that perform reads) until this operation completes.
266
1106
  *
267
1107
  * @param s The stream from which the data is to be read. The type must support
268
- * the SyncReadStream concept.
1108
+ * the AsyncReadStream concept.
269
1109
  *
270
- * @param b A streambuf object into which the data will be read.
1110
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1111
+ * Although the buffers object may be copied as necessary, ownership of the
1112
+ * underlying memory blocks is retained by the caller, which must guarantee
1113
+ * that they remain valid until the handler is called.
271
1114
  *
272
- * @param expr The regular expression.
1115
+ * @param delim The delimiter string.
273
1116
  *
274
- * @returns The number of bytes in the streambuf's get area up to and including
275
- * the substring that matches the regular expression.
1117
+ * @param handler The handler to be called when the read operation completes.
1118
+ * Copies will be made of the handler as required. The function signature of the
1119
+ * handler must be:
1120
+ * @code void handler(
1121
+ * // Result of operation.
1122
+ * const boost::system::error_code& error,
276
1123
  *
277
- * @throws boost::system::system_error Thrown on failure.
1124
+ * // The number of bytes in the dynamic buffer sequence's
1125
+ * // get area up to and including the delimiter.
1126
+ * // 0 if an error occurred.
1127
+ * std::size_t bytes_transferred
1128
+ * ); @endcode
1129
+ * Regardless of whether the asynchronous operation completes immediately or
1130
+ * not, the handler will not be invoked from within this function. Invocation of
1131
+ * the handler will be performed in a manner equivalent to using
1132
+ * boost::asio::io_context::post().
278
1133
  *
279
- * @note After a successful read_until operation, the streambuf may contain
280
- * additional data beyond that which matched the regular expression. An
281
- * application will typically leave that data in the streambuf for a subsequent
282
- * read_until operation to examine.
1134
+ * @note After a successful async_read_until operation, the dynamic buffer
1135
+ * sequence may contain additional data beyond the delimiter. An application
1136
+ * will typically leave that data in the dynamic buffer sequence for a
1137
+ * subsequent async_read_until operation to examine.
283
1138
  *
284
1139
  * @par Example
285
- * To read data into a streambuf until a CR-LF sequence is encountered:
286
- * @code boost::asio::streambuf b;
287
- * boost::asio::read_until(s, b, boost::regex("\r\n"));
288
- * std::istream is(&b);
289
- * std::string line;
290
- * std::getline(is, line); @endcode
291
- * After the @c read_until operation completes successfully, the buffer @c b
292
- * contains the data which matched the regular expression:
1140
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
1141
+ * encountered:
1142
+ * @code std::string data;
1143
+ * ...
1144
+ * void handler(const boost::system::error_code& e, std::size_t size)
1145
+ * {
1146
+ * if (!e)
1147
+ * {
1148
+ * std::string line = data.substr(0, n);
1149
+ * data.erase(0, n);
1150
+ * ...
1151
+ * }
1152
+ * }
1153
+ * ...
1154
+ * boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
1155
+ * After the @c async_read_until operation completes successfully, the string
1156
+ * @c data contains the delimiter:
293
1157
  * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
294
- * The call to @c std::getline then extracts the data up to and including the
295
- * match, so that the string @c line contains:
1158
+ * The call to @c substr then extracts the data up to and including the
1159
+ * delimiter, so that the string @c line contains:
296
1160
  * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
297
- * The remaining data is left in the buffer @c b as follows:
1161
+ * After the call to @c erase, the remaining data is left in the string @c data
1162
+ * as follows:
298
1163
  * @code { 'd', 'e', ... } @endcode
299
1164
  * This data may be the start of a new line, to be extracted by a subsequent
300
- * @c read_until operation.
1165
+ * @c async_read_until operation.
301
1166
  */
302
- template <typename SyncReadStream, typename Allocator>
303
- std::size_t read_until(SyncReadStream& s,
304
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
1167
+ template <typename AsyncReadStream,
1168
+ typename DynamicBuffer, typename ReadHandler>
1169
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1170
+ void (boost::system::error_code, std::size_t))
1171
+ async_read_until(AsyncReadStream& s,
1172
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1173
+ BOOST_ASIO_STRING_VIEW_PARAM delim,
1174
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
305
1175
 
306
- /// Read data into a streambuf until some part of the data it contains matches
307
- /// a regular expression.
1176
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1177
+ #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
1178
+ || defined(GENERATING_DOCUMENTATION)
1179
+
1180
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1181
+ /// until some part of its data matches a regular expression.
308
1182
  /**
309
- * This function is used to read data into the specified streambuf until the
310
- * streambuf's get area contains some data that matches a regular expression.
311
- * The call will block until one of the following conditions is true:
1183
+ * This function is used to asynchronously read data into the specified dynamic
1184
+ * buffer sequence until the dynamic buffer sequence's get area contains some
1185
+ * data that matches a regular expression. The function call always returns
1186
+ * immediately. The asynchronous operation will continue until one of the
1187
+ * following conditions is true:
312
1188
  *
313
- * @li A substring of the streambuf's get area matches the regular expression.
1189
+ * @li A substring of the dynamic buffer sequence's get area matches the regular
1190
+ * expression.
314
1191
  *
315
1192
  * @li An error occurred.
316
1193
  *
317
1194
  * This operation is implemented in terms of zero or more calls to the stream's
318
- * read_some function. If the streambuf's get area already contains data that
319
- * matches the regular expression, the function returns immediately.
1195
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1196
+ * the dynamic buffer sequence's get area already contains data that matches
1197
+ * the regular expression, this asynchronous operation completes immediately.
1198
+ * The program must ensure that the stream performs no other read operations
1199
+ * (such as async_read, async_read_until, the stream's async_read_some
1200
+ * function, or any other composed operations that perform reads) until this
1201
+ * operation completes.
320
1202
  *
321
1203
  * @param s The stream from which the data is to be read. The type must support
322
- * the SyncReadStream concept.
1204
+ * the AsyncReadStream concept.
323
1205
  *
324
- * @param b A streambuf object into which the data will be read.
1206
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1207
+ * Although the buffers object may be copied as necessary, ownership of the
1208
+ * underlying memory blocks is retained by the caller, which must guarantee
1209
+ * that they remain valid until the handler is called.
325
1210
  *
326
1211
  * @param expr The regular expression.
327
1212
  *
328
- * @param ec Set to indicate what error occurred, if any.
1213
+ * @param handler The handler to be called when the read operation completes.
1214
+ * Copies will be made of the handler as required. The function signature of the
1215
+ * handler must be:
1216
+ * @code void handler(
1217
+ * // Result of operation.
1218
+ * const boost::system::error_code& error,
329
1219
  *
330
- * @returns The number of bytes in the streambuf's get area up to and including
331
- * the substring that matches the regular expression. Returns 0 if an error
332
- * occurred.
1220
+ * // The number of bytes in the dynamic buffer
1221
+ * // sequence's get area up to and including the
1222
+ * // substring that matches the regular expression.
1223
+ * // 0 if an error occurred.
1224
+ * std::size_t bytes_transferred
1225
+ * ); @endcode
1226
+ * Regardless of whether the asynchronous operation completes immediately or
1227
+ * not, the handler will not be invoked from within this function. Invocation of
1228
+ * the handler will be performed in a manner equivalent to using
1229
+ * boost::asio::io_context::post().
333
1230
  *
334
- * @note After a successful read_until operation, the streambuf may contain
335
- * additional data beyond that which matched the regular expression. An
336
- * application will typically leave that data in the streambuf for a subsequent
337
- * read_until operation to examine.
1231
+ * @note After a successful async_read_until operation, the dynamic buffer
1232
+ * sequence may contain additional data beyond that which matched the regular
1233
+ * expression. An application will typically leave that data in the dynamic
1234
+ * buffer sequence for a subsequent async_read_until operation to examine.
1235
+ *
1236
+ * @par Example
1237
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
1238
+ * encountered:
1239
+ * @code std::string data;
1240
+ * ...
1241
+ * void handler(const boost::system::error_code& e, std::size_t size)
1242
+ * {
1243
+ * if (!e)
1244
+ * {
1245
+ * std::string line = data.substr(0, n);
1246
+ * data.erase(0, n);
1247
+ * ...
1248
+ * }
1249
+ * }
1250
+ * ...
1251
+ * boost::asio::async_read_until(s, data,
1252
+ * boost::regex("\r\n"), handler); @endcode
1253
+ * After the @c async_read_until operation completes successfully, the string
1254
+ * @c data contains the data which matched the regular expression:
1255
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1256
+ * The call to @c substr then extracts the data up to and including the match,
1257
+ * so that the string @c line contains:
1258
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1259
+ * After the call to @c erase, the remaining data is left in the string @c data
1260
+ * as follows:
1261
+ * @code { 'd', 'e', ... } @endcode
1262
+ * This data may be the start of a new line, to be extracted by a subsequent
1263
+ * @c async_read_until operation.
338
1264
  */
339
- template <typename SyncReadStream, typename Allocator>
340
- std::size_t read_until(SyncReadStream& s,
341
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
342
- boost::system::error_code& ec);
1265
+ template <typename AsyncReadStream,
1266
+ typename DynamicBuffer, typename ReadHandler>
1267
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1268
+ void (boost::system::error_code, std::size_t))
1269
+ async_read_until(AsyncReadStream& s,
1270
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1271
+ const boost::regex& expr,
1272
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
343
1273
 
344
1274
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
345
1275
  // || defined(GENERATING_DOCUMENTATION)
346
1276
 
347
- /// Read data into a streambuf until a function object indicates a match.
1277
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1278
+ /// until a function object indicates a match.
348
1279
  /**
349
- * This function is used to read data into the specified streambuf until a
350
- * user-defined match condition function object, when applied to the data
351
- * contained in the streambuf, indicates a successful match. The call will
352
- * block until one of the following conditions is true:
1280
+ * This function is used to asynchronously read data into the specified dynamic
1281
+ * buffer sequence until a user-defined match condition function object, when
1282
+ * applied to the data contained in the dynamic buffer sequence, indicates a
1283
+ * successful match. The function call always returns immediately. The
1284
+ * asynchronous operation will continue until one of the following conditions
1285
+ * is true:
353
1286
  *
354
1287
  * @li The match condition function object returns a std::pair where the second
355
1288
  * element evaluates to true.
@@ -357,20 +1290,27 @@ std::size_t read_until(SyncReadStream& s,
357
1290
  * @li An error occurred.
358
1291
  *
359
1292
  * This operation is implemented in terms of zero or more calls to the stream's
360
- * read_some function. If the match condition function object already indicates
361
- * a match, the function returns immediately.
1293
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1294
+ * the match condition function object already indicates a match, this
1295
+ * asynchronous operation completes immediately. The program must ensure that
1296
+ * the stream performs no other read operations (such as async_read,
1297
+ * async_read_until, the stream's async_read_some function, or any other
1298
+ * composed operations that perform reads) until this operation completes.
362
1299
  *
363
1300
  * @param s The stream from which the data is to be read. The type must support
364
- * the SyncReadStream concept.
1301
+ * the AsyncReadStream concept.
365
1302
  *
366
- * @param b A streambuf object into which the data will be read.
1303
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1304
+ * Although the buffers object may be copied as necessary, ownership of the
1305
+ * underlying memory blocks is retained by the caller, which must guarantee
1306
+ * that they remain valid until the handler is called.
367
1307
  *
368
1308
  * @param match_condition The function object to be called to determine whether
369
1309
  * a match exists. The signature of the function object must be:
370
1310
  * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
371
1311
  * @endcode
372
1312
  * where @c iterator represents the type:
373
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
1313
+ * @code buffers_iterator<typename DynamicBuffer::const_buffers_type>
374
1314
  * @endcode
375
1315
  * The iterator parameters @c begin and @c end define the range of bytes to be
376
1316
  * scanned to determine whether there is a match. The @c first member of the
@@ -380,14 +1320,27 @@ std::size_t read_until(SyncReadStream& s,
380
1320
  * @c second member of the return value is true if a match has been found, false
381
1321
  * otherwise.
382
1322
  *
383
- * @returns The number of bytes in the streambuf's get area that have been fully
384
- * consumed by the match function.
1323
+ * @param handler The handler to be called when the read operation completes.
1324
+ * Copies will be made of the handler as required. The function signature of the
1325
+ * handler must be:
1326
+ * @code void handler(
1327
+ * // Result of operation.
1328
+ * const boost::system::error_code& error,
385
1329
  *
386
- * @throws boost::system::system_error Thrown on failure.
1330
+ * // The number of bytes in the dynamic buffer sequence's
1331
+ * // get area that have been fully consumed by the match
1332
+ * // function. O if an error occurred.
1333
+ * std::size_t bytes_transferred
1334
+ * ); @endcode
1335
+ * Regardless of whether the asynchronous operation completes immediately or
1336
+ * not, the handler will not be invoked from within this function. Invocation of
1337
+ * the handler will be performed in a manner equivalent to using
1338
+ * boost::asio::io_context::post().
387
1339
  *
388
- * @note After a successful read_until operation, the streambuf may contain
389
- * additional data beyond that which matched the function object. An application
390
- * will typically leave that data in the streambuf for a subsequent
1340
+ * @note After a successful async_read_until operation, the dynamic buffer
1341
+ * sequence may contain additional data beyond that which matched the function
1342
+ * object. An application will typically leave that data in the dynamic buffer
1343
+ * sequence for a subsequent async_read_until operation to examine.
391
1344
  *
392
1345
  * @note The default implementation of the @c is_match_condition type trait
393
1346
  * evaluates to true for function pointers and function objects with a
@@ -395,9 +1348,10 @@ std::size_t read_until(SyncReadStream& s,
395
1348
  * function objects.
396
1349
  *
397
1350
  * @par Examples
398
- * To read data into a streambuf until whitespace is encountered:
1351
+ * To asynchronously read data into a @c std::string until whitespace is
1352
+ * encountered:
399
1353
  * @code typedef boost::asio::buffers_iterator<
400
- * boost::asio::streambuf::const_buffers_type> iterator;
1354
+ * boost::asio::const_buffers_1> iterator;
401
1355
  *
402
1356
  * std::pair<iterator, bool>
403
1357
  * match_whitespace(iterator begin, iterator end)
@@ -409,11 +1363,14 @@ std::size_t read_until(SyncReadStream& s,
409
1363
  * return std::make_pair(i, false);
410
1364
  * }
411
1365
  * ...
412
- * boost::asio::streambuf b;
413
- * boost::asio::read_until(s, b, match_whitespace);
1366
+ * void handler(const boost::system::error_code& e, std::size_t size);
1367
+ * ...
1368
+ * std::string data;
1369
+ * boost::asio::async_read_until(s, data, match_whitespace, handler);
414
1370
  * @endcode
415
1371
  *
416
- * To read data into a streambuf until a matching character is found:
1372
+ * To asynchronously read data into a @c std::string until a matching character
1373
+ * is found:
417
1374
  * @code class match_char
418
1375
  * {
419
1376
  * public:
@@ -439,80 +1396,22 @@ std::size_t read_until(SyncReadStream& s,
439
1396
  * : public boost::true_type {};
440
1397
  * } // namespace asio
441
1398
  * ...
442
- * boost::asio::streambuf b;
443
- * boost::asio::read_until(s, b, match_char('a'));
444
- * @endcode
445
- */
446
- template <typename SyncReadStream, typename Allocator, typename MatchCondition>
447
- std::size_t read_until(SyncReadStream& s,
448
- boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
449
- typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
450
-
451
- /// Read data into a streambuf until a function object indicates a match.
452
- /**
453
- * This function is used to read data into the specified streambuf until a
454
- * user-defined match condition function object, when applied to the data
455
- * contained in the streambuf, indicates a successful match. The call will
456
- * block until one of the following conditions is true:
457
- *
458
- * @li The match condition function object returns a std::pair where the second
459
- * element evaluates to true.
460
- *
461
- * @li An error occurred.
462
- *
463
- * This operation is implemented in terms of zero or more calls to the stream's
464
- * read_some function. If the match condition function object already indicates
465
- * a match, the function returns immediately.
466
- *
467
- * @param s The stream from which the data is to be read. The type must support
468
- * the SyncReadStream concept.
469
- *
470
- * @param b A streambuf object into which the data will be read.
471
- *
472
- * @param match_condition The function object to be called to determine whether
473
- * a match exists. The signature of the function object must be:
474
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
475
- * @endcode
476
- * where @c iterator represents the type:
477
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
1399
+ * void handler(const boost::system::error_code& e, std::size_t size);
1400
+ * ...
1401
+ * std::string data;
1402
+ * boost::asio::async_read_until(s, data, match_char('a'), handler);
478
1403
  * @endcode
479
- * The iterator parameters @c begin and @c end define the range of bytes to be
480
- * scanned to determine whether there is a match. The @c first member of the
481
- * return value is an iterator marking one-past-the-end of the bytes that have
482
- * been consumed by the match function. This iterator is used to calculate the
483
- * @c begin parameter for any subsequent invocation of the match condition. The
484
- * @c second member of the return value is true if a match has been found, false
485
- * otherwise.
486
- *
487
- * @param ec Set to indicate what error occurred, if any.
488
- *
489
- * @returns The number of bytes in the streambuf's get area that have been fully
490
- * consumed by the match function. Returns 0 if an error occurred.
491
- *
492
- * @note After a successful read_until operation, the streambuf may contain
493
- * additional data beyond that which matched the function object. An application
494
- * will typically leave that data in the streambuf for a subsequent
495
- *
496
- * @note The default implementation of the @c is_match_condition type trait
497
- * evaluates to true for function pointers and function objects with a
498
- * @c result_type typedef. It must be specialised for other user-defined
499
- * function objects.
500
1404
  */
501
- template <typename SyncReadStream, typename Allocator, typename MatchCondition>
502
- std::size_t read_until(SyncReadStream& s,
503
- boost::asio::basic_streambuf<Allocator>& b,
504
- MatchCondition match_condition, boost::system::error_code& ec,
1405
+ template <typename AsyncReadStream, typename DynamicBuffer,
1406
+ typename MatchCondition, typename ReadHandler>
1407
+ BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1408
+ void (boost::system::error_code, std::size_t))
1409
+ async_read_until(AsyncReadStream& s,
1410
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1411
+ MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
505
1412
  typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
506
1413
 
507
- /*@}*/
508
- /**
509
- * @defgroup async_read_until boost::asio::async_read_until
510
- *
511
- * @brief Start an asynchronous operation to read data into a streambuf until it
512
- * contains a delimiter, matches a regular expression, or a function object
513
- * indicates a match.
514
- */
515
- /*@{*/
1414
+ #if !defined(BOOST_ASIO_NO_IOSTREAM)
516
1415
 
517
1416
  /// Start an asynchronous operation to read data into a streambuf until it
518
1417
  /// contains a specified delimiter.
@@ -558,7 +1457,7 @@ std::size_t read_until(SyncReadStream& s,
558
1457
  * Regardless of whether the asynchronous operation completes immediately or
559
1458
  * not, the handler will not be invoked from within this function. Invocation of
560
1459
  * the handler will be performed in a manner equivalent to using
561
- * boost::asio::io_service::post().
1460
+ * boost::asio::io_context::post().
562
1461
  *
563
1462
  * @note After a successful async_read_until operation, the streambuf may
564
1463
  * contain additional data beyond the delimiter. An application will typically
@@ -585,8 +1484,8 @@ std::size_t read_until(SyncReadStream& s,
585
1484
  * @c b contains the delimiter:
586
1485
  * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
587
1486
  * The call to @c std::getline then extracts the data up to and including the
588
- * delimiter, so that the string @c line contains:
589
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
1487
+ * newline (which is discarded), so that the string @c line contains:
1488
+ * @code { 'a', 'b', ..., 'c' } @endcode
590
1489
  * The remaining data is left in the buffer @c b as follows:
591
1490
  * @code { 'd', 'e', ... } @endcode
592
1491
  * This data may be the start of a new line, to be extracted by a subsequent
@@ -643,7 +1542,7 @@ async_read_until(AsyncReadStream& s,
643
1542
  * Regardless of whether the asynchronous operation completes immediately or
644
1543
  * not, the handler will not be invoked from within this function. Invocation of
645
1544
  * the handler will be performed in a manner equivalent to using
646
- * boost::asio::io_service::post().
1545
+ * boost::asio::io_context::post().
647
1546
  *
648
1547
  * @note After a successful async_read_until operation, the streambuf may
649
1548
  * contain additional data beyond the delimiter. An application will typically
@@ -670,8 +1569,8 @@ async_read_until(AsyncReadStream& s,
670
1569
  * @c b contains the delimiter:
671
1570
  * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
672
1571
  * The call to @c std::getline then extracts the data up to and including the
673
- * delimiter, so that the string @c line contains:
674
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1572
+ * newline (which is discarded), so that the string @c line contains:
1573
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
675
1574
  * The remaining data is left in the buffer @c b as follows:
676
1575
  * @code { 'd', 'e', ... } @endcode
677
1576
  * This data may be the start of a new line, to be extracted by a subsequent
@@ -681,7 +1580,8 @@ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
681
1580
  BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
682
1581
  void (boost::system::error_code, std::size_t))
683
1582
  async_read_until(AsyncReadStream& s,
684
- boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
1583
+ boost::asio::basic_streambuf<Allocator>& b,
1584
+ BOOST_ASIO_STRING_VIEW_PARAM delim,
685
1585
  BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
686
1586
 
687
1587
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
@@ -734,7 +1634,7 @@ async_read_until(AsyncReadStream& s,
734
1634
  * Regardless of whether the asynchronous operation completes immediately or
735
1635
  * not, the handler will not be invoked from within this function. Invocation of
736
1636
  * the handler will be performed in a manner equivalent to using
737
- * boost::asio::io_service::post().
1637
+ * boost::asio::io_context::post().
738
1638
  *
739
1639
  * @note After a successful async_read_until operation, the streambuf may
740
1640
  * contain additional data beyond that which matched the regular expression. An
@@ -762,8 +1662,8 @@ async_read_until(AsyncReadStream& s,
762
1662
  * @c b contains the data which matched the regular expression:
763
1663
  * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
764
1664
  * The call to @c std::getline then extracts the data up to and including the
765
- * match, so that the string @c line contains:
766
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1665
+ * newline (which is discarded), so that the string @c line contains:
1666
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
767
1667
  * The remaining data is left in the buffer @c b as follows:
768
1668
  * @code { 'd', 'e', ... } @endcode
769
1669
  * This data may be the start of a new line, to be extracted by a subsequent
@@ -836,7 +1736,7 @@ async_read_until(AsyncReadStream& s,
836
1736
  * Regardless of whether the asynchronous operation completes immediately or
837
1737
  * not, the handler will not be invoked from within this function. Invocation of
838
1738
  * the handler will be performed in a manner equivalent to using
839
- * boost::asio::io_service::post().
1739
+ * boost::asio::io_context::post().
840
1740
  *
841
1741
  * @note After a successful async_read_until operation, the streambuf may
842
1742
  * contain additional data beyond that which matched the function object. An
@@ -911,6 +1811,9 @@ async_read_until(AsyncReadStream& s,
911
1811
  MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
912
1812
  typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
913
1813
 
1814
+ #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
1815
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
1816
+
914
1817
  /*@}*/
915
1818
 
916
1819
  } // namespace asio
@@ -920,6 +1823,4 @@ async_read_until(AsyncReadStream& s,
920
1823
 
921
1824
  #include <boost/asio/impl/read_until.hpp>
922
1825
 
923
- #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
924
-
925
1826
  #endif // BOOST_ASIO_READ_UNTIL_HPP