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
@@ -16,14 +16,25 @@
16
16
  #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
17
 
18
18
  #include "asio/detail/config.hpp"
19
- #include "asio/detail/noncopyable.hpp"
19
+ #include "asio/detail/atomic_count.hpp"
20
20
  #include "asio/detail/scheduler.hpp"
21
21
  #include "asio/detail/thread_group.hpp"
22
+ #include "asio/execution.hpp"
22
23
  #include "asio/execution_context.hpp"
23
24
 
24
25
  #include "asio/detail/push_options.hpp"
25
26
 
26
27
  namespace asio {
28
+ namespace detail {
29
+ struct thread_pool_bits
30
+ {
31
+ ASIO_STATIC_CONSTEXPR(unsigned int, blocking_never = 1);
32
+ ASIO_STATIC_CONSTEXPR(unsigned int, blocking_always = 2);
33
+ ASIO_STATIC_CONSTEXPR(unsigned int, blocking_mask = 3);
34
+ ASIO_STATIC_CONSTEXPR(unsigned int, relationship_continuation = 4);
35
+ ASIO_STATIC_CONSTEXPR(unsigned int, outstanding_work_tracked = 8);
36
+ };
37
+ } // namespace detail
27
38
 
28
39
  /// A simple fixed-size thread pool.
29
40
  /**
@@ -32,7 +43,7 @@ namespace asio {
32
43
  *
33
44
  * @par Submitting tasks to the pool
34
45
  *
35
- * To submit functions to the thread_pool, use the @ref asio::dispatch,
46
+ * To submit functions to the thread pool, use the @ref asio::dispatch,
36
47
  * @ref asio::post or @ref asio::defer free functions.
37
48
  *
38
49
  * For example:
@@ -64,10 +75,22 @@ class thread_pool
64
75
  : public execution_context
65
76
  {
66
77
  public:
67
- class executor_type;
78
+ template <typename Allocator, unsigned int Bits>
79
+ class basic_executor_type;
80
+
81
+ template <typename Allocator, unsigned int Bits>
82
+ friend class basic_executor_type;
83
+
84
+ /// Executor used to submit functions to a thread pool.
85
+ typedef basic_executor_type<std::allocator<void>, 0> executor_type;
68
86
 
87
+ /// Scheduler used to schedule receivers on a thread pool.
88
+ typedef basic_executor_type<std::allocator<void>, 0> scheduler_type;
89
+
90
+ #if !defined(ASIO_NO_TS_EXECUTORS)
69
91
  /// Constructs a pool with an automatically determined number of threads.
70
92
  ASIO_DECL thread_pool();
93
+ #endif // !defined(ASIO_NO_TS_EXECUTORS)
71
94
 
72
95
  /// Constructs a pool with a specified number of threads.
73
96
  ASIO_DECL thread_pool(std::size_t num_threads);
@@ -81,6 +104,12 @@ public:
81
104
  /// Obtains the executor associated with the pool.
82
105
  executor_type get_executor() ASIO_NOEXCEPT;
83
106
 
107
+ /// Obtains the executor associated with the pool.
108
+ executor_type executor() ASIO_NOEXCEPT;
109
+
110
+ /// Obtains the scheduler associated with the pool.
111
+ scheduler_type scheduler() ASIO_NOEXCEPT;
112
+
84
113
  /// Stops the threads.
85
114
  /**
86
115
  * This function stops the threads as soon as possible. As a result of calling
@@ -88,6 +117,14 @@ public:
88
117
  */
89
118
  ASIO_DECL void stop();
90
119
 
120
+ /// Attaches the current thread to the pool.
121
+ /**
122
+ * This function attaches the current thread to the pool so that it may be
123
+ * used for executing submitted function objects. Blocks the calling thread
124
+ * until the pool is stopped or joined and has no outstanding work.
125
+ */
126
+ ASIO_DECL void attach();
127
+
91
128
  /// Joins the threads.
92
129
  /**
93
130
  * This function blocks until the threads in the pool have completed. If @c
@@ -96,8 +133,18 @@ public:
96
133
  */
97
134
  ASIO_DECL void join();
98
135
 
136
+ /// Waits for threads to complete.
137
+ /**
138
+ * This function blocks until the threads in the pool have completed. If @c
139
+ * stop() is not called prior to @c wait(), the @c wait() call will wait
140
+ * until the pool has no more outstanding work.
141
+ */
142
+ ASIO_DECL void wait();
143
+
99
144
  private:
100
- friend class executor_type;
145
+ thread_pool(const thread_pool&) ASIO_DELETED;
146
+ thread_pool& operator=(const thread_pool&) ASIO_DELETED;
147
+
101
148
  struct thread_function;
102
149
 
103
150
  // Helper function to create the underlying scheduler.
@@ -108,12 +155,485 @@ private:
108
155
 
109
156
  // The threads in the pool.
110
157
  detail::thread_group threads_;
158
+
159
+ // The current number of threads in the pool.
160
+ detail::atomic_count num_threads_;
111
161
  };
112
162
 
113
- /// Executor used to submit functions to a thread pool.
114
- class thread_pool::executor_type
163
+ /// Executor implementation type used to submit functions to a thread pool.
164
+ template <typename Allocator, unsigned int Bits>
165
+ class thread_pool::basic_executor_type : detail::thread_pool_bits
115
166
  {
116
167
  public:
168
+ /// The sender type, when this type is used as a scheduler.
169
+ typedef basic_executor_type sender_type;
170
+
171
+ /// The bulk execution shape type.
172
+ typedef std::size_t shape_type;
173
+
174
+ /// The bulk execution index type.
175
+ typedef std::size_t index_type;
176
+
177
+ #if defined(ASIO_HAS_DEDUCED_EXECUTION_IS_TYPED_SENDER_TRAIT) \
178
+ && defined(ASIO_HAS_STD_EXCEPTION_PTR)
179
+ template <
180
+ template <typename...> class Tuple,
181
+ template <typename...> class Variant>
182
+ using value_types = Variant<Tuple<>>;
183
+
184
+ template <template <typename...> class Variant>
185
+ using error_types = Variant<std::exception_ptr>;
186
+
187
+ ASIO_STATIC_CONSTEXPR(bool, sends_done = true);
188
+ #endif // defined(ASIO_HAS_DEDUCED_EXECUTION_IS_TYPED_SENDER_TRAIT)
189
+ // && defined(ASIO_HAS_STD_EXCEPTION_PTR)
190
+
191
+ /// Copy constructor.
192
+ basic_executor_type(
193
+ const basic_executor_type& other) ASIO_NOEXCEPT
194
+ : pool_(other.pool_),
195
+ allocator_(other.allocator_),
196
+ bits_(other.bits_)
197
+ {
198
+ if (Bits & outstanding_work_tracked)
199
+ if (pool_)
200
+ pool_->scheduler_.work_started();
201
+ }
202
+
203
+ #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
204
+ /// Move constructor.
205
+ basic_executor_type(basic_executor_type&& other) ASIO_NOEXCEPT
206
+ : pool_(other.pool_),
207
+ allocator_(ASIO_MOVE_CAST(Allocator)(other.allocator_)),
208
+ bits_(other.bits_)
209
+ {
210
+ if (Bits & outstanding_work_tracked)
211
+ other.pool_ = 0;
212
+ }
213
+ #endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
214
+
215
+ /// Destructor.
216
+ ~basic_executor_type() ASIO_NOEXCEPT
217
+ {
218
+ if (Bits & outstanding_work_tracked)
219
+ if (pool_)
220
+ pool_->scheduler_.work_finished();
221
+ }
222
+
223
+ /// Assignment operator.
224
+ basic_executor_type& operator=(
225
+ const basic_executor_type& other) ASIO_NOEXCEPT;
226
+
227
+ #if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
228
+ /// Move assignment operator.
229
+ basic_executor_type& operator=(
230
+ basic_executor_type&& other) ASIO_NOEXCEPT;
231
+ #endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
232
+
233
+ /// Obtain an executor with the @c blocking.possibly property.
234
+ /**
235
+ * Do not call this function directly. It is intended for use with the
236
+ * asio::require customisation point.
237
+ *
238
+ * For example:
239
+ * @code auto ex1 = my_thread_pool.executor();
240
+ * auto ex2 = asio::require(ex1,
241
+ * asio::execution::blocking.possibly); @endcode
242
+ */
243
+ ASIO_CONSTEXPR basic_executor_type<Allocator,
244
+ ASIO_UNSPECIFIED(Bits & ~blocking_mask)>
245
+ require(execution::blocking_t::possibly_t) const
246
+ {
247
+ return basic_executor_type<Allocator, Bits & ~blocking_mask>(
248
+ pool_, allocator_, bits_ & ~blocking_mask);
249
+ }
250
+
251
+ /// Obtain an executor with the @c blocking.always property.
252
+ /**
253
+ * Do not call this function directly. It is intended for use with the
254
+ * asio::require customisation point.
255
+ *
256
+ * For example:
257
+ * @code auto ex1 = my_thread_pool.executor();
258
+ * auto ex2 = asio::require(ex1,
259
+ * asio::execution::blocking.always); @endcode
260
+ */
261
+ ASIO_CONSTEXPR basic_executor_type<Allocator,
262
+ ASIO_UNSPECIFIED((Bits & ~blocking_mask) | blocking_always)>
263
+ require(execution::blocking_t::always_t) const
264
+ {
265
+ return basic_executor_type<Allocator,
266
+ ASIO_UNSPECIFIED((Bits & ~blocking_mask) | blocking_always)>(
267
+ pool_, allocator_, bits_ & ~blocking_mask);
268
+ }
269
+
270
+ /// Obtain an executor with the @c blocking.never property.
271
+ /**
272
+ * Do not call this function directly. It is intended for use with the
273
+ * asio::require customisation point.
274
+ *
275
+ * For example:
276
+ * @code auto ex1 = my_thread_pool.executor();
277
+ * auto ex2 = asio::require(ex1,
278
+ * asio::execution::blocking.never); @endcode
279
+ */
280
+ ASIO_CONSTEXPR basic_executor_type<Allocator,
281
+ ASIO_UNSPECIFIED(Bits & ~blocking_mask)>
282
+ require(execution::blocking_t::never_t) const
283
+ {
284
+ return basic_executor_type<Allocator, Bits & ~blocking_mask>(
285
+ pool_, allocator_, (bits_ & ~blocking_mask) | blocking_never);
286
+ }
287
+
288
+ /// Obtain an executor with the @c relationship.fork property.
289
+ /**
290
+ * Do not call this function directly. It is intended for use with the
291
+ * asio::require customisation point.
292
+ *
293
+ * For example:
294
+ * @code auto ex1 = my_thread_pool.executor();
295
+ * auto ex2 = asio::require(ex1,
296
+ * asio::execution::relationship.fork); @endcode
297
+ */
298
+ ASIO_CONSTEXPR basic_executor_type require(
299
+ execution::relationship_t::fork_t) const
300
+ {
301
+ return basic_executor_type(pool_,
302
+ allocator_, bits_ & ~relationship_continuation);
303
+ }
304
+
305
+ /// Obtain an executor with the @c relationship.continuation property.
306
+ /**
307
+ * Do not call this function directly. It is intended for use with the
308
+ * asio::require customisation point.
309
+ *
310
+ * For example:
311
+ * @code auto ex1 = my_thread_pool.executor();
312
+ * auto ex2 = asio::require(ex1,
313
+ * asio::execution::relationship.continuation); @endcode
314
+ */
315
+ ASIO_CONSTEXPR basic_executor_type require(
316
+ execution::relationship_t::continuation_t) const
317
+ {
318
+ return basic_executor_type(pool_,
319
+ allocator_, bits_ | relationship_continuation);
320
+ }
321
+
322
+ /// Obtain an executor with the @c outstanding_work.tracked property.
323
+ /**
324
+ * Do not call this function directly. It is intended for use with the
325
+ * asio::require customisation point.
326
+ *
327
+ * For example:
328
+ * @code auto ex1 = my_thread_pool.executor();
329
+ * auto ex2 = asio::require(ex1,
330
+ * asio::execution::outstanding_work.tracked); @endcode
331
+ */
332
+ ASIO_CONSTEXPR basic_executor_type<Allocator,
333
+ ASIO_UNSPECIFIED(Bits | outstanding_work_tracked)>
334
+ require(execution::outstanding_work_t::tracked_t) const
335
+ {
336
+ return basic_executor_type<Allocator, Bits | outstanding_work_tracked>(
337
+ pool_, allocator_, bits_);
338
+ }
339
+
340
+ /// Obtain an executor with the @c outstanding_work.untracked property.
341
+ /**
342
+ * Do not call this function directly. It is intended for use with the
343
+ * asio::require customisation point.
344
+ *
345
+ * For example:
346
+ * @code auto ex1 = my_thread_pool.executor();
347
+ * auto ex2 = asio::require(ex1,
348
+ * asio::execution::outstanding_work.untracked); @endcode
349
+ */
350
+ ASIO_CONSTEXPR basic_executor_type<Allocator,
351
+ ASIO_UNSPECIFIED(Bits & ~outstanding_work_tracked)>
352
+ require(execution::outstanding_work_t::untracked_t) const
353
+ {
354
+ return basic_executor_type<Allocator, Bits & ~outstanding_work_tracked>(
355
+ pool_, allocator_, bits_);
356
+ }
357
+
358
+ /// Obtain an executor with the specified @c allocator property.
359
+ /**
360
+ * Do not call this function directly. It is intended for use with the
361
+ * asio::require customisation point.
362
+ *
363
+ * For example:
364
+ * @code auto ex1 = my_thread_pool.executor();
365
+ * auto ex2 = asio::require(ex1,
366
+ * asio::execution::allocator(my_allocator)); @endcode
367
+ */
368
+ template <typename OtherAllocator>
369
+ ASIO_CONSTEXPR basic_executor_type<OtherAllocator, Bits>
370
+ require(execution::allocator_t<OtherAllocator> a) const
371
+ {
372
+ return basic_executor_type<OtherAllocator, Bits>(
373
+ pool_, a.value(), bits_);
374
+ }
375
+
376
+ /// Obtain an executor with the default @c allocator property.
377
+ /**
378
+ * Do not call this function directly. It is intended for use with the
379
+ * asio::require customisation point.
380
+ *
381
+ * For example:
382
+ * @code auto ex1 = my_thread_pool.executor();
383
+ * auto ex2 = asio::require(ex1,
384
+ * asio::execution::allocator); @endcode
385
+ */
386
+ ASIO_CONSTEXPR basic_executor_type<std::allocator<void>, Bits>
387
+ require(execution::allocator_t<void>) const
388
+ {
389
+ return basic_executor_type<std::allocator<void>, Bits>(
390
+ pool_, std::allocator<void>(), bits_);
391
+ }
392
+
393
+ /// Query the current value of the @c bulk_guarantee property.
394
+ /**
395
+ * Do not call this function directly. It is intended for use with the
396
+ * asio::query customisation point.
397
+ *
398
+ * For example:
399
+ * @code auto ex = my_thread_pool.executor();
400
+ * if (asio::query(ex, asio::execution::bulk_guarantee)
401
+ * == asio::execution::bulk_guarantee.parallel)
402
+ * ... @endcode
403
+ */
404
+ static ASIO_CONSTEXPR execution::bulk_guarantee_t query(
405
+ execution::bulk_guarantee_t) ASIO_NOEXCEPT
406
+ {
407
+ return execution::bulk_guarantee.parallel;
408
+ }
409
+
410
+ /// Query the current value of the @c mapping property.
411
+ /**
412
+ * Do not call this function directly. It is intended for use with the
413
+ * asio::query customisation point.
414
+ *
415
+ * For example:
416
+ * @code auto ex = my_thread_pool.executor();
417
+ * if (asio::query(ex, asio::execution::mapping)
418
+ * == asio::execution::mapping.thread)
419
+ * ... @endcode
420
+ */
421
+ static ASIO_CONSTEXPR execution::mapping_t query(
422
+ execution::mapping_t) ASIO_NOEXCEPT
423
+ {
424
+ return execution::mapping.thread;
425
+ }
426
+
427
+ /// Query the current value of the @c context property.
428
+ /**
429
+ * Do not call this function directly. It is intended for use with the
430
+ * asio::query customisation point.
431
+ *
432
+ * For example:
433
+ * @code auto ex = my_thread_pool.executor();
434
+ * asio::thread_pool& pool = asio::query(
435
+ * ex, asio::execution::context); @endcode
436
+ */
437
+ thread_pool& query(execution::context_t) const ASIO_NOEXCEPT
438
+ {
439
+ return *pool_;
440
+ }
441
+
442
+ /// Query the current value of the @c blocking property.
443
+ /**
444
+ * Do not call this function directly. It is intended for use with the
445
+ * asio::query customisation point.
446
+ *
447
+ * For example:
448
+ * @code auto ex = my_thread_pool.executor();
449
+ * if (asio::query(ex, asio::execution::blocking)
450
+ * == asio::execution::blocking.always)
451
+ * ... @endcode
452
+ */
453
+ ASIO_CONSTEXPR execution::blocking_t query(
454
+ execution::blocking_t) const ASIO_NOEXCEPT
455
+ {
456
+ return (bits_ & blocking_never)
457
+ ? execution::blocking_t(execution::blocking.never)
458
+ : ((Bits & blocking_always)
459
+ ? execution::blocking_t(execution::blocking.always)
460
+ : execution::blocking_t(execution::blocking.possibly));
461
+ }
462
+
463
+ /// Query the current value of the @c relationship property.
464
+ /**
465
+ * Do not call this function directly. It is intended for use with the
466
+ * asio::query customisation point.
467
+ *
468
+ * For example:
469
+ * @code auto ex = my_thread_pool.executor();
470
+ * if (asio::query(ex, asio::execution::relationship)
471
+ * == asio::execution::relationship.continuation)
472
+ * ... @endcode
473
+ */
474
+ ASIO_CONSTEXPR execution::relationship_t query(
475
+ execution::relationship_t) const ASIO_NOEXCEPT
476
+ {
477
+ return (bits_ & relationship_continuation)
478
+ ? execution::relationship_t(execution::relationship.continuation)
479
+ : execution::relationship_t(execution::relationship.fork);
480
+ }
481
+
482
+ /// Query the current value of the @c outstanding_work property.
483
+ /**
484
+ * Do not call this function directly. It is intended for use with the
485
+ * asio::query customisation point.
486
+ *
487
+ * For example:
488
+ * @code auto ex = my_thread_pool.executor();
489
+ * if (asio::query(ex, asio::execution::outstanding_work)
490
+ * == asio::execution::outstanding_work.tracked)
491
+ * ... @endcode
492
+ */
493
+ static ASIO_CONSTEXPR execution::outstanding_work_t query(
494
+ execution::outstanding_work_t) ASIO_NOEXCEPT
495
+ {
496
+ return (Bits & outstanding_work_tracked)
497
+ ? execution::outstanding_work_t(execution::outstanding_work.tracked)
498
+ : execution::outstanding_work_t(execution::outstanding_work.untracked);
499
+ }
500
+
501
+ /// Query the current value of the @c allocator property.
502
+ /**
503
+ * Do not call this function directly. It is intended for use with the
504
+ * asio::query customisation point.
505
+ *
506
+ * For example:
507
+ * @code auto ex = my_thread_pool.executor();
508
+ * auto alloc = asio::query(ex,
509
+ * asio::execution::allocator); @endcode
510
+ */
511
+ template <typename OtherAllocator>
512
+ ASIO_CONSTEXPR Allocator query(
513
+ execution::allocator_t<OtherAllocator>) const ASIO_NOEXCEPT
514
+ {
515
+ return allocator_;
516
+ }
517
+
518
+ /// Query the current value of the @c allocator property.
519
+ /**
520
+ * Do not call this function directly. It is intended for use with the
521
+ * asio::query customisation point.
522
+ *
523
+ * For example:
524
+ * @code auto ex = my_thread_pool.executor();
525
+ * auto alloc = asio::query(ex,
526
+ * asio::execution::allocator); @endcode
527
+ */
528
+ ASIO_CONSTEXPR Allocator query(
529
+ execution::allocator_t<void>) const ASIO_NOEXCEPT
530
+ {
531
+ return allocator_;
532
+ }
533
+
534
+ /// Query the occupancy (recommended number of work items) for the pool.
535
+ /**
536
+ * Do not call this function directly. It is intended for use with the
537
+ * asio::query customisation point.
538
+ *
539
+ * For example:
540
+ * @code auto ex = my_thread_pool.executor();
541
+ * std::size_t occupancy = asio::query(
542
+ * ex, asio::execution::occupancy); @endcode
543
+ */
544
+ std::size_t query(execution::occupancy_t) const ASIO_NOEXCEPT
545
+ {
546
+ return static_cast<std::size_t>(pool_->num_threads_);
547
+ }
548
+
549
+ /// Determine whether the thread pool is running in the current thread.
550
+ /**
551
+ * @return @c true if the current thread is running the thread pool. Otherwise
552
+ * returns @c false.
553
+ */
554
+ bool running_in_this_thread() const ASIO_NOEXCEPT;
555
+
556
+ /// Compare two executors for equality.
557
+ /**
558
+ * Two executors are equal if they refer to the same underlying thread pool.
559
+ */
560
+ friend bool operator==(const basic_executor_type& a,
561
+ const basic_executor_type& b) ASIO_NOEXCEPT
562
+ {
563
+ return a.pool_ == b.pool_
564
+ && a.allocator_ == b.allocator_
565
+ && a.bits_ == b.bits_;
566
+ }
567
+
568
+ /// Compare two executors for inequality.
569
+ /**
570
+ * Two executors are equal if they refer to the same underlying thread pool.
571
+ */
572
+ friend bool operator!=(const basic_executor_type& a,
573
+ const basic_executor_type& b) ASIO_NOEXCEPT
574
+ {
575
+ return a.pool_ != b.pool_
576
+ || a.allocator_ != b.allocator_
577
+ || a.bits_ != b.bits_;
578
+ }
579
+
580
+ /// Execution function.
581
+ /**
582
+ * Do not call this function directly. It is intended for use with the
583
+ * execution::execute customisation point.
584
+ *
585
+ * For example:
586
+ * @code auto ex = my_thread_pool.executor();
587
+ * execution::execute(ex, my_function_object); @endcode
588
+ */
589
+ template <typename Function>
590
+ void execute(ASIO_MOVE_ARG(Function) f) const
591
+ {
592
+ this->do_execute(ASIO_MOVE_CAST(Function)(f),
593
+ integral_constant<bool, (Bits & blocking_always) != 0>());
594
+ }
595
+
596
+ /// Bulk execution function.
597
+ template <typename Function>
598
+ void bulk_execute(ASIO_MOVE_ARG(Function) f, std::size_t n) const
599
+ {
600
+ this->do_bulk_execute(ASIO_MOVE_CAST(Function)(f), n,
601
+ integral_constant<bool, (Bits & blocking_always) != 0>());
602
+ }
603
+
604
+ /// Schedule function.
605
+ /**
606
+ * Do not call this function directly. It is intended for use with the
607
+ * execution::schedule customisation point.
608
+ *
609
+ * @return An object that satisfies the sender concept.
610
+ */
611
+ sender_type schedule() const ASIO_NOEXCEPT
612
+ {
613
+ return *this;
614
+ }
615
+
616
+ /// Connect function.
617
+ /**
618
+ * Do not call this function directly. It is intended for use with the
619
+ * execution::connect customisation point.
620
+ *
621
+ * @return An object of an unspecified type that satisfies the @c
622
+ * operation_state concept.
623
+ */
624
+ template <ASIO_EXECUTION_RECEIVER_OF_0 Receiver>
625
+ #if defined(GENERATING_DOCUMENTATION)
626
+ unspecified
627
+ #else // defined(GENERATING_DOCUMENTATION)
628
+ execution::detail::as_operation<basic_executor_type, Receiver>
629
+ #endif // defined(GENERATING_DOCUMENTATION)
630
+ connect(ASIO_MOVE_ARG(Receiver) r) const
631
+ {
632
+ return execution::detail::as_operation<basic_executor_type, Receiver>(
633
+ *this, ASIO_MOVE_CAST(Receiver)(r));
634
+ }
635
+
636
+ #if !defined(ASIO_NO_TS_EXECUTORS)
117
637
  /// Obtain the underlying execution context.
118
638
  thread_pool& context() const ASIO_NOEXCEPT;
119
639
 
@@ -147,8 +667,9 @@ public:
147
667
  * @param a An allocator that may be used by the executor to allocate the
148
668
  * internal storage needed for function invocation.
149
669
  */
150
- template <typename Function, typename Allocator>
151
- void dispatch(ASIO_MOVE_ARG(Function) f, const Allocator& a) const;
670
+ template <typename Function, typename OtherAllocator>
671
+ void dispatch(ASIO_MOVE_ARG(Function) f,
672
+ const OtherAllocator& a) const;
152
673
 
153
674
  /// Request the thread pool to invoke the given function object.
154
675
  /**
@@ -163,8 +684,9 @@ public:
163
684
  * @param a An allocator that may be used by the executor to allocate the
164
685
  * internal storage needed for function invocation.
165
686
  */
166
- template <typename Function, typename Allocator>
167
- void post(ASIO_MOVE_ARG(Function) f, const Allocator& a) const;
687
+ template <typename Function, typename OtherAllocator>
688
+ void post(ASIO_MOVE_ARG(Function) f,
689
+ const OtherAllocator& a) const;
168
690
 
169
691
  /// Request the thread pool to invoke the given function object.
170
692
  /**
@@ -183,46 +705,400 @@ public:
183
705
  * @param a An allocator that may be used by the executor to allocate the
184
706
  * internal storage needed for function invocation.
185
707
  */
186
- template <typename Function, typename Allocator>
187
- void defer(ASIO_MOVE_ARG(Function) f, const Allocator& a) const;
708
+ template <typename Function, typename OtherAllocator>
709
+ void defer(ASIO_MOVE_ARG(Function) f,
710
+ const OtherAllocator& a) const;
711
+ #endif // !defined(ASIO_NO_TS_EXECUTORS)
188
712
 
189
- /// Determine whether the thread pool is running in the current thread.
190
- /**
191
- * @return @c true if the current thread belongs to the pool. Otherwise
192
- * returns @c false.
193
- */
194
- bool running_in_this_thread() const ASIO_NOEXCEPT;
713
+ private:
714
+ friend class thread_pool;
715
+ template <typename, unsigned int> friend class basic_executor_type;
195
716
 
196
- /// Compare two executors for equality.
197
- /**
198
- * Two executors are equal if they refer to the same underlying thread pool.
199
- */
200
- friend bool operator==(const executor_type& a,
201
- const executor_type& b) ASIO_NOEXCEPT
717
+ // Constructor used by thread_pool::get_executor().
718
+ explicit basic_executor_type(thread_pool& p) ASIO_NOEXCEPT
719
+ : pool_(&p),
720
+ allocator_(),
721
+ bits_(0)
202
722
  {
203
- return &a.pool_ == &b.pool_;
723
+ if (Bits & outstanding_work_tracked)
724
+ pool_->scheduler_.work_started();
204
725
  }
205
726
 
206
- /// Compare two executors for inequality.
207
- /**
208
- * Two executors are equal if they refer to the same underlying thread pool.
209
- */
210
- friend bool operator!=(const executor_type& a,
211
- const executor_type& b) ASIO_NOEXCEPT
727
+ // Constructor used by require().
728
+ basic_executor_type(thread_pool* p,
729
+ const Allocator& a, unsigned int bits) ASIO_NOEXCEPT
730
+ : pool_(p),
731
+ allocator_(a),
732
+ bits_(bits)
212
733
  {
213
- return &a.pool_ != &b.pool_;
734
+ if (Bits & outstanding_work_tracked)
735
+ if (pool_)
736
+ pool_->scheduler_.work_started();
214
737
  }
215
738
 
216
- private:
217
- friend class thread_pool;
739
+ /// Execution helper implementation for possibly and never blocking.
740
+ template <typename Function>
741
+ void do_execute(ASIO_MOVE_ARG(Function) f, false_type) const;
742
+
743
+ /// Execution helper implementation for always blocking.
744
+ template <typename Function>
745
+ void do_execute(ASIO_MOVE_ARG(Function) f, true_type) const;
218
746
 
219
- // Constructor.
220
- explicit executor_type(thread_pool& p) : pool_(p) {}
747
+ /// Bulk execution helper implementation for possibly and never blocking.
748
+ template <typename Function>
749
+ void do_bulk_execute(ASIO_MOVE_ARG(Function) f,
750
+ std::size_t n, false_type) const;
751
+
752
+ /// Bulk execution helper implementation for always blocking.
753
+ template <typename Function>
754
+ void do_bulk_execute(ASIO_MOVE_ARG(Function) f,
755
+ std::size_t n, true_type) const;
221
756
 
222
757
  // The underlying thread pool.
223
- thread_pool& pool_;
758
+ thread_pool* pool_;
759
+
760
+ // The allocator used for execution functions.
761
+ Allocator allocator_;
762
+
763
+ // The runtime-switched properties of the thread pool executor.
764
+ unsigned int bits_;
224
765
  };
225
766
 
767
+ #if !defined(GENERATING_DOCUMENTATION)
768
+
769
+ namespace traits {
770
+
771
+ #if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
772
+
773
+ template <typename Allocator, unsigned int Bits>
774
+ struct equality_comparable<
775
+ asio::thread_pool::basic_executor_type<Allocator, Bits>
776
+ >
777
+ {
778
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
779
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
780
+ };
781
+
782
+ #endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
783
+
784
+ #if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
785
+
786
+ template <typename Allocator, unsigned int Bits, typename Function>
787
+ struct execute_member<
788
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
789
+ Function
790
+ >
791
+ {
792
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
793
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
794
+ typedef void result_type;
795
+ };
796
+
797
+ #endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
798
+
799
+ #if !defined(ASIO_HAS_DEDUCED_SCHEDULE_MEMBER_TRAIT)
800
+
801
+ template <typename Allocator, unsigned int Bits>
802
+ struct schedule_member<
803
+ const asio::thread_pool::basic_executor_type<Allocator, Bits>
804
+ >
805
+ {
806
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
807
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
808
+ typedef asio::thread_pool::basic_executor_type<
809
+ Allocator, Bits> result_type;
810
+ };
811
+
812
+ #endif // !defined(ASIO_HAS_DEDUCED_SCHEDULE_MEMBER_TRAIT)
813
+
814
+ #if !defined(ASIO_HAS_DEDUCED_CONNECT_MEMBER_TRAIT)
815
+
816
+ template <typename Allocator, unsigned int Bits, typename Receiver>
817
+ struct connect_member<
818
+ const asio::thread_pool::basic_executor_type<Allocator, Bits>,
819
+ Receiver
820
+ >
821
+ {
822
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
823
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
824
+ typedef asio::execution::detail::as_operation<
825
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
826
+ Receiver> result_type;
827
+ };
828
+
829
+ #endif // !defined(ASIO_HAS_DEDUCED_CONNECT_MEMBER_TRAIT)
830
+
831
+ #if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
832
+
833
+ template <typename Allocator, unsigned int Bits>
834
+ struct require_member<
835
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
836
+ asio::execution::blocking_t::possibly_t
837
+ > : asio::detail::thread_pool_bits
838
+ {
839
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
840
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
841
+ typedef asio::thread_pool::basic_executor_type<
842
+ Allocator, Bits & ~blocking_mask> result_type;
843
+ };
844
+
845
+ template <typename Allocator, unsigned int Bits>
846
+ struct require_member<
847
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
848
+ asio::execution::blocking_t::always_t
849
+ > : asio::detail::thread_pool_bits
850
+ {
851
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
852
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
853
+ typedef asio::thread_pool::basic_executor_type<Allocator,
854
+ (Bits & ~blocking_mask) | blocking_always> result_type;
855
+ };
856
+
857
+ template <typename Allocator, unsigned int Bits>
858
+ struct require_member<
859
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
860
+ asio::execution::blocking_t::never_t
861
+ > : asio::detail::thread_pool_bits
862
+ {
863
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
864
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
865
+ typedef asio::thread_pool::basic_executor_type<
866
+ Allocator, Bits & ~blocking_mask> result_type;
867
+ };
868
+
869
+ template <typename Allocator, unsigned int Bits>
870
+ struct require_member<
871
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
872
+ asio::execution::relationship_t::fork_t
873
+ >
874
+ {
875
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
876
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
877
+ typedef asio::thread_pool::basic_executor_type<
878
+ Allocator, Bits> result_type;
879
+ };
880
+
881
+ template <typename Allocator, unsigned int Bits>
882
+ struct require_member<
883
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
884
+ asio::execution::relationship_t::continuation_t
885
+ >
886
+ {
887
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
888
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
889
+ typedef asio::thread_pool::basic_executor_type<
890
+ Allocator, Bits> result_type;
891
+ };
892
+
893
+ template <typename Allocator, unsigned int Bits>
894
+ struct require_member<
895
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
896
+ asio::execution::outstanding_work_t::tracked_t
897
+ > : asio::detail::thread_pool_bits
898
+ {
899
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
900
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
901
+ typedef asio::thread_pool::basic_executor_type<
902
+ Allocator, Bits | outstanding_work_tracked> result_type;
903
+ };
904
+
905
+ template <typename Allocator, unsigned int Bits>
906
+ struct require_member<
907
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
908
+ asio::execution::outstanding_work_t::untracked_t
909
+ > : asio::detail::thread_pool_bits
910
+ {
911
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
912
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
913
+ typedef asio::thread_pool::basic_executor_type<
914
+ Allocator, Bits & ~outstanding_work_tracked> result_type;
915
+ };
916
+
917
+ template <typename Allocator, unsigned int Bits>
918
+ struct require_member<
919
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
920
+ asio::execution::allocator_t<void>
921
+ >
922
+ {
923
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
924
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
925
+ typedef asio::thread_pool::basic_executor_type<
926
+ std::allocator<void>, Bits> result_type;
927
+ };
928
+
929
+ template <unsigned int Bits,
930
+ typename Allocator, typename OtherAllocator>
931
+ struct require_member<
932
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
933
+ asio::execution::allocator_t<OtherAllocator>
934
+ >
935
+ {
936
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
937
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = false);
938
+ typedef asio::thread_pool::basic_executor_type<
939
+ OtherAllocator, Bits> result_type;
940
+ };
941
+
942
+ #endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
943
+
944
+ #if !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
945
+
946
+ template <typename Allocator, unsigned int Bits, typename Property>
947
+ struct query_static_constexpr_member<
948
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
949
+ Property,
950
+ typename asio::enable_if<
951
+ asio::is_convertible<
952
+ Property,
953
+ asio::execution::bulk_guarantee_t
954
+ >::value
955
+ >::type
956
+ >
957
+ {
958
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
959
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
960
+ typedef asio::execution::bulk_guarantee_t::parallel_t result_type;
961
+
962
+ static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT
963
+ {
964
+ return result_type();
965
+ }
966
+ };
967
+
968
+ template <typename Allocator, unsigned int Bits, typename Property>
969
+ struct query_static_constexpr_member<
970
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
971
+ Property,
972
+ typename asio::enable_if<
973
+ asio::is_convertible<
974
+ Property,
975
+ asio::execution::outstanding_work_t
976
+ >::value
977
+ >::type
978
+ > : asio::detail::thread_pool_bits
979
+ {
980
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
981
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
982
+ typedef asio::execution::outstanding_work_t result_type;
983
+
984
+ static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT
985
+ {
986
+ return (Bits & outstanding_work_tracked)
987
+ ? execution::outstanding_work_t(execution::outstanding_work.tracked)
988
+ : execution::outstanding_work_t(execution::outstanding_work.untracked);
989
+ }
990
+ };
991
+
992
+ template <typename Allocator, unsigned int Bits, typename Property>
993
+ struct query_static_constexpr_member<
994
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
995
+ Property,
996
+ typename asio::enable_if<
997
+ asio::is_convertible<
998
+ Property,
999
+ asio::execution::mapping_t
1000
+ >::value
1001
+ >::type
1002
+ >
1003
+ {
1004
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1005
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1006
+ typedef asio::execution::mapping_t::thread_t result_type;
1007
+
1008
+ static ASIO_CONSTEXPR result_type value() ASIO_NOEXCEPT
1009
+ {
1010
+ return result_type();
1011
+ }
1012
+ };
1013
+
1014
+ #endif // !defined(ASIO_HAS_DEDUCED_QUERY_STATIC_CONSTEXPR_MEMBER_TRAIT)
1015
+
1016
+ #if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
1017
+
1018
+ template <typename Allocator, unsigned int Bits, typename Property>
1019
+ struct query_member<
1020
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
1021
+ Property,
1022
+ typename asio::enable_if<
1023
+ asio::is_convertible<
1024
+ Property,
1025
+ asio::execution::blocking_t
1026
+ >::value
1027
+ >::type
1028
+ >
1029
+ {
1030
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1031
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1032
+ typedef asio::execution::blocking_t result_type;
1033
+ };
1034
+
1035
+ template <typename Allocator, unsigned int Bits, typename Property>
1036
+ struct query_member<
1037
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
1038
+ Property,
1039
+ typename asio::enable_if<
1040
+ asio::is_convertible<
1041
+ Property,
1042
+ asio::execution::relationship_t
1043
+ >::value
1044
+ >::type
1045
+ >
1046
+ {
1047
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1048
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1049
+ typedef asio::execution::relationship_t result_type;
1050
+ };
1051
+
1052
+ template <typename Allocator, unsigned int Bits>
1053
+ struct query_member<
1054
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
1055
+ asio::execution::occupancy_t
1056
+ >
1057
+ {
1058
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1059
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1060
+ typedef std::size_t result_type;
1061
+ };
1062
+
1063
+ template <typename Allocator, unsigned int Bits>
1064
+ struct query_member<
1065
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
1066
+ asio::execution::context_t
1067
+ >
1068
+ {
1069
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1070
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1071
+ typedef asio::thread_pool& result_type;
1072
+ };
1073
+
1074
+ template <typename Allocator, unsigned int Bits>
1075
+ struct query_member<
1076
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
1077
+ asio::execution::allocator_t<void>
1078
+ >
1079
+ {
1080
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1081
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1082
+ typedef Allocator result_type;
1083
+ };
1084
+
1085
+ template <typename Allocator, unsigned int Bits, typename OtherAllocator>
1086
+ struct query_member<
1087
+ asio::thread_pool::basic_executor_type<Allocator, Bits>,
1088
+ asio::execution::allocator_t<OtherAllocator>
1089
+ >
1090
+ {
1091
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
1092
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
1093
+ typedef Allocator result_type;
1094
+ };
1095
+
1096
+ #endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
1097
+
1098
+ } // namespace traits
1099
+
1100
+ #endif // !defined(GENERATING_DOCUMENTATION)
1101
+
226
1102
  } // namespace asio
227
1103
 
228
1104
  #include "asio/detail/pop_options.hpp"