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
@@ -0,0 +1,238 @@
1
+ //
2
+ // execution/executor.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef ASIO_EXECUTION_EXECUTOR_HPP
12
+ #define ASIO_EXECUTION_EXECUTOR_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include "asio/detail/config.hpp"
19
+ #include "asio/detail/type_traits.hpp"
20
+ #include "asio/execution/execute.hpp"
21
+ #include "asio/execution/invocable_archetype.hpp"
22
+ #include "asio/traits/equality_comparable.hpp"
23
+
24
+ #if defined(ASIO_HAS_DEDUCED_EXECUTE_FREE_TRAIT) \
25
+ && defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT) \
26
+ && defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
27
+ # define ASIO_HAS_DEDUCED_EXECUTION_IS_EXECUTOR_TRAIT 1
28
+ #endif // defined(ASIO_HAS_DEDUCED_EXECUTE_FREE_TRAIT)
29
+ // && defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
30
+ // && defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
31
+
32
+ #include "asio/detail/push_options.hpp"
33
+
34
+ namespace asio {
35
+ namespace execution {
36
+ namespace detail {
37
+
38
+ template <typename T, typename F>
39
+ struct is_executor_of_impl_base :
40
+ integral_constant<bool,
41
+ conditional<true, true_type,
42
+ typename result_of<typename decay<F>::type&()>::type
43
+ >::type::value
44
+ && is_constructible<typename decay<F>::type, F>::value
45
+ && is_move_constructible<typename decay<F>::type>::value
46
+ #if defined(ASIO_HAS_NOEXCEPT)
47
+ && is_nothrow_copy_constructible<T>::value
48
+ && is_nothrow_destructible<T>::value
49
+ #else // defined(ASIO_HAS_NOEXCEPT)
50
+ && is_copy_constructible<T>::value
51
+ && is_destructible<T>::value
52
+ #endif // defined(ASIO_HAS_NOEXCEPT)
53
+ && traits::equality_comparable<T>::is_valid
54
+ && traits::equality_comparable<T>::is_noexcept
55
+ >
56
+ {
57
+ };
58
+
59
+ template <typename T, typename F>
60
+ struct is_executor_of_impl :
61
+ conditional<
62
+ can_execute<T, F>::value,
63
+ is_executor_of_impl_base<T, F>,
64
+ false_type
65
+ >::type
66
+ {
67
+ };
68
+
69
+ template <typename T, typename = void>
70
+ struct executor_shape
71
+ {
72
+ typedef std::size_t type;
73
+ };
74
+
75
+ template <typename T>
76
+ struct executor_shape<T,
77
+ typename void_type<
78
+ typename T::shape_type
79
+ >::type>
80
+ {
81
+ typedef typename T::shape_type type;
82
+ };
83
+
84
+ template <typename T, typename Default, typename = void>
85
+ struct executor_index
86
+ {
87
+ typedef Default type;
88
+ };
89
+
90
+ template <typename T, typename Default>
91
+ struct executor_index<T, Default,
92
+ typename void_type<
93
+ typename T::index_type
94
+ >::type>
95
+ {
96
+ typedef typename T::index_type type;
97
+ };
98
+
99
+ } // namespace detail
100
+
101
+ /// The is_executor trait detects whether a type T satisfies the
102
+ /// execution::executor concept.
103
+ /**
104
+ * Class template @c is_executor is a UnaryTypeTrait that is derived from @c
105
+ * true_type if the type @c T meets the concept definition for an executor,
106
+ * otherwise @c false_type.
107
+ */
108
+ template <typename T>
109
+ struct is_executor :
110
+ #if defined(GENERATING_DOCUMENTATION)
111
+ integral_constant<bool, automatically_determined>
112
+ #else // defined(GENERATING_DOCUMENTATION)
113
+ detail::is_executor_of_impl<T, invocable_archetype>
114
+ #endif // defined(GENERATING_DOCUMENTATION)
115
+ {
116
+ };
117
+
118
+ #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
119
+
120
+ template <typename T>
121
+ ASIO_CONSTEXPR const bool is_executor_v = is_executor<T>::value;
122
+
123
+ #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
124
+
125
+ #if defined(ASIO_HAS_CONCEPTS)
126
+
127
+ template <typename T>
128
+ ASIO_CONCEPT executor = is_executor<T>::value;
129
+
130
+ #define ASIO_EXECUTION_EXECUTOR ::asio::execution::executor
131
+
132
+ #else // defined(ASIO_HAS_CONCEPTS)
133
+
134
+ #define ASIO_EXECUTION_EXECUTOR typename
135
+
136
+ #endif // defined(ASIO_HAS_CONCEPTS)
137
+
138
+ /// The is_executor_of trait detects whether a type T satisfies the
139
+ /// execution::executor_of concept for some set of value arguments.
140
+ /**
141
+ * Class template @c is_executor_of is a type trait that is derived from @c
142
+ * true_type if the type @c T meets the concept definition for an executor
143
+ * that is invocable with a function object of type @c F, otherwise @c
144
+ * false_type.
145
+ */
146
+ template <typename T, typename F>
147
+ struct is_executor_of :
148
+ #if defined(GENERATING_DOCUMENTATION)
149
+ integral_constant<bool, automatically_determined>
150
+ #else // defined(GENERATING_DOCUMENTATION)
151
+ integral_constant<bool,
152
+ is_executor<T>::value && detail::is_executor_of_impl<T, F>::value
153
+ >
154
+ #endif // defined(GENERATING_DOCUMENTATION)
155
+ {
156
+ };
157
+
158
+ #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
159
+
160
+ template <typename T, typename F>
161
+ ASIO_CONSTEXPR const bool is_executor_of_v =
162
+ is_executor_of<T, F>::value;
163
+
164
+ #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
165
+
166
+ #if defined(ASIO_HAS_CONCEPTS)
167
+
168
+ template <typename T, typename F>
169
+ ASIO_CONCEPT executor_of = is_executor_of<T, F>::value;
170
+
171
+ #define ASIO_EXECUTION_EXECUTOR_OF(f) \
172
+ ::asio::execution::executor_of<f>
173
+
174
+ #else // defined(ASIO_HAS_CONCEPTS)
175
+
176
+ #define ASIO_EXECUTION_EXECUTOR_OF typename
177
+
178
+ #endif // defined(ASIO_HAS_CONCEPTS)
179
+
180
+ /// The executor_shape trait detects the type used by an executor to represent
181
+ /// the shape of a bulk operation.
182
+ /**
183
+ * Class template @c executor_shape is a type trait with a nested type alias
184
+ * @c type whose type is @c T::shape_type if @c T::shape_type is valid,
185
+ * otherwise @c std::size_t.
186
+ */
187
+ template <typename T>
188
+ struct executor_shape
189
+ #if !defined(GENERATING_DOCUMENTATION)
190
+ : detail::executor_shape<T>
191
+ #endif // !defined(GENERATING_DOCUMENTATION)
192
+ {
193
+ #if defined(GENERATING_DOCUMENTATION)
194
+ /// @c T::shape_type if @c T::shape_type is valid, otherwise @c std::size_t.
195
+ typedef automatically_determined type;
196
+ #endif // defined(GENERATING_DOCUMENTATION)
197
+ };
198
+
199
+ #if defined(ASIO_HAS_ALIAS_TEMPLATES)
200
+
201
+ template <typename T>
202
+ using executor_shape_t = typename executor_shape<T>::type;
203
+
204
+ #endif // defined(ASIO_HAS_ALIAS_TEMPLATES)
205
+
206
+ /// The executor_index trait detects the type used by an executor to represent
207
+ /// an index within a bulk operation.
208
+ /**
209
+ * Class template @c executor_index is a type trait with a nested type alias
210
+ * @c type whose type is @c T::index_type if @c T::index_type is valid,
211
+ * otherwise @c executor_shape_t<T>.
212
+ */
213
+ template <typename T>
214
+ struct executor_index
215
+ #if !defined(GENERATING_DOCUMENTATION)
216
+ : detail::executor_index<T, typename executor_shape<T>::type>
217
+ #endif // !defined(GENERATING_DOCUMENTATION)
218
+ {
219
+ #if defined(GENERATING_DOCUMENTATION)
220
+ /// @c T::index_type if @c T::index_type is valid, otherwise
221
+ /// @c executor_shape_t<T>.
222
+ typedef automatically_determined type;
223
+ #endif // defined(GENERATING_DOCUMENTATION)
224
+ };
225
+
226
+ #if defined(ASIO_HAS_ALIAS_TEMPLATES)
227
+
228
+ template <typename T>
229
+ using executor_index_t = typename executor_index<T>::type;
230
+
231
+ #endif // defined(ASIO_HAS_ALIAS_TEMPLATES)
232
+
233
+ } // namespace execution
234
+ } // namespace asio
235
+
236
+ #include "asio/detail/pop_options.hpp"
237
+
238
+ #endif // ASIO_EXECUTION_EXECUTOR_HPP
@@ -0,0 +1,40 @@
1
+ //
2
+ // exection/impl/bad_executor.ipp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef ASIO_EXECUTION_IMPL_BAD_EXECUTOR_IPP
12
+ #define ASIO_EXECUTION_IMPL_BAD_EXECUTOR_IPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include "asio/detail/config.hpp"
19
+ #include "asio/execution/bad_executor.hpp"
20
+
21
+ #include "asio/detail/push_options.hpp"
22
+
23
+ namespace asio {
24
+ namespace execution {
25
+
26
+ bad_executor::bad_executor() ASIO_NOEXCEPT
27
+ {
28
+ }
29
+
30
+ const char* bad_executor::what() const ASIO_NOEXCEPT_OR_NOTHROW
31
+ {
32
+ return "bad executor";
33
+ }
34
+
35
+ } // namespace execution
36
+ } // namespace asio
37
+
38
+ #include "asio/detail/pop_options.hpp"
39
+
40
+ #endif // ASIO_EXECUTION_IMPL_BAD_EXECUTOR_IPP
@@ -0,0 +1,36 @@
1
+ //
2
+ // exection/impl/receiver_invocation_error.ipp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef ASIO_EXECUTION_IMPL_RECEIVER_INVOCATION_ERROR_IPP
12
+ #define ASIO_EXECUTION_IMPL_RECEIVER_INVOCATION_ERROR_IPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include "asio/detail/config.hpp"
19
+ #include "asio/execution/receiver_invocation_error.hpp"
20
+
21
+ #include "asio/detail/push_options.hpp"
22
+
23
+ namespace asio {
24
+ namespace execution {
25
+
26
+ receiver_invocation_error::receiver_invocation_error()
27
+ : std::runtime_error("receiver invocation error")
28
+ {
29
+ }
30
+
31
+ } // namespace execution
32
+ } // namespace asio
33
+
34
+ #include "asio/detail/pop_options.hpp"
35
+
36
+ #endif // ASIO_EXECUTION_IMPL_RECEIVER_INVOCATION_ERROR_IPP
@@ -0,0 +1,71 @@
1
+ //
2
+ // execution/invocable_archetype.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef ASIO_EXECUTION_INVOCABLE_ARCHETYPE_HPP
12
+ #define ASIO_EXECUTION_INVOCABLE_ARCHETYPE_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include "asio/detail/config.hpp"
19
+ #include "asio/detail/type_traits.hpp"
20
+ #include "asio/detail/variadic_templates.hpp"
21
+
22
+ #include "asio/detail/push_options.hpp"
23
+
24
+ namespace asio {
25
+ namespace execution {
26
+
27
+ /// An archetypal function object used for determining adherence to the
28
+ /// execution::executor concept.
29
+ struct invocable_archetype
30
+ {
31
+ #if !defined(GENERATING_DOCUMENTATION)
32
+ // Necessary for compatibility with a C++03 implementation of result_of.
33
+ typedef void result_type;
34
+ #endif // !defined(GENERATING_DOCUMENTATION)
35
+
36
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES) \
37
+ || defined(GENERATING_DOCUMENTATION)
38
+
39
+ /// Function call operator.
40
+ template <typename... Args>
41
+ void operator()(ASIO_MOVE_ARG(Args)...)
42
+ {
43
+ }
44
+
45
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
46
+ // || defined(GENERATING_DOCUMENTATION)
47
+
48
+ void operator()()
49
+ {
50
+ }
51
+
52
+ #define ASIO_PRIVATE_INVOCABLE_ARCHETYPE_CALL_DEF(n) \
53
+ template <ASIO_VARIADIC_TPARAMS(n)> \
54
+ void operator()(ASIO_VARIADIC_UNNAMED_MOVE_PARAMS(n)) \
55
+ { \
56
+ } \
57
+ /**/
58
+ ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_INVOCABLE_ARCHETYPE_CALL_DEF)
59
+ #undef ASIO_PRIVATE_INVOCABLE_ARCHETYPE_CALL_DEF
60
+
61
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
62
+ // || defined(GENERATING_DOCUMENTATION)
63
+ };
64
+
65
+ } // namespace execution
66
+ } // namespace asio
67
+
68
+ #include "asio/detail/pop_options.hpp"
69
+
70
+ #endif // ASIO_EXECUTION_INVOCABLE_ARCHETYPE_HPP
71
+
@@ -0,0 +1,917 @@
1
+ //
2
+ // execution/mapping.hpp
3
+ // ~~~~~~~~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef ASIO_EXECUTION_MAPPING_HPP
12
+ #define ASIO_EXECUTION_MAPPING_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include "asio/detail/config.hpp"
19
+ #include "asio/detail/type_traits.hpp"
20
+ #include "asio/execution/executor.hpp"
21
+ #include "asio/execution/scheduler.hpp"
22
+ #include "asio/execution/sender.hpp"
23
+ #include "asio/is_applicable_property.hpp"
24
+ #include "asio/query.hpp"
25
+ #include "asio/traits/query_free.hpp"
26
+ #include "asio/traits/query_member.hpp"
27
+ #include "asio/traits/query_static_constexpr_member.hpp"
28
+ #include "asio/traits/static_query.hpp"
29
+ #include "asio/traits/static_require.hpp"
30
+
31
+ #include "asio/detail/push_options.hpp"
32
+
33
+ namespace asio {
34
+
35
+ #if defined(GENERATING_DOCUMENTATION)
36
+
37
+ namespace execution {
38
+
39
+ /// A property to describe what guarantees an executor makes about the mapping
40
+ /// of execution agents on to threads of execution.
41
+ struct mapping_t
42
+ {
43
+ /// The mapping_t property applies to executors, senders, and schedulers.
44
+ template <typename T>
45
+ static constexpr bool is_applicable_property_v =
46
+ is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
47
+
48
+ /// The top-level mapping_t property cannot be required.
49
+ static constexpr bool is_requirable = false;
50
+
51
+ /// The top-level mapping_t property cannot be preferred.
52
+ static constexpr bool is_preferable = false;
53
+
54
+ /// The type returned by queries against an @c any_executor.
55
+ typedef mapping_t polymorphic_query_result_type;
56
+
57
+ /// A sub-property that indicates that execution agents are mapped on to
58
+ /// threads of execution.
59
+ struct thread_t
60
+ {
61
+ /// The mapping_t::thread_t property applies to executors, senders, and
62
+ /// schedulers.
63
+ template <typename T>
64
+ static constexpr bool is_applicable_property_v =
65
+ is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
66
+
67
+ /// The mapping_t::thread_t property can be required.
68
+ static constexpr bool is_requirable = true;
69
+
70
+ /// The mapping_t::thread_t property can be preferred.
71
+ static constexpr bool is_preferable = true;
72
+
73
+ /// The type returned by queries against an @c any_executor.
74
+ typedef mapping_t polymorphic_query_result_type;
75
+
76
+ /// Default constructor.
77
+ constexpr thread_t();
78
+
79
+ /// Get the value associated with a property object.
80
+ /**
81
+ * @returns thread_t();
82
+ */
83
+ static constexpr mapping_t value();
84
+ };
85
+
86
+ /// A sub-property that indicates that execution agents are mapped on to
87
+ /// new threads of execution.
88
+ struct new_thread_t
89
+ {
90
+ /// The mapping_t::new_thread_t property applies to executors, senders, and
91
+ /// schedulers.
92
+ template <typename T>
93
+ static constexpr bool is_applicable_property_v =
94
+ is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
95
+
96
+ /// The mapping_t::new_thread_t property can be required.
97
+ static constexpr bool is_requirable = true;
98
+
99
+ /// The mapping_t::new_thread_t property can be preferred.
100
+ static constexpr bool is_preferable = true;
101
+
102
+ /// The type returned by queries against an @c any_executor.
103
+ typedef mapping_t polymorphic_query_result_type;
104
+
105
+ /// Default constructor.
106
+ constexpr new_thread_t();
107
+
108
+ /// Get the value associated with a property object.
109
+ /**
110
+ * @returns new_thread_t();
111
+ */
112
+ static constexpr mapping_t value();
113
+ };
114
+
115
+ /// A sub-property that indicates that the mapping of execution agents is
116
+ /// implementation-defined.
117
+ struct other_t
118
+ {
119
+ /// The mapping_t::other_t property applies to executors, senders, and
120
+ /// schedulers.
121
+ template <typename T>
122
+ static constexpr bool is_applicable_property_v =
123
+ is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
124
+
125
+ /// The mapping_t::other_t property can be required.
126
+ static constexpr bool is_requirable = true;
127
+
128
+ /// The mapping_t::other_t property can be preferred.
129
+ static constexpr bool is_preferable = true;
130
+
131
+ /// The type returned by queries against an @c any_executor.
132
+ typedef mapping_t polymorphic_query_result_type;
133
+
134
+ /// Default constructor.
135
+ constexpr other_t();
136
+
137
+ /// Get the value associated with a property object.
138
+ /**
139
+ * @returns other_t();
140
+ */
141
+ static constexpr mapping_t value();
142
+ };
143
+
144
+ /// A special value used for accessing the mapping_t::thread_t property.
145
+ static constexpr thread_t thread;
146
+
147
+ /// A special value used for accessing the mapping_t::new_thread_t property.
148
+ static constexpr new_thread_t new_thread;
149
+
150
+ /// A special value used for accessing the mapping_t::other_t property.
151
+ static constexpr other_t other;
152
+
153
+ /// Default constructor.
154
+ constexpr mapping_t();
155
+
156
+ /// Construct from a sub-property value.
157
+ constexpr mapping_t(thread_t);
158
+
159
+ /// Construct from a sub-property value.
160
+ constexpr mapping_t(new_thread_t);
161
+
162
+ /// Construct from a sub-property value.
163
+ constexpr mapping_t(other_t);
164
+
165
+ /// Compare property values for equality.
166
+ friend constexpr bool operator==(
167
+ const mapping_t& a, const mapping_t& b) noexcept;
168
+
169
+ /// Compare property values for inequality.
170
+ friend constexpr bool operator!=(
171
+ const mapping_t& a, const mapping_t& b) noexcept;
172
+ };
173
+
174
+ /// A special value used for accessing the mapping_t property.
175
+ constexpr mapping_t mapping;
176
+
177
+ } // namespace execution
178
+
179
+ #else // defined(GENERATING_DOCUMENTATION)
180
+
181
+ namespace execution {
182
+ namespace detail {
183
+ namespace mapping {
184
+
185
+ template <int I> struct thread_t;
186
+ template <int I> struct new_thread_t;
187
+ template <int I> struct other_t;
188
+
189
+ } // namespace mapping
190
+
191
+ template <int I = 0>
192
+ struct mapping_t
193
+ {
194
+ #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
195
+ template <typename T>
196
+ ASIO_STATIC_CONSTEXPR(bool,
197
+ is_applicable_property_v = is_executor<T>::value
198
+ || is_sender<T>::value || is_scheduler<T>::value);
199
+ #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
200
+
201
+ ASIO_STATIC_CONSTEXPR(bool, is_requirable = false);
202
+ ASIO_STATIC_CONSTEXPR(bool, is_preferable = false);
203
+ typedef mapping_t polymorphic_query_result_type;
204
+
205
+ typedef detail::mapping::thread_t<I> thread_t;
206
+ typedef detail::mapping::new_thread_t<I> new_thread_t;
207
+ typedef detail::mapping::other_t<I> other_t;
208
+
209
+ ASIO_CONSTEXPR mapping_t()
210
+ : value_(-1)
211
+ {
212
+ }
213
+
214
+ ASIO_CONSTEXPR mapping_t(thread_t)
215
+ : value_(0)
216
+ {
217
+ }
218
+
219
+ ASIO_CONSTEXPR mapping_t(new_thread_t)
220
+ : value_(1)
221
+ {
222
+ }
223
+
224
+ ASIO_CONSTEXPR mapping_t(other_t)
225
+ : value_(2)
226
+ {
227
+ }
228
+
229
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
230
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
231
+ template <typename T>
232
+ static ASIO_CONSTEXPR
233
+ typename traits::query_static_constexpr_member<T, mapping_t>::result_type
234
+ static_query()
235
+ ASIO_NOEXCEPT_IF((
236
+ traits::query_static_constexpr_member<T, mapping_t>::is_noexcept))
237
+ {
238
+ return traits::query_static_constexpr_member<T, mapping_t>::value();
239
+ }
240
+
241
+ template <typename T>
242
+ static ASIO_CONSTEXPR
243
+ typename traits::static_query<T, thread_t>::result_type
244
+ static_query(
245
+ typename enable_if<
246
+ !traits::query_static_constexpr_member<T, mapping_t>::is_valid
247
+ && !traits::query_member<T, mapping_t>::is_valid
248
+ && traits::static_query<T, thread_t>::is_valid
249
+ >::type* = 0) ASIO_NOEXCEPT
250
+ {
251
+ return traits::static_query<T, thread_t>::value();
252
+ }
253
+
254
+ template <typename T>
255
+ static ASIO_CONSTEXPR
256
+ typename traits::static_query<T, new_thread_t>::result_type
257
+ static_query(
258
+ typename enable_if<
259
+ !traits::query_static_constexpr_member<T, mapping_t>::is_valid
260
+ && !traits::query_member<T, mapping_t>::is_valid
261
+ && !traits::static_query<T, thread_t>::is_valid
262
+ && traits::static_query<T, new_thread_t>::is_valid
263
+ >::type* = 0) ASIO_NOEXCEPT
264
+ {
265
+ return traits::static_query<T, new_thread_t>::value();
266
+ }
267
+
268
+ template <typename T>
269
+ static ASIO_CONSTEXPR
270
+ typename traits::static_query<T, other_t>::result_type
271
+ static_query(
272
+ typename enable_if<
273
+ !traits::query_static_constexpr_member<T, mapping_t>::is_valid
274
+ && !traits::query_member<T, mapping_t>::is_valid
275
+ && !traits::static_query<T, thread_t>::is_valid
276
+ && !traits::static_query<T, new_thread_t>::is_valid
277
+ && traits::static_query<T, other_t>::is_valid
278
+ >::type* = 0) ASIO_NOEXCEPT
279
+ {
280
+ return traits::static_query<T, other_t>::value();
281
+ }
282
+
283
+ template <typename E, typename T = decltype(mapping_t::static_query<E>())>
284
+ static ASIO_CONSTEXPR const T static_query_v
285
+ = mapping_t::static_query<E>();
286
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
287
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
288
+
289
+ friend ASIO_CONSTEXPR bool operator==(
290
+ const mapping_t& a, const mapping_t& b)
291
+ {
292
+ return a.value_ == b.value_;
293
+ }
294
+
295
+ friend ASIO_CONSTEXPR bool operator!=(
296
+ const mapping_t& a, const mapping_t& b)
297
+ {
298
+ return a.value_ != b.value_;
299
+ }
300
+
301
+ struct convertible_from_mapping_t
302
+ {
303
+ ASIO_CONSTEXPR convertible_from_mapping_t(mapping_t) {}
304
+ };
305
+
306
+ template <typename Executor>
307
+ friend ASIO_CONSTEXPR mapping_t query(
308
+ const Executor& ex, convertible_from_mapping_t,
309
+ typename enable_if<
310
+ can_query<const Executor&, thread_t>::value
311
+ >::type* = 0)
312
+ #if !defined(__clang__) // Clang crashes if noexcept is used here.
313
+ #if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified.
314
+ ASIO_NOEXCEPT_IF((
315
+ is_nothrow_query<const Executor&, mapping_t<>::thread_t>::value))
316
+ #else // defined(ASIO_MSVC)
317
+ ASIO_NOEXCEPT_IF((
318
+ is_nothrow_query<const Executor&, thread_t>::value))
319
+ #endif // defined(ASIO_MSVC)
320
+ #endif // !defined(__clang__)
321
+ {
322
+ return asio::query(ex, thread_t());
323
+ }
324
+
325
+ template <typename Executor>
326
+ friend ASIO_CONSTEXPR mapping_t query(
327
+ const Executor& ex, convertible_from_mapping_t,
328
+ typename enable_if<
329
+ !can_query<const Executor&, thread_t>::value
330
+ && can_query<const Executor&, new_thread_t>::value
331
+ >::type* = 0)
332
+ #if !defined(__clang__) // Clang crashes if noexcept is used here.
333
+ #if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified.
334
+ ASIO_NOEXCEPT_IF((
335
+ is_nothrow_query<const Executor&, mapping_t<>::new_thread_t>::value))
336
+ #else // defined(ASIO_MSVC)
337
+ ASIO_NOEXCEPT_IF((
338
+ is_nothrow_query<const Executor&, new_thread_t>::value))
339
+ #endif // defined(ASIO_MSVC)
340
+ #endif // !defined(__clang__)
341
+ {
342
+ return asio::query(ex, new_thread_t());
343
+ }
344
+
345
+ template <typename Executor>
346
+ friend ASIO_CONSTEXPR mapping_t query(
347
+ const Executor& ex, convertible_from_mapping_t,
348
+ typename enable_if<
349
+ !can_query<const Executor&, thread_t>::value
350
+ && !can_query<const Executor&, new_thread_t>::value
351
+ && can_query<const Executor&, other_t>::value
352
+ >::type* = 0)
353
+ #if !defined(__clang__) // Clang crashes if noexcept is used here.
354
+ #if defined(ASIO_MSVC) // Visual C++ wants the type to be qualified.
355
+ ASIO_NOEXCEPT_IF((
356
+ is_nothrow_query<const Executor&, mapping_t<>::other_t>::value))
357
+ #else // defined(ASIO_MSVC)
358
+ ASIO_NOEXCEPT_IF((
359
+ is_nothrow_query<const Executor&, other_t>::value))
360
+ #endif // defined(ASIO_MSVC)
361
+ #endif // !defined(__clang__)
362
+ {
363
+ return asio::query(ex, other_t());
364
+ }
365
+
366
+ ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(thread_t, thread);
367
+ ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(new_thread_t, new_thread);
368
+ ASIO_STATIC_CONSTEXPR_DEFAULT_INIT(other_t, other);
369
+
370
+ #if !defined(ASIO_HAS_CONSTEXPR)
371
+ static const mapping_t instance;
372
+ #endif // !defined(ASIO_HAS_CONSTEXPR)
373
+
374
+ private:
375
+ int value_;
376
+ };
377
+
378
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
379
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
380
+ template <int I> template <typename E, typename T>
381
+ const T mapping_t<I>::static_query_v;
382
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
383
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
384
+
385
+ #if !defined(ASIO_HAS_CONSTEXPR)
386
+ template <int I>
387
+ const mapping_t<I> mapping_t<I>::instance;
388
+ #endif
389
+
390
+ template <int I>
391
+ const typename mapping_t<I>::thread_t mapping_t<I>::thread;
392
+
393
+ template <int I>
394
+ const typename mapping_t<I>::new_thread_t mapping_t<I>::new_thread;
395
+
396
+ template <int I>
397
+ const typename mapping_t<I>::other_t mapping_t<I>::other;
398
+
399
+ namespace mapping {
400
+
401
+ template <int I = 0>
402
+ struct thread_t
403
+ {
404
+ #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
405
+ template <typename T>
406
+ ASIO_STATIC_CONSTEXPR(bool,
407
+ is_applicable_property_v = is_executor<T>::value
408
+ || is_sender<T>::value || is_scheduler<T>::value);
409
+ #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
410
+
411
+ ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
412
+ ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
413
+ typedef mapping_t<I> polymorphic_query_result_type;
414
+
415
+ ASIO_CONSTEXPR thread_t()
416
+ {
417
+ }
418
+
419
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
420
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
421
+ template <typename T>
422
+ static ASIO_CONSTEXPR
423
+ typename traits::query_static_constexpr_member<T, thread_t>::result_type
424
+ static_query()
425
+ ASIO_NOEXCEPT_IF((
426
+ traits::query_static_constexpr_member<T, thread_t>::is_noexcept))
427
+ {
428
+ return traits::query_static_constexpr_member<T, thread_t>::value();
429
+ }
430
+
431
+ template <typename T>
432
+ static ASIO_CONSTEXPR thread_t static_query(
433
+ typename enable_if<
434
+ !traits::query_static_constexpr_member<T, thread_t>::is_valid
435
+ && !traits::query_member<T, thread_t>::is_valid
436
+ && !traits::query_free<T, thread_t>::is_valid
437
+ && !can_query<T, new_thread_t<I> >::value
438
+ && !can_query<T, other_t<I> >::value
439
+ >::type* = 0) ASIO_NOEXCEPT
440
+ {
441
+ return thread_t();
442
+ }
443
+
444
+ template <typename E, typename T = decltype(thread_t::static_query<E>())>
445
+ static ASIO_CONSTEXPR const T static_query_v
446
+ = thread_t::static_query<E>();
447
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
448
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
449
+
450
+ static ASIO_CONSTEXPR mapping_t<I> value()
451
+ {
452
+ return thread_t();
453
+ }
454
+
455
+ friend ASIO_CONSTEXPR bool operator==(
456
+ const thread_t&, const thread_t&)
457
+ {
458
+ return true;
459
+ }
460
+
461
+ friend ASIO_CONSTEXPR bool operator!=(
462
+ const thread_t&, const thread_t&)
463
+ {
464
+ return false;
465
+ }
466
+ };
467
+
468
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
469
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
470
+ template <int I> template <typename E, typename T>
471
+ const T thread_t<I>::static_query_v;
472
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
473
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
474
+
475
+ template <int I = 0>
476
+ struct new_thread_t
477
+ {
478
+ #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
479
+ template <typename T>
480
+ ASIO_STATIC_CONSTEXPR(bool,
481
+ is_applicable_property_v = is_executor<T>::value
482
+ || is_sender<T>::value || is_scheduler<T>::value);
483
+ #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
484
+
485
+ ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
486
+ ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
487
+ typedef mapping_t<I> polymorphic_query_result_type;
488
+
489
+ ASIO_CONSTEXPR new_thread_t()
490
+ {
491
+ }
492
+
493
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
494
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
495
+ template <typename T>
496
+ static ASIO_CONSTEXPR
497
+ typename traits::query_static_constexpr_member<T, new_thread_t>::result_type
498
+ static_query()
499
+ ASIO_NOEXCEPT_IF((
500
+ traits::query_static_constexpr_member<T, new_thread_t>::is_noexcept))
501
+ {
502
+ return traits::query_static_constexpr_member<T, new_thread_t>::value();
503
+ }
504
+
505
+ template <typename E, typename T = decltype(new_thread_t::static_query<E>())>
506
+ static ASIO_CONSTEXPR const T static_query_v
507
+ = new_thread_t::static_query<E>();
508
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
509
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
510
+
511
+ static ASIO_CONSTEXPR mapping_t<I> value()
512
+ {
513
+ return new_thread_t();
514
+ }
515
+
516
+ friend ASIO_CONSTEXPR bool operator==(
517
+ const new_thread_t&, const new_thread_t&)
518
+ {
519
+ return true;
520
+ }
521
+
522
+ friend ASIO_CONSTEXPR bool operator!=(
523
+ const new_thread_t&, const new_thread_t&)
524
+ {
525
+ return false;
526
+ }
527
+ };
528
+
529
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
530
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
531
+ template <int I> template <typename E, typename T>
532
+ const T new_thread_t<I>::static_query_v;
533
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
534
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
535
+
536
+ template <int I>
537
+ struct other_t
538
+ {
539
+ #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
540
+ template <typename T>
541
+ ASIO_STATIC_CONSTEXPR(bool,
542
+ is_applicable_property_v = is_executor<T>::value
543
+ || is_sender<T>::value || is_scheduler<T>::value);
544
+ #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
545
+
546
+ ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
547
+ ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
548
+ typedef mapping_t<I> polymorphic_query_result_type;
549
+
550
+ ASIO_CONSTEXPR other_t()
551
+ {
552
+ }
553
+
554
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
555
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
556
+ template <typename T>
557
+ static ASIO_CONSTEXPR
558
+ typename traits::query_static_constexpr_member<T, other_t>::result_type
559
+ static_query()
560
+ ASIO_NOEXCEPT_IF((
561
+ traits::query_static_constexpr_member<T, other_t>::is_noexcept))
562
+ {
563
+ return traits::query_static_constexpr_member<T, other_t>::value();
564
+ }
565
+
566
+ template <typename E, typename T = decltype(other_t::static_query<E>())>
567
+ static ASIO_CONSTEXPR const T static_query_v
568
+ = other_t::static_query<E>();
569
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
570
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
571
+
572
+ static ASIO_CONSTEXPR mapping_t<I> value()
573
+ {
574
+ return other_t();
575
+ }
576
+
577
+ friend ASIO_CONSTEXPR bool operator==(
578
+ const other_t&, const other_t&)
579
+ {
580
+ return true;
581
+ }
582
+
583
+ friend ASIO_CONSTEXPR bool operator!=(
584
+ const other_t&, const other_t&)
585
+ {
586
+ return false;
587
+ }
588
+ };
589
+
590
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
591
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
592
+ template <int I> template <typename E, typename T>
593
+ const T other_t<I>::static_query_v;
594
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
595
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
596
+
597
+ } // namespace mapping
598
+ } // namespace detail
599
+
600
+ typedef detail::mapping_t<> mapping_t;
601
+
602
+ #if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
603
+ constexpr mapping_t mapping;
604
+ #else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
605
+ namespace { static const mapping_t& mapping = mapping_t::instance; }
606
+ #endif
607
+
608
+ } // namespace execution
609
+
610
+ #if !defined(ASIO_HAS_VARIABLE_TEMPLATES)
611
+
612
+ template <typename T>
613
+ struct is_applicable_property<T, execution::mapping_t>
614
+ : integral_constant<bool,
615
+ execution::is_executor<T>::value
616
+ || execution::is_sender<T>::value
617
+ || execution::is_scheduler<T>::value>
618
+ {
619
+ };
620
+
621
+ template <typename T>
622
+ struct is_applicable_property<T, execution::mapping_t::thread_t>
623
+ : integral_constant<bool,
624
+ execution::is_executor<T>::value
625
+ || execution::is_sender<T>::value
626
+ || execution::is_scheduler<T>::value>
627
+ {
628
+ };
629
+
630
+ template <typename T>
631
+ struct is_applicable_property<T, execution::mapping_t::new_thread_t>
632
+ : integral_constant<bool,
633
+ execution::is_executor<T>::value
634
+ || execution::is_sender<T>::value
635
+ || execution::is_scheduler<T>::value>
636
+ {
637
+ };
638
+
639
+ template <typename T>
640
+ struct is_applicable_property<T, execution::mapping_t::other_t>
641
+ : integral_constant<bool,
642
+ execution::is_executor<T>::value
643
+ || execution::is_sender<T>::value
644
+ || execution::is_scheduler<T>::value>
645
+ {
646
+ };
647
+
648
+ #endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES)
649
+
650
+ namespace traits {
651
+
652
+ #if !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
653
+
654
+ template <typename T>
655
+ struct query_free_default<T, execution::mapping_t,
656
+ typename enable_if<
657
+ can_query<T, execution::mapping_t::thread_t>::value
658
+ >::type>
659
+ {
660
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
661
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept =
662
+ (is_nothrow_query<T, execution::mapping_t::thread_t>::value));
663
+
664
+ typedef execution::mapping_t result_type;
665
+ };
666
+
667
+ template <typename T>
668
+ struct query_free_default<T, execution::mapping_t,
669
+ typename enable_if<
670
+ !can_query<T, execution::mapping_t::thread_t>::value
671
+ && can_query<T, execution::mapping_t::new_thread_t>::value
672
+ >::type>
673
+ {
674
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
675
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept =
676
+ (is_nothrow_query<T, execution::mapping_t::new_thread_t>::value));
677
+
678
+ typedef execution::mapping_t result_type;
679
+ };
680
+
681
+ template <typename T>
682
+ struct query_free_default<T, execution::mapping_t,
683
+ typename enable_if<
684
+ !can_query<T, execution::mapping_t::thread_t>::value
685
+ && !can_query<T, execution::mapping_t::new_thread_t>::value
686
+ && can_query<T, execution::mapping_t::other_t>::value
687
+ >::type>
688
+ {
689
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
690
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept =
691
+ (is_nothrow_query<T, execution::mapping_t::other_t>::value));
692
+
693
+ typedef execution::mapping_t result_type;
694
+ };
695
+
696
+ #endif // !defined(ASIO_HAS_DEDUCED_QUERY_FREE_TRAIT)
697
+
698
+ #if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
699
+ || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
700
+
701
+ template <typename T>
702
+ struct static_query<T, execution::mapping_t,
703
+ typename enable_if<
704
+ traits::query_static_constexpr_member<T,
705
+ execution::mapping_t>::is_valid
706
+ >::type>
707
+ {
708
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
709
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
710
+
711
+ typedef typename traits::query_static_constexpr_member<T,
712
+ execution::mapping_t>::result_type result_type;
713
+
714
+ static ASIO_CONSTEXPR result_type value()
715
+ {
716
+ return traits::query_static_constexpr_member<T,
717
+ execution::mapping_t>::value();
718
+ }
719
+ };
720
+
721
+ template <typename T>
722
+ struct static_query<T, execution::mapping_t,
723
+ typename enable_if<
724
+ !traits::query_static_constexpr_member<T, execution::mapping_t>::is_valid
725
+ && !traits::query_member<T, execution::mapping_t>::is_valid
726
+ && traits::static_query<T, execution::mapping_t::thread_t>::is_valid
727
+ >::type>
728
+ {
729
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
730
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
731
+
732
+ typedef typename traits::static_query<T,
733
+ execution::mapping_t::thread_t>::result_type result_type;
734
+
735
+ static ASIO_CONSTEXPR result_type value()
736
+ {
737
+ return traits::static_query<T, execution::mapping_t::thread_t>::value();
738
+ }
739
+ };
740
+
741
+ template <typename T>
742
+ struct static_query<T, execution::mapping_t,
743
+ typename enable_if<
744
+ !traits::query_static_constexpr_member<T, execution::mapping_t>::is_valid
745
+ && !traits::query_member<T, execution::mapping_t>::is_valid
746
+ && !traits::static_query<T, execution::mapping_t::thread_t>::is_valid
747
+ && traits::static_query<T, execution::mapping_t::new_thread_t>::is_valid
748
+ >::type>
749
+ {
750
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
751
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
752
+
753
+ typedef typename traits::static_query<T,
754
+ execution::mapping_t::new_thread_t>::result_type result_type;
755
+
756
+ static ASIO_CONSTEXPR result_type value()
757
+ {
758
+ return traits::static_query<T, execution::mapping_t::new_thread_t>::value();
759
+ }
760
+ };
761
+
762
+ template <typename T>
763
+ struct static_query<T, execution::mapping_t,
764
+ typename enable_if<
765
+ !traits::query_static_constexpr_member<T, execution::mapping_t>::is_valid
766
+ && !traits::query_member<T, execution::mapping_t>::is_valid
767
+ && !traits::static_query<T, execution::mapping_t::thread_t>::is_valid
768
+ && !traits::static_query<T, execution::mapping_t::new_thread_t>::is_valid
769
+ && traits::static_query<T, execution::mapping_t::other_t>::is_valid
770
+ >::type>
771
+ {
772
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
773
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
774
+
775
+ typedef typename traits::static_query<T,
776
+ execution::mapping_t::other_t>::result_type result_type;
777
+
778
+ static ASIO_CONSTEXPR result_type value()
779
+ {
780
+ return traits::static_query<T, execution::mapping_t::other_t>::value();
781
+ }
782
+ };
783
+
784
+ template <typename T>
785
+ struct static_query<T, execution::mapping_t::thread_t,
786
+ typename enable_if<
787
+ traits::query_static_constexpr_member<T,
788
+ execution::mapping_t::thread_t>::is_valid
789
+ >::type>
790
+ {
791
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
792
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
793
+
794
+ typedef typename traits::query_static_constexpr_member<T,
795
+ execution::mapping_t::thread_t>::result_type result_type;
796
+
797
+ static ASIO_CONSTEXPR result_type value()
798
+ {
799
+ return traits::query_static_constexpr_member<T,
800
+ execution::mapping_t::thread_t>::value();
801
+ }
802
+ };
803
+
804
+ template <typename T>
805
+ struct static_query<T, execution::mapping_t::thread_t,
806
+ typename enable_if<
807
+ !traits::query_static_constexpr_member<T,
808
+ execution::mapping_t::thread_t>::is_valid
809
+ && !traits::query_member<T, execution::mapping_t::thread_t>::is_valid
810
+ && !traits::query_free<T, execution::mapping_t::thread_t>::is_valid
811
+ && !can_query<T, execution::mapping_t::new_thread_t>::value
812
+ && !can_query<T, execution::mapping_t::other_t>::value
813
+ >::type>
814
+ {
815
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
816
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
817
+
818
+ typedef execution::mapping_t::thread_t result_type;
819
+
820
+ static ASIO_CONSTEXPR result_type value()
821
+ {
822
+ return result_type();
823
+ }
824
+ };
825
+
826
+ template <typename T>
827
+ struct static_query<T, execution::mapping_t::new_thread_t,
828
+ typename enable_if<
829
+ traits::query_static_constexpr_member<T,
830
+ execution::mapping_t::new_thread_t>::is_valid
831
+ >::type>
832
+ {
833
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
834
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
835
+
836
+ typedef typename traits::query_static_constexpr_member<T,
837
+ execution::mapping_t::new_thread_t>::result_type result_type;
838
+
839
+ static ASIO_CONSTEXPR result_type value()
840
+ {
841
+ return traits::query_static_constexpr_member<T,
842
+ execution::mapping_t::new_thread_t>::value();
843
+ }
844
+ };
845
+
846
+ template <typename T>
847
+ struct static_query<T, execution::mapping_t::other_t,
848
+ typename enable_if<
849
+ traits::query_static_constexpr_member<T,
850
+ execution::mapping_t::other_t>::is_valid
851
+ >::type>
852
+ {
853
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
854
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
855
+
856
+ typedef typename traits::query_static_constexpr_member<T,
857
+ execution::mapping_t::other_t>::result_type result_type;
858
+
859
+ static ASIO_CONSTEXPR result_type value()
860
+ {
861
+ return traits::query_static_constexpr_member<T,
862
+ execution::mapping_t::other_t>::value();
863
+ }
864
+ };
865
+
866
+ #endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
867
+ // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
868
+
869
+ #if !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT)
870
+
871
+ template <typename T>
872
+ struct static_require<T, execution::mapping_t::thread_t,
873
+ typename enable_if<
874
+ static_query<T, execution::mapping_t::thread_t>::is_valid
875
+ >::type>
876
+ {
877
+ ASIO_STATIC_CONSTEXPR(bool, is_valid =
878
+ (is_same<typename static_query<T,
879
+ execution::mapping_t::thread_t>::result_type,
880
+ execution::mapping_t::thread_t>::value));
881
+ };
882
+
883
+ template <typename T>
884
+ struct static_require<T, execution::mapping_t::new_thread_t,
885
+ typename enable_if<
886
+ static_query<T, execution::mapping_t::new_thread_t>::is_valid
887
+ >::type>
888
+ {
889
+ ASIO_STATIC_CONSTEXPR(bool, is_valid =
890
+ (is_same<typename static_query<T,
891
+ execution::mapping_t::new_thread_t>::result_type,
892
+ execution::mapping_t::new_thread_t>::value));
893
+ };
894
+
895
+ template <typename T>
896
+ struct static_require<T, execution::mapping_t::other_t,
897
+ typename enable_if<
898
+ static_query<T, execution::mapping_t::other_t>::is_valid
899
+ >::type>
900
+ {
901
+ ASIO_STATIC_CONSTEXPR(bool, is_valid =
902
+ (is_same<typename static_query<T,
903
+ execution::mapping_t::other_t>::result_type,
904
+ execution::mapping_t::other_t>::value));
905
+ };
906
+
907
+ #endif // !defined(ASIO_HAS_DEDUCED_STATIC_REQUIRE_TRAIT)
908
+
909
+ } // namespace traits
910
+
911
+ #endif // defined(GENERATING_DOCUMENTATION)
912
+
913
+ } // namespace asio
914
+
915
+ #include "asio/detail/pop_options.hpp"
916
+
917
+ #endif // ASIO_EXECUTION_MAPPING_HPP