couchbase 3.0.0-universal-darwin-19 → 3.0.1-universal-darwin-19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (902) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/CMakeLists.txt +86 -169
  4. data/ext/build_version.hxx.in +3 -2
  5. data/ext/cmake/Backtrace.cmake +35 -0
  6. data/ext/cmake/BuildTracing.cmake +6 -0
  7. data/ext/cmake/Cache.cmake +29 -0
  8. data/ext/cmake/CompilerWarnings.cmake +78 -0
  9. data/ext/cmake/PreventInSourceBuilds.cmake +18 -0
  10. data/ext/cmake/Sanitizers.cmake +66 -0
  11. data/ext/cmake/StandardProjectSettings.cmake +40 -0
  12. data/ext/cmake/StaticAnalyzers.cmake +37 -0
  13. data/ext/cmake/Testing.cmake +52 -0
  14. data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
  15. data/ext/cmake/VersionInfo.cmake +37 -0
  16. data/ext/couchbase/bucket.hxx +37 -12
  17. data/ext/couchbase/capabilities.hxx +117 -0
  18. data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
  19. data/ext/couchbase/cluster.hxx +34 -2
  20. data/ext/couchbase/cluster_options.hxx +1 -0
  21. data/ext/couchbase/configuration.hxx +228 -52
  22. data/ext/couchbase/couchbase.cxx +914 -35
  23. data/ext/couchbase/diagnostics.hxx +251 -0
  24. data/ext/couchbase/document_id.hxx +3 -1
  25. data/ext/couchbase/errors.hxx +10 -1
  26. data/ext/couchbase/io/http_command.hxx +11 -7
  27. data/ext/couchbase/io/http_context.hxx +37 -0
  28. data/ext/couchbase/io/http_message.hxx +9 -0
  29. data/ext/couchbase/io/http_parser.hxx +2 -0
  30. data/ext/couchbase/io/http_session.hxx +100 -14
  31. data/ext/couchbase/io/http_session_manager.hxx +65 -5
  32. data/ext/couchbase/io/mcbp_command.hxx +16 -7
  33. data/ext/couchbase/io/mcbp_session.hxx +193 -51
  34. data/ext/couchbase/io/query_cache.hxx +61 -0
  35. data/ext/couchbase/io/retry_context.hxx +1 -2
  36. data/ext/couchbase/io/retry_orchestrator.hxx +16 -0
  37. data/ext/couchbase/io/retry_strategy.hxx +1 -1
  38. data/ext/couchbase/io/streams.hxx +61 -10
  39. data/ext/couchbase/operations.hxx +13 -0
  40. data/ext/couchbase/operations/analytics_dataset_create.hxx +1 -1
  41. data/ext/couchbase/operations/analytics_dataset_drop.hxx +1 -1
  42. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +1 -1
  43. data/ext/couchbase/operations/analytics_dataverse_create.hxx +1 -1
  44. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +1 -1
  45. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +1 -1
  46. data/ext/couchbase/operations/analytics_index_create.hxx +1 -1
  47. data/ext/couchbase/operations/analytics_index_drop.hxx +1 -1
  48. data/ext/couchbase/operations/analytics_index_get_all.hxx +1 -1
  49. data/ext/couchbase/operations/analytics_link_connect.hxx +1 -1
  50. data/ext/couchbase/operations/analytics_link_disconnect.hxx +1 -1
  51. data/ext/couchbase/operations/bucket_create.hxx +11 -5
  52. data/ext/couchbase/operations/bucket_drop.hxx +1 -1
  53. data/ext/couchbase/operations/bucket_flush.hxx +1 -1
  54. data/ext/couchbase/operations/bucket_get.hxx +1 -1
  55. data/ext/couchbase/operations/bucket_get_all.hxx +1 -1
  56. data/ext/couchbase/operations/bucket_settings.hxx +43 -4
  57. data/ext/couchbase/operations/bucket_update.hxx +11 -5
  58. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +1 -1
  59. data/ext/couchbase/operations/collection_create.hxx +3 -1
  60. data/ext/couchbase/operations/collection_drop.hxx +1 -1
  61. data/ext/couchbase/operations/collections_manifest_get.hxx +70 -0
  62. data/ext/couchbase/operations/document_analytics.hxx +6 -1
  63. data/ext/couchbase/operations/document_get_projected.hxx +1 -1
  64. data/ext/couchbase/operations/document_query.hxx +85 -8
  65. data/ext/couchbase/operations/document_search.hxx +14 -4
  66. data/ext/couchbase/operations/document_view.hxx +1 -1
  67. data/ext/couchbase/operations/group_drop.hxx +71 -0
  68. data/ext/couchbase/operations/group_get.hxx +75 -0
  69. data/ext/couchbase/operations/group_get_all.hxx +70 -0
  70. data/ext/couchbase/operations/group_upsert.hxx +118 -0
  71. data/ext/couchbase/operations/query_index_build_deferred.hxx +1 -1
  72. data/ext/couchbase/operations/query_index_create.hxx +1 -1
  73. data/ext/couchbase/operations/query_index_drop.hxx +1 -1
  74. data/ext/couchbase/operations/query_index_get_all.hxx +3 -2
  75. data/ext/couchbase/operations/rbac.hxx +276 -0
  76. data/ext/couchbase/operations/role_get_all.hxx +70 -0
  77. data/ext/couchbase/operations/scope_create.hxx +6 -2
  78. data/ext/couchbase/operations/scope_drop.hxx +1 -1
  79. data/ext/couchbase/operations/scope_get_all.hxx +1 -1
  80. data/ext/couchbase/operations/search_get_stats.hxx +59 -0
  81. data/ext/couchbase/operations/search_index_analyze_document.hxx +1 -1
  82. data/ext/couchbase/operations/search_index_control_ingest.hxx +1 -1
  83. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +1 -1
  84. data/ext/couchbase/operations/search_index_control_query.hxx +1 -1
  85. data/ext/couchbase/operations/search_index_drop.hxx +1 -1
  86. data/ext/couchbase/operations/search_index_get.hxx +1 -1
  87. data/ext/couchbase/operations/search_index_get_all.hxx +1 -1
  88. data/ext/couchbase/operations/search_index_get_documents_count.hxx +24 -16
  89. data/ext/couchbase/operations/search_index_get_stats.hxx +81 -0
  90. data/ext/couchbase/operations/search_index_upsert.hxx +1 -1
  91. data/ext/couchbase/operations/user_drop.hxx +72 -0
  92. data/ext/couchbase/operations/user_get.hxx +76 -0
  93. data/ext/couchbase/operations/user_get_all.hxx +71 -0
  94. data/ext/couchbase/operations/user_upsert.hxx +125 -0
  95. data/ext/couchbase/operations/view_index_drop.hxx +1 -1
  96. data/ext/couchbase/operations/view_index_get.hxx +1 -1
  97. data/ext/couchbase/operations/view_index_get_all.hxx +1 -1
  98. data/ext/couchbase/operations/view_index_upsert.hxx +1 -1
  99. data/ext/couchbase/origin.hxx +4 -4
  100. data/ext/couchbase/platform/terminate_handler.cc +5 -4
  101. data/ext/couchbase/protocol/client_opcode.hxx +38 -38
  102. data/ext/couchbase/protocol/client_response.hxx +2 -2
  103. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +6 -3
  104. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +3 -1
  105. data/ext/couchbase/protocol/magic.hxx +6 -6
  106. data/ext/couchbase/protocol/server_opcode.hxx +2 -2
  107. data/ext/couchbase/protocol/status.hxx +57 -57
  108. data/ext/couchbase/service_type.hxx +1 -1
  109. data/ext/couchbase/utils/connection_string.hxx +12 -3
  110. data/ext/couchbase/version.hxx +1 -1
  111. data/ext/extconf.rb +21 -9
  112. data/ext/test/test_helper.hxx +141 -0
  113. data/ext/test/test_helper_native.hxx +59 -0
  114. data/ext/test/test_helper_ruby.hxx +72 -0
  115. data/ext/test/test_native_diagnostics.cxx +385 -0
  116. data/ext/test/test_native_trivial_crud.cxx +83 -0
  117. data/ext/test/test_ruby_trivial_crud.cxx +35 -0
  118. data/ext/test/test_ruby_trivial_query.cxx +34 -0
  119. data/ext/third_party/asio/asio/include/asio.hpp +35 -0
  120. data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +71 -0
  121. data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +1 -7
  122. data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +36 -19
  123. data/ext/third_party/asio/asio/include/asio/async_result.hpp +1 -8
  124. data/ext/third_party/asio/asio/include/asio/awaitable.hpp +14 -4
  125. data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +12 -7
  126. data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +4 -4
  127. data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +11 -7
  128. data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +9 -4
  129. data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +6 -6
  130. data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +4 -4
  131. data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +5 -5
  132. data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +13 -7
  133. data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +7 -3
  134. data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +52 -4
  135. data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +10 -15
  136. data/ext/third_party/asio/asio/include/asio/buffer.hpp +6 -4
  137. data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +380 -9
  138. data/ext/third_party/asio/asio/include/asio/defer.hpp +4 -1
  139. data/ext/third_party/asio/asio/include/asio/detached.hpp +50 -0
  140. data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +19 -0
  141. data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +144 -26
  142. data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
  143. data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +106 -0
  144. data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
  145. data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +10 -5
  146. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +8 -0
  147. data/ext/third_party/asio/asio/include/asio/detail/config.hpp +360 -37
  148. data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +17 -2
  149. data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +24 -6
  150. data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +32 -14
  151. data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +32 -14
  152. data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +133 -34
  153. data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +42 -0
  154. data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +23 -0
  155. data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +26 -0
  156. data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +370 -45
  157. data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +208 -74
  158. data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +39 -1
  159. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +12 -15
  160. data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +37 -0
  161. data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +2 -1
  162. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +661 -274
  163. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +210 -4
  164. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +8 -9
  165. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +5 -4
  166. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +15 -6
  167. data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +32 -50
  168. data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +3 -0
  169. data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +6 -0
  170. data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +1 -1
  171. data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +13 -0
  172. data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +1 -1
  173. data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +38 -13
  174. data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +12 -6
  175. data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +2 -3
  176. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +36 -24
  177. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +17 -10
  178. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +38 -16
  179. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +36 -14
  180. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +21 -11
  181. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +43 -17
  182. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +39 -17
  183. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +44 -21
  184. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +41 -18
  185. data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +12 -6
  186. data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +3 -1
  187. data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +10 -8
  188. data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +11 -9
  189. data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +8 -0
  190. data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +7 -5
  191. data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +46 -0
  192. data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
  193. data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +12 -0
  194. data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +25 -1
  195. data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +4 -1
  196. data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +58 -0
  197. data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +59 -0
  198. data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +144 -1
  199. data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +9 -6
  200. data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +13 -0
  201. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +9 -5
  202. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +9 -5
  203. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +5 -1
  204. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +10 -6
  205. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +9 -5
  206. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +18 -6
  207. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +15 -11
  208. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +10 -5
  209. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +8 -4
  210. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +8 -4
  211. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +8 -4
  212. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +8 -4
  213. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +10 -5
  214. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +8 -4
  215. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +8 -4
  216. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +8 -4
  217. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +8 -4
  218. data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +81 -6
  219. data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +45 -9
  220. data/ext/third_party/asio/asio/include/asio/dispatch.hpp +4 -1
  221. data/ext/third_party/asio/asio/include/asio/execution.hpp +48 -0
  222. data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +249 -0
  223. data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +2264 -0
  224. data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
  225. data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +1351 -0
  226. data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1064 -0
  227. data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +390 -0
  228. data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1018 -0
  229. data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +486 -0
  230. data/ext/third_party/asio/asio/include/asio/execution/context.hpp +185 -0
  231. data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +201 -0
  232. data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
  233. data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
  234. data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
  235. data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
  236. data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
  237. data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
  238. data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +264 -0
  239. data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +238 -0
  240. data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
  241. data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
  242. data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
  243. data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +917 -0
  244. data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +178 -0
  245. data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
  246. data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +721 -0
  247. data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +327 -0
  248. data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
  249. data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
  250. data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +720 -0
  251. data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +290 -0
  252. data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
  253. data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
  254. data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +253 -0
  255. data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +253 -0
  256. data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +486 -0
  257. data/ext/third_party/asio/asio/include/asio/execution/start.hpp +250 -0
  258. data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
  259. data/ext/third_party/asio/asio/include/asio/executor.hpp +7 -1
  260. data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +126 -9
  261. data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +28 -5
  262. data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +29 -3
  263. data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +14 -0
  264. data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +44 -8
  265. data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +44 -8
  266. data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +145 -7
  267. data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +124 -22
  268. data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +52 -8
  269. data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +147 -12
  270. data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +142 -12
  271. data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +15 -101
  272. data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +5 -0
  273. data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +13 -4
  274. data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +144 -57
  275. data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
  276. data/ext/third_party/asio/asio/include/asio/impl/post.hpp +147 -12
  277. data/ext/third_party/asio/asio/include/asio/impl/read.hpp +85 -18
  278. data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +59 -14
  279. data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +241 -56
  280. data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +22 -4
  281. data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +58 -22
  282. data/ext/third_party/asio/asio/include/asio/impl/src.hpp +3 -0
  283. data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +16 -4
  284. data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +113 -12
  285. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +260 -37
  286. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +61 -7
  287. data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +5 -2
  288. data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +147 -6
  289. data/ext/third_party/asio/asio/include/asio/impl/write.hpp +75 -14
  290. data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +53 -11
  291. data/ext/third_party/asio/asio/include/asio/io_context.hpp +706 -48
  292. data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +3 -1
  293. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +4 -4
  294. data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
  295. data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
  296. data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +4 -4
  297. data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +5 -5
  298. data/ext/third_party/asio/asio/include/asio/post.hpp +4 -1
  299. data/ext/third_party/asio/asio/include/asio/prefer.hpp +656 -0
  300. data/ext/third_party/asio/asio/include/asio/query.hpp +296 -0
  301. data/ext/third_party/asio/asio/include/asio/read_until.hpp +6 -6
  302. data/ext/third_party/asio/asio/include/asio/require.hpp +524 -0
  303. data/ext/third_party/asio/asio/include/asio/require_concept.hpp +310 -0
  304. data/ext/third_party/asio/asio/include/asio/spawn.hpp +12 -4
  305. data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +5 -0
  306. data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +5 -0
  307. data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +5 -0
  308. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +16 -3
  309. data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +38 -4
  310. data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +5 -0
  311. data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +5 -0
  312. data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +36 -2
  313. data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +10 -1
  314. data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +15 -0
  315. data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
  316. data/ext/third_party/asio/asio/include/asio/strand.hpp +232 -9
  317. data/ext/third_party/asio/asio/include/asio/system_context.hpp +12 -3
  318. data/ext/third_party/asio/asio/include/asio/system_executor.hpp +557 -24
  319. data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +913 -37
  320. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
  321. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
  322. data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
  323. data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
  324. data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +100 -0
  325. data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
  326. data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
  327. data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
  328. data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
  329. data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
  330. data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
  331. data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
  332. data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
  333. data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
  334. data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
  335. data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
  336. data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
  337. data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
  338. data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
  339. data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
  340. data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
  341. data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
  342. data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
  343. data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
  344. data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
  345. data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
  346. data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
  347. data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
  348. data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +123 -0
  349. data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
  350. data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
  351. data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +1 -0
  352. data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +67 -8
  353. data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +63 -4
  354. data/ext/third_party/asio/asio/include/asio/version.hpp +1 -1
  355. data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +4 -4
  356. data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +2 -2
  357. data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +5 -5
  358. data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +5 -5
  359. data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +4 -2
  360. data/ext/third_party/gsl/CMakeLists.txt +13 -5
  361. data/ext/third_party/gsl/include/gsl/gsl_assert +1 -1
  362. data/ext/third_party/gsl/include/gsl/gsl_byte +3 -3
  363. data/ext/third_party/gsl/include/gsl/gsl_narrow +52 -0
  364. data/ext/third_party/gsl/include/gsl/gsl_util +8 -50
  365. data/ext/third_party/gsl/include/gsl/multi_span +0 -10
  366. data/ext/third_party/gsl/include/gsl/pointers +14 -28
  367. data/ext/third_party/gsl/include/gsl/span +98 -46
  368. data/ext/third_party/gsl/include/gsl/string_span +37 -47
  369. data/ext/third_party/http_parser/http_parser.c +17 -10
  370. data/ext/third_party/http_parser/http_parser.h +4 -2
  371. data/ext/third_party/json/include/tao/json/basic_value.hpp +3 -2
  372. data/ext/third_party/json/include/tao/json/binary.hpp +4 -4
  373. data/ext/third_party/json/include/tao/json/binary_view.hpp +2 -2
  374. data/ext/third_party/json/include/tao/json/binding.hpp +2 -2
  375. data/ext/third_party/json/include/tao/json/binding/factory.hpp +8 -7
  376. data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +2 -1
  377. data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +6 -5
  378. data/ext/third_party/json/include/tao/json/binding/versions.hpp +3 -1
  379. data/ext/third_party/json/include/tao/json/cbor.hpp +1 -0
  380. data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +7 -7
  381. data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +43 -0
  382. data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +4 -4
  383. data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +3 -3
  384. data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
  385. data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +5 -5
  386. data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +2 -1
  387. data/ext/third_party/json/include/tao/json/consume_file.hpp +7 -7
  388. data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +13 -6
  389. data/ext/third_party/json/include/tao/json/contrib/position.hpp +15 -15
  390. data/ext/third_party/json/include/tao/json/contrib/reference.hpp +5 -7
  391. data/ext/third_party/json/include/tao/json/contrib/schema.hpp +58 -35
  392. data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +12 -4
  393. data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +12 -4
  394. data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +1 -1
  395. data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +2 -2
  396. data/ext/third_party/json/include/tao/json/events/compare.hpp +2 -12
  397. data/ext/third_party/json/include/tao/json/events/from_file.hpp +4 -4
  398. data/ext/third_party/json/include/tao/json/events/from_string.hpp +2 -2
  399. data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +1 -1
  400. data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +3 -3
  401. data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +1 -1
  402. data/ext/third_party/json/include/tao/json/events/tee.hpp +2 -2
  403. data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +1 -1
  404. data/ext/third_party/json/include/tao/json/events/to_stream.hpp +1 -1
  405. data/ext/third_party/json/include/tao/json/events/transformer.hpp +3 -3
  406. data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +3 -3
  407. data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +6 -0
  408. data/ext/third_party/json/include/tao/json/external/pegtl.hpp +4 -13
  409. data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +3 -5
  410. data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +5 -18
  411. data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +3 -3
  412. data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +2 -2
  413. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +6 -6
  414. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +5 -5
  415. data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +2 -2
  416. data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +6 -6
  417. data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +5 -5
  418. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +52 -52
  419. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +176 -0
  420. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +275 -0
  421. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +77 -0
  422. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +151 -0
  423. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +16 -0
  424. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +37 -18
  425. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +20 -22
  426. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +6 -10
  427. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +6 -10
  428. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +2 -4
  429. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +11 -10
  430. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +116 -131
  431. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian.hpp +4 -4
  432. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_gcc.hpp +2 -2
  433. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_win.hpp +2 -2
  434. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint.hpp +9 -9
  435. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint8.hpp +9 -10
  436. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint.hpp +9 -9
  437. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint8.hpp +9 -10
  438. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf16.hpp +10 -10
  439. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf32.hpp +9 -9
  440. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/read_uint.hpp +3 -3
  441. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
  442. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +80 -201
  443. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +11 -10
  444. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +75 -0
  445. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +53 -0
  446. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +45 -36
  447. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +33 -50
  448. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +117 -0
  449. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +43 -11
  450. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +1 -2
  451. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +193 -0
  452. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +118 -0
  453. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +227 -0
  454. data/ext/third_party/json/include/tao/json/external/pegtl/{uint16.hpp → contrib/uint16.hpp} +5 -5
  455. data/ext/third_party/json/include/tao/json/external/pegtl/{uint32.hpp → contrib/uint32.hpp} +5 -5
  456. data/ext/third_party/json/include/tao/json/external/pegtl/{uint64.hpp → contrib/uint64.hpp} +5 -5
  457. data/ext/third_party/json/include/tao/json/external/pegtl/{uint8.hpp → contrib/uint8.hpp} +5 -5
  458. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +14 -14
  459. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +1 -1
  460. data/ext/third_party/json/include/tao/json/external/pegtl/{utf16.hpp → contrib/utf16.hpp} +5 -5
  461. data/ext/third_party/json/include/tao/json/external/pegtl/{utf32.hpp → contrib/utf32.hpp} +5 -5
  462. data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +2 -3
  463. data/ext/third_party/json/include/tao/json/external/pegtl/{internal/demangle.hpp → demangle.hpp} +12 -14
  464. data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +2 -2
  465. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +2 -2
  466. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +2 -2
  467. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +2 -2
  468. data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +2 -2
  469. data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +1 -1
  470. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +19 -9
  471. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +7 -8
  472. data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +14 -14
  473. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +9 -9
  474. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +8 -7
  475. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +4 -4
  476. data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +17 -15
  477. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +7 -6
  478. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +8 -8
  479. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +4 -4
  480. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +3 -3
  481. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +17 -10
  482. data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +19 -9
  483. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +2 -2
  484. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +2 -2
  485. data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +2 -2
  486. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +1 -1
  487. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{always_false.hpp → dependent_false.hpp} +3 -8
  488. data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +19 -9
  489. data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +7 -6
  490. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +19 -9
  491. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{skip_control.hpp → enable_control.hpp} +5 -5
  492. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +7 -6
  493. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +8 -7
  494. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +8 -7
  495. data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +32 -0
  496. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +61 -10
  497. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +27 -33
  498. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +29 -26
  499. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +3 -7
  500. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +3 -7
  501. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +4 -20
  502. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +21 -0
  503. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +8 -7
  504. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +8 -9
  505. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +2 -0
  506. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +7 -7
  507. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +1 -2
  508. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +11 -11
  509. data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +7 -10
  510. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +2 -2
  511. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +2 -2
  512. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +4 -2
  513. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +1 -1
  514. data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +3 -5
  515. data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +21 -0
  516. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +5 -2
  517. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +5 -2
  518. data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +16 -24
  519. data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +17 -15
  520. data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +23 -12
  521. data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +16 -16
  522. data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +26 -0
  523. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +5 -5
  524. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +12 -13
  525. data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +18 -11
  526. data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +8 -17
  527. data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +22 -17
  528. data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +28 -18
  529. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +12 -9
  530. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +26 -25
  531. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +23 -21
  532. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +24 -9
  533. data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +10 -10
  534. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +4 -4
  535. data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +18 -33
  536. data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +24 -17
  537. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +13 -8
  538. data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +21 -11
  539. data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +11 -11
  540. data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +32 -0
  541. data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +16 -16
  542. data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +18 -14
  543. data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +2 -3
  544. data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +125 -29
  545. data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +32 -48
  546. data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +16 -16
  547. data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +64 -0
  548. data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +25 -25
  549. data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +1 -2
  550. data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +6 -8
  551. data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +80 -35
  552. data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +18 -10
  553. data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +18 -38
  554. data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +6 -5
  555. data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +3 -5
  556. data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +46 -0
  557. data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +66 -0
  558. data/ext/third_party/json/include/tao/json/from_file.hpp +5 -5
  559. data/ext/third_party/json/include/tao/json/internal/action.hpp +3 -3
  560. data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
  561. data/ext/third_party/json/include/tao/json/internal/errors.hpp +17 -17
  562. data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -2
  563. data/ext/third_party/json/include/tao/json/internal/grammar.hpp +17 -17
  564. data/ext/third_party/json/include/tao/json/internal/pair.hpp +1 -1
  565. data/ext/third_party/json/include/tao/json/internal/sha256.hpp +8 -8
  566. data/ext/third_party/json/include/tao/json/internal/single.hpp +1 -1
  567. data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +12 -29
  568. data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +7 -7
  569. data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +4 -4
  570. data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +2 -2
  571. data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +5 -5
  572. data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +6 -6
  573. data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +2 -2
  574. data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +43 -43
  575. data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +36 -36
  576. data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +10 -11
  577. data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +2 -2
  578. data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +1 -3
  579. data/ext/third_party/json/include/tao/json/message_extension.hpp +2 -2
  580. data/ext/third_party/json/include/tao/json/msgpack.hpp +1 -0
  581. data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +7 -7
  582. data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +43 -0
  583. data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +4 -4
  584. data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +4 -4
  585. data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +4 -4
  586. data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
  587. data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +5 -5
  588. data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +2 -1
  589. data/ext/third_party/json/include/tao/json/operators.hpp +0 -4
  590. data/ext/third_party/json/include/tao/json/parts_parser.hpp +3 -7
  591. data/ext/third_party/json/include/tao/json/self_contained.hpp +6 -18
  592. data/ext/third_party/json/include/tao/json/span.hpp +94 -166
  593. data/ext/third_party/json/include/tao/json/ubjson.hpp +1 -0
  594. data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +7 -7
  595. data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +43 -0
  596. data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +4 -4
  597. data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +3 -3
  598. data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
  599. data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +5 -5
  600. data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +5 -3
  601. data/ext/third_party/json/include/tao/json/utf8.hpp +1 -1
  602. data/ext/third_party/snappy/snappy.cc +6 -2
  603. data/ext/third_party/spdlog/CMakeLists.txt +24 -57
  604. data/ext/third_party/spdlog/cmake/version.rc.in +1 -1
  605. data/ext/third_party/spdlog/include/spdlog/async.h +3 -3
  606. data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +3 -4
  607. data/ext/third_party/spdlog/include/spdlog/cfg/env.h +6 -4
  608. data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +22 -6
  609. data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +3 -2
  610. data/ext/third_party/spdlog/include/spdlog/common.h +1 -2
  611. data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +9 -1
  612. data/ext/third_party/spdlog/include/spdlog/details/os.h +1 -1
  613. data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +21 -7
  614. data/ext/third_party/spdlog/include/spdlog/details/registry.h +6 -3
  615. data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +1 -1
  616. data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +1 -1
  617. data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +8 -7
  618. data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +2 -2
  619. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +66 -62
  620. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +35 -37
  621. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +173 -103
  622. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +538 -445
  623. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +114 -64
  624. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +1152 -1071
  625. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +16 -16
  626. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +450 -0
  627. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +37 -13
  628. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +1 -1
  629. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +93 -63
  630. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +35 -36
  631. data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
  632. data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +2 -0
  633. data/ext/third_party/spdlog/include/spdlog/logger-inl.h +5 -1
  634. data/ext/third_party/spdlog/include/spdlog/logger.h +50 -76
  635. data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +23 -8
  636. data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +3 -3
  637. data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +1 -1
  638. data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +5 -5
  639. data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +6 -4
  640. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +32 -3
  641. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +7 -0
  642. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +4 -14
  643. data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +11 -1
  644. data/ext/third_party/spdlog/include/spdlog/spdlog.h +23 -68
  645. data/ext/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
  646. data/ext/third_party/spdlog/include/spdlog/version.h +2 -2
  647. data/ext/third_party/spdlog/src/fmt.cpp +21 -147
  648. data/lib/couchbase/cluster.rb +111 -1
  649. data/lib/couchbase/collection_options.rb +18 -1
  650. data/lib/couchbase/errors.rb +3 -0
  651. data/lib/couchbase/libcouchbase.bundle +0 -0
  652. data/lib/couchbase/management/bucket_manager.rb +36 -3
  653. data/lib/couchbase/management/search_index_manager.rb +42 -1
  654. data/lib/couchbase/management/user_manager.rb +155 -48
  655. data/lib/couchbase/query_options.rb +7 -0
  656. data/lib/couchbase/scope.rb +1 -0
  657. data/lib/couchbase/search_options.rb +69 -1
  658. data/lib/couchbase/version.rb +1 -1
  659. metadata +171 -267
  660. data/.rubocop.yml +0 -227
  661. data/.rubocop_todo.yml +0 -47
  662. data/.yardopts +0 -1
  663. data/CONTRIBUTING.md +0 -110
  664. data/Gemfile +0 -37
  665. data/Rakefile +0 -51
  666. data/couchbase.gemspec +0 -79
  667. data/examples/analytics.rb +0 -236
  668. data/examples/auth.rb +0 -33
  669. data/examples/crud.rb +0 -34
  670. data/examples/managing_analytics_indexes.rb +0 -86
  671. data/examples/managing_buckets.rb +0 -61
  672. data/examples/managing_collections.rb +0 -71
  673. data/examples/managing_query_indexes.rb +0 -83
  674. data/examples/managing_search_indexes.rb +0 -77
  675. data/examples/managing_view_indexes.rb +0 -68
  676. data/examples/query.rb +0 -32
  677. data/examples/query_with_consistency.rb +0 -86
  678. data/examples/search.rb +0 -202
  679. data/examples/search_with_consistency.rb +0 -97
  680. data/examples/subdocument.rb +0 -63
  681. data/examples/view.rb +0 -59
  682. data/ext/.clang-format +0 -15
  683. data/ext/.clang-tidy +0 -22
  684. data/ext/.cmake-format.yaml +0 -8
  685. data/ext/.gitignore +0 -2
  686. data/ext/.idea/.name +0 -1
  687. data/ext/.idea/dictionaries/couchbase_terms.xml +0 -14
  688. data/ext/.idea/ext.iml +0 -2
  689. data/ext/.idea/misc.xml +0 -16
  690. data/ext/.idea/modules.xml +0 -8
  691. data/ext/.idea/vcs.xml +0 -12
  692. data/ext/test/main.cxx +0 -184
  693. data/ext/third_party/asio/.appveyor.yml +0 -107
  694. data/ext/third_party/asio/.cirrus.yml +0 -16
  695. data/ext/third_party/asio/.gitignore +0 -3
  696. data/ext/third_party/asio/.travis.yml +0 -323
  697. data/ext/third_party/asio/asio/.gitignore +0 -23
  698. data/ext/third_party/asio/asio/COPYING +0 -4
  699. data/ext/third_party/asio/asio/INSTALL +0 -5
  700. data/ext/third_party/asio/asio/LICENSE_1_0.txt +0 -23
  701. data/ext/third_party/asio/asio/Makefile.am +0 -19
  702. data/ext/third_party/asio/asio/README +0 -4
  703. data/ext/third_party/asio/asio/asio.manifest +0 -4865
  704. data/ext/third_party/asio/asio/autogen.sh +0 -55
  705. data/ext/third_party/asio/asio/boost_asio.manifest +0 -5193
  706. data/ext/third_party/asio/asio/boostify.pl +0 -603
  707. data/ext/third_party/asio/asio/configure.ac +0 -182
  708. data/ext/third_party/asio/asio/include/.gitignore +0 -2
  709. data/ext/third_party/asio/asio/include/Makefile.am +0 -484
  710. data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +0 -167
  711. data/ext/third_party/asio/asio/include/asio/impl/src.cpp +0 -25
  712. data/ext/third_party/asio/asio/release.pl +0 -440
  713. data/ext/third_party/asio/asio/src/.gitignore +0 -11
  714. data/ext/third_party/asio/asio/src/Makefile.am +0 -23
  715. data/ext/third_party/asio/asio/src/Makefile.mgw +0 -204
  716. data/ext/third_party/asio/asio/src/Makefile.msc +0 -497
  717. data/ext/third_party/asio/asio/src/asio.cpp +0 -11
  718. data/ext/third_party/asio/asio/src/asio_ssl.cpp +0 -11
  719. data/ext/third_party/asio/asio/src/doc/.gitignore +0 -5
  720. data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +0 -62
  721. data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
  722. data/ext/third_party/asio/asio/src/doc/asio.qbk +0 -127
  723. data/ext/third_party/asio/asio/src/doc/asioref.sty +0 -90
  724. data/ext/third_party/asio/asio/src/doc/asioref.xsl +0 -94
  725. data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +0 -5
  726. data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +0 -22
  727. data/ext/third_party/asio/asio/src/doc/examples.qbk +0 -564
  728. data/ext/third_party/asio/asio/src/doc/history.qbk +0 -1794
  729. data/ext/third_party/asio/asio/src/doc/index.xml +0 -13
  730. data/ext/third_party/asio/asio/src/doc/makepdf.pl +0 -26
  731. data/ext/third_party/asio/asio/src/doc/net_ts.qbk +0 -479
  732. data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +0 -3
  733. data/ext/third_party/asio/asio/src/doc/overview.qbk +0 -103
  734. data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +0 -89
  735. data/ext/third_party/asio/asio/src/doc/overview/async.qbk +0 -185
  736. data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +0 -78
  737. data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
  738. data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +0 -78
  739. data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
  740. data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +0 -106
  741. data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +0 -270
  742. data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +0 -163
  743. data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +0 -88
  744. data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +0 -51
  745. data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +0 -97
  746. data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +0 -271
  747. data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +0 -220
  748. data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +0 -305
  749. data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +0 -72
  750. data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +0 -118
  751. data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +0 -94
  752. data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +0 -152
  753. data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +0 -100
  754. data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
  755. data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +0 -149
  756. data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +0 -54
  757. data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +0 -44
  758. data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +0 -45
  759. data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +0 -44
  760. data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +0 -102
  761. data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +0 -124
  762. data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +0 -114
  763. data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +0 -62
  764. data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +0 -67
  765. data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
  766. data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +0 -67
  767. data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +0 -52
  768. data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +0 -126
  769. data/ext/third_party/asio/asio/src/doc/project-root.jam +0 -1
  770. data/ext/third_party/asio/asio/src/doc/quickref.xml +0 -561
  771. data/ext/third_party/asio/asio/src/doc/reference.dox +0 -264
  772. data/ext/third_party/asio/asio/src/doc/reference.qbk +0 -125973
  773. data/ext/third_party/asio/asio/src/doc/reference.xsl +0 -1831
  774. data/ext/third_party/asio/asio/src/doc/release_checklist.htm +0 -68
  775. data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +0 -72
  776. data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +0 -25
  777. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +0 -56
  778. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +0 -57
  779. data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +0 -50
  780. data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +0 -48
  781. data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +0 -55
  782. data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +0 -42
  783. data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +0 -63
  784. data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +0 -34
  785. data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +0 -72
  786. data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +0 -53
  787. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +0 -16
  788. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +0 -93
  789. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +0 -94
  790. data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +0 -97
  791. data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +0 -30
  792. data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +0 -36
  793. data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +0 -141
  794. data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +0 -33
  795. data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +0 -67
  796. data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +0 -64
  797. data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +0 -72
  798. data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +0 -47
  799. data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +0 -34
  800. data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +0 -62
  801. data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +0 -81
  802. data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +0 -65
  803. data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +0 -61
  804. data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +0 -54
  805. data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +0 -19
  806. data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +0 -56
  807. data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +0 -82
  808. data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +0 -79
  809. data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +0 -82
  810. data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +0 -40
  811. data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +0 -33
  812. data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +0 -54
  813. data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +0 -72
  814. data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +0 -79
  815. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +0 -49
  816. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +0 -49
  817. data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +0 -41
  818. data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +0 -39
  819. data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +0 -72
  820. data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +0 -72
  821. data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +0 -52
  822. data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +0 -79
  823. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +0 -300
  824. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +0 -39
  825. data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +0 -34
  826. data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +0 -37
  827. data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +0 -7
  828. data/ext/third_party/asio/asio/src/doc/tutorial.dox +0 -226
  829. data/ext/third_party/asio/asio/src/doc/tutorial.qbk +0 -2387
  830. data/ext/third_party/asio/asio/src/doc/tutorial.xsl +0 -437
  831. data/ext/third_party/asio/asio/src/doc/using.qbk +0 -309
  832. data/ext/third_party/asio/asio/tsify.pl +0 -574
  833. data/ext/third_party/gsl/.clang-format +0 -34
  834. data/ext/third_party/gsl/.github/workflows/main.yml +0 -94
  835. data/ext/third_party/gsl/.gitignore +0 -16
  836. data/ext/third_party/gsl/.travis.yml +0 -551
  837. data/ext/third_party/gsl/CMakeSettings.json +0 -18
  838. data/ext/third_party/gsl/CONTRIBUTING.md +0 -29
  839. data/ext/third_party/gsl/GSL.natvis +0 -98
  840. data/ext/third_party/gsl/README.md +0 -124
  841. data/ext/third_party/gsl/appveyor.yml +0 -128
  842. data/ext/third_party/http_parser/.gitignore +0 -30
  843. data/ext/third_party/http_parser/.mailmap +0 -8
  844. data/ext/third_party/http_parser/.travis.yml +0 -13
  845. data/ext/third_party/http_parser/AUTHORS +0 -68
  846. data/ext/third_party/http_parser/Makefile +0 -160
  847. data/ext/third_party/http_parser/README.md +0 -246
  848. data/ext/third_party/http_parser/bench.c +0 -128
  849. data/ext/third_party/http_parser/http_parser.gyp +0 -111
  850. data/ext/third_party/http_parser/test.c +0 -4600
  851. data/ext/third_party/json/.appveyor.yml +0 -44
  852. data/ext/third_party/json/.clang-format +0 -84
  853. data/ext/third_party/json/.conan/build.py +0 -80
  854. data/ext/third_party/json/.conan/test_package/CMakeLists.txt +0 -12
  855. data/ext/third_party/json/.conan/test_package/conanfile.py +0 -24
  856. data/ext/third_party/json/.conan/test_package/test_package.cpp +0 -16
  857. data/ext/third_party/json/.gitignore +0 -3
  858. data/ext/third_party/json/.travis.yml +0 -173
  859. data/ext/third_party/json/Makefile +0 -77
  860. data/ext/third_party/json/README.md +0 -149
  861. data/ext/third_party/json/conanfile.py +0 -28
  862. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
  863. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
  864. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
  865. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
  866. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
  867. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
  868. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
  869. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
  870. data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
  871. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
  872. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
  873. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
  874. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
  875. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
  876. data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
  877. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
  878. data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
  879. data/ext/third_party/snappy/.appveyor.yml +0 -36
  880. data/ext/third_party/snappy/.gitignore +0 -8
  881. data/ext/third_party/snappy/.travis.yml +0 -98
  882. data/ext/third_party/snappy/AUTHORS +0 -1
  883. data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
  884. data/ext/third_party/snappy/NEWS +0 -188
  885. data/ext/third_party/snappy/README.md +0 -148
  886. data/ext/third_party/snappy/docs/README.md +0 -72
  887. data/ext/third_party/snappy/format_description.txt +0 -110
  888. data/ext/third_party/snappy/framing_format.txt +0 -135
  889. data/ext/third_party/snappy/snappy-test.cc +0 -613
  890. data/ext/third_party/snappy/snappy-test.h +0 -526
  891. data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
  892. data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
  893. data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
  894. data/ext/third_party/spdlog/.clang-format +0 -108
  895. data/ext/third_party/spdlog/.clang-tidy +0 -54
  896. data/ext/third_party/spdlog/.gitattributes +0 -1
  897. data/ext/third_party/spdlog/.gitignore +0 -83
  898. data/ext/third_party/spdlog/.travis.yml +0 -112
  899. data/ext/third_party/spdlog/INSTALL +0 -24
  900. data/ext/third_party/spdlog/README.md +0 -423
  901. data/ext/third_party/spdlog/appveyor.yml +0 -51
  902. data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
@@ -27,6 +27,7 @@
27
27
  #include "asio/detail/handler_alloc_helpers.hpp"
28
28
  #include "asio/detail/handler_cont_helpers.hpp"
29
29
  #include "asio/detail/handler_invoke_helpers.hpp"
30
+ #include "asio/detail/handler_tracking.hpp"
30
31
  #include "asio/detail/handler_type_requirements.hpp"
31
32
  #include "asio/detail/non_const_lvalue.hpp"
32
33
  #include "asio/detail/throw_error.hpp"
@@ -210,9 +211,12 @@ namespace detail
210
211
  max_size = this->check_for_completion(ec, buffers_.total_consumed());
211
212
  do
212
213
  {
213
- device_.async_write_some_at(
214
- offset_ + buffers_.total_consumed(), buffers_.prepare(max_size),
215
- ASIO_MOVE_CAST(write_at_op)(*this));
214
+ {
215
+ ASIO_HANDLER_LOCATION((__FILE__, __LINE__, "async_write_at"));
216
+ device_.async_write_some_at(
217
+ offset_ + buffers_.total_consumed(), buffers_.prepare(max_size),
218
+ ASIO_MOVE_CAST(write_at_op)(*this));
219
+ }
216
220
  return; default:
217
221
  buffers_.consume(bytes_transferred);
218
222
  if ((!ec && bytes_transferred == 0) || buffers_.empty())
@@ -238,23 +242,33 @@ namespace detail
238
242
  template <typename AsyncRandomAccessWriteDevice,
239
243
  typename ConstBufferSequence, typename ConstBufferIterator,
240
244
  typename CompletionCondition, typename WriteHandler>
241
- inline void* asio_handler_allocate(std::size_t size,
245
+ inline asio_handler_allocate_is_deprecated
246
+ asio_handler_allocate(std::size_t size,
242
247
  write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
243
248
  ConstBufferIterator, CompletionCondition, WriteHandler>* this_handler)
244
249
  {
250
+ #if defined(ASIO_NO_DEPRECATED)
251
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
252
+ return asio_handler_allocate_is_no_longer_used();
253
+ #else // defined(ASIO_NO_DEPRECATED)
245
254
  return asio_handler_alloc_helpers::allocate(
246
255
  size, this_handler->handler_);
256
+ #endif // defined(ASIO_NO_DEPRECATED)
247
257
  }
248
258
 
249
259
  template <typename AsyncRandomAccessWriteDevice,
250
260
  typename ConstBufferSequence, typename ConstBufferIterator,
251
261
  typename CompletionCondition, typename WriteHandler>
252
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
262
+ inline asio_handler_deallocate_is_deprecated
263
+ asio_handler_deallocate(void* pointer, std::size_t size,
253
264
  write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
254
265
  ConstBufferIterator, CompletionCondition, WriteHandler>* this_handler)
255
266
  {
256
267
  asio_handler_alloc_helpers::deallocate(
257
268
  pointer, size, this_handler->handler_);
269
+ #if defined(ASIO_NO_DEPRECATED)
270
+ return asio_handler_deallocate_is_no_longer_used();
271
+ #endif // defined(ASIO_NO_DEPRECATED)
258
272
  }
259
273
 
260
274
  template <typename AsyncRandomAccessWriteDevice,
@@ -272,23 +286,31 @@ namespace detail
272
286
  template <typename Function, typename AsyncRandomAccessWriteDevice,
273
287
  typename ConstBufferSequence, typename ConstBufferIterator,
274
288
  typename CompletionCondition, typename WriteHandler>
275
- inline void asio_handler_invoke(Function& function,
289
+ inline asio_handler_invoke_is_deprecated
290
+ asio_handler_invoke(Function& function,
276
291
  write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
277
292
  ConstBufferIterator, CompletionCondition, WriteHandler>* this_handler)
278
293
  {
279
294
  asio_handler_invoke_helpers::invoke(
280
295
  function, this_handler->handler_);
296
+ #if defined(ASIO_NO_DEPRECATED)
297
+ return asio_handler_invoke_is_no_longer_used();
298
+ #endif // defined(ASIO_NO_DEPRECATED)
281
299
  }
282
300
 
283
301
  template <typename Function, typename AsyncRandomAccessWriteDevice,
284
302
  typename ConstBufferSequence, typename ConstBufferIterator,
285
303
  typename CompletionCondition, typename WriteHandler>
286
- inline void asio_handler_invoke(const Function& function,
304
+ inline asio_handler_invoke_is_deprecated
305
+ asio_handler_invoke(const Function& function,
287
306
  write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
288
307
  ConstBufferIterator, CompletionCondition, WriteHandler>* this_handler)
289
308
  {
290
309
  asio_handler_invoke_helpers::invoke(
291
310
  function, this_handler->handler_);
311
+ #if defined(ASIO_NO_DEPRECATED)
312
+ return asio_handler_invoke_is_no_longer_used();
313
+ #endif // defined(ASIO_NO_DEPRECATED)
292
314
  }
293
315
 
294
316
  template <typename AsyncRandomAccessWriteDevice,
@@ -373,6 +395,7 @@ struct associated_executor<
373
395
  detail::write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
374
396
  ConstBufferIterator, CompletionCondition, WriteHandler>,
375
397
  Executor>
398
+ : detail::associated_executor_forwarding_base<WriteHandler, Executor>
376
399
  {
377
400
  typedef typename associated_executor<WriteHandler, Executor>::type type;
378
401
 
@@ -467,19 +490,29 @@ namespace detail
467
490
  };
468
491
 
469
492
  template <typename Allocator, typename WriteHandler>
470
- inline void* asio_handler_allocate(std::size_t size,
493
+ inline asio_handler_allocate_is_deprecated
494
+ asio_handler_allocate(std::size_t size,
471
495
  write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
472
496
  {
497
+ #if defined(ASIO_NO_DEPRECATED)
498
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
499
+ return asio_handler_allocate_is_no_longer_used();
500
+ #else // defined(ASIO_NO_DEPRECATED)
473
501
  return asio_handler_alloc_helpers::allocate(
474
502
  size, this_handler->handler_);
503
+ #endif // defined(ASIO_NO_DEPRECATED)
475
504
  }
476
505
 
477
506
  template <typename Allocator, typename WriteHandler>
478
- inline void asio_handler_deallocate(void* pointer, std::size_t size,
507
+ inline asio_handler_deallocate_is_deprecated
508
+ asio_handler_deallocate(void* pointer, std::size_t size,
479
509
  write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
480
510
  {
481
511
  asio_handler_alloc_helpers::deallocate(
482
512
  pointer, size, this_handler->handler_);
513
+ #if defined(ASIO_NO_DEPRECATED)
514
+ return asio_handler_deallocate_is_no_longer_used();
515
+ #endif // defined(ASIO_NO_DEPRECATED)
483
516
  }
484
517
 
485
518
  template <typename Allocator, typename WriteHandler>
@@ -491,19 +524,27 @@ namespace detail
491
524
  }
492
525
 
493
526
  template <typename Function, typename Allocator, typename WriteHandler>
494
- inline void asio_handler_invoke(Function& function,
527
+ inline asio_handler_invoke_is_deprecated
528
+ asio_handler_invoke(Function& function,
495
529
  write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
496
530
  {
497
531
  asio_handler_invoke_helpers::invoke(
498
532
  function, this_handler->handler_);
533
+ #if defined(ASIO_NO_DEPRECATED)
534
+ return asio_handler_invoke_is_no_longer_used();
535
+ #endif // defined(ASIO_NO_DEPRECATED)
499
536
  }
500
537
 
501
538
  template <typename Function, typename Allocator, typename WriteHandler>
502
- inline void asio_handler_invoke(const Function& function,
539
+ inline asio_handler_invoke_is_deprecated
540
+ asio_handler_invoke(const Function& function,
503
541
  write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
504
542
  {
505
543
  asio_handler_invoke_helpers::invoke(
506
544
  function, this_handler->handler_);
545
+ #if defined(ASIO_NO_DEPRECATED)
546
+ return asio_handler_invoke_is_no_longer_used();
547
+ #endif // defined(ASIO_NO_DEPRECATED)
507
548
  }
508
549
 
509
550
  template <typename AsyncRandomAccessWriteDevice>
@@ -566,6 +607,7 @@ template <typename Executor, typename WriteHandler, typename Executor1>
566
607
  struct associated_executor<
567
608
  detail::write_at_streambuf_op<Executor, WriteHandler>,
568
609
  Executor1>
610
+ : detail::associated_executor_forwarding_base<WriteHandler, Executor>
569
611
  {
570
612
  typedef typename associated_executor<WriteHandler, Executor1>::type type;
571
613
 
@@ -20,9 +20,9 @@
20
20
  #include <stdexcept>
21
21
  #include <typeinfo>
22
22
  #include "asio/async_result.hpp"
23
- #include "asio/detail/noncopyable.hpp"
24
23
  #include "asio/detail/wrapped_handler.hpp"
25
24
  #include "asio/error_code.hpp"
25
+ #include "asio/execution.hpp"
26
26
  #include "asio/execution_context.hpp"
27
27
 
28
28
  #if defined(ASIO_HAS_CHRONO)
@@ -36,17 +36,30 @@
36
36
  # include "asio/detail/signal_init.hpp"
37
37
  #endif
38
38
 
39
+ #if defined(ASIO_HAS_IOCP)
40
+ # include "asio/detail/win_iocp_io_context.hpp"
41
+ #else
42
+ # include "asio/detail/scheduler.hpp"
43
+ #endif
44
+
39
45
  #include "asio/detail/push_options.hpp"
40
46
 
41
47
  namespace asio {
42
48
 
43
49
  namespace detail {
44
50
  #if defined(ASIO_HAS_IOCP)
45
- typedef class win_iocp_io_context io_context_impl;
51
+ typedef win_iocp_io_context io_context_impl;
46
52
  class win_iocp_overlapped_ptr;
47
53
  #else
48
- typedef class scheduler io_context_impl;
54
+ typedef scheduler io_context_impl;
49
55
  #endif
56
+
57
+ struct io_context_bits
58
+ {
59
+ ASIO_STATIC_CONSTEXPR(unsigned int, blocking_never = 1);
60
+ ASIO_STATIC_CONSTEXPR(unsigned int, relationship_continuation = 2);
61
+ ASIO_STATIC_CONSTEXPR(unsigned int, outstanding_work_tracked = 4);
62
+ };
50
63
  } // namespace detail
51
64
 
52
65
  /// Provides core I/O functionality.
@@ -153,12 +166,30 @@ namespace detail {
153
166
  * returning when there is no more work to do. For example, the io_context may
154
167
  * be being run in a background thread that is launched prior to the
155
168
  * application's asynchronous operations. The run() call may be kept running by
156
- * creating an object of type
157
- * asio::executor_work_guard<io_context::executor_type>:
169
+ * creating an executor that tracks work against the io_context:
158
170
  *
159
171
  * @code asio::io_context io_context;
160
- * asio::executor_work_guard<asio::io_context::executor_type>
161
- * = asio::make_work_guard(io_context);
172
+ * auto work = asio::require(io_context.get_executor(),
173
+ * asio::execution::outstanding_work.tracked);
174
+ * ... @endcode
175
+ *
176
+ * If using C++03, which lacks automatic variable type deduction, you may
177
+ * compute the return type of the require call:
178
+ *
179
+ * @code asio::io_context io_context;
180
+ * typename asio::require_result<
181
+ * asio::io_context::executor_type,
182
+ * asio::exeution::outstanding_work_t::tracked_t>
183
+ * work = asio::require(io_context.get_executor(),
184
+ * asio::execution::outstanding_work.tracked);
185
+ * ... @endcode
186
+ *
187
+ * or store the result in the type-erasing executor wrapper, any_io_executor:
188
+ *
189
+ * @code asio::io_context io_context;
190
+ * asio::any_io_executor work
191
+ * = asio::require(io_context.get_executor(),
192
+ * asio::execution::outstanding_work.tracked);
162
193
  * ... @endcode
163
194
  *
164
195
  * To effect a shutdown, the application will then need to call the io_context
@@ -167,13 +198,15 @@ namespace detail {
167
198
  * permitting ready handlers to be dispatched.
168
199
  *
169
200
  * Alternatively, if the application requires that all operations and handlers
170
- * be allowed to finish normally, the work object may be explicitly reset.
201
+ * be allowed to finish normally, store the work-tracking executor in an
202
+ * any_io_executor object, so that it may be explicitly reset.
171
203
  *
172
204
  * @code asio::io_context io_context;
173
- * asio::executor_work_guard<asio::io_context::executor_type>
174
- * = asio::make_work_guard(io_context);
205
+ * asio::any_io_executor work
206
+ * = asio::require(io_context.get_executor(),
207
+ * asio::execution::outstanding_work.tracked);
175
208
  * ...
176
- * work.reset(); // Allow run() to exit. @endcode
209
+ * work = asio::any_io_executor(); // Allow run() to exit. @endcode
177
210
  */
178
211
  class io_context
179
212
  : public execution_context
@@ -185,8 +218,14 @@ private:
185
218
  #endif
186
219
 
187
220
  public:
188
- class executor_type;
189
- friend class executor_type;
221
+ template <typename Allocator, unsigned int Bits>
222
+ class basic_executor_type;
223
+
224
+ template <typename Allocator, unsigned int Bits>
225
+ friend class basic_executor_type;
226
+
227
+ /// Executor used to submit functions to an io_context.
228
+ typedef basic_executor_type<std::allocator<void>, 0> executor_type;
190
229
 
191
230
  #if !defined(ASIO_NO_DEPRECATED)
192
231
  class work;
@@ -195,9 +234,11 @@ public:
195
234
 
196
235
  class service;
197
236
 
198
- #if !defined(ASIO_NO_EXTENSIONS)
237
+ #if !defined(ASIO_NO_EXTENSIONS) \
238
+ && !defined(ASIO_NO_TS_EXECUTORS)
199
239
  class strand;
200
240
  #endif // !defined(ASIO_NO_EXTENSIONS)
241
+ // && !defined(ASIO_NO_TS_EXECUTORS)
201
242
 
202
243
  /// The type used to count the number of handlers executed by the context.
203
244
  typedef std::size_t count_type;
@@ -594,6 +635,9 @@ public:
594
635
  #endif // !defined(ASIO_NO_DEPRECATED)
595
636
 
596
637
  private:
638
+ io_context(const io_context&) ASIO_DELETED;
639
+ io_context& operator=(const io_context&) ASIO_DELETED;
640
+
597
641
  #if !defined(ASIO_NO_DEPRECATED)
598
642
  struct initiate_dispatch;
599
643
  struct initiate_post;
@@ -618,10 +662,362 @@ private:
618
662
  impl_type& impl_;
619
663
  };
620
664
 
621
- /// Executor used to submit functions to an io_context.
622
- class io_context::executor_type
665
+ namespace detail {
666
+
667
+ } // namespace detail
668
+
669
+ /// Executor implementation type used to submit functions to an io_context.
670
+ template <typename Allocator, unsigned int Bits>
671
+ class io_context::basic_executor_type : detail::io_context_bits
623
672
  {
624
673
  public:
674
+ /// Copy constructor.
675
+ basic_executor_type(
676
+ const basic_executor_type& other) ASIO_NOEXCEPT
677
+ : io_context_(other.io_context_),
678
+ allocator_(other.allocator_),
679
+ bits_(other.bits_)
680
+ {
681
+ if (Bits & outstanding_work_tracked)
682
+ if (io_context_)
683
+ io_context_->impl_.work_started();
684
+ }
685
+
686
+ #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
687
+ /// Move constructor.
688
+ basic_executor_type(basic_executor_type&& other) ASIO_NOEXCEPT
689
+ : io_context_(other.io_context_),
690
+ allocator_(ASIO_MOVE_CAST(Allocator)(other.allocator_)),
691
+ bits_(other.bits_)
692
+ {
693
+ if (Bits & outstanding_work_tracked)
694
+ other.io_context_ = 0;
695
+ }
696
+ #endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
697
+
698
+ /// Destructor.
699
+ ~basic_executor_type() ASIO_NOEXCEPT
700
+ {
701
+ if (Bits & outstanding_work_tracked)
702
+ if (io_context_)
703
+ io_context_->impl_.work_finished();
704
+ }
705
+
706
+ /// Assignment operator.
707
+ basic_executor_type& operator=(
708
+ const basic_executor_type& other) ASIO_NOEXCEPT;
709
+
710
+ #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
711
+ /// Move assignment operator.
712
+ basic_executor_type& operator=(
713
+ basic_executor_type&& other) ASIO_NOEXCEPT;
714
+ #endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
715
+
716
+ /// Obtain an executor with the @c blocking.possibly property.
717
+ /**
718
+ * Do not call this function directly. It is intended for use with the
719
+ * asio::require customisation point.
720
+ *
721
+ * For example:
722
+ * @code auto ex1 = my_io_context.get_executor();
723
+ * auto ex2 = asio::require(ex1,
724
+ * asio::execution::blocking.possibly); @endcode
725
+ */
726
+ ASIO_CONSTEXPR basic_executor_type require(
727
+ execution::blocking_t::possibly_t) const
728
+ {
729
+ return basic_executor_type(io_context_,
730
+ allocator_, bits_ & ~blocking_never);
731
+ }
732
+
733
+ /// Obtain an executor with the @c blocking.never property.
734
+ /**
735
+ * Do not call this function directly. It is intended for use with the
736
+ * asio::require customisation point.
737
+ *
738
+ * For example:
739
+ * @code auto ex1 = my_io_context.get_executor();
740
+ * auto ex2 = asio::require(ex1,
741
+ * asio::execution::blocking.never); @endcode
742
+ */
743
+ ASIO_CONSTEXPR basic_executor_type require(
744
+ execution::blocking_t::never_t) const
745
+ {
746
+ return basic_executor_type(io_context_,
747
+ allocator_, bits_ | blocking_never);
748
+ }
749
+
750
+ /// Obtain an executor with the @c relationship.fork property.
751
+ /**
752
+ * Do not call this function directly. It is intended for use with the
753
+ * asio::require customisation point.
754
+ *
755
+ * For example:
756
+ * @code auto ex1 = my_io_context.get_executor();
757
+ * auto ex2 = asio::require(ex1,
758
+ * asio::execution::relationship.fork); @endcode
759
+ */
760
+ ASIO_CONSTEXPR basic_executor_type require(
761
+ execution::relationship_t::fork_t) const
762
+ {
763
+ return basic_executor_type(io_context_,
764
+ allocator_, bits_ & ~relationship_continuation);
765
+ }
766
+
767
+ /// Obtain an executor with the @c relationship.continuation property.
768
+ /**
769
+ * Do not call this function directly. It is intended for use with the
770
+ * asio::require customisation point.
771
+ *
772
+ * For example:
773
+ * @code auto ex1 = my_io_context.get_executor();
774
+ * auto ex2 = asio::require(ex1,
775
+ * asio::execution::relationship.continuation); @endcode
776
+ */
777
+ ASIO_CONSTEXPR basic_executor_type require(
778
+ execution::relationship_t::continuation_t) const
779
+ {
780
+ return basic_executor_type(io_context_,
781
+ allocator_, bits_ | relationship_continuation);
782
+ }
783
+
784
+ /// Obtain an executor with the @c outstanding_work.tracked property.
785
+ /**
786
+ * Do not call this function directly. It is intended for use with the
787
+ * asio::require customisation point.
788
+ *
789
+ * For example:
790
+ * @code auto ex1 = my_io_context.get_executor();
791
+ * auto ex2 = asio::require(ex1,
792
+ * asio::execution::outstanding_work.tracked); @endcode
793
+ */
794
+ ASIO_CONSTEXPR basic_executor_type<Allocator,
795
+ ASIO_UNSPECIFIED(Bits | outstanding_work_tracked)>
796
+ require(execution::outstanding_work_t::tracked_t) const
797
+ {
798
+ return basic_executor_type<Allocator, Bits | outstanding_work_tracked>(
799
+ io_context_, allocator_, bits_);
800
+ }
801
+
802
+ /// Obtain an executor with the @c outstanding_work.untracked property.
803
+ /**
804
+ * Do not call this function directly. It is intended for use with the
805
+ * asio::require customisation point.
806
+ *
807
+ * For example:
808
+ * @code auto ex1 = my_io_context.get_executor();
809
+ * auto ex2 = asio::require(ex1,
810
+ * asio::execution::outstanding_work.untracked); @endcode
811
+ */
812
+ ASIO_CONSTEXPR basic_executor_type<Allocator,
813
+ ASIO_UNSPECIFIED(Bits & ~outstanding_work_tracked)>
814
+ require(execution::outstanding_work_t::untracked_t) const
815
+ {
816
+ return basic_executor_type<Allocator, Bits & ~outstanding_work_tracked>(
817
+ io_context_, allocator_, bits_);
818
+ }
819
+
820
+ /// Obtain an executor with the specified @c allocator property.
821
+ /**
822
+ * Do not call this function directly. It is intended for use with the
823
+ * asio::require customisation point.
824
+ *
825
+ * For example:
826
+ * @code auto ex1 = my_io_context.get_executor();
827
+ * auto ex2 = asio::require(ex1,
828
+ * asio::execution::allocator(my_allocator)); @endcode
829
+ */
830
+ template <typename OtherAllocator>
831
+ ASIO_CONSTEXPR basic_executor_type<OtherAllocator, Bits>
832
+ require(execution::allocator_t<OtherAllocator> a) const
833
+ {
834
+ return basic_executor_type<OtherAllocator, Bits>(
835
+ io_context_, a.value(), bits_);
836
+ }
837
+
838
+ /// Obtain an executor with the default @c allocator property.
839
+ /**
840
+ * Do not call this function directly. It is intended for use with the
841
+ * asio::require customisation point.
842
+ *
843
+ * For example:
844
+ * @code auto ex1 = my_io_context.get_executor();
845
+ * auto ex2 = asio::require(ex1,
846
+ * asio::execution::allocator); @endcode
847
+ */
848
+ ASIO_CONSTEXPR basic_executor_type<std::allocator<void>, Bits>
849
+ require(execution::allocator_t<void>) const
850
+ {
851
+ return basic_executor_type<std::allocator<void>, Bits>(
852
+ io_context_, std::allocator<void>(), bits_);
853
+ }
854
+
855
+ /// Query the current value of the @c mapping property.
856
+ /**
857
+ * Do not call this function directly. It is intended for use with the
858
+ * asio::query customisation point.
859
+ *
860
+ * For example:
861
+ * @code auto ex = my_io_context.get_executor();
862
+ * if (asio::query(ex, asio::execution::mapping)
863
+ * == asio::execution::mapping.thread)
864
+ * ... @endcode
865
+ */
866
+ static ASIO_CONSTEXPR execution::mapping_t query(
867
+ execution::mapping_t) ASIO_NOEXCEPT
868
+ {
869
+ return execution::mapping.thread;
870
+ }
871
+
872
+ /// Query the current value of the @c context property.
873
+ /**
874
+ * Do not call this function directly. It is intended for use with the
875
+ * asio::query customisation point.
876
+ *
877
+ * For example:
878
+ * @code auto ex = my_io_context.get_executor();
879
+ * asio::io_context& ctx = asio::query(
880
+ * ex, asio::execution::context); @endcode
881
+ */
882
+ io_context& query(execution::context_t) const ASIO_NOEXCEPT
883
+ {
884
+ return *io_context_;
885
+ }
886
+
887
+ /// Query the current value of the @c blocking property.
888
+ /**
889
+ * Do not call this function directly. It is intended for use with the
890
+ * asio::query customisation point.
891
+ *
892
+ * For example:
893
+ * @code auto ex = my_io_context.get_executor();
894
+ * if (asio::query(ex, asio::execution::blocking)
895
+ * == asio::execution::blocking.always)
896
+ * ... @endcode
897
+ */
898
+ ASIO_CONSTEXPR execution::blocking_t query(
899
+ execution::blocking_t) const ASIO_NOEXCEPT
900
+ {
901
+ return (bits_ & blocking_never)
902
+ ? execution::blocking_t(execution::blocking.never)
903
+ : execution::blocking_t(execution::blocking.possibly);
904
+ }
905
+
906
+ /// Query the current value of the @c relationship property.
907
+ /**
908
+ * Do not call this function directly. It is intended for use with the
909
+ * asio::query customisation point.
910
+ *
911
+ * For example:
912
+ * @code auto ex = my_io_context.get_executor();
913
+ * if (asio::query(ex, asio::execution::relationship)
914
+ * == asio::execution::relationship.continuation)
915
+ * ... @endcode
916
+ */
917
+ ASIO_CONSTEXPR execution::relationship_t query(
918
+ execution::relationship_t) const ASIO_NOEXCEPT
919
+ {
920
+ return (bits_ & relationship_continuation)
921
+ ? execution::relationship_t(execution::relationship.continuation)
922
+ : execution::relationship_t(execution::relationship.fork);
923
+ }
924
+
925
+ /// Query the current value of the @c outstanding_work property.
926
+ /**
927
+ * Do not call this function directly. It is intended for use with the
928
+ * asio::query customisation point.
929
+ *
930
+ * For example:
931
+ * @code auto ex = my_io_context.get_executor();
932
+ * if (asio::query(ex, asio::execution::outstanding_work)
933
+ * == asio::execution::outstanding_work.tracked)
934
+ * ... @endcode
935
+ */
936
+ static ASIO_CONSTEXPR execution::outstanding_work_t query(
937
+ execution::outstanding_work_t) ASIO_NOEXCEPT
938
+ {
939
+ return (Bits & outstanding_work_tracked)
940
+ ? execution::outstanding_work_t(execution::outstanding_work.tracked)
941
+ : execution::outstanding_work_t(execution::outstanding_work.untracked);
942
+ }
943
+
944
+ /// Query the current value of the @c allocator property.
945
+ /**
946
+ * Do not call this function directly. It is intended for use with the
947
+ * asio::query customisation point.
948
+ *
949
+ * For example:
950
+ * @code auto ex = my_io_context.get_executor();
951
+ * auto alloc = asio::query(ex,
952
+ * asio::execution::allocator); @endcode
953
+ */
954
+ template <typename OtherAllocator>
955
+ ASIO_CONSTEXPR Allocator query(
956
+ execution::allocator_t<OtherAllocator>) const ASIO_NOEXCEPT
957
+ {
958
+ return allocator_;
959
+ }
960
+
961
+ /// Query the current value of the @c allocator property.
962
+ /**
963
+ * Do not call this function directly. It is intended for use with the
964
+ * asio::query customisation point.
965
+ *
966
+ * For example:
967
+ * @code auto ex = my_io_context.get_executor();
968
+ * auto alloc = asio::query(ex,
969
+ * asio::execution::allocator); @endcode
970
+ */
971
+ ASIO_CONSTEXPR Allocator query(
972
+ execution::allocator_t<void>) const ASIO_NOEXCEPT
973
+ {
974
+ return allocator_;
975
+ }
976
+
977
+ /// Determine whether the io_context is running in the current thread.
978
+ /**
979
+ * @return @c true if the current thread is running the io_context. Otherwise
980
+ * returns @c false.
981
+ */
982
+ bool running_in_this_thread() const ASIO_NOEXCEPT;
983
+
984
+ /// Compare two executors for equality.
985
+ /**
986
+ * Two executors are equal if they refer to the same underlying io_context.
987
+ */
988
+ friend bool operator==(const basic_executor_type& a,
989
+ const basic_executor_type& b) ASIO_NOEXCEPT
990
+ {
991
+ return a.io_context_ == b.io_context_
992
+ && a.allocator_ == b.allocator_
993
+ && a.bits_ == b.bits_;
994
+ }
995
+
996
+ /// Compare two executors for inequality.
997
+ /**
998
+ * Two executors are equal if they refer to the same underlying io_context.
999
+ */
1000
+ friend bool operator!=(const basic_executor_type& a,
1001
+ const basic_executor_type& b) ASIO_NOEXCEPT
1002
+ {
1003
+ return a.io_context_ != b.io_context_
1004
+ || a.allocator_ != b.allocator_
1005
+ || a.bits_ != b.bits_;
1006
+ }
1007
+
1008
+ /// Execution function.
1009
+ /**
1010
+ * Do not call this function directly. It is intended for use with the
1011
+ * execution::execute customisation point.
1012
+ *
1013
+ * For example:
1014
+ * @code auto ex = my_io_context.get_executor();
1015
+ * execution::execute(ex, my_function_object); @endcode
1016
+ */
1017
+ template <typename Function>
1018
+ void execute(ASIO_MOVE_ARG(Function) f) const;
1019
+
1020
+ #if !defined(ASIO_NO_TS_EXECUTORS)
625
1021
  /// Obtain the underlying execution context.
626
1022
  io_context& context() const ASIO_NOEXCEPT;
627
1023
 
@@ -655,8 +1051,9 @@ public:
655
1051
  * @param a An allocator that may be used by the executor to allocate the
656
1052
  * internal storage needed for function invocation.
657
1053
  */
658
- template <typename Function, typename Allocator>
659
- void dispatch(ASIO_MOVE_ARG(Function) f, const Allocator& a) const;
1054
+ template <typename Function, typename OtherAllocator>
1055
+ void dispatch(ASIO_MOVE_ARG(Function) f,
1056
+ const OtherAllocator& a) const;
660
1057
 
661
1058
  /// Request the io_context to invoke the given function object.
662
1059
  /**
@@ -671,8 +1068,9 @@ public:
671
1068
  * @param a An allocator that may be used by the executor to allocate the
672
1069
  * internal storage needed for function invocation.
673
1070
  */
674
- template <typename Function, typename Allocator>
675
- void post(ASIO_MOVE_ARG(Function) f, const Allocator& a) const;
1071
+ template <typename Function, typename OtherAllocator>
1072
+ void post(ASIO_MOVE_ARG(Function) f,
1073
+ const OtherAllocator& a) const;
676
1074
 
677
1075
  /// Request the io_context to invoke the given function object.
678
1076
  /**
@@ -691,44 +1089,45 @@ public:
691
1089
  * @param a An allocator that may be used by the executor to allocate the
692
1090
  * internal storage needed for function invocation.
693
1091
  */
694
- template <typename Function, typename Allocator>
695
- void defer(ASIO_MOVE_ARG(Function) f, const Allocator& a) const;
1092
+ template <typename Function, typename OtherAllocator>
1093
+ void defer(ASIO_MOVE_ARG(Function) f,
1094
+ const OtherAllocator& a) const;
1095
+ #endif // !defined(ASIO_NO_TS_EXECUTORS)
696
1096
 
697
- /// Determine whether the io_context is running in the current thread.
698
- /**
699
- * @return @c true if the current thread is running the io_context. Otherwise
700
- * returns @c false.
701
- */
702
- bool running_in_this_thread() const ASIO_NOEXCEPT;
1097
+ private:
1098
+ friend class io_context;
1099
+ template <typename, unsigned int> friend class basic_executor_type;
703
1100
 
704
- /// Compare two executors for equality.
705
- /**
706
- * Two executors are equal if they refer to the same underlying io_context.
707
- */
708
- friend bool operator==(const executor_type& a,
709
- const executor_type& b) ASIO_NOEXCEPT
1101
+ // Constructor used by io_context::get_executor().
1102
+ explicit basic_executor_type(io_context& i) ASIO_NOEXCEPT
1103
+ : io_context_(&i),
1104
+ allocator_(),
1105
+ bits_(0)
710
1106
  {
711
- return &a.io_context_ == &b.io_context_;
1107
+ if (Bits & outstanding_work_tracked)
1108
+ io_context_->impl_.work_started();
712
1109
  }
713
1110
 
714
- /// Compare two executors for inequality.
715
- /**
716
- * Two executors are equal if they refer to the same underlying io_context.
717
- */
718
- friend bool operator!=(const executor_type& a,
719
- const executor_type& b) ASIO_NOEXCEPT
1111
+ // Constructor used by require().
1112
+ basic_executor_type(io_context* i,
1113
+ const Allocator& a, unsigned int bits) ASIO_NOEXCEPT
1114
+ : io_context_(i),
1115
+ allocator_(a),
1116
+ bits_(bits)
720
1117
  {
721
- return &a.io_context_ != &b.io_context_;
1118
+ if (Bits & outstanding_work_tracked)
1119
+ if (io_context_)
1120
+ io_context_->impl_.work_started();
722
1121
  }
723
1122
 
724
- private:
725
- friend class io_context;
1123
+ // The underlying io_context.
1124
+ io_context* io_context_;
726
1125
 
727
- // Constructor.
728
- explicit executor_type(io_context& i) : io_context_(i) {}
1126
+ // The allocator used for execution functions.
1127
+ Allocator allocator_;
729
1128
 
730
- // The underlying io_context.
731
- io_context& io_context_;
1129
+ // The runtime-switched properties of the io_context executor.
1130
+ unsigned int bits_;
732
1131
  };
733
1132
 
734
1133
  #if !defined(ASIO_NO_DEPRECATED)
@@ -852,6 +1251,265 @@ template <typename Type>
852
1251
  asio::detail::service_id<Type> service_base<Type>::id;
853
1252
 
854
1253
  } // namespace detail
1254
+
1255
+ #if !defined(GENERATING_DOCUMENTATION)
1256
+
1257
+ namespace traits {
1258
+
1259
+ #if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
1260
+
1261
+ template <typename Allocator, unsigned int Bits>
1262
+ struct equality_comparable<
1263
+ asio::io_context::basic_executor_type<Allocator, Bits>
1264
+ >
1265
+ {
1266
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1267
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1268
+ };
1269
+
1270
+ #endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
1271
+
1272
+ #if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
1273
+
1274
+ template <typename Allocator, unsigned int Bits, typename Function>
1275
+ struct execute_member<
1276
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1277
+ Function
1278
+ >
1279
+ {
1280
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1281
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1282
+ typedef void result_type;
1283
+ };
1284
+
1285
+ #endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
1286
+
1287
+ #if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
1288
+
1289
+ template <typename Allocator, unsigned int Bits>
1290
+ struct require_member<
1291
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1292
+ asio::execution::blocking_t::possibly_t
1293
+ >
1294
+ {
1295
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1296
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1297
+ typedef asio::io_context::basic_executor_type<
1298
+ Allocator, Bits> result_type;
1299
+ };
1300
+
1301
+ template <typename Allocator, unsigned int Bits>
1302
+ struct require_member<
1303
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1304
+ asio::execution::blocking_t::never_t
1305
+ >
1306
+ {
1307
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1308
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1309
+ typedef asio::io_context::basic_executor_type<
1310
+ Allocator, Bits> result_type;
1311
+ };
1312
+
1313
+ template <typename Allocator, unsigned int Bits>
1314
+ struct require_member<
1315
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1316
+ asio::execution::relationship_t::fork_t
1317
+ >
1318
+ {
1319
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1320
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1321
+ typedef asio::io_context::basic_executor_type<
1322
+ Allocator, Bits> result_type;
1323
+ };
1324
+
1325
+ template <typename Allocator, unsigned int Bits>
1326
+ struct require_member<
1327
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1328
+ asio::execution::relationship_t::continuation_t
1329
+ >
1330
+ {
1331
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1332
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1333
+ typedef asio::io_context::basic_executor_type<
1334
+ Allocator, Bits> result_type;
1335
+ };
1336
+
1337
+ template <typename Allocator, unsigned int Bits>
1338
+ struct require_member<
1339
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1340
+ asio::execution::outstanding_work_t::tracked_t
1341
+ > : asio::detail::io_context_bits
1342
+ {
1343
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1344
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1345
+ typedef asio::io_context::basic_executor_type<
1346
+ Allocator, Bits | outstanding_work_tracked> result_type;
1347
+ };
1348
+
1349
+ template <typename Allocator, unsigned int Bits>
1350
+ struct require_member<
1351
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1352
+ asio::execution::outstanding_work_t::untracked_t
1353
+ > : asio::detail::io_context_bits
1354
+ {
1355
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1356
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1357
+ typedef asio::io_context::basic_executor_type<
1358
+ Allocator, Bits & ~outstanding_work_tracked> result_type;
1359
+ };
1360
+
1361
+ template <typename Allocator, unsigned int Bits>
1362
+ struct require_member<
1363
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1364
+ asio::execution::allocator_t<void>
1365
+ >
1366
+ {
1367
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1368
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1369
+ typedef asio::io_context::basic_executor_type<
1370
+ std::allocator<void>, Bits> result_type;
1371
+ };
1372
+
1373
+ template <unsigned int Bits,
1374
+ typename Allocator, typename OtherAllocator>
1375
+ struct require_member<
1376
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1377
+ asio::execution::allocator_t<OtherAllocator>
1378
+ >
1379
+ {
1380
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1381
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
1382
+ typedef asio::io_context::basic_executor_type<
1383
+ OtherAllocator, Bits> result_type;
1384
+ };
1385
+
1386
+ #endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
1387
+
1388
+ #if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
1389
+
1390
+ template <typename Allocator, unsigned int Bits, typename Property>
1391
+ struct query_static_constexpr_member<
1392
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1393
+ Property,
1394
+ typename asio::enable_if<
1395
+ asio::is_convertible<
1396
+ Property,
1397
+ asio::execution::outstanding_work_t
1398
+ >::value
1399
+ >::type
1400
+ > : asio::detail::io_context_bits
1401
+ {
1402
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1403
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1404
+ typedef asio::execution::outstanding_work_t result_type;
1405
+
1406
+ static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT
1407
+ {
1408
+ return (Bits & outstanding_work_tracked)
1409
+ ? execution::outstanding_work_t(execution::outstanding_work.tracked)
1410
+ : execution::outstanding_work_t(execution::outstanding_work.untracked);
1411
+ }
1412
+ };
1413
+
1414
+ template <typename Allocator, unsigned int Bits, typename Property>
1415
+ struct query_static_constexpr_member<
1416
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1417
+ Property,
1418
+ typename asio::enable_if<
1419
+ asio::is_convertible<
1420
+ Property,
1421
+ asio::execution::mapping_t
1422
+ >::value
1423
+ >::type
1424
+ >
1425
+ {
1426
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1427
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1428
+ typedef asio::execution::mapping_t::thread_t result_type;
1429
+
1430
+ static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT
1431
+ {
1432
+ return result_type();
1433
+ }
1434
+ };
1435
+
1436
+ #endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
1437
+
1438
+ #if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
1439
+
1440
+ template <typename Allocator, unsigned int Bits, typename Property>
1441
+ struct query_member<
1442
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1443
+ Property,
1444
+ typename asio::enable_if<
1445
+ asio::is_convertible<
1446
+ Property,
1447
+ asio::execution::blocking_t
1448
+ >::value
1449
+ >::type
1450
+ >
1451
+ {
1452
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1453
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1454
+ typedef asio::execution::blocking_t result_type;
1455
+ };
1456
+
1457
+ template <typename Allocator, unsigned int Bits, typename Property>
1458
+ struct query_member<
1459
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1460
+ Property,
1461
+ typename asio::enable_if<
1462
+ asio::is_convertible<
1463
+ Property,
1464
+ asio::execution::relationship_t
1465
+ >::value
1466
+ >::type
1467
+ >
1468
+ {
1469
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1470
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1471
+ typedef asio::execution::relationship_t result_type;
1472
+ };
1473
+
1474
+ template <typename Allocator, unsigned int Bits>
1475
+ struct query_member<
1476
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1477
+ asio::execution::context_t
1478
+ >
1479
+ {
1480
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1481
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1482
+ typedef asio::io_context& result_type;
1483
+ };
1484
+
1485
+ template <typename Allocator, unsigned int Bits>
1486
+ struct query_member<
1487
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1488
+ asio::execution::allocator_t<void>
1489
+ >
1490
+ {
1491
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1492
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1493
+ typedef Allocator result_type;
1494
+ };
1495
+
1496
+ template <typename Allocator, unsigned int Bits, typename OtherAllocator>
1497
+ struct query_member<
1498
+ asio::io_context::basic_executor_type<Allocator, Bits>,
1499
+ asio::execution::allocator_t<OtherAllocator>
1500
+ >
1501
+ {
1502
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1503
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1504
+ typedef Allocator result_type;
1505
+ };
1506
+
1507
+ #endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
1508
+
1509
+ } // namespace traits
1510
+
1511
+ #endif // !defined(GENERATING_DOCUMENTATION)
1512
+
855
1513
  } // namespace asio
856
1514
 
857
1515
  #include "asio/detail/pop_options.hpp"