couchbase 3.0.0.alpha.5 → 3.0.3

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 (1001) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +76 -5
  3. data/ext/CMakeLists.txt +95 -128
  4. data/ext/build_config.hxx.in +22 -0
  5. data/ext/build_version.hxx.in +10 -6
  6. data/ext/cmake/Backtrace.cmake +35 -0
  7. data/ext/cmake/BuildTracing.cmake +6 -0
  8. data/ext/cmake/Cache.cmake +29 -0
  9. data/ext/cmake/CompilerWarnings.cmake +84 -0
  10. data/ext/cmake/PreventInSourceBuilds.cmake +21 -0
  11. data/ext/cmake/Sanitizers.cmake +66 -0
  12. data/ext/cmake/StandardProjectSettings.cmake +40 -0
  13. data/ext/cmake/StaticAnalyzers.cmake +37 -0
  14. data/ext/cmake/Testing.cmake +49 -0
  15. data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
  16. data/ext/cmake/VersionInfo.cmake +37 -0
  17. data/ext/couchbase/bucket.hxx +295 -18
  18. data/ext/couchbase/capabilities.hxx +117 -0
  19. data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
  20. data/ext/couchbase/cbsasl/client.h +1 -1
  21. data/ext/couchbase/cluster.hxx +255 -75
  22. data/ext/couchbase/cluster_options.hxx +54 -0
  23. data/ext/couchbase/configuration.hxx +440 -44
  24. data/ext/couchbase/couchbase.cxx +4312 -1746
  25. data/ext/couchbase/diagnostics.hxx +248 -0
  26. data/ext/couchbase/document_id.hxx +3 -1
  27. data/ext/couchbase/error_context/analytics.hxx +46 -0
  28. data/ext/couchbase/error_context/http.hxx +44 -0
  29. data/ext/couchbase/error_context/key_value.hxx +47 -0
  30. data/ext/couchbase/error_context/query.hxx +46 -0
  31. data/ext/couchbase/error_context/search.hxx +47 -0
  32. data/ext/couchbase/error_context/view.hxx +47 -0
  33. data/ext/couchbase/error_map.hxx +202 -2
  34. data/ext/couchbase/errors.hxx +18 -3
  35. data/ext/couchbase/io/dns_client.hxx +11 -9
  36. data/ext/couchbase/io/dns_codec.hxx +1 -2
  37. data/ext/couchbase/io/http_command.hxx +111 -0
  38. data/ext/couchbase/io/http_context.hxx +37 -0
  39. data/ext/couchbase/io/http_message.hxx +9 -0
  40. data/ext/couchbase/io/http_parser.hxx +2 -0
  41. data/ext/couchbase/io/http_session.hxx +172 -49
  42. data/ext/couchbase/io/http_session_manager.hxx +171 -34
  43. data/ext/couchbase/io/mcbp_command.hxx +249 -0
  44. data/ext/couchbase/io/mcbp_context.hxx +37 -0
  45. data/ext/couchbase/io/mcbp_message.hxx +5 -0
  46. data/ext/couchbase/io/mcbp_session.hxx +585 -166
  47. data/ext/couchbase/io/query_cache.hxx +61 -0
  48. data/ext/couchbase/io/retry_action.hxx +30 -0
  49. data/ext/couchbase/io/retry_context.hxx +38 -0
  50. data/ext/couchbase/io/retry_orchestrator.hxx +112 -0
  51. data/ext/couchbase/io/retry_reason.hxx +235 -0
  52. data/ext/couchbase/io/retry_strategy.hxx +156 -0
  53. data/ext/couchbase/io/streams.hxx +216 -0
  54. data/ext/couchbase/operations.hxx +19 -1
  55. data/ext/couchbase/operations/analytics_dataset_create.hxx +22 -14
  56. data/ext/couchbase/operations/analytics_dataset_drop.hxx +19 -10
  57. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +18 -11
  58. data/ext/couchbase/operations/analytics_dataverse_create.hxx +20 -12
  59. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +19 -12
  60. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +19 -11
  61. data/ext/couchbase/operations/analytics_index_create.hxx +19 -12
  62. data/ext/couchbase/operations/analytics_index_drop.hxx +18 -11
  63. data/ext/couchbase/operations/analytics_index_get_all.hxx +16 -9
  64. data/ext/couchbase/operations/analytics_link_connect.hxx +17 -10
  65. data/ext/couchbase/operations/analytics_link_disconnect.hxx +19 -12
  66. data/ext/couchbase/operations/bucket_create.hxx +46 -14
  67. data/ext/couchbase/operations/bucket_drop.hxx +12 -8
  68. data/ext/couchbase/operations/bucket_flush.hxx +11 -8
  69. data/ext/couchbase/operations/bucket_get.hxx +18 -10
  70. data/ext/couchbase/operations/bucket_get_all.hxx +17 -7
  71. data/ext/couchbase/operations/bucket_settings.hxx +59 -4
  72. data/ext/couchbase/operations/bucket_update.hxx +45 -14
  73. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +9 -6
  74. data/ext/couchbase/operations/collection_create.hxx +23 -12
  75. data/ext/couchbase/operations/collection_drop.hxx +21 -12
  76. data/ext/couchbase/operations/collections_manifest_get.hxx +66 -0
  77. data/ext/couchbase/operations/document_analytics.hxx +45 -21
  78. data/ext/couchbase/operations/document_append.hxx +72 -0
  79. data/ext/couchbase/operations/document_decrement.hxx +12 -11
  80. data/ext/couchbase/operations/document_exists.hxx +8 -7
  81. data/ext/couchbase/operations/document_get.hxx +9 -7
  82. data/ext/couchbase/operations/document_get_and_lock.hxx +8 -7
  83. data/ext/couchbase/operations/document_get_and_touch.hxx +10 -9
  84. data/ext/couchbase/operations/document_get_projected.hxx +33 -20
  85. data/ext/couchbase/operations/document_increment.hxx +12 -11
  86. data/ext/couchbase/operations/document_insert.hxx +11 -10
  87. data/ext/couchbase/operations/document_lookup_in.hxx +13 -7
  88. data/ext/couchbase/operations/document_mutate_in.hxx +25 -13
  89. data/ext/couchbase/operations/document_prepend.hxx +72 -0
  90. data/ext/couchbase/operations/document_query.hxx +132 -27
  91. data/ext/couchbase/operations/document_remove.hxx +11 -8
  92. data/ext/couchbase/operations/document_replace.hxx +11 -10
  93. data/ext/couchbase/operations/document_search.hxx +59 -23
  94. data/ext/couchbase/operations/document_touch.hxx +10 -9
  95. data/ext/couchbase/operations/document_unlock.hxx +8 -7
  96. data/ext/couchbase/operations/document_upsert.hxx +11 -10
  97. data/ext/couchbase/operations/document_view.hxx +31 -14
  98. data/ext/couchbase/operations/group_drop.hxx +72 -0
  99. data/ext/couchbase/operations/group_get.hxx +80 -0
  100. data/ext/couchbase/operations/group_get_all.hxx +77 -0
  101. data/ext/couchbase/operations/group_upsert.hxx +125 -0
  102. data/ext/couchbase/operations/http_noop.hxx +78 -0
  103. data/ext/couchbase/operations/mcbp_noop.hxx +55 -0
  104. data/ext/couchbase/operations/query_index_build_deferred.hxx +20 -13
  105. data/ext/couchbase/operations/query_index_create.hxx +34 -17
  106. data/ext/couchbase/operations/query_index_drop.hxx +32 -15
  107. data/ext/couchbase/operations/query_index_get_all.hxx +28 -11
  108. data/ext/couchbase/operations/rbac.hxx +276 -0
  109. data/ext/couchbase/operations/role_get_all.hxx +77 -0
  110. data/ext/couchbase/operations/scope_create.hxx +24 -11
  111. data/ext/couchbase/operations/scope_drop.hxx +20 -11
  112. data/ext/couchbase/operations/scope_get_all.hxx +18 -10
  113. data/ext/couchbase/operations/search_get_stats.hxx +60 -0
  114. data/ext/couchbase/operations/search_index_analyze_document.hxx +29 -16
  115. data/ext/couchbase/operations/search_index_control_ingest.hxx +27 -14
  116. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +27 -14
  117. data/ext/couchbase/operations/search_index_control_query.hxx +27 -14
  118. data/ext/couchbase/operations/search_index_drop.hxx +25 -12
  119. data/ext/couchbase/operations/search_index_get.hxx +25 -12
  120. data/ext/couchbase/operations/search_index_get_all.hxx +16 -9
  121. data/ext/couchbase/operations/search_index_get_documents_count.hxx +46 -26
  122. data/ext/couchbase/operations/search_index_get_stats.hxx +88 -0
  123. data/ext/couchbase/operations/search_index_upsert.hxx +26 -13
  124. data/ext/couchbase/operations/user_drop.hxx +73 -0
  125. data/ext/couchbase/operations/user_get.hxx +81 -0
  126. data/ext/couchbase/operations/user_get_all.hxx +78 -0
  127. data/ext/couchbase/operations/user_upsert.hxx +132 -0
  128. data/ext/couchbase/operations/view_index_drop.hxx +9 -8
  129. data/ext/couchbase/operations/view_index_get.hxx +17 -10
  130. data/ext/couchbase/operations/view_index_get_all.hxx +17 -10
  131. data/ext/couchbase/operations/view_index_upsert.hxx +10 -9
  132. data/ext/couchbase/origin.hxx +179 -0
  133. data/ext/couchbase/platform/backtrace.c +189 -0
  134. data/ext/couchbase/platform/backtrace.h +54 -0
  135. data/ext/couchbase/platform/terminate_handler.cc +130 -0
  136. data/ext/couchbase/platform/terminate_handler.h +36 -0
  137. data/ext/couchbase/protocol/client_opcode.hxx +406 -38
  138. data/ext/couchbase/protocol/client_request.hxx +2 -1
  139. data/ext/couchbase/protocol/client_response.hxx +20 -17
  140. data/ext/couchbase/protocol/cmd_append.hxx +145 -0
  141. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +6 -8
  142. data/ext/couchbase/protocol/cmd_decrement.hxx +5 -5
  143. data/ext/couchbase/protocol/cmd_exists.hxx +1 -0
  144. data/ext/couchbase/protocol/cmd_get.hxx +1 -1
  145. data/ext/couchbase/protocol/cmd_get_and_touch.hxx +5 -5
  146. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +9 -7
  147. data/ext/couchbase/protocol/cmd_hello.hxx +1 -0
  148. data/ext/couchbase/protocol/cmd_increment.hxx +5 -5
  149. data/ext/couchbase/protocol/cmd_info.hxx +0 -11
  150. data/ext/couchbase/protocol/cmd_insert.hxx +5 -5
  151. data/ext/couchbase/protocol/cmd_lookup_in.hxx +11 -3
  152. data/ext/couchbase/protocol/cmd_mutate_in.hxx +55 -14
  153. data/ext/couchbase/protocol/cmd_noop.hxx +82 -0
  154. data/ext/couchbase/protocol/cmd_prepend.hxx +145 -0
  155. data/ext/couchbase/protocol/cmd_replace.hxx +5 -5
  156. data/ext/couchbase/protocol/cmd_touch.hxx +1 -1
  157. data/ext/couchbase/protocol/cmd_upsert.hxx +5 -5
  158. data/ext/couchbase/protocol/durability_level.hxx +16 -0
  159. data/ext/couchbase/protocol/enhanced_error_info.hxx +28 -0
  160. data/ext/couchbase/protocol/hello_feature.hxx +9 -0
  161. data/ext/couchbase/protocol/magic.hxx +6 -6
  162. data/ext/couchbase/protocol/server_opcode.hxx +2 -2
  163. data/ext/couchbase/protocol/status.hxx +70 -60
  164. data/ext/couchbase/protocol/unsigned_leb128.h +2 -2
  165. data/ext/couchbase/service_type.hxx +2 -2
  166. data/ext/couchbase/timeout_defaults.hxx +7 -0
  167. data/ext/couchbase/utils/connection_string.hxx +152 -4
  168. data/ext/couchbase/version.hxx +18 -4
  169. data/ext/extconf.rb +77 -26
  170. data/ext/test/CMakeLists.txt +5 -0
  171. data/ext/test/test_helper.hxx +141 -0
  172. data/ext/test/test_helper_native.hxx +56 -0
  173. data/ext/test/test_helper_ruby.hxx +72 -0
  174. data/ext/test/test_native_binary_operations.cxx +186 -0
  175. data/ext/test/test_native_diagnostics.cxx +436 -0
  176. data/ext/test/test_native_trivial_crud.cxx +83 -0
  177. data/ext/test/test_ruby_trivial_crud.cxx +35 -0
  178. data/ext/test/test_ruby_trivial_query.cxx +34 -0
  179. data/ext/third_party/asio/asio/include/asio.hpp +35 -0
  180. data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +71 -0
  181. data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +1 -7
  182. data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +36 -19
  183. data/ext/third_party/asio/asio/include/asio/async_result.hpp +1 -8
  184. data/ext/third_party/asio/asio/include/asio/awaitable.hpp +14 -4
  185. data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +12 -7
  186. data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +4 -4
  187. data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +11 -7
  188. data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +9 -4
  189. data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +6 -6
  190. data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +4 -4
  191. data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +5 -5
  192. data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +13 -7
  193. data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +7 -3
  194. data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +52 -4
  195. data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +10 -15
  196. data/ext/third_party/asio/asio/include/asio/buffer.hpp +6 -4
  197. data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +380 -9
  198. data/ext/third_party/asio/asio/include/asio/defer.hpp +4 -1
  199. data/ext/third_party/asio/asio/include/asio/detached.hpp +50 -0
  200. data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +19 -0
  201. data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +144 -26
  202. data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
  203. data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +106 -0
  204. data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
  205. data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +10 -5
  206. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +8 -0
  207. data/ext/third_party/asio/asio/include/asio/detail/config.hpp +360 -37
  208. data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +17 -2
  209. data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +24 -6
  210. data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +32 -14
  211. data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +32 -14
  212. data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +133 -34
  213. data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +42 -0
  214. data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +23 -0
  215. data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +26 -0
  216. data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +370 -45
  217. data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +208 -74
  218. data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +39 -1
  219. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +12 -15
  220. data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +37 -0
  221. data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +2 -1
  222. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +661 -274
  223. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +210 -4
  224. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +8 -9
  225. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +5 -4
  226. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +15 -6
  227. data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +32 -50
  228. data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +3 -0
  229. data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +6 -0
  230. data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +1 -1
  231. data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +13 -0
  232. data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +1 -1
  233. data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +38 -13
  234. data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +12 -6
  235. data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +2 -3
  236. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +36 -24
  237. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +17 -10
  238. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +38 -16
  239. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +36 -14
  240. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +21 -11
  241. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +43 -17
  242. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +39 -17
  243. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +44 -21
  244. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +41 -18
  245. data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +12 -6
  246. data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +3 -1
  247. data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +10 -8
  248. data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +11 -9
  249. data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +8 -0
  250. data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +7 -5
  251. data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +46 -0
  252. data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
  253. data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +12 -0
  254. data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +25 -1
  255. data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +4 -1
  256. data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +58 -0
  257. data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +59 -0
  258. data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +144 -1
  259. data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +9 -6
  260. data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +13 -0
  261. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +9 -5
  262. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +9 -5
  263. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +5 -1
  264. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +10 -6
  265. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +9 -5
  266. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +18 -6
  267. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +15 -11
  268. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +10 -5
  269. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +8 -4
  270. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +8 -4
  271. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +8 -4
  272. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +8 -4
  273. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +10 -5
  274. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +8 -4
  275. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +8 -4
  276. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +8 -4
  277. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +8 -4
  278. data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +81 -6
  279. data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +45 -9
  280. data/ext/third_party/asio/asio/include/asio/dispatch.hpp +4 -1
  281. data/ext/third_party/asio/asio/include/asio/execution.hpp +48 -0
  282. data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +249 -0
  283. data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +2264 -0
  284. data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
  285. data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +1351 -0
  286. data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1064 -0
  287. data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +390 -0
  288. data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1018 -0
  289. data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +486 -0
  290. data/ext/third_party/asio/asio/include/asio/execution/context.hpp +185 -0
  291. data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +201 -0
  292. data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
  293. data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
  294. data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
  295. data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
  296. data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
  297. data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
  298. data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +264 -0
  299. data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +238 -0
  300. data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
  301. data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
  302. data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
  303. data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +917 -0
  304. data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +178 -0
  305. data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
  306. data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +721 -0
  307. data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +327 -0
  308. data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
  309. data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
  310. data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +720 -0
  311. data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +290 -0
  312. data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
  313. data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
  314. data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +253 -0
  315. data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +253 -0
  316. data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +486 -0
  317. data/ext/third_party/asio/asio/include/asio/execution/start.hpp +250 -0
  318. data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
  319. data/ext/third_party/asio/asio/include/asio/executor.hpp +7 -1
  320. data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +126 -9
  321. data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +28 -5
  322. data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +29 -3
  323. data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +14 -0
  324. data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +44 -8
  325. data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +44 -8
  326. data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +145 -7
  327. data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +124 -22
  328. data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +52 -8
  329. data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +147 -12
  330. data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +142 -12
  331. data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +15 -101
  332. data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +5 -0
  333. data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +13 -4
  334. data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +144 -57
  335. data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
  336. data/ext/third_party/asio/asio/include/asio/impl/post.hpp +147 -12
  337. data/ext/third_party/asio/asio/include/asio/impl/read.hpp +85 -18
  338. data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +59 -14
  339. data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +241 -56
  340. data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +22 -4
  341. data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +58 -22
  342. data/ext/third_party/asio/asio/include/asio/impl/src.hpp +3 -0
  343. data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +16 -4
  344. data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +113 -12
  345. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +260 -37
  346. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +61 -7
  347. data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +5 -2
  348. data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +147 -6
  349. data/ext/third_party/asio/asio/include/asio/impl/write.hpp +75 -14
  350. data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +53 -11
  351. data/ext/third_party/asio/asio/include/asio/io_context.hpp +706 -48
  352. data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +3 -1
  353. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +4 -4
  354. data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
  355. data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
  356. data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +4 -4
  357. data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +5 -5
  358. data/ext/third_party/asio/asio/include/asio/post.hpp +4 -1
  359. data/ext/third_party/asio/asio/include/asio/prefer.hpp +656 -0
  360. data/ext/third_party/asio/asio/include/asio/query.hpp +296 -0
  361. data/ext/third_party/asio/asio/include/asio/read_until.hpp +6 -6
  362. data/ext/third_party/asio/asio/include/asio/require.hpp +524 -0
  363. data/ext/third_party/asio/asio/include/asio/require_concept.hpp +310 -0
  364. data/ext/third_party/asio/asio/include/asio/spawn.hpp +12 -4
  365. data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +5 -0
  366. data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +5 -0
  367. data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +5 -0
  368. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +16 -3
  369. data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +38 -4
  370. data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +5 -0
  371. data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +5 -0
  372. data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +36 -2
  373. data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +10 -1
  374. data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +15 -0
  375. data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
  376. data/ext/third_party/asio/asio/include/asio/strand.hpp +232 -9
  377. data/ext/third_party/asio/asio/include/asio/system_context.hpp +12 -3
  378. data/ext/third_party/asio/asio/include/asio/system_executor.hpp +557 -24
  379. data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +913 -37
  380. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
  381. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
  382. data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
  383. data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
  384. data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +100 -0
  385. data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
  386. data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
  387. data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
  388. data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
  389. data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
  390. data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
  391. data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
  392. data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
  393. data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
  394. data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
  395. data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
  396. data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
  397. data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
  398. data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
  399. data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
  400. data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
  401. data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
  402. data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
  403. data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
  404. data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
  405. data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
  406. data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
  407. data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
  408. data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +123 -0
  409. data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
  410. data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
  411. data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +1 -0
  412. data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +67 -8
  413. data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +63 -4
  414. data/ext/third_party/asio/asio/include/asio/version.hpp +1 -1
  415. data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +4 -4
  416. data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +2 -2
  417. data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +5 -5
  418. data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +5 -5
  419. data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +4 -2
  420. data/ext/third_party/gsl/CMakeLists.txt +13 -5
  421. data/ext/third_party/gsl/include/gsl/gsl_assert +1 -1
  422. data/ext/third_party/gsl/include/gsl/gsl_byte +3 -3
  423. data/ext/third_party/gsl/include/gsl/gsl_narrow +52 -0
  424. data/ext/third_party/gsl/include/gsl/gsl_util +8 -50
  425. data/ext/third_party/gsl/include/gsl/multi_span +0 -10
  426. data/ext/third_party/gsl/include/gsl/pointers +14 -28
  427. data/ext/third_party/gsl/include/gsl/span +98 -46
  428. data/ext/third_party/gsl/include/gsl/string_span +37 -47
  429. data/ext/third_party/http_parser/http_parser.c +17 -10
  430. data/ext/third_party/http_parser/http_parser.h +4 -2
  431. data/ext/third_party/json/include/tao/json/basic_value.hpp +3 -2
  432. data/ext/third_party/json/include/tao/json/binary.hpp +4 -4
  433. data/ext/third_party/json/include/tao/json/binary_view.hpp +2 -2
  434. data/ext/third_party/json/include/tao/json/binding.hpp +2 -2
  435. data/ext/third_party/json/include/tao/json/binding/factory.hpp +8 -7
  436. data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +2 -1
  437. data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +6 -5
  438. data/ext/third_party/json/include/tao/json/binding/versions.hpp +3 -1
  439. data/ext/third_party/json/include/tao/json/cbor.hpp +1 -0
  440. data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +7 -7
  441. data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +43 -0
  442. data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +4 -4
  443. data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +3 -3
  444. data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
  445. data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +5 -5
  446. data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +2 -1
  447. data/ext/third_party/json/include/tao/json/consume_file.hpp +7 -7
  448. data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +13 -6
  449. data/ext/third_party/json/include/tao/json/contrib/position.hpp +15 -15
  450. data/ext/third_party/json/include/tao/json/contrib/reference.hpp +5 -7
  451. data/ext/third_party/json/include/tao/json/contrib/schema.hpp +58 -35
  452. data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +12 -4
  453. data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +12 -4
  454. data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +1 -1
  455. data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +2 -2
  456. data/ext/third_party/json/include/tao/json/events/compare.hpp +2 -12
  457. data/ext/third_party/json/include/tao/json/events/from_file.hpp +4 -4
  458. data/ext/third_party/json/include/tao/json/events/from_string.hpp +2 -2
  459. data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +1 -1
  460. data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +3 -3
  461. data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +1 -1
  462. data/ext/third_party/json/include/tao/json/events/tee.hpp +2 -2
  463. data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +1 -1
  464. data/ext/third_party/json/include/tao/json/events/to_stream.hpp +1 -1
  465. data/ext/third_party/json/include/tao/json/events/transformer.hpp +3 -3
  466. data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +3 -3
  467. data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +6 -0
  468. data/ext/third_party/json/include/tao/json/external/pegtl.hpp +4 -13
  469. data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +3 -5
  470. data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +5 -18
  471. data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +3 -3
  472. data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +2 -2
  473. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +6 -6
  474. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +5 -5
  475. data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +2 -2
  476. data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +6 -6
  477. data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +5 -5
  478. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +52 -52
  479. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +176 -0
  480. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +275 -0
  481. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +77 -0
  482. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +151 -0
  483. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +16 -0
  484. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +37 -18
  485. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +20 -22
  486. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +6 -10
  487. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +6 -10
  488. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +2 -4
  489. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +11 -10
  490. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +116 -131
  491. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian.hpp +4 -4
  492. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_gcc.hpp +2 -2
  493. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_win.hpp +2 -2
  494. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint.hpp +9 -9
  495. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint8.hpp +9 -10
  496. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint.hpp +9 -9
  497. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint8.hpp +9 -10
  498. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf16.hpp +10 -10
  499. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf32.hpp +9 -9
  500. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/read_uint.hpp +3 -3
  501. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
  502. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +80 -201
  503. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +11 -10
  504. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +75 -0
  505. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +53 -0
  506. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +45 -36
  507. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +33 -50
  508. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +117 -0
  509. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +43 -11
  510. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +1 -2
  511. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +193 -0
  512. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +118 -0
  513. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +227 -0
  514. data/ext/third_party/json/include/tao/json/external/pegtl/{uint16.hpp → contrib/uint16.hpp} +5 -5
  515. data/ext/third_party/json/include/tao/json/external/pegtl/{uint32.hpp → contrib/uint32.hpp} +5 -5
  516. data/ext/third_party/json/include/tao/json/external/pegtl/{uint64.hpp → contrib/uint64.hpp} +5 -5
  517. data/ext/third_party/json/include/tao/json/external/pegtl/{uint8.hpp → contrib/uint8.hpp} +5 -5
  518. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +14 -14
  519. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +1 -1
  520. data/ext/third_party/json/include/tao/json/external/pegtl/{utf16.hpp → contrib/utf16.hpp} +5 -5
  521. data/ext/third_party/json/include/tao/json/external/pegtl/{utf32.hpp → contrib/utf32.hpp} +5 -5
  522. data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +2 -3
  523. data/ext/third_party/json/include/tao/json/external/pegtl/{internal/demangle.hpp → demangle.hpp} +12 -14
  524. data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +2 -2
  525. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +2 -2
  526. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +2 -2
  527. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +2 -2
  528. data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +2 -2
  529. data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +1 -1
  530. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +19 -9
  531. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +7 -8
  532. data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +14 -14
  533. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +9 -9
  534. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +8 -7
  535. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +4 -4
  536. data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +17 -15
  537. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +7 -6
  538. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +8 -8
  539. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +4 -4
  540. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +3 -3
  541. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +17 -10
  542. data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +19 -9
  543. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +2 -2
  544. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +2 -2
  545. data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +2 -2
  546. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +1 -1
  547. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{always_false.hpp → dependent_false.hpp} +3 -8
  548. data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +19 -9
  549. data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +7 -6
  550. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +19 -9
  551. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{skip_control.hpp → enable_control.hpp} +5 -5
  552. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +7 -6
  553. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +8 -7
  554. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +8 -7
  555. data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +32 -0
  556. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +61 -10
  557. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +27 -33
  558. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +27 -28
  559. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +3 -7
  560. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +3 -7
  561. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +4 -20
  562. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +21 -0
  563. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +8 -7
  564. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +8 -9
  565. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +2 -0
  566. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +7 -7
  567. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +1 -2
  568. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +11 -11
  569. data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +7 -10
  570. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +2 -2
  571. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +2 -2
  572. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +4 -2
  573. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +1 -1
  574. data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +3 -5
  575. data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +21 -0
  576. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +5 -2
  577. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +5 -2
  578. data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +16 -24
  579. data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +17 -15
  580. data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +23 -12
  581. data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +16 -16
  582. data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +26 -0
  583. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +5 -5
  584. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +12 -13
  585. data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +18 -11
  586. data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +8 -17
  587. data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +22 -17
  588. data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +28 -18
  589. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +12 -9
  590. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +26 -25
  591. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +23 -21
  592. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +24 -9
  593. data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +10 -10
  594. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +4 -4
  595. data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +18 -33
  596. data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +24 -17
  597. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +13 -8
  598. data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +21 -11
  599. data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +11 -11
  600. data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +32 -0
  601. data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +16 -16
  602. data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +18 -14
  603. data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +2 -3
  604. data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +125 -29
  605. data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +32 -48
  606. data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +16 -16
  607. data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +64 -0
  608. data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +25 -25
  609. data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +1 -2
  610. data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +6 -8
  611. data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +80 -35
  612. data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +18 -10
  613. data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +18 -38
  614. data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +6 -5
  615. data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +3 -5
  616. data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +46 -0
  617. data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +66 -0
  618. data/ext/third_party/json/include/tao/json/from_file.hpp +5 -5
  619. data/ext/third_party/json/include/tao/json/internal/action.hpp +3 -3
  620. data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
  621. data/ext/third_party/json/include/tao/json/internal/errors.hpp +17 -17
  622. data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -2
  623. data/ext/third_party/json/include/tao/json/internal/grammar.hpp +17 -17
  624. data/ext/third_party/json/include/tao/json/internal/pair.hpp +1 -1
  625. data/ext/third_party/json/include/tao/json/internal/sha256.hpp +8 -8
  626. data/ext/third_party/json/include/tao/json/internal/single.hpp +1 -1
  627. data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +12 -29
  628. data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +7 -7
  629. data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +4 -4
  630. data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +2 -2
  631. data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +5 -5
  632. data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +6 -6
  633. data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +2 -2
  634. data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +43 -43
  635. data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +36 -36
  636. data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +10 -11
  637. data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +2 -2
  638. data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +1 -3
  639. data/ext/third_party/json/include/tao/json/message_extension.hpp +2 -2
  640. data/ext/third_party/json/include/tao/json/msgpack.hpp +1 -0
  641. data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +7 -7
  642. data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +43 -0
  643. data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +4 -4
  644. data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +4 -4
  645. data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +4 -4
  646. data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
  647. data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +5 -5
  648. data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +2 -1
  649. data/ext/third_party/json/include/tao/json/operators.hpp +0 -4
  650. data/ext/third_party/json/include/tao/json/parts_parser.hpp +3 -7
  651. data/ext/third_party/json/include/tao/json/self_contained.hpp +6 -18
  652. data/ext/third_party/json/include/tao/json/span.hpp +94 -166
  653. data/ext/third_party/json/include/tao/json/ubjson.hpp +1 -0
  654. data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +7 -7
  655. data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +43 -0
  656. data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +4 -4
  657. data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +3 -3
  658. data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
  659. data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +5 -5
  660. data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +5 -3
  661. data/ext/third_party/json/include/tao/json/utf8.hpp +1 -1
  662. data/ext/third_party/snappy/snappy.cc +6 -2
  663. data/ext/third_party/spdlog/CMakeLists.txt +24 -57
  664. data/ext/third_party/spdlog/cmake/version.rc.in +1 -1
  665. data/ext/third_party/spdlog/include/spdlog/async.h +3 -3
  666. data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +3 -4
  667. data/ext/third_party/spdlog/include/spdlog/cfg/env.h +6 -4
  668. data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +22 -6
  669. data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +3 -2
  670. data/ext/third_party/spdlog/include/spdlog/common.h +1 -2
  671. data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +9 -1
  672. data/ext/third_party/spdlog/include/spdlog/details/os.h +1 -1
  673. data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +21 -7
  674. data/ext/third_party/spdlog/include/spdlog/details/registry.h +6 -3
  675. data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +1 -1
  676. data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +1 -1
  677. data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +8 -7
  678. data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +2 -2
  679. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +66 -62
  680. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +35 -37
  681. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +173 -103
  682. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +538 -445
  683. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +114 -64
  684. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +1152 -1071
  685. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +16 -16
  686. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +450 -0
  687. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +37 -13
  688. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +1 -1
  689. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +93 -63
  690. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +35 -36
  691. data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
  692. data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +2 -0
  693. data/ext/third_party/spdlog/include/spdlog/logger-inl.h +5 -1
  694. data/ext/third_party/spdlog/include/spdlog/logger.h +50 -76
  695. data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +23 -8
  696. data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +3 -3
  697. data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +1 -1
  698. data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +5 -5
  699. data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +6 -4
  700. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +32 -3
  701. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +7 -0
  702. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +4 -14
  703. data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +11 -1
  704. data/ext/third_party/spdlog/include/spdlog/spdlog.h +23 -68
  705. data/ext/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
  706. data/ext/third_party/spdlog/include/spdlog/version.h +2 -2
  707. data/ext/third_party/spdlog/src/fmt.cpp +21 -147
  708. data/lib/active_support/cache/couchbase_store.rb +362 -0
  709. data/lib/couchbase.rb +2 -0
  710. data/lib/couchbase/analytics_options.rb +1 -59
  711. data/lib/couchbase/authenticator.rb +40 -0
  712. data/lib/couchbase/binary_collection.rb +62 -23
  713. data/lib/couchbase/binary_collection_options.rb +0 -74
  714. data/lib/couchbase/bucket.rb +45 -40
  715. data/lib/couchbase/cluster.rb +250 -138
  716. data/lib/couchbase/collection.rb +324 -93
  717. data/lib/couchbase/collection_options.rb +75 -241
  718. data/lib/couchbase/configuration.rb +57 -0
  719. data/{Gemfile → lib/couchbase/datastructures.rb} +9 -9
  720. data/lib/couchbase/datastructures/couchbase_list.rb +160 -0
  721. data/lib/couchbase/datastructures/couchbase_map.rb +194 -0
  722. data/lib/couchbase/datastructures/couchbase_queue.rb +134 -0
  723. data/lib/couchbase/datastructures/couchbase_set.rb +128 -0
  724. data/lib/couchbase/diagnostics.rb +181 -0
  725. data/lib/couchbase/errors.rb +186 -65
  726. data/lib/couchbase/json_transcoder.rb +3 -3
  727. data/{bin/check-cluster → lib/couchbase/logger.rb} +27 -16
  728. data/lib/couchbase/{common_options.rb → management.rb} +11 -13
  729. data/lib/couchbase/management/analytics_index_manager.rb +37 -37
  730. data/lib/couchbase/management/bucket_manager.rb +70 -30
  731. data/lib/couchbase/management/collection_manager.rb +4 -4
  732. data/lib/couchbase/management/query_index_manager.rb +60 -15
  733. data/lib/couchbase/management/search_index_manager.rb +57 -13
  734. data/lib/couchbase/management/user_manager.rb +176 -50
  735. data/lib/couchbase/management/view_index_manager.rb +11 -5
  736. data/lib/couchbase/mutation_state.rb +13 -0
  737. data/lib/couchbase/options.rb +2104 -0
  738. data/lib/couchbase/query_options.rb +6 -105
  739. data/lib/couchbase/railtie.rb +45 -0
  740. data/lib/couchbase/scope.rb +87 -9
  741. data/lib/couchbase/search_options.rb +98 -103
  742. data/lib/couchbase/subdoc.rb +31 -28
  743. data/{bin/console → lib/couchbase/utils.rb} +6 -6
  744. data/lib/couchbase/utils/time.rb +52 -0
  745. data/lib/couchbase/version.rb +21 -2
  746. data/lib/couchbase/view_options.rb +4 -94
  747. data/{bin/setup → lib/rails/generators/couchbase/config/config_generator.rb} +12 -9
  748. metadata +227 -346
  749. data/.github/workflows/tests-6.0.3.yml +0 -52
  750. data/.github/workflows/tests-dev-preview.yml +0 -55
  751. data/.github/workflows/tests.yml +0 -50
  752. data/.gitignore +0 -20
  753. data/.gitmodules +0 -21
  754. data/.idea/.gitignore +0 -5
  755. data/.idea/dictionaries/gem_terms.xml +0 -18
  756. data/.idea/inspectionProfiles/Project_Default.xml +0 -8
  757. data/.idea/vcs.xml +0 -13
  758. data/.yardopts +0 -1
  759. data/Rakefile +0 -51
  760. data/bin/fetch-stats +0 -19
  761. data/bin/init-cluster +0 -82
  762. data/bin/jenkins/build-extension +0 -35
  763. data/bin/jenkins/install-dependencies +0 -47
  764. data/bin/jenkins/test-with-cbdyncluster +0 -58
  765. data/couchbase.gemspec +0 -73
  766. data/examples/analytics.rb +0 -221
  767. data/examples/crud.rb +0 -20
  768. data/examples/managing_analytics_indexes.rb +0 -72
  769. data/examples/managing_buckets.rb +0 -47
  770. data/examples/managing_collections.rb +0 -58
  771. data/examples/managing_query_indexes.rb +0 -63
  772. data/examples/managing_search_indexes.rb +0 -62
  773. data/examples/managing_view_indexes.rb +0 -54
  774. data/examples/query.rb +0 -18
  775. data/examples/query_with_consistency.rb +0 -76
  776. data/examples/search.rb +0 -187
  777. data/examples/search_with_consistency.rb +0 -84
  778. data/examples/subdocument.rb +0 -51
  779. data/examples/view.rb +0 -50
  780. data/ext/.clang-format +0 -15
  781. data/ext/.clang-tidy +0 -22
  782. data/ext/.cmake-format.yaml +0 -8
  783. data/ext/.gitignore +0 -2
  784. data/ext/.idea/.name +0 -1
  785. data/ext/.idea/dictionaries/couchbase_terms.xml +0 -14
  786. data/ext/.idea/ext.iml +0 -2
  787. data/ext/.idea/misc.xml +0 -4
  788. data/ext/.idea/modules.xml +0 -8
  789. data/ext/.idea/vcs.xml +0 -12
  790. data/ext/couchbase/configuration_monitor.hxx +0 -93
  791. data/ext/couchbase/operations/command.hxx +0 -163
  792. data/ext/test/main.cxx +0 -58
  793. data/ext/third_party/asio/.appveyor.yml +0 -107
  794. data/ext/third_party/asio/.cirrus.yml +0 -16
  795. data/ext/third_party/asio/.gitignore +0 -3
  796. data/ext/third_party/asio/.travis.yml +0 -323
  797. data/ext/third_party/asio/asio/.gitignore +0 -23
  798. data/ext/third_party/asio/asio/COPYING +0 -4
  799. data/ext/third_party/asio/asio/INSTALL +0 -5
  800. data/ext/third_party/asio/asio/LICENSE_1_0.txt +0 -23
  801. data/ext/third_party/asio/asio/Makefile.am +0 -19
  802. data/ext/third_party/asio/asio/README +0 -4
  803. data/ext/third_party/asio/asio/asio.manifest +0 -4865
  804. data/ext/third_party/asio/asio/autogen.sh +0 -55
  805. data/ext/third_party/asio/asio/boost_asio.manifest +0 -5193
  806. data/ext/third_party/asio/asio/boostify.pl +0 -603
  807. data/ext/third_party/asio/asio/configure.ac +0 -182
  808. data/ext/third_party/asio/asio/include/.gitignore +0 -2
  809. data/ext/third_party/asio/asio/include/Makefile.am +0 -484
  810. data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +0 -167
  811. data/ext/third_party/asio/asio/include/asio/impl/src.cpp +0 -25
  812. data/ext/third_party/asio/asio/release.pl +0 -440
  813. data/ext/third_party/asio/asio/src/.gitignore +0 -11
  814. data/ext/third_party/asio/asio/src/Makefile.am +0 -23
  815. data/ext/third_party/asio/asio/src/Makefile.mgw +0 -204
  816. data/ext/third_party/asio/asio/src/Makefile.msc +0 -497
  817. data/ext/third_party/asio/asio/src/asio.cpp +0 -11
  818. data/ext/third_party/asio/asio/src/asio_ssl.cpp +0 -11
  819. data/ext/third_party/asio/asio/src/doc/.gitignore +0 -5
  820. data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +0 -62
  821. data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
  822. data/ext/third_party/asio/asio/src/doc/asio.qbk +0 -127
  823. data/ext/third_party/asio/asio/src/doc/asioref.sty +0 -90
  824. data/ext/third_party/asio/asio/src/doc/asioref.xsl +0 -94
  825. data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +0 -5
  826. data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +0 -22
  827. data/ext/third_party/asio/asio/src/doc/examples.qbk +0 -564
  828. data/ext/third_party/asio/asio/src/doc/history.qbk +0 -1794
  829. data/ext/third_party/asio/asio/src/doc/index.xml +0 -13
  830. data/ext/third_party/asio/asio/src/doc/makepdf.pl +0 -26
  831. data/ext/third_party/asio/asio/src/doc/net_ts.qbk +0 -479
  832. data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +0 -3
  833. data/ext/third_party/asio/asio/src/doc/overview.qbk +0 -103
  834. data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +0 -89
  835. data/ext/third_party/asio/asio/src/doc/overview/async.qbk +0 -185
  836. data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +0 -78
  837. data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
  838. data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +0 -78
  839. data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
  840. data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +0 -106
  841. data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +0 -270
  842. data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +0 -163
  843. data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +0 -88
  844. data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +0 -51
  845. data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +0 -97
  846. data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +0 -271
  847. data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +0 -220
  848. data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +0 -305
  849. data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +0 -72
  850. data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +0 -118
  851. data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +0 -94
  852. data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +0 -152
  853. data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +0 -100
  854. data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
  855. data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +0 -149
  856. data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +0 -54
  857. data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +0 -44
  858. data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +0 -45
  859. data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +0 -44
  860. data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +0 -102
  861. data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +0 -124
  862. data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +0 -114
  863. data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +0 -62
  864. data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +0 -67
  865. data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
  866. data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +0 -67
  867. data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +0 -52
  868. data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +0 -126
  869. data/ext/third_party/asio/asio/src/doc/project-root.jam +0 -1
  870. data/ext/third_party/asio/asio/src/doc/quickref.xml +0 -561
  871. data/ext/third_party/asio/asio/src/doc/reference.dox +0 -264
  872. data/ext/third_party/asio/asio/src/doc/reference.qbk +0 -125973
  873. data/ext/third_party/asio/asio/src/doc/reference.xsl +0 -1831
  874. data/ext/third_party/asio/asio/src/doc/release_checklist.htm +0 -68
  875. data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +0 -72
  876. data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +0 -25
  877. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +0 -56
  878. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +0 -57
  879. data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +0 -50
  880. data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +0 -48
  881. data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +0 -55
  882. data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +0 -42
  883. data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +0 -63
  884. data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +0 -34
  885. data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +0 -72
  886. data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +0 -53
  887. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +0 -16
  888. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +0 -93
  889. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +0 -94
  890. data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +0 -97
  891. data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +0 -30
  892. data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +0 -36
  893. data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +0 -141
  894. data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +0 -33
  895. data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +0 -67
  896. data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +0 -64
  897. data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +0 -72
  898. data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +0 -47
  899. data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +0 -34
  900. data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +0 -62
  901. data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +0 -81
  902. data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +0 -65
  903. data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +0 -61
  904. data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +0 -54
  905. data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +0 -19
  906. data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +0 -56
  907. data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +0 -82
  908. data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +0 -79
  909. data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +0 -82
  910. data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +0 -40
  911. data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +0 -33
  912. data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +0 -54
  913. data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +0 -72
  914. data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +0 -79
  915. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +0 -49
  916. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +0 -49
  917. data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +0 -41
  918. data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +0 -39
  919. data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +0 -72
  920. data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +0 -72
  921. data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +0 -52
  922. data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +0 -79
  923. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +0 -300
  924. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +0 -39
  925. data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +0 -34
  926. data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +0 -37
  927. data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +0 -7
  928. data/ext/third_party/asio/asio/src/doc/tutorial.dox +0 -226
  929. data/ext/third_party/asio/asio/src/doc/tutorial.qbk +0 -2387
  930. data/ext/third_party/asio/asio/src/doc/tutorial.xsl +0 -437
  931. data/ext/third_party/asio/asio/src/doc/using.qbk +0 -309
  932. data/ext/third_party/asio/asio/tsify.pl +0 -574
  933. data/ext/third_party/gsl/.clang-format +0 -34
  934. data/ext/third_party/gsl/.github/workflows/main.yml +0 -94
  935. data/ext/third_party/gsl/.gitignore +0 -16
  936. data/ext/third_party/gsl/.travis.yml +0 -551
  937. data/ext/third_party/gsl/CMakeSettings.json +0 -18
  938. data/ext/third_party/gsl/CONTRIBUTING.md +0 -29
  939. data/ext/third_party/gsl/GSL.natvis +0 -98
  940. data/ext/third_party/gsl/README.md +0 -124
  941. data/ext/third_party/gsl/appveyor.yml +0 -128
  942. data/ext/third_party/http_parser/.gitignore +0 -30
  943. data/ext/third_party/http_parser/.mailmap +0 -8
  944. data/ext/third_party/http_parser/.travis.yml +0 -13
  945. data/ext/third_party/http_parser/AUTHORS +0 -68
  946. data/ext/third_party/http_parser/README.md +0 -246
  947. data/ext/third_party/http_parser/bench.c +0 -128
  948. data/ext/third_party/http_parser/http_parser.gyp +0 -111
  949. data/ext/third_party/http_parser/test.c +0 -4600
  950. data/ext/third_party/json/.appveyor.yml +0 -44
  951. data/ext/third_party/json/.clang-format +0 -84
  952. data/ext/third_party/json/.conan/build.py +0 -80
  953. data/ext/third_party/json/.conan/test_package/CMakeLists.txt +0 -12
  954. data/ext/third_party/json/.conan/test_package/conanfile.py +0 -24
  955. data/ext/third_party/json/.conan/test_package/test_package.cpp +0 -16
  956. data/ext/third_party/json/.gitignore +0 -3
  957. data/ext/third_party/json/.travis.yml +0 -173
  958. data/ext/third_party/json/README.md +0 -149
  959. data/ext/third_party/json/conanfile.py +0 -28
  960. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
  961. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
  962. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
  963. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
  964. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
  965. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
  966. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
  967. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
  968. data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
  969. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
  970. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
  971. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
  972. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
  973. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
  974. data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
  975. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
  976. data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
  977. data/ext/third_party/snappy/.appveyor.yml +0 -36
  978. data/ext/third_party/snappy/.gitignore +0 -8
  979. data/ext/third_party/snappy/.travis.yml +0 -98
  980. data/ext/third_party/snappy/AUTHORS +0 -1
  981. data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
  982. data/ext/third_party/snappy/NEWS +0 -188
  983. data/ext/third_party/snappy/README.md +0 -148
  984. data/ext/third_party/snappy/docs/README.md +0 -72
  985. data/ext/third_party/snappy/format_description.txt +0 -110
  986. data/ext/third_party/snappy/framing_format.txt +0 -135
  987. data/ext/third_party/snappy/snappy-test.cc +0 -613
  988. data/ext/third_party/snappy/snappy-test.h +0 -526
  989. data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
  990. data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
  991. data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
  992. data/ext/third_party/spdlog/.clang-format +0 -108
  993. data/ext/third_party/spdlog/.clang-tidy +0 -54
  994. data/ext/third_party/spdlog/.gitattributes +0 -1
  995. data/ext/third_party/spdlog/.gitignore +0 -83
  996. data/ext/third_party/spdlog/.travis.yml +0 -112
  997. data/ext/third_party/spdlog/INSTALL +0 -24
  998. data/ext/third_party/spdlog/README.md +0 -423
  999. data/ext/third_party/spdlog/appveyor.yml +0 -51
  1000. data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
  1001. data/rbi/couchbase.rbi +0 -79
@@ -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"