couchbase 3.0.0.alpha.3 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1683) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -4
  3. data/ext/CMakeLists.txt +92 -128
  4. data/ext/build_config.hxx.in +20 -0
  5. data/ext/build_version.hxx.in +3 -2
  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 +78 -0
  10. data/ext/cmake/PreventInSourceBuilds.cmake +18 -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 +52 -0
  15. data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
  16. data/ext/cmake/VersionInfo.cmake +37 -0
  17. data/ext/couchbase/bucket.hxx +261 -19
  18. data/ext/couchbase/capabilities.hxx +117 -0
  19. data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
  20. data/ext/couchbase/cluster.hxx +179 -87
  21. data/ext/couchbase/cluster_options.hxx +54 -0
  22. data/ext/couchbase/configuration.hxx +438 -44
  23. data/ext/couchbase/couchbase.cxx +3523 -1062
  24. data/ext/couchbase/diagnostics.hxx +251 -0
  25. data/ext/couchbase/document_id.hxx +3 -1
  26. data/ext/couchbase/error_map.hxx +202 -2
  27. data/ext/couchbase/errors.hxx +18 -3
  28. data/ext/couchbase/io/dns_client.hxx +217 -0
  29. data/ext/couchbase/io/dns_codec.hxx +207 -0
  30. data/ext/couchbase/io/dns_config.hxx +116 -0
  31. data/ext/couchbase/io/dns_message.hxx +555 -0
  32. data/ext/couchbase/io/http_command.hxx +95 -0
  33. data/ext/couchbase/io/http_context.hxx +37 -0
  34. data/ext/couchbase/io/http_message.hxx +9 -0
  35. data/ext/couchbase/io/http_parser.hxx +2 -0
  36. data/ext/couchbase/io/http_session.hxx +187 -49
  37. data/ext/couchbase/io/http_session_manager.hxx +182 -0
  38. data/ext/couchbase/io/mcbp_command.hxx +246 -0
  39. data/ext/couchbase/io/mcbp_message.hxx +24 -2
  40. data/ext/couchbase/io/mcbp_session.hxx +558 -163
  41. data/ext/couchbase/io/query_cache.hxx +61 -0
  42. data/ext/couchbase/io/retry_action.hxx +30 -0
  43. data/ext/couchbase/io/retry_context.hxx +38 -0
  44. data/ext/couchbase/io/retry_orchestrator.hxx +112 -0
  45. data/ext/couchbase/io/retry_reason.hxx +235 -0
  46. data/ext/couchbase/io/retry_strategy.hxx +156 -0
  47. data/ext/couchbase/io/streams.hxx +216 -0
  48. data/ext/couchbase/mutation_token.hxx +1 -1
  49. data/ext/couchbase/operations.hxx +33 -1
  50. data/ext/couchbase/operations/analytics_dataset_create.hxx +117 -0
  51. data/ext/couchbase/operations/analytics_dataset_drop.hxx +103 -0
  52. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +107 -0
  53. data/ext/couchbase/operations/analytics_dataverse_create.hxx +104 -0
  54. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +104 -0
  55. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +91 -0
  56. data/ext/couchbase/operations/analytics_index_create.hxx +128 -0
  57. data/ext/couchbase/operations/analytics_index_drop.hxx +110 -0
  58. data/ext/couchbase/operations/analytics_index_get_all.hxx +106 -0
  59. data/ext/couchbase/operations/analytics_link_connect.hxx +102 -0
  60. data/ext/couchbase/operations/analytics_link_disconnect.hxx +101 -0
  61. data/ext/couchbase/operations/bucket_create.hxx +15 -7
  62. data/ext/couchbase/operations/bucket_drop.hxx +5 -3
  63. data/ext/couchbase/operations/bucket_flush.hxx +5 -3
  64. data/ext/couchbase/operations/bucket_get.hxx +5 -3
  65. data/ext/couchbase/operations/bucket_get_all.hxx +5 -3
  66. data/ext/couchbase/operations/bucket_settings.hxx +43 -4
  67. data/ext/couchbase/operations/bucket_update.hxx +15 -7
  68. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +5 -3
  69. data/ext/couchbase/operations/collection_create.hxx +7 -3
  70. data/ext/couchbase/operations/collection_drop.hxx +5 -3
  71. data/ext/couchbase/operations/collections_manifest_get.hxx +70 -0
  72. data/ext/couchbase/operations/design_document.hxx +59 -0
  73. data/ext/couchbase/operations/document_analytics.hxx +293 -0
  74. data/ext/couchbase/operations/document_decrement.hxx +10 -4
  75. data/ext/couchbase/operations/document_exists.hxx +4 -1
  76. data/ext/couchbase/operations/document_get.hxx +7 -1
  77. data/ext/couchbase/operations/document_get_and_lock.hxx +7 -1
  78. data/ext/couchbase/operations/document_get_and_touch.hxx +9 -3
  79. data/ext/couchbase/operations/document_get_projected.hxx +16 -10
  80. data/ext/couchbase/operations/document_increment.hxx +10 -4
  81. data/ext/couchbase/operations/document_insert.hxx +9 -3
  82. data/ext/couchbase/operations/document_lookup_in.hxx +26 -1
  83. data/ext/couchbase/operations/document_mutate_in.hxx +50 -2
  84. data/ext/couchbase/operations/document_query.hxx +103 -17
  85. data/ext/couchbase/operations/document_remove.hxx +7 -1
  86. data/ext/couchbase/operations/document_replace.hxx +9 -3
  87. data/ext/couchbase/operations/document_search.hxx +46 -13
  88. data/ext/couchbase/operations/document_touch.hxx +9 -3
  89. data/ext/couchbase/operations/document_unlock.hxx +7 -1
  90. data/ext/couchbase/operations/document_upsert.hxx +9 -3
  91. data/ext/couchbase/operations/document_view.hxx +228 -0
  92. data/ext/couchbase/operations/group_drop.hxx +71 -0
  93. data/ext/couchbase/operations/group_get.hxx +75 -0
  94. data/ext/couchbase/operations/group_get_all.hxx +70 -0
  95. data/ext/couchbase/operations/group_upsert.hxx +118 -0
  96. data/ext/couchbase/operations/query_index_build_deferred.hxx +4 -4
  97. data/ext/couchbase/operations/query_index_create.hxx +18 -8
  98. data/ext/couchbase/operations/query_index_drop.hxx +16 -6
  99. data/ext/couchbase/operations/query_index_get_all.hxx +15 -5
  100. data/ext/couchbase/operations/rbac.hxx +276 -0
  101. data/ext/couchbase/operations/role_get_all.hxx +70 -0
  102. data/ext/couchbase/operations/scope_create.hxx +10 -4
  103. data/ext/couchbase/operations/scope_drop.hxx +5 -3
  104. data/ext/couchbase/operations/scope_get_all.hxx +5 -3
  105. data/ext/couchbase/operations/search_get_stats.hxx +59 -0
  106. data/ext/couchbase/operations/search_index.hxx +17 -0
  107. data/ext/couchbase/operations/search_index_analyze_document.hxx +3 -3
  108. data/ext/couchbase/operations/search_index_control_ingest.hxx +6 -4
  109. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +3 -3
  110. data/ext/couchbase/operations/search_index_control_query.hxx +3 -3
  111. data/ext/couchbase/operations/search_index_drop.hxx +3 -3
  112. data/ext/couchbase/operations/search_index_get.hxx +3 -3
  113. data/ext/couchbase/operations/search_index_get_all.hxx +3 -3
  114. data/ext/couchbase/operations/search_index_get_documents_count.hxx +26 -18
  115. data/ext/couchbase/operations/search_index_get_stats.hxx +81 -0
  116. data/ext/couchbase/operations/search_index_upsert.hxx +3 -3
  117. data/ext/couchbase/operations/user_drop.hxx +72 -0
  118. data/ext/couchbase/operations/user_get.hxx +76 -0
  119. data/ext/couchbase/operations/user_get_all.hxx +71 -0
  120. data/ext/couchbase/operations/user_upsert.hxx +125 -0
  121. data/ext/couchbase/operations/view_index_drop.hxx +67 -0
  122. data/ext/couchbase/operations/view_index_get.hxx +90 -0
  123. data/ext/couchbase/operations/view_index_get_all.hxx +125 -0
  124. data/ext/couchbase/operations/view_index_upsert.hxx +87 -0
  125. data/ext/couchbase/origin.hxx +178 -0
  126. data/ext/couchbase/platform/backtrace.c +189 -0
  127. data/ext/couchbase/platform/backtrace.h +54 -0
  128. data/ext/couchbase/platform/terminate_handler.cc +123 -0
  129. data/ext/couchbase/platform/terminate_handler.h +36 -0
  130. data/ext/couchbase/protocol/client_opcode.hxx +44 -40
  131. data/ext/couchbase/protocol/client_response.hxx +3 -3
  132. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +6 -8
  133. data/ext/couchbase/protocol/cmd_decrement.hxx +5 -5
  134. data/ext/couchbase/protocol/cmd_get_and_touch.hxx +5 -5
  135. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +9 -7
  136. data/ext/couchbase/protocol/cmd_hello.hxx +10 -0
  137. data/ext/couchbase/protocol/cmd_increment.hxx +5 -5
  138. data/ext/couchbase/protocol/cmd_info.hxx +0 -11
  139. data/ext/couchbase/protocol/cmd_insert.hxx +5 -5
  140. data/ext/couchbase/protocol/cmd_lookup_in.hxx +1 -0
  141. data/ext/couchbase/protocol/cmd_mutate_in.hxx +53 -5
  142. data/ext/couchbase/protocol/cmd_replace.hxx +5 -5
  143. data/ext/couchbase/protocol/cmd_touch.hxx +1 -1
  144. data/ext/couchbase/protocol/cmd_upsert.hxx +5 -5
  145. data/ext/couchbase/protocol/magic.hxx +6 -6
  146. data/ext/couchbase/protocol/server_opcode.hxx +2 -2
  147. data/ext/couchbase/protocol/status.hxx +70 -60
  148. data/ext/couchbase/service_type.hxx +38 -1
  149. data/ext/couchbase/timeout_defaults.hxx +10 -1
  150. data/ext/couchbase/utils/connection_string.hxx +379 -0
  151. data/ext/couchbase/version.hxx +2 -2
  152. data/ext/extconf.rb +72 -24
  153. data/ext/test/test_helper.hxx +141 -0
  154. data/ext/test/test_helper_native.hxx +59 -0
  155. data/ext/test/test_helper_ruby.hxx +72 -0
  156. data/ext/test/test_native_diagnostics.cxx +385 -0
  157. data/ext/test/test_native_trivial_crud.cxx +83 -0
  158. data/ext/test/test_ruby_trivial_crud.cxx +35 -0
  159. data/ext/test/test_ruby_trivial_query.cxx +34 -0
  160. data/ext/third_party/asio/asio/include/asio.hpp +35 -0
  161. data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +71 -0
  162. data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +1 -7
  163. data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +36 -19
  164. data/ext/third_party/asio/asio/include/asio/async_result.hpp +1 -8
  165. data/ext/third_party/asio/asio/include/asio/awaitable.hpp +14 -4
  166. data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +12 -7
  167. data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +4 -4
  168. data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +11 -7
  169. data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +9 -4
  170. data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +6 -6
  171. data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +4 -4
  172. data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +5 -5
  173. data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +13 -7
  174. data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +7 -3
  175. data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +52 -4
  176. data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +10 -15
  177. data/ext/third_party/asio/asio/include/asio/buffer.hpp +6 -4
  178. data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +380 -9
  179. data/ext/third_party/asio/asio/include/asio/defer.hpp +4 -1
  180. data/ext/third_party/asio/asio/include/asio/detached.hpp +50 -0
  181. data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +19 -0
  182. data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +144 -26
  183. data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
  184. data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +106 -0
  185. data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
  186. data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +10 -5
  187. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +8 -0
  188. data/ext/third_party/asio/asio/include/asio/detail/config.hpp +360 -37
  189. data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +17 -2
  190. data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +24 -6
  191. data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +32 -14
  192. data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +32 -14
  193. data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +133 -34
  194. data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +42 -0
  195. data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +23 -0
  196. data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +26 -0
  197. data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +370 -45
  198. data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +208 -74
  199. data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +39 -1
  200. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +12 -15
  201. data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +37 -0
  202. data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +2 -1
  203. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +661 -274
  204. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +210 -4
  205. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +8 -9
  206. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +5 -4
  207. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +15 -6
  208. data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +32 -50
  209. data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +3 -0
  210. data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +6 -0
  211. data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +1 -1
  212. data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +13 -0
  213. data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +1 -1
  214. data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +38 -13
  215. data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +12 -6
  216. data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +2 -3
  217. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +36 -24
  218. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +17 -10
  219. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +38 -16
  220. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +36 -14
  221. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +21 -11
  222. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +43 -17
  223. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +39 -17
  224. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +44 -21
  225. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +41 -18
  226. data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +12 -6
  227. data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +3 -1
  228. data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +10 -8
  229. data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +11 -9
  230. data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +8 -0
  231. data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +7 -5
  232. data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +46 -0
  233. data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
  234. data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +12 -0
  235. data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +25 -1
  236. data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +4 -1
  237. data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +58 -0
  238. data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +59 -0
  239. data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +144 -1
  240. data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +9 -6
  241. data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +13 -0
  242. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +9 -5
  243. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +9 -5
  244. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +5 -1
  245. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +10 -6
  246. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +9 -5
  247. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +18 -6
  248. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +15 -11
  249. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +10 -5
  250. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +8 -4
  251. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +8 -4
  252. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +8 -4
  253. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +8 -4
  254. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +10 -5
  255. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +8 -4
  256. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +8 -4
  257. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +8 -4
  258. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +8 -4
  259. data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +81 -6
  260. data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +45 -9
  261. data/ext/third_party/asio/asio/include/asio/dispatch.hpp +4 -1
  262. data/ext/third_party/asio/asio/include/asio/execution.hpp +48 -0
  263. data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +249 -0
  264. data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +2264 -0
  265. data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
  266. data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +1351 -0
  267. data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1064 -0
  268. data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +390 -0
  269. data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1018 -0
  270. data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +486 -0
  271. data/ext/third_party/asio/asio/include/asio/execution/context.hpp +185 -0
  272. data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +201 -0
  273. data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
  274. data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
  275. data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
  276. data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
  277. data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
  278. data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
  279. data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +264 -0
  280. data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +238 -0
  281. data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
  282. data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
  283. data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
  284. data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +917 -0
  285. data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +178 -0
  286. data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
  287. data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +721 -0
  288. data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +327 -0
  289. data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
  290. data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
  291. data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +720 -0
  292. data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +290 -0
  293. data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
  294. data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
  295. data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +253 -0
  296. data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +253 -0
  297. data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +486 -0
  298. data/ext/third_party/asio/asio/include/asio/execution/start.hpp +250 -0
  299. data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
  300. data/ext/third_party/asio/asio/include/asio/executor.hpp +7 -1
  301. data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +126 -9
  302. data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +28 -5
  303. data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +29 -3
  304. data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +14 -0
  305. data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +44 -8
  306. data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +44 -8
  307. data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +145 -7
  308. data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +124 -22
  309. data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +52 -8
  310. data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +147 -12
  311. data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +142 -12
  312. data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +15 -101
  313. data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +5 -0
  314. data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +13 -4
  315. data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +144 -57
  316. data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
  317. data/ext/third_party/asio/asio/include/asio/impl/post.hpp +147 -12
  318. data/ext/third_party/asio/asio/include/asio/impl/read.hpp +85 -18
  319. data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +59 -14
  320. data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +241 -56
  321. data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +22 -4
  322. data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +58 -22
  323. data/ext/third_party/asio/asio/include/asio/impl/src.hpp +3 -0
  324. data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +16 -4
  325. data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +113 -12
  326. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +260 -37
  327. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +61 -7
  328. data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +5 -2
  329. data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +147 -6
  330. data/ext/third_party/asio/asio/include/asio/impl/write.hpp +75 -14
  331. data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +53 -11
  332. data/ext/third_party/asio/asio/include/asio/io_context.hpp +706 -48
  333. data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +3 -1
  334. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +4 -4
  335. data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
  336. data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
  337. data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +4 -4
  338. data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +5 -5
  339. data/ext/third_party/asio/asio/include/asio/post.hpp +4 -1
  340. data/ext/third_party/asio/asio/include/asio/prefer.hpp +656 -0
  341. data/ext/third_party/asio/asio/include/asio/query.hpp +296 -0
  342. data/ext/third_party/asio/asio/include/asio/read_until.hpp +6 -6
  343. data/ext/third_party/asio/asio/include/asio/require.hpp +524 -0
  344. data/ext/third_party/asio/asio/include/asio/require_concept.hpp +310 -0
  345. data/ext/third_party/asio/asio/include/asio/spawn.hpp +12 -4
  346. data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +5 -0
  347. data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +5 -0
  348. data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +5 -0
  349. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +16 -3
  350. data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +38 -4
  351. data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +5 -0
  352. data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +5 -0
  353. data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +36 -2
  354. data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +10 -1
  355. data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +15 -0
  356. data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
  357. data/ext/third_party/asio/asio/include/asio/strand.hpp +232 -9
  358. data/ext/third_party/asio/asio/include/asio/system_context.hpp +12 -3
  359. data/ext/third_party/asio/asio/include/asio/system_executor.hpp +557 -24
  360. data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +913 -37
  361. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
  362. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
  363. data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
  364. data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
  365. data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +100 -0
  366. data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
  367. data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
  368. data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
  369. data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
  370. data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
  371. data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
  372. data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
  373. data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
  374. data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
  375. data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
  376. data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
  377. data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
  378. data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
  379. data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
  380. data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
  381. data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
  382. data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
  383. data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
  384. data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
  385. data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
  386. data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
  387. data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
  388. data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
  389. data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +123 -0
  390. data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
  391. data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
  392. data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +1 -0
  393. data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +67 -8
  394. data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +63 -4
  395. data/ext/third_party/asio/asio/include/asio/version.hpp +1 -1
  396. data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +4 -4
  397. data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +2 -2
  398. data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +5 -5
  399. data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +5 -5
  400. data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +4 -2
  401. data/ext/third_party/gsl/CMakeLists.txt +13 -5
  402. data/ext/third_party/gsl/include/gsl/gsl_assert +1 -1
  403. data/ext/third_party/gsl/include/gsl/gsl_byte +3 -3
  404. data/ext/third_party/gsl/include/gsl/gsl_narrow +52 -0
  405. data/ext/third_party/gsl/include/gsl/gsl_util +8 -50
  406. data/ext/third_party/gsl/include/gsl/multi_span +0 -10
  407. data/ext/third_party/gsl/include/gsl/pointers +14 -28
  408. data/ext/third_party/gsl/include/gsl/span +98 -46
  409. data/ext/third_party/gsl/include/gsl/string_span +37 -47
  410. data/ext/third_party/http_parser/http_parser.c +17 -10
  411. data/ext/third_party/http_parser/http_parser.h +4 -2
  412. data/ext/third_party/json/include/tao/json/basic_value.hpp +3 -2
  413. data/ext/third_party/json/include/tao/json/binary.hpp +4 -4
  414. data/ext/third_party/json/include/tao/json/binary_view.hpp +2 -2
  415. data/ext/third_party/json/include/tao/json/binding.hpp +2 -2
  416. data/ext/third_party/json/include/tao/json/binding/factory.hpp +8 -7
  417. data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +2 -1
  418. data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +6 -5
  419. data/ext/third_party/json/include/tao/json/binding/versions.hpp +3 -1
  420. data/ext/third_party/json/include/tao/json/cbor.hpp +1 -0
  421. data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +7 -7
  422. data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +43 -0
  423. data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +4 -4
  424. data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +3 -3
  425. data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
  426. data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +5 -5
  427. data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +2 -1
  428. data/ext/third_party/json/include/tao/json/consume_file.hpp +7 -7
  429. data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +13 -6
  430. data/ext/third_party/json/include/tao/json/contrib/position.hpp +15 -15
  431. data/ext/third_party/json/include/tao/json/contrib/reference.hpp +5 -7
  432. data/ext/third_party/json/include/tao/json/contrib/schema.hpp +58 -35
  433. data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +12 -4
  434. data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +12 -4
  435. data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +1 -1
  436. data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +2 -2
  437. data/ext/third_party/json/include/tao/json/events/compare.hpp +2 -12
  438. data/ext/third_party/json/include/tao/json/events/from_file.hpp +4 -4
  439. data/ext/third_party/json/include/tao/json/events/from_string.hpp +2 -2
  440. data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +1 -1
  441. data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +3 -3
  442. data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +1 -1
  443. data/ext/third_party/json/include/tao/json/events/tee.hpp +2 -2
  444. data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +1 -1
  445. data/ext/third_party/json/include/tao/json/events/to_stream.hpp +1 -1
  446. data/ext/third_party/json/include/tao/json/events/transformer.hpp +3 -3
  447. data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +3 -3
  448. data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +6 -0
  449. data/ext/third_party/json/include/tao/json/external/pegtl.hpp +4 -13
  450. data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +3 -5
  451. data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +5 -18
  452. data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +3 -3
  453. data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +2 -2
  454. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +6 -6
  455. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +5 -5
  456. data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +2 -2
  457. data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +6 -6
  458. data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +5 -5
  459. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +52 -52
  460. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +176 -0
  461. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +275 -0
  462. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +77 -0
  463. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +151 -0
  464. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +16 -0
  465. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +37 -18
  466. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +20 -22
  467. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +6 -10
  468. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +6 -10
  469. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +2 -4
  470. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +11 -10
  471. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +116 -131
  472. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/endian.hpp +62 -0
  473. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/endian_gcc.hpp +206 -0
  474. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/endian_win.hpp +106 -0
  475. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_mask_uint.hpp +54 -0
  476. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_mask_uint8.hpp +33 -0
  477. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_uint.hpp +45 -0
  478. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_uint8.hpp +32 -0
  479. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_utf16.hpp +54 -0
  480. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_utf32.hpp +43 -0
  481. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/read_uint.hpp +77 -0
  482. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
  483. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +80 -201
  484. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +11 -10
  485. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +75 -0
  486. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +53 -0
  487. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +45 -36
  488. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +33 -50
  489. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +117 -0
  490. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +43 -11
  491. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +1 -2
  492. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +193 -0
  493. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +118 -0
  494. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +227 -0
  495. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uint16.hpp +62 -0
  496. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uint32.hpp +62 -0
  497. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uint64.hpp +63 -0
  498. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uint8.hpp +36 -0
  499. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +14 -14
  500. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +1 -1
  501. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/utf16.hpp +49 -0
  502. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/utf32.hpp +49 -0
  503. data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +2 -3
  504. data/ext/third_party/json/include/tao/json/external/pegtl/demangle.hpp +138 -0
  505. data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +2 -2
  506. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +2 -2
  507. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +2 -2
  508. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +2 -2
  509. data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +2 -2
  510. data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +1 -1
  511. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +19 -9
  512. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +7 -8
  513. data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +14 -14
  514. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +9 -9
  515. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +8 -7
  516. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +4 -4
  517. data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +17 -15
  518. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +7 -6
  519. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +8 -8
  520. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +4 -4
  521. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +3 -3
  522. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +17 -10
  523. data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +19 -9
  524. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +2 -2
  525. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +2 -2
  526. data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +2 -2
  527. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +1 -1
  528. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dependent_false.hpp +16 -0
  529. data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +19 -9
  530. data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +7 -6
  531. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +19 -9
  532. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable_control.hpp +25 -0
  533. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +7 -6
  534. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +8 -7
  535. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +8 -7
  536. data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +32 -0
  537. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +61 -10
  538. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +27 -33
  539. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +29 -26
  540. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +3 -7
  541. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +3 -7
  542. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +4 -20
  543. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +21 -0
  544. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +8 -7
  545. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +8 -9
  546. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +2 -0
  547. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +7 -7
  548. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +1 -2
  549. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +11 -11
  550. data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +7 -10
  551. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +2 -2
  552. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +2 -2
  553. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +4 -2
  554. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +1 -1
  555. data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +3 -5
  556. data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +21 -0
  557. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +5 -2
  558. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +5 -2
  559. data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +16 -24
  560. data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +17 -15
  561. data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +23 -12
  562. data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +16 -16
  563. data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +26 -0
  564. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +5 -5
  565. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +12 -13
  566. data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +18 -11
  567. data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +8 -17
  568. data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +22 -17
  569. data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +28 -18
  570. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +12 -9
  571. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +26 -25
  572. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +23 -21
  573. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +24 -9
  574. data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +10 -10
  575. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +4 -4
  576. data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +18 -33
  577. data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +24 -17
  578. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +13 -8
  579. data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +21 -11
  580. data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +11 -11
  581. data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +32 -0
  582. data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +16 -16
  583. data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +18 -14
  584. data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +2 -3
  585. data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +125 -29
  586. data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +32 -48
  587. data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +16 -16
  588. data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +64 -0
  589. data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +25 -25
  590. data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +1 -2
  591. data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +6 -8
  592. data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +80 -35
  593. data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +18 -10
  594. data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +18 -38
  595. data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +6 -5
  596. data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +3 -5
  597. data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +46 -0
  598. data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +66 -0
  599. data/ext/third_party/json/include/tao/json/from_file.hpp +5 -5
  600. data/ext/third_party/json/include/tao/json/internal/action.hpp +3 -3
  601. data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
  602. data/ext/third_party/json/include/tao/json/internal/errors.hpp +17 -17
  603. data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -2
  604. data/ext/third_party/json/include/tao/json/internal/grammar.hpp +17 -17
  605. data/ext/third_party/json/include/tao/json/internal/pair.hpp +1 -1
  606. data/ext/third_party/json/include/tao/json/internal/sha256.hpp +8 -8
  607. data/ext/third_party/json/include/tao/json/internal/single.hpp +1 -1
  608. data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +12 -29
  609. data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +7 -7
  610. data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +4 -4
  611. data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +2 -2
  612. data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +5 -5
  613. data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +6 -6
  614. data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +2 -2
  615. data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +43 -43
  616. data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +36 -36
  617. data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +10 -11
  618. data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +2 -2
  619. data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +1 -3
  620. data/ext/third_party/json/include/tao/json/message_extension.hpp +2 -2
  621. data/ext/third_party/json/include/tao/json/msgpack.hpp +1 -0
  622. data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +7 -7
  623. data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +43 -0
  624. data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +4 -4
  625. data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +4 -4
  626. data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +4 -4
  627. data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
  628. data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +5 -5
  629. data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +2 -1
  630. data/ext/third_party/json/include/tao/json/operators.hpp +0 -4
  631. data/ext/third_party/json/include/tao/json/parts_parser.hpp +3 -7
  632. data/ext/third_party/json/include/tao/json/self_contained.hpp +6 -18
  633. data/ext/third_party/json/include/tao/json/span.hpp +94 -166
  634. data/ext/third_party/json/include/tao/json/ubjson.hpp +1 -0
  635. data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +7 -7
  636. data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +43 -0
  637. data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +4 -4
  638. data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +3 -3
  639. data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
  640. data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +5 -5
  641. data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +5 -3
  642. data/ext/third_party/json/include/tao/json/utf8.hpp +1 -1
  643. data/ext/third_party/snappy/snappy.cc +6 -2
  644. data/ext/third_party/spdlog/CMakeLists.txt +24 -57
  645. data/ext/third_party/spdlog/cmake/version.rc.in +1 -1
  646. data/ext/third_party/spdlog/include/spdlog/async.h +3 -3
  647. data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +3 -4
  648. data/ext/third_party/spdlog/include/spdlog/cfg/env.h +6 -4
  649. data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +22 -6
  650. data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +3 -2
  651. data/ext/third_party/spdlog/include/spdlog/common.h +1 -2
  652. data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +9 -1
  653. data/ext/third_party/spdlog/include/spdlog/details/os.h +1 -1
  654. data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +21 -7
  655. data/ext/third_party/spdlog/include/spdlog/details/registry.h +6 -3
  656. data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +1 -1
  657. data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +1 -1
  658. data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +8 -7
  659. data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +2 -2
  660. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +66 -62
  661. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +35 -37
  662. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +173 -103
  663. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +538 -445
  664. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +114 -64
  665. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +1152 -1071
  666. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +16 -16
  667. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +450 -0
  668. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +37 -13
  669. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +1 -1
  670. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +93 -63
  671. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +35 -36
  672. data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
  673. data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +2 -0
  674. data/ext/third_party/spdlog/include/spdlog/logger-inl.h +5 -1
  675. data/ext/third_party/spdlog/include/spdlog/logger.h +50 -76
  676. data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +23 -8
  677. data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +3 -3
  678. data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +1 -1
  679. data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +5 -5
  680. data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +6 -4
  681. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +32 -3
  682. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +7 -0
  683. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +4 -14
  684. data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +11 -1
  685. data/ext/third_party/spdlog/include/spdlog/spdlog.h +23 -68
  686. data/ext/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
  687. data/ext/third_party/spdlog/include/spdlog/version.h +2 -2
  688. data/ext/third_party/spdlog/src/fmt.cpp +21 -147
  689. data/lib/couchbase.rb +0 -1
  690. data/lib/couchbase/analytics_options.rb +177 -0
  691. data/lib/couchbase/authenticator.rb +14 -0
  692. data/lib/couchbase/binary_collection.rb +9 -9
  693. data/lib/couchbase/binary_collection_options.rb +10 -8
  694. data/lib/couchbase/bucket.rb +55 -3
  695. data/lib/couchbase/cluster.rb +286 -287
  696. data/lib/couchbase/collection.rb +50 -40
  697. data/lib/couchbase/collection_options.rb +97 -17
  698. data/lib/couchbase/common_options.rb +1 -1
  699. data/lib/couchbase/datastructures.rb +18 -0
  700. data/lib/couchbase/datastructures/couchbase_list.rb +171 -0
  701. data/lib/couchbase/datastructures/couchbase_map.rb +205 -0
  702. data/lib/couchbase/datastructures/couchbase_queue.rb +145 -0
  703. data/lib/couchbase/datastructures/couchbase_set.rb +139 -0
  704. data/lib/couchbase/errors.rb +79 -66
  705. data/lib/couchbase/json_transcoder.rb +2 -2
  706. data/lib/couchbase/management/analytics_index_manager.rb +139 -25
  707. data/lib/couchbase/management/bucket_manager.rb +61 -28
  708. data/lib/couchbase/management/collection_manager.rb +3 -3
  709. data/lib/couchbase/management/query_index_manager.rb +59 -14
  710. data/lib/couchbase/management/search_index_manager.rb +57 -13
  711. data/lib/couchbase/management/user_manager.rb +157 -50
  712. data/lib/couchbase/management/view_index_manager.rb +70 -11
  713. data/lib/couchbase/mutation_state.rb +13 -0
  714. data/lib/couchbase/query_options.rb +263 -0
  715. data/lib/couchbase/scope.rb +62 -8
  716. data/lib/couchbase/search_options.rb +121 -33
  717. data/lib/couchbase/subdoc.rb +87 -23
  718. data/lib/couchbase/version.rb +2 -2
  719. data/lib/couchbase/view_options.rb +155 -0
  720. metadata +226 -1037
  721. data/.github/workflows/tests-6.0.3.yml +0 -49
  722. data/.github/workflows/tests-dev-preview.yml +0 -52
  723. data/.github/workflows/tests.yml +0 -47
  724. data/.gitignore +0 -20
  725. data/.gitmodules +0 -21
  726. data/.idea/.gitignore +0 -5
  727. data/.idea/dictionaries/gem_terms.xml +0 -18
  728. data/.idea/inspectionProfiles/Project_Default.xml +0 -8
  729. data/.idea/vcs.xml +0 -13
  730. data/.yardopts +0 -1
  731. data/Gemfile +0 -24
  732. data/Rakefile +0 -51
  733. data/bin/console +0 -21
  734. data/bin/init-cluster +0 -70
  735. data/bin/setup +0 -24
  736. data/couchbase.gemspec +0 -47
  737. data/examples/crud.rb +0 -20
  738. data/examples/managing_buckets.rb +0 -47
  739. data/examples/managing_collections.rb +0 -58
  740. data/examples/managing_query_indexes.rb +0 -63
  741. data/examples/managing_search_indexes.rb +0 -62
  742. data/examples/query.rb +0 -18
  743. data/examples/query_with_consistency.rb +0 -76
  744. data/examples/search.rb +0 -187
  745. data/examples/subdocument.rb +0 -51
  746. data/ext/.clang-format +0 -15
  747. data/ext/.clang-tidy +0 -21
  748. data/ext/.cmake-format.yaml +0 -8
  749. data/ext/.gitignore +0 -2
  750. data/ext/.idea/.name +0 -1
  751. data/ext/.idea/dictionaries/couchbase_terms.xml +0 -14
  752. data/ext/.idea/ext.iml +0 -2
  753. data/ext/.idea/misc.xml +0 -4
  754. data/ext/.idea/modules.xml +0 -8
  755. data/ext/.idea/vcs.xml +0 -12
  756. data/ext/couchbase/configuration_monitor.hxx +0 -93
  757. data/ext/couchbase/io/session_manager.hxx +0 -127
  758. data/ext/couchbase/operations/command.hxx +0 -152
  759. data/ext/test/main.cxx +0 -67
  760. data/ext/third_party/asio/.appveyor.yml +0 -107
  761. data/ext/third_party/asio/.cirrus.yml +0 -16
  762. data/ext/third_party/asio/.gitignore +0 -3
  763. data/ext/third_party/asio/.travis.yml +0 -323
  764. data/ext/third_party/asio/asio/.gitignore +0 -23
  765. data/ext/third_party/asio/asio/COPYING +0 -4
  766. data/ext/third_party/asio/asio/INSTALL +0 -5
  767. data/ext/third_party/asio/asio/LICENSE_1_0.txt +0 -23
  768. data/ext/third_party/asio/asio/Makefile.am +0 -19
  769. data/ext/third_party/asio/asio/README +0 -4
  770. data/ext/third_party/asio/asio/asio.manifest +0 -4865
  771. data/ext/third_party/asio/asio/autogen.sh +0 -55
  772. data/ext/third_party/asio/asio/boost_asio.manifest +0 -5193
  773. data/ext/third_party/asio/asio/boostify.pl +0 -603
  774. data/ext/third_party/asio/asio/configure.ac +0 -182
  775. data/ext/third_party/asio/asio/include/.gitignore +0 -2
  776. data/ext/third_party/asio/asio/include/Makefile.am +0 -484
  777. data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +0 -167
  778. data/ext/third_party/asio/asio/include/asio/impl/src.cpp +0 -25
  779. data/ext/third_party/asio/asio/release.pl +0 -440
  780. data/ext/third_party/asio/asio/src/.gitignore +0 -11
  781. data/ext/third_party/asio/asio/src/Makefile.am +0 -23
  782. data/ext/third_party/asio/asio/src/Makefile.mgw +0 -204
  783. data/ext/third_party/asio/asio/src/Makefile.msc +0 -497
  784. data/ext/third_party/asio/asio/src/asio.cpp +0 -11
  785. data/ext/third_party/asio/asio/src/asio_ssl.cpp +0 -11
  786. data/ext/third_party/asio/asio/src/doc/.gitignore +0 -5
  787. data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +0 -62
  788. data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
  789. data/ext/third_party/asio/asio/src/doc/asio.qbk +0 -127
  790. data/ext/third_party/asio/asio/src/doc/asioref.sty +0 -90
  791. data/ext/third_party/asio/asio/src/doc/asioref.xsl +0 -94
  792. data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +0 -5
  793. data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +0 -22
  794. data/ext/third_party/asio/asio/src/doc/examples.qbk +0 -564
  795. data/ext/third_party/asio/asio/src/doc/history.qbk +0 -1794
  796. data/ext/third_party/asio/asio/src/doc/index.xml +0 -13
  797. data/ext/third_party/asio/asio/src/doc/makepdf.pl +0 -26
  798. data/ext/third_party/asio/asio/src/doc/net_ts.qbk +0 -479
  799. data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +0 -3
  800. data/ext/third_party/asio/asio/src/doc/overview.qbk +0 -103
  801. data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +0 -89
  802. data/ext/third_party/asio/asio/src/doc/overview/async.qbk +0 -185
  803. data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +0 -78
  804. data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
  805. data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +0 -78
  806. data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
  807. data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +0 -106
  808. data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +0 -270
  809. data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +0 -163
  810. data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +0 -88
  811. data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +0 -51
  812. data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +0 -97
  813. data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +0 -271
  814. data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +0 -220
  815. data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +0 -305
  816. data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +0 -72
  817. data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +0 -118
  818. data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +0 -94
  819. data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +0 -152
  820. data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +0 -100
  821. data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
  822. data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +0 -149
  823. data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +0 -54
  824. data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +0 -44
  825. data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +0 -45
  826. data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +0 -44
  827. data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +0 -102
  828. data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +0 -124
  829. data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +0 -114
  830. data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +0 -62
  831. data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +0 -67
  832. data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
  833. data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +0 -67
  834. data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +0 -52
  835. data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +0 -126
  836. data/ext/third_party/asio/asio/src/doc/project-root.jam +0 -1
  837. data/ext/third_party/asio/asio/src/doc/quickref.xml +0 -561
  838. data/ext/third_party/asio/asio/src/doc/reference.dox +0 -264
  839. data/ext/third_party/asio/asio/src/doc/reference.qbk +0 -125973
  840. data/ext/third_party/asio/asio/src/doc/reference.xsl +0 -1831
  841. data/ext/third_party/asio/asio/src/doc/release_checklist.htm +0 -68
  842. data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +0 -72
  843. data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +0 -25
  844. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +0 -56
  845. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +0 -57
  846. data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +0 -50
  847. data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +0 -48
  848. data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +0 -55
  849. data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +0 -42
  850. data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +0 -63
  851. data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +0 -34
  852. data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +0 -72
  853. data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +0 -53
  854. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +0 -16
  855. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +0 -93
  856. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +0 -94
  857. data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +0 -97
  858. data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +0 -30
  859. data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +0 -36
  860. data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +0 -141
  861. data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +0 -33
  862. data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +0 -67
  863. data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +0 -64
  864. data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +0 -72
  865. data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +0 -47
  866. data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +0 -34
  867. data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +0 -62
  868. data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +0 -81
  869. data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +0 -65
  870. data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +0 -61
  871. data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +0 -54
  872. data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +0 -19
  873. data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +0 -56
  874. data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +0 -82
  875. data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +0 -79
  876. data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +0 -82
  877. data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +0 -40
  878. data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +0 -33
  879. data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +0 -54
  880. data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +0 -72
  881. data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +0 -79
  882. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +0 -49
  883. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +0 -49
  884. data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +0 -41
  885. data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +0 -39
  886. data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +0 -72
  887. data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +0 -72
  888. data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +0 -52
  889. data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +0 -79
  890. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +0 -300
  891. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +0 -39
  892. data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +0 -34
  893. data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +0 -37
  894. data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +0 -7
  895. data/ext/third_party/asio/asio/src/doc/tutorial.dox +0 -226
  896. data/ext/third_party/asio/asio/src/doc/tutorial.qbk +0 -2387
  897. data/ext/third_party/asio/asio/src/doc/tutorial.xsl +0 -437
  898. data/ext/third_party/asio/asio/src/doc/using.qbk +0 -309
  899. data/ext/third_party/asio/asio/src/examples/cpp03/Makefile.am +0 -251
  900. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/.gitignore +0 -10
  901. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/server.cpp +0 -285
  902. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/.gitignore +0 -10
  903. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/reference_counted.cpp +0 -131
  904. data/ext/third_party/asio/asio/src/examples/cpp03/chat/.gitignore +0 -11
  905. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_client.cpp +0 -177
  906. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_message.hpp +0 -93
  907. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_server.cpp +0 -249
  908. data/ext/third_party/asio/asio/src/examples/cpp03/chat/posix_chat_client.cpp +0 -204
  909. data/ext/third_party/asio/asio/src/examples/cpp03/echo/.gitignore +0 -11
  910. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp +0 -137
  911. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp +0 -92
  912. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp +0 -59
  913. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp +0 -79
  914. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +0 -59
  915. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp +0 -53
  916. data/ext/third_party/asio/asio/src/examples/cpp03/fork/.gitignore +0 -11
  917. data/ext/third_party/asio/asio/src/examples/cpp03/fork/daemon.cpp +0 -190
  918. data/ext/third_party/asio/asio/src/examples/cpp03/fork/process_per_connection.cpp +0 -161
  919. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/.gitignore +0 -10
  920. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/async_client.cpp +0 -204
  921. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/sync_client.cpp +0 -106
  922. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_1K.html +0 -28
  923. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_2K.html +0 -49
  924. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_4K.html +0 -91
  925. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_8K.html +0 -175
  926. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/.gitignore +0 -11
  927. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.cpp +0 -99
  928. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.hpp +0 -83
  929. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.cpp +0 -38
  930. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.hpp +0 -44
  931. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/header.hpp +0 -28
  932. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/main.cpp +0 -44
  933. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.cpp +0 -46
  934. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.hpp +0 -27
  935. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.cpp +0 -256
  936. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.hpp +0 -64
  937. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request.hpp +0 -34
  938. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.cpp +0 -122
  939. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.hpp +0 -46
  940. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.cpp +0 -315
  941. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.hpp +0 -95
  942. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.cpp +0 -94
  943. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.hpp +0 -69
  944. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/.gitignore +0 -11
  945. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.cpp +0 -93
  946. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.hpp +0 -75
  947. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/header.hpp +0 -28
  948. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.cpp +0 -69
  949. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.hpp +0 -58
  950. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/main.cpp +0 -46
  951. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.cpp +0 -46
  952. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.hpp +0 -27
  953. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.cpp +0 -256
  954. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.hpp +0 -64
  955. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request.hpp +0 -34
  956. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.cpp +0 -122
  957. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.hpp +0 -46
  958. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.cpp +0 -315
  959. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.hpp +0 -95
  960. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.cpp +0 -77
  961. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.hpp +0 -68
  962. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/.gitignore +0 -11
  963. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.cpp +0 -94
  964. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.hpp +0 -78
  965. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/header.hpp +0 -28
  966. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/main.cpp +0 -46
  967. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.cpp +0 -46
  968. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.hpp +0 -27
  969. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.cpp +0 -256
  970. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.hpp +0 -64
  971. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request.hpp +0 -34
  972. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.cpp +0 -122
  973. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.hpp +0 -46
  974. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.cpp +0 -315
  975. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.hpp +0 -95
  976. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.cpp +0 -89
  977. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.hpp +0 -70
  978. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/.gitignore +0 -11
  979. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.cpp +0 -122
  980. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.hpp +0 -44
  981. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/header.hpp +0 -28
  982. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/main.cpp +0 -58
  983. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.cpp +0 -46
  984. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.hpp +0 -27
  985. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.cpp +0 -256
  986. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.hpp +0 -64
  987. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request.hpp +0 -46
  988. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.cpp +0 -226
  989. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.hpp +0 -78
  990. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.cpp +0 -122
  991. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.hpp +0 -73
  992. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/.gitignore +0 -10
  993. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/icmp_header.hpp +0 -94
  994. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ipv4_header.hpp +0 -102
  995. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ping.cpp +0 -163
  996. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/.gitignore +0 -10
  997. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp +0 -171
  998. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/.gitignore +0 -11
  999. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_client.cpp +0 -44
  1000. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_server.cpp +0 -51
  1001. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/http_client.cpp +0 -91
  1002. data/ext/third_party/asio/asio/src/examples/cpp03/local/.gitignore +0 -13
  1003. data/ext/third_party/asio/asio/src/examples/cpp03/local/connect_pair.cpp +0 -141
  1004. data/ext/third_party/asio/asio/src/examples/cpp03/local/iostream_client.cpp +0 -62
  1005. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_client.cpp +0 -61
  1006. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_server.cpp +0 -141
  1007. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/.gitignore +0 -11
  1008. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/receiver.cpp +0 -93
  1009. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/sender.cpp +0 -98
  1010. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/.gitignore +0 -10
  1011. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp +0 -240
  1012. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/.gitignore +0 -11
  1013. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/client.cpp +0 -192
  1014. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/protocol.hpp +0 -156
  1015. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/server.cpp +0 -187
  1016. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/.gitignore +0 -11
  1017. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/client.cpp +0 -125
  1018. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/connection.hpp +0 -188
  1019. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/server.cpp +0 -123
  1020. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/stock.hpp +0 -50
  1021. data/ext/third_party/asio/asio/src/examples/cpp03/services/.gitignore +0 -11
  1022. data/ext/third_party/asio/asio/src/examples/cpp03/services/basic_logger.hpp +0 -83
  1023. data/ext/third_party/asio/asio/src/examples/cpp03/services/daytime_client.cpp +0 -97
  1024. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger.hpp +0 -24
  1025. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.cpp +0 -11
  1026. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.hpp +0 -145
  1027. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/.gitignore +0 -10
  1028. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/socks4.hpp +0 -144
  1029. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/sync_client.cpp +0 -94
  1030. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/.gitignore +0 -12
  1031. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/echo_server.cpp +0 -122
  1032. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/parallel_grep.cpp +0 -89
  1033. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/.gitignore +0 -11
  1034. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/README +0 -8
  1035. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/ca.pem +0 -49
  1036. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/client.cpp +0 -157
  1037. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/dh2048.pem +0 -8
  1038. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.cpp +0 -170
  1039. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.pem +0 -71
  1040. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/.gitignore +0 -11
  1041. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +0 -311
  1042. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp +0 -191
  1043. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp +0 -200
  1044. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp +0 -154
  1045. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/server.cpp +0 -433
  1046. data/ext/third_party/asio/asio/src/examples/cpp03/timers/.gitignore +0 -10
  1047. data/ext/third_party/asio/asio/src/examples/cpp03/timers/time_t_timer.cpp +0 -106
  1048. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/.gitignore +0 -10
  1049. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/client.cpp +0 -57
  1050. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/.gitignore +0 -10
  1051. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/server.cpp +0 -50
  1052. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/.gitignore +0 -10
  1053. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/server.cpp +0 -119
  1054. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/.gitignore +0 -10
  1055. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/client.cpp +0 -52
  1056. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/.gitignore +0 -10
  1057. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/server.cpp +0 -53
  1058. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/.gitignore +0 -10
  1059. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/server.cpp +0 -89
  1060. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/.gitignore +0 -10
  1061. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/server.cpp +0 -160
  1062. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime_dox.txt +0 -500
  1063. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/index_dox.txt +0 -48
  1064. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/.gitignore +0 -10
  1065. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/timer.cpp +0 -24
  1066. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/.gitignore +0 -10
  1067. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/timer.cpp +0 -29
  1068. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/.gitignore +0 -10
  1069. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/timer.cpp +0 -43
  1070. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/.gitignore +0 -10
  1071. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/timer.cpp +0 -54
  1072. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/.gitignore +0 -10
  1073. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/timer.cpp +0 -80
  1074. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer_dox.txt +0 -378
  1075. data/ext/third_party/asio/asio/src/examples/cpp03/windows/.gitignore +0 -10
  1076. data/ext/third_party/asio/asio/src/examples/cpp03/windows/transmit_file.cpp +0 -177
  1077. data/ext/third_party/asio/asio/src/examples/cpp11/Makefile.am +0 -161
  1078. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/.gitignore +0 -10
  1079. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/server.cpp +0 -255
  1080. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/.gitignore +0 -10
  1081. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/reference_counted.cpp +0 -122
  1082. data/ext/third_party/asio/asio/src/examples/cpp11/chat/.gitignore +0 -11
  1083. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_client.cpp +0 -167
  1084. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_message.hpp +0 -91
  1085. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_server.cpp +0 -227
  1086. data/ext/third_party/asio/asio/src/examples/cpp11/echo/.gitignore +0 -11
  1087. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_tcp_echo_server.cpp +0 -114
  1088. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_udp_echo_server.cpp +0 -82
  1089. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp +0 -55
  1090. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp +0 -74
  1091. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp +0 -58
  1092. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_server.cpp +0 -52
  1093. data/ext/third_party/asio/asio/src/examples/cpp11/executors/.gitignore +0 -5
  1094. data/ext/third_party/asio/asio/src/examples/cpp11/executors/actor.cpp +0 -286
  1095. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_1.cpp +0 -54
  1096. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_2.cpp +0 -54
  1097. data/ext/third_party/asio/asio/src/examples/cpp11/executors/fork_join.cpp +0 -328
  1098. data/ext/third_party/asio/asio/src/examples/cpp11/executors/pipeline.cpp +0 -299
  1099. data/ext/third_party/asio/asio/src/examples/cpp11/executors/priority_scheduler.cpp +0 -174
  1100. data/ext/third_party/asio/asio/src/examples/cpp11/fork/.gitignore +0 -11
  1101. data/ext/third_party/asio/asio/src/examples/cpp11/fork/daemon.cpp +0 -189
  1102. data/ext/third_party/asio/asio/src/examples/cpp11/fork/process_per_connection.cpp +0 -162
  1103. data/ext/third_party/asio/asio/src/examples/cpp11/futures/.gitignore +0 -11
  1104. data/ext/third_party/asio/asio/src/examples/cpp11/futures/daytime_client.cpp +0 -94
  1105. data/ext/third_party/asio/asio/src/examples/cpp11/handler_tracking/custom_tracking.hpp +0 -201
  1106. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/.gitignore +0 -11
  1107. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.cpp +0 -94
  1108. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.hpp +0 -79
  1109. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.cpp +0 -40
  1110. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.hpp +0 -48
  1111. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/header.hpp +0 -28
  1112. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/main.cpp +0 -43
  1113. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.cpp +0 -45
  1114. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.hpp +0 -27
  1115. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.cpp +0 -255
  1116. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.hpp +0 -64
  1117. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request.hpp +0 -34
  1118. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.cpp +0 -121
  1119. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.hpp +0 -47
  1120. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.cpp +0 -315
  1121. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.hpp +0 -96
  1122. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.cpp +0 -94
  1123. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.hpp +0 -64
  1124. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/.gitignore +0 -10
  1125. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/prioritised_handlers.cpp +0 -202
  1126. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/.gitignore +0 -11
  1127. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/http_client.cpp +0 -91
  1128. data/ext/third_party/asio/asio/src/examples/cpp11/local/.gitignore +0 -13
  1129. data/ext/third_party/asio/asio/src/examples/cpp11/local/connect_pair.cpp +0 -129
  1130. data/ext/third_party/asio/asio/src/examples/cpp11/local/iostream_client.cpp +0 -61
  1131. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_client.cpp +0 -60
  1132. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_server.cpp +0 -121
  1133. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/.gitignore +0 -11
  1134. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/receiver.cpp +0 -88
  1135. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/sender.cpp +0 -91
  1136. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/.gitignore +0 -10
  1137. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/third_party_lib.cpp +0 -212
  1138. data/ext/third_party/asio/asio/src/examples/cpp11/operations/.gitignore +0 -10
  1139. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_1.cpp +0 -113
  1140. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_2.cpp +0 -131
  1141. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_3.cpp +0 -192
  1142. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_4.cpp +0 -207
  1143. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_5.cpp +0 -243
  1144. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_6.cpp +0 -302
  1145. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_7.cpp +0 -222
  1146. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_8.cpp +0 -217
  1147. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/.gitignore +0 -10
  1148. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/socks4.hpp +0 -143
  1149. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/sync_client.cpp +0 -93
  1150. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/.gitignore +0 -12
  1151. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/echo_server.cpp +0 -111
  1152. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/parallel_grep.cpp +0 -84
  1153. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/.gitignore +0 -11
  1154. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/README +0 -8
  1155. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/ca.pem +0 -49
  1156. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/client.cpp +0 -165
  1157. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/dh2048.pem +0 -8
  1158. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.cpp +0 -143
  1159. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.pem +0 -71
  1160. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/.gitignore +0 -11
  1161. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/async_tcp_client.cpp +0 -311
  1162. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_tcp_client.cpp +0 -192
  1163. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp +0 -197
  1164. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_udp_client.cpp +0 -155
  1165. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/server.cpp +0 -433
  1166. data/ext/third_party/asio/asio/src/examples/cpp11/timers/.gitignore +0 -10
  1167. data/ext/third_party/asio/asio/src/examples/cpp11/timers/time_t_timer.cpp +0 -106
  1168. data/ext/third_party/asio/asio/src/examples/cpp14/Makefile.am +0 -64
  1169. data/ext/third_party/asio/asio/src/examples/cpp14/echo/.gitignore +0 -11
  1170. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_tcp_echo_server.cpp +0 -117
  1171. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_udp_echo_server.cpp +0 -83
  1172. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp +0 -55
  1173. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp +0 -77
  1174. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_client.cpp +0 -59
  1175. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_server.cpp +0 -53
  1176. data/ext/third_party/asio/asio/src/examples/cpp14/executors/.gitignore +0 -6
  1177. data/ext/third_party/asio/asio/src/examples/cpp14/executors/actor.cpp +0 -281
  1178. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_1.cpp +0 -47
  1179. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_2.cpp +0 -68
  1180. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_1.cpp +0 -54
  1181. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_2.cpp +0 -53
  1182. data/ext/third_party/asio/asio/src/examples/cpp14/executors/fork_join.cpp +0 -327
  1183. data/ext/third_party/asio/asio/src/examples/cpp14/executors/pipeline.cpp +0 -294
  1184. data/ext/third_party/asio/asio/src/examples/cpp14/executors/priority_scheduler.cpp +0 -173
  1185. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/.gitignore +0 -11
  1186. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/http_client.cpp +0 -91
  1187. data/ext/third_party/asio/asio/src/examples/cpp14/operations/.gitignore +0 -10
  1188. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_1.cpp +0 -113
  1189. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_2.cpp +0 -131
  1190. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_3.cpp +0 -186
  1191. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_4.cpp +0 -201
  1192. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_5.cpp +0 -238
  1193. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_6.cpp +0 -298
  1194. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_7.cpp +0 -219
  1195. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_8.cpp +0 -212
  1196. data/ext/third_party/asio/asio/src/examples/cpp17/Makefile.am +0 -8
  1197. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/chat_server.cpp +0 -225
  1198. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server.cpp +0 -76
  1199. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp +0 -78
  1200. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/range_based_for.cpp +0 -107
  1201. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp +0 -85
  1202. data/ext/third_party/asio/asio/src/tests/.gitignore +0 -11
  1203. data/ext/third_party/asio/asio/src/tests/Makefile.am +0 -432
  1204. data/ext/third_party/asio/asio/src/tests/latency/.gitignore +0 -11
  1205. data/ext/third_party/asio/asio/src/tests/latency/allocator.hpp +0 -52
  1206. data/ext/third_party/asio/asio/src/tests/latency/high_res_clock.hpp +0 -53
  1207. data/ext/third_party/asio/asio/src/tests/latency/tcp_client.cpp +0 -124
  1208. data/ext/third_party/asio/asio/src/tests/latency/tcp_server.cpp +0 -114
  1209. data/ext/third_party/asio/asio/src/tests/latency/udp_client.cpp +0 -104
  1210. data/ext/third_party/asio/asio/src/tests/latency/udp_server.cpp +0 -125
  1211. data/ext/third_party/asio/asio/src/tests/performance/.gitignore +0 -11
  1212. data/ext/third_party/asio/asio/src/tests/performance/client.cpp +0 -286
  1213. data/ext/third_party/asio/asio/src/tests/performance/handler_allocator.hpp +0 -112
  1214. data/ext/third_party/asio/asio/src/tests/performance/server.cpp +0 -233
  1215. data/ext/third_party/asio/asio/src/tests/unit/.gitignore +0 -75
  1216. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_ops.hpp +0 -415
  1217. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_result.hpp +0 -94
  1218. data/ext/third_party/asio/asio/src/tests/unit/archetypes/gettable_socket_option.hpp +0 -54
  1219. data/ext/third_party/asio/asio/src/tests/unit/archetypes/io_control_command.hpp +0 -32
  1220. data/ext/third_party/asio/asio/src/tests/unit/archetypes/settable_socket_option.hpp +0 -49
  1221. data/ext/third_party/asio/asio/src/tests/unit/associated_allocator.cpp +0 -25
  1222. data/ext/third_party/asio/asio/src/tests/unit/associated_executor.cpp +0 -25
  1223. data/ext/third_party/asio/asio/src/tests/unit/async_result.cpp +0 -25
  1224. data/ext/third_party/asio/asio/src/tests/unit/awaitable.cpp +0 -25
  1225. data/ext/third_party/asio/asio/src/tests/unit/basic_datagram_socket.cpp +0 -25
  1226. data/ext/third_party/asio/asio/src/tests/unit/basic_deadline_timer.cpp +0 -25
  1227. data/ext/third_party/asio/asio/src/tests/unit/basic_raw_socket.cpp +0 -25
  1228. data/ext/third_party/asio/asio/src/tests/unit/basic_seq_packet_socket.cpp +0 -25
  1229. data/ext/third_party/asio/asio/src/tests/unit/basic_serial_port.cpp +0 -26
  1230. data/ext/third_party/asio/asio/src/tests/unit/basic_signal_set.cpp +0 -25
  1231. data/ext/third_party/asio/asio/src/tests/unit/basic_socket.cpp +0 -25
  1232. data/ext/third_party/asio/asio/src/tests/unit/basic_socket_acceptor.cpp +0 -25
  1233. data/ext/third_party/asio/asio/src/tests/unit/basic_stream_socket.cpp +0 -25
  1234. data/ext/third_party/asio/asio/src/tests/unit/basic_streambuf.cpp +0 -25
  1235. data/ext/third_party/asio/asio/src/tests/unit/basic_waitable_timer.cpp +0 -25
  1236. data/ext/third_party/asio/asio/src/tests/unit/bind_executor.cpp +0 -25
  1237. data/ext/third_party/asio/asio/src/tests/unit/buffer.cpp +0 -830
  1238. data/ext/third_party/asio/asio/src/tests/unit/buffered_read_stream.cpp +0 -338
  1239. data/ext/third_party/asio/asio/src/tests/unit/buffered_stream.cpp +0 -364
  1240. data/ext/third_party/asio/asio/src/tests/unit/buffered_write_stream.cpp +0 -353
  1241. data/ext/third_party/asio/asio/src/tests/unit/buffers_iterator.cpp +0 -292
  1242. data/ext/third_party/asio/asio/src/tests/unit/co_spawn.cpp +0 -25
  1243. data/ext/third_party/asio/asio/src/tests/unit/completion_condition.cpp +0 -25
  1244. data/ext/third_party/asio/asio/src/tests/unit/compose.cpp +0 -185
  1245. data/ext/third_party/asio/asio/src/tests/unit/connect.cpp +0 -1190
  1246. data/ext/third_party/asio/asio/src/tests/unit/coroutine.cpp +0 -112
  1247. data/ext/third_party/asio/asio/src/tests/unit/deadline_timer.cpp +0 -392
  1248. data/ext/third_party/asio/asio/src/tests/unit/defer.cpp +0 -25
  1249. data/ext/third_party/asio/asio/src/tests/unit/detached.cpp +0 -25
  1250. data/ext/third_party/asio/asio/src/tests/unit/dispatch.cpp +0 -25
  1251. data/ext/third_party/asio/asio/src/tests/unit/error.cpp +0 -89
  1252. data/ext/third_party/asio/asio/src/tests/unit/execution_context.cpp +0 -25
  1253. data/ext/third_party/asio/asio/src/tests/unit/executor.cpp +0 -25
  1254. data/ext/third_party/asio/asio/src/tests/unit/executor_work_guard.cpp +0 -25
  1255. data/ext/third_party/asio/asio/src/tests/unit/generic/.gitignore +0 -14
  1256. data/ext/third_party/asio/asio/src/tests/unit/generic/basic_endpoint.cpp +0 -25
  1257. data/ext/third_party/asio/asio/src/tests/unit/generic/datagram_protocol.cpp +0 -263
  1258. data/ext/third_party/asio/asio/src/tests/unit/generic/raw_protocol.cpp +0 -263
  1259. data/ext/third_party/asio/asio/src/tests/unit/generic/seq_packet_protocol.cpp +0 -205
  1260. data/ext/third_party/asio/asio/src/tests/unit/generic/stream_protocol.cpp +0 -248
  1261. data/ext/third_party/asio/asio/src/tests/unit/high_resolution_timer.cpp +0 -30
  1262. data/ext/third_party/asio/asio/src/tests/unit/io_context.cpp +0 -362
  1263. data/ext/third_party/asio/asio/src/tests/unit/io_context_strand.cpp +0 -325
  1264. data/ext/third_party/asio/asio/src/tests/unit/ip/.gitignore +0 -27
  1265. data/ext/third_party/asio/asio/src/tests/unit/ip/address.cpp +0 -144
  1266. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_endpoint.cpp +0 -25
  1267. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver.cpp +0 -25
  1268. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_entry.cpp +0 -25
  1269. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_iterator.cpp +0 -25
  1270. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_query.cpp +0 -25
  1271. data/ext/third_party/asio/asio/src/tests/unit/ip/host_name.cpp +0 -55
  1272. data/ext/third_party/asio/asio/src/tests/unit/ip/icmp.cpp +0 -577
  1273. data/ext/third_party/asio/asio/src/tests/unit/ip/multicast.cpp +0 -363
  1274. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v4.cpp +0 -314
  1275. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v6.cpp +0 -238
  1276. data/ext/third_party/asio/asio/src/tests/unit/ip/resolver_query_base.cpp +0 -25
  1277. data/ext/third_party/asio/asio/src/tests/unit/ip/tcp.cpp +0 -1346
  1278. data/ext/third_party/asio/asio/src/tests/unit/ip/udp.cpp +0 -673
  1279. data/ext/third_party/asio/asio/src/tests/unit/ip/unicast.cpp +0 -171
  1280. data/ext/third_party/asio/asio/src/tests/unit/ip/v6_only.cpp +0 -135
  1281. data/ext/third_party/asio/asio/src/tests/unit/is_read_buffered.cpp +0 -129
  1282. data/ext/third_party/asio/asio/src/tests/unit/is_write_buffered.cpp +0 -129
  1283. data/ext/third_party/asio/asio/src/tests/unit/local/.gitignore +0 -13
  1284. data/ext/third_party/asio/asio/src/tests/unit/local/basic_endpoint.cpp +0 -25
  1285. data/ext/third_party/asio/asio/src/tests/unit/local/connect_pair.cpp +0 -76
  1286. data/ext/third_party/asio/asio/src/tests/unit/local/datagram_protocol.cpp +0 -242
  1287. data/ext/third_party/asio/asio/src/tests/unit/local/stream_protocol.cpp +0 -219
  1288. data/ext/third_party/asio/asio/src/tests/unit/packaged_task.cpp +0 -25
  1289. data/ext/third_party/asio/asio/src/tests/unit/placeholders.cpp +0 -25
  1290. data/ext/third_party/asio/asio/src/tests/unit/posix/.gitignore +0 -14
  1291. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_descriptor.cpp +0 -25
  1292. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_stream_descriptor.cpp +0 -25
  1293. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor.cpp +0 -25
  1294. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor_base.cpp +0 -25
  1295. data/ext/third_party/asio/asio/src/tests/unit/posix/stream_descriptor.cpp +0 -183
  1296. data/ext/third_party/asio/asio/src/tests/unit/post.cpp +0 -25
  1297. data/ext/third_party/asio/asio/src/tests/unit/read.cpp +0 -4997
  1298. data/ext/third_party/asio/asio/src/tests/unit/read_at.cpp +0 -7502
  1299. data/ext/third_party/asio/asio/src/tests/unit/read_until.cpp +0 -1658
  1300. data/ext/third_party/asio/asio/src/tests/unit/redirect_error.cpp +0 -25
  1301. data/ext/third_party/asio/asio/src/tests/unit/serial_port.cpp +0 -173
  1302. data/ext/third_party/asio/asio/src/tests/unit/serial_port_base.cpp +0 -99
  1303. data/ext/third_party/asio/asio/src/tests/unit/signal_set.cpp +0 -95
  1304. data/ext/third_party/asio/asio/src/tests/unit/socket_base.cpp +0 -650
  1305. data/ext/third_party/asio/asio/src/tests/unit/ssl/.gitignore +0 -15
  1306. data/ext/third_party/asio/asio/src/tests/unit/ssl/context.cpp +0 -25
  1307. data/ext/third_party/asio/asio/src/tests/unit/ssl/context_base.cpp +0 -25
  1308. data/ext/third_party/asio/asio/src/tests/unit/ssl/error.cpp +0 -25
  1309. data/ext/third_party/asio/asio/src/tests/unit/ssl/host_name_verification.cpp +0 -25
  1310. data/ext/third_party/asio/asio/src/tests/unit/ssl/rfc2818_verification.cpp +0 -25
  1311. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream.cpp +0 -191
  1312. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream_base.cpp +0 -25
  1313. data/ext/third_party/asio/asio/src/tests/unit/steady_timer.cpp +0 -30
  1314. data/ext/third_party/asio/asio/src/tests/unit/strand.cpp +0 -263
  1315. data/ext/third_party/asio/asio/src/tests/unit/streambuf.cpp +0 -62
  1316. data/ext/third_party/asio/asio/src/tests/unit/system_context.cpp +0 -30
  1317. data/ext/third_party/asio/asio/src/tests/unit/system_executor.cpp +0 -30
  1318. data/ext/third_party/asio/asio/src/tests/unit/system_timer.cpp +0 -399
  1319. data/ext/third_party/asio/asio/src/tests/unit/this_coro.cpp +0 -25
  1320. data/ext/third_party/asio/asio/src/tests/unit/thread.cpp +0 -25
  1321. data/ext/third_party/asio/asio/src/tests/unit/time_traits.cpp +0 -25
  1322. data/ext/third_party/asio/asio/src/tests/unit/ts/.gitignore +0 -17
  1323. data/ext/third_party/asio/asio/src/tests/unit/ts/buffer.cpp +0 -30
  1324. data/ext/third_party/asio/asio/src/tests/unit/ts/executor.cpp +0 -30
  1325. data/ext/third_party/asio/asio/src/tests/unit/ts/internet.cpp +0 -30
  1326. data/ext/third_party/asio/asio/src/tests/unit/ts/io_context.cpp +0 -30
  1327. data/ext/third_party/asio/asio/src/tests/unit/ts/net.cpp +0 -30
  1328. data/ext/third_party/asio/asio/src/tests/unit/ts/netfwd.cpp +0 -33
  1329. data/ext/third_party/asio/asio/src/tests/unit/ts/socket.cpp +0 -30
  1330. data/ext/third_party/asio/asio/src/tests/unit/ts/timer.cpp +0 -30
  1331. data/ext/third_party/asio/asio/src/tests/unit/unit_test.hpp +0 -175
  1332. data/ext/third_party/asio/asio/src/tests/unit/use_awaitable.cpp +0 -25
  1333. data/ext/third_party/asio/asio/src/tests/unit/use_future.cpp +0 -670
  1334. data/ext/third_party/asio/asio/src/tests/unit/uses_executor.cpp +0 -25
  1335. data/ext/third_party/asio/asio/src/tests/unit/wait_traits.cpp +0 -25
  1336. data/ext/third_party/asio/asio/src/tests/unit/windows/.gitignore +0 -18
  1337. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_object_handle.cpp +0 -25
  1338. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_overlapped_handle.cpp +0 -25
  1339. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_random_access_handle.cpp +0 -25
  1340. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_stream_handle.cpp +0 -25
  1341. data/ext/third_party/asio/asio/src/tests/unit/windows/object_handle.cpp +0 -130
  1342. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_handle.cpp +0 -26
  1343. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_ptr.cpp +0 -107
  1344. data/ext/third_party/asio/asio/src/tests/unit/windows/random_access_handle.cpp +0 -155
  1345. data/ext/third_party/asio/asio/src/tests/unit/windows/stream_handle.cpp +0 -148
  1346. data/ext/third_party/asio/asio/src/tests/unit/write.cpp +0 -4904
  1347. data/ext/third_party/asio/asio/src/tests/unit/write_at.cpp +0 -7563
  1348. data/ext/third_party/asio/asio/src/tools/handlerviz.pl +0 -299
  1349. data/ext/third_party/asio/asio/tsify.pl +0 -574
  1350. data/ext/third_party/gsl/.clang-format +0 -34
  1351. data/ext/third_party/gsl/.github/workflows/main.yml +0 -94
  1352. data/ext/third_party/gsl/.gitignore +0 -16
  1353. data/ext/third_party/gsl/.travis.yml +0 -551
  1354. data/ext/third_party/gsl/CMakeSettings.json +0 -18
  1355. data/ext/third_party/gsl/CONTRIBUTING.md +0 -29
  1356. data/ext/third_party/gsl/GSL.natvis +0 -98
  1357. data/ext/third_party/gsl/README.md +0 -124
  1358. data/ext/third_party/gsl/appveyor.yml +0 -128
  1359. data/ext/third_party/gsl/tests/CMakeLists.txt +0 -267
  1360. data/ext/third_party/gsl/tests/CMakeLists.txt.in +0 -14
  1361. data/ext/third_party/gsl/tests/algorithm_tests.cpp +0 -227
  1362. data/ext/third_party/gsl/tests/assertion_tests.cpp +0 -61
  1363. data/ext/third_party/gsl/tests/at_tests.cpp +0 -135
  1364. data/ext/third_party/gsl/tests/bounds_tests.cpp +0 -102
  1365. data/ext/third_party/gsl/tests/byte_tests.cpp +0 -129
  1366. data/ext/third_party/gsl/tests/multi_span_tests.cpp +0 -1866
  1367. data/ext/third_party/gsl/tests/no_exception_ensure_tests.cpp +0 -48
  1368. data/ext/third_party/gsl/tests/notnull_tests.cpp +0 -535
  1369. data/ext/third_party/gsl/tests/owner_tests.cpp +0 -43
  1370. data/ext/third_party/gsl/tests/span_compatibility_tests.cpp +0 -1021
  1371. data/ext/third_party/gsl/tests/span_ext_tests.cpp +0 -360
  1372. data/ext/third_party/gsl/tests/span_tests.cpp +0 -1244
  1373. data/ext/third_party/gsl/tests/strict_notnull_tests.cpp +0 -190
  1374. data/ext/third_party/gsl/tests/strided_span_tests.cpp +0 -790
  1375. data/ext/third_party/gsl/tests/string_span_tests.cpp +0 -1217
  1376. data/ext/third_party/gsl/tests/utils_tests.cpp +0 -129
  1377. data/ext/third_party/http_parser/.gitignore +0 -30
  1378. data/ext/third_party/http_parser/.mailmap +0 -8
  1379. data/ext/third_party/http_parser/.travis.yml +0 -13
  1380. data/ext/third_party/http_parser/AUTHORS +0 -68
  1381. data/ext/third_party/http_parser/README.md +0 -246
  1382. data/ext/third_party/http_parser/bench.c +0 -128
  1383. data/ext/third_party/http_parser/contrib/parsertrace.c +0 -157
  1384. data/ext/third_party/http_parser/contrib/url_parser.c +0 -47
  1385. data/ext/third_party/http_parser/fuzzers/fuzz_parser.c +0 -26
  1386. data/ext/third_party/http_parser/fuzzers/fuzz_url.c +0 -14
  1387. data/ext/third_party/http_parser/http_parser.gyp +0 -111
  1388. data/ext/third_party/http_parser/test.c +0 -4600
  1389. data/ext/third_party/json/.appveyor.yml +0 -44
  1390. data/ext/third_party/json/.clang-format +0 -84
  1391. data/ext/third_party/json/.conan/build.py +0 -80
  1392. data/ext/third_party/json/.conan/test_package/CMakeLists.txt +0 -12
  1393. data/ext/third_party/json/.conan/test_package/conanfile.py +0 -24
  1394. data/ext/third_party/json/.conan/test_package/test_package.cpp +0 -16
  1395. data/ext/third_party/json/.gitignore +0 -3
  1396. data/ext/third_party/json/.travis.yml +0 -173
  1397. data/ext/third_party/json/README.md +0 -149
  1398. data/ext/third_party/json/conanfile.py +0 -28
  1399. data/ext/third_party/json/contrib/nlohmann.cpp +0 -48
  1400. data/ext/third_party/json/contrib/nlohmann/from_value.hpp +0 -62
  1401. data/ext/third_party/json/contrib/nlohmann/json.hpp +0 -18928
  1402. data/ext/third_party/json/contrib/nlohmann/to_value.hpp +0 -109
  1403. data/ext/third_party/json/doc/Advanced-Use-Cases.md +0 -83
  1404. data/ext/third_party/json/doc/Batteries-Included.md +0 -212
  1405. data/ext/third_party/json/doc/Binding-Traits.md +0 -319
  1406. data/ext/third_party/json/doc/Changelog.md +0 -31
  1407. data/ext/third_party/json/doc/Common-Use-Cases.md +0 -148
  1408. data/ext/third_party/json/doc/Design-Decisions.md +0 -36
  1409. data/ext/third_party/json/doc/Events-Interface.md +0 -140
  1410. data/ext/third_party/json/doc/Getting-Started.md +0 -19
  1411. data/ext/third_party/json/doc/Instance-Sharing.md +0 -163
  1412. data/ext/third_party/json/doc/Interoperability.md +0 -75
  1413. data/ext/third_party/json/doc/Overview.md +0 -24
  1414. data/ext/third_party/json/doc/Overview.png +0 -0
  1415. data/ext/third_party/json/doc/Parser-Interface.md +0 -84
  1416. data/ext/third_party/json/doc/README.md +0 -78
  1417. data/ext/third_party/json/doc/Scratchpad.md +0 -25
  1418. data/ext/third_party/json/doc/Type-Traits.md +0 -364
  1419. data/ext/third_party/json/doc/Types.png +0 -0
  1420. data/ext/third_party/json/doc/Value-Class.md +0 -525
  1421. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
  1422. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
  1423. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
  1424. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
  1425. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
  1426. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
  1427. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
  1428. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
  1429. data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
  1430. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
  1431. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
  1432. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
  1433. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
  1434. data/ext/third_party/json/include/tao/json/external/pegtl/internal/always_false.hpp +0 -21
  1435. data/ext/third_party/json/include/tao/json/external/pegtl/internal/demangle.hpp +0 -140
  1436. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
  1437. data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
  1438. data/ext/third_party/json/include/tao/json/external/pegtl/internal/endian.hpp +0 -62
  1439. data/ext/third_party/json/include/tao/json/external/pegtl/internal/endian_gcc.hpp +0 -206
  1440. data/ext/third_party/json/include/tao/json/external/pegtl/internal/endian_win.hpp +0 -106
  1441. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
  1442. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_mask_uint.hpp +0 -54
  1443. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_mask_uint8.hpp +0 -34
  1444. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_uint.hpp +0 -45
  1445. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_uint8.hpp +0 -33
  1446. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf16.hpp +0 -54
  1447. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf32.hpp +0 -43
  1448. data/ext/third_party/json/include/tao/json/external/pegtl/internal/read_uint.hpp +0 -77
  1449. data/ext/third_party/json/include/tao/json/external/pegtl/internal/skip_control.hpp +0 -25
  1450. data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
  1451. data/ext/third_party/json/include/tao/json/external/pegtl/uint16.hpp +0 -62
  1452. data/ext/third_party/json/include/tao/json/external/pegtl/uint32.hpp +0 -62
  1453. data/ext/third_party/json/include/tao/json/external/pegtl/uint64.hpp +0 -63
  1454. data/ext/third_party/json/include/tao/json/external/pegtl/uint8.hpp +0 -36
  1455. data/ext/third_party/json/include/tao/json/external/pegtl/utf16.hpp +0 -49
  1456. data/ext/third_party/json/include/tao/json/external/pegtl/utf32.hpp +0 -49
  1457. data/ext/third_party/json/src/example/json/CMakeLists.txt +0 -67
  1458. data/ext/third_party/json/src/example/json/cbor_to_jaxn.cpp +0 -18
  1459. data/ext/third_party/json/src/example/json/cbor_to_json.cpp +0 -18
  1460. data/ext/third_party/json/src/example/json/cbor_to_msgpack.cpp +0 -18
  1461. data/ext/third_party/json/src/example/json/cbor_to_pretty_jaxn.cpp +0 -18
  1462. data/ext/third_party/json/src/example/json/cbor_to_pretty_json.cpp +0 -18
  1463. data/ext/third_party/json/src/example/json/cbor_to_ubjson.cpp +0 -18
  1464. data/ext/third_party/json/src/example/json/jaxn_to_cbor.cpp +0 -18
  1465. data/ext/third_party/json/src/example/json/jaxn_to_cplusplus.cpp +0 -249
  1466. data/ext/third_party/json/src/example/json/jaxn_to_jaxn.cpp +0 -18
  1467. data/ext/third_party/json/src/example/json/jaxn_to_msgpack.cpp +0 -18
  1468. data/ext/third_party/json/src/example/json/jaxn_to_pretty_jaxn.cpp +0 -18
  1469. data/ext/third_party/json/src/example/json/jaxn_to_ubjson.cpp +0 -18
  1470. data/ext/third_party/json/src/example/json/json_to_cbor.cpp +0 -18
  1471. data/ext/third_party/json/src/example/json/json_to_json.cpp +0 -18
  1472. data/ext/third_party/json/src/example/json/json_to_msgpack.cpp +0 -18
  1473. data/ext/third_party/json/src/example/json/json_to_pretty_json.cpp +0 -18
  1474. data/ext/third_party/json/src/example/json/json_to_ubjson.cpp +0 -18
  1475. data/ext/third_party/json/src/example/json/msgpack_to_cbor.cpp +0 -18
  1476. data/ext/third_party/json/src/example/json/msgpack_to_jaxn.cpp +0 -18
  1477. data/ext/third_party/json/src/example/json/msgpack_to_json.cpp +0 -18
  1478. data/ext/third_party/json/src/example/json/msgpack_to_pretty_jaxn.cpp +0 -18
  1479. data/ext/third_party/json/src/example/json/msgpack_to_pretty_json.cpp +0 -18
  1480. data/ext/third_party/json/src/example/json/msgpack_to_ubjson.cpp +0 -18
  1481. data/ext/third_party/json/src/example/json/printf_doubles.cpp +0 -51
  1482. data/ext/third_party/json/src/example/json/ubjson_to_cbor.cpp +0 -18
  1483. data/ext/third_party/json/src/example/json/ubjson_to_jaxn.cpp +0 -18
  1484. data/ext/third_party/json/src/example/json/ubjson_to_json.cpp +0 -18
  1485. data/ext/third_party/json/src/example/json/ubjson_to_msgpack.cpp +0 -18
  1486. data/ext/third_party/json/src/example/json/ubjson_to_pretty_jaxn.cpp +0 -18
  1487. data/ext/third_party/json/src/example/json/ubjson_to_pretty_json.cpp +0 -18
  1488. data/ext/third_party/json/src/example/json/validate_event_order.cpp +0 -27
  1489. data/ext/third_party/json/src/example/json/validate_integer.cpp +0 -56
  1490. data/ext/third_party/json/src/perf/json/bench_mark.hpp +0 -43
  1491. data/ext/third_party/json/src/perf/json/benchmark.cpp +0 -34
  1492. data/ext/third_party/json/src/perf/json/parse_file.cpp +0 -17
  1493. data/ext/third_party/json/src/perf/json/pretty_print_file.cpp +0 -19
  1494. data/ext/third_party/json/src/perf/json/print_double.cpp +0 -34
  1495. data/ext/third_party/json/src/perf/json/print_file.cpp +0 -19
  1496. data/ext/third_party/json/src/perf/json/sizes.cpp +0 -24
  1497. data/ext/third_party/json/src/perf/json/syntax_only.cpp +0 -27
  1498. data/ext/third_party/json/src/test/json/CMakeLists.txt +0 -97
  1499. data/ext/third_party/json/src/test/json/big_list_of_naughty_strings.cpp +0 -43
  1500. data/ext/third_party/json/src/test/json/binding_array.cpp +0 -549
  1501. data/ext/third_party/json/src/test/json/binding_factory.cpp +0 -265
  1502. data/ext/third_party/json/src/test/json/binding_object.cpp +0 -208
  1503. data/ext/third_party/json/src/test/json/binding_versions.cpp +0 -95
  1504. data/ext/third_party/json/src/test/json/cbor.cpp +0 -149
  1505. data/ext/third_party/json/src/test/json/cbor_parts_parser.cpp +0 -36
  1506. data/ext/third_party/json/src/test/json/contrib_diff.cpp +0 -43
  1507. data/ext/third_party/json/src/test/json/contrib_get.cpp +0 -42
  1508. data/ext/third_party/json/src/test/json/contrib_patch_add.cpp +0 -75
  1509. data/ext/third_party/json/src/test/json/contrib_patch_copy.cpp +0 -113
  1510. data/ext/third_party/json/src/test/json/contrib_patch_move.cpp +0 -97
  1511. data/ext/third_party/json/src/test/json/contrib_patch_remove.cpp +0 -85
  1512. data/ext/third_party/json/src/test/json/contrib_patch_replace.cpp +0 -79
  1513. data/ext/third_party/json/src/test/json/contrib_patch_test.cpp +0 -69
  1514. data/ext/third_party/json/src/test/json/contrib_position.cpp +0 -48
  1515. data/ext/third_party/json/src/test/json/contrib_reference.cpp +0 -44
  1516. data/ext/third_party/json/src/test/json/contrib_schema.cpp +0 -132
  1517. data/ext/third_party/json/src/test/json/contrib_traits.cpp +0 -258
  1518. data/ext/third_party/json/src/test/json/double.cpp +0 -182
  1519. data/ext/third_party/json/src/test/json/enable_implicit_constructor.cpp +0 -54
  1520. data/ext/third_party/json/src/test/json/escape.cpp +0 -42
  1521. data/ext/third_party/json/src/test/json/events_binary_to.cpp +0 -56
  1522. data/ext/third_party/json/src/test/json/events_compare.cpp +0 -433
  1523. data/ext/third_party/json/src/test/json/events_debug.cpp +0 -24
  1524. data/ext/third_party/json/src/test/json/events_hash.cpp +0 -65
  1525. data/ext/third_party/json/src/test/json/events_to_stream.cpp +0 -28
  1526. data/ext/third_party/json/src/test/json/events_to_string.cpp +0 -25
  1527. data/ext/third_party/json/src/test/json/include_json.cpp +0 -14
  1528. data/ext/third_party/json/src/test/json/integer.cpp +0 -118
  1529. data/ext/third_party/json/src/test/json/jaxn_ostream.cpp +0 -76
  1530. data/ext/third_party/json/src/test/json/jaxn_parse.cpp +0 -239
  1531. data/ext/third_party/json/src/test/json/jaxn_parts_parser.cpp +0 -220
  1532. data/ext/third_party/json/src/test/json/json_ostream.cpp +0 -102
  1533. data/ext/third_party/json/src/test/json/json_parse.cpp +0 -153
  1534. data/ext/third_party/json/src/test/json/json_parts_parser.cpp +0 -124
  1535. data/ext/third_party/json/src/test/json/json_pointer.cpp +0 -176
  1536. data/ext/third_party/json/src/test/json/key_camel_case_to_snake_case.cpp +0 -38
  1537. data/ext/third_party/json/src/test/json/key_snake_case_to_camel_case.cpp +0 -33
  1538. data/ext/third_party/json/src/test/json/literal.cpp +0 -18
  1539. data/ext/third_party/json/src/test/json/main.hpp +0 -20
  1540. data/ext/third_party/json/src/test/json/make_events.hpp +0 -362
  1541. data/ext/third_party/json/src/test/json/msgpack.cpp +0 -136
  1542. data/ext/third_party/json/src/test/json/object_construction.cpp +0 -167
  1543. data/ext/third_party/json/src/test/json/opaque_pointer.cpp +0 -192
  1544. data/ext/third_party/json/src/test/json/operators.cpp +0 -494
  1545. data/ext/third_party/json/src/test/json/optional.cpp +0 -79
  1546. data/ext/third_party/json/src/test/json/public_base.cpp +0 -142
  1547. data/ext/third_party/json/src/test/json/self_contained.cpp +0 -106
  1548. data/ext/third_party/json/src/test/json/sha256.cpp +0 -38
  1549. data/ext/third_party/json/src/test/json/string_view.cpp +0 -70
  1550. data/ext/third_party/json/src/test/json/temporary_parsing.cpp +0 -339
  1551. data/ext/third_party/json/src/test/json/test.hpp +0 -74
  1552. data/ext/third_party/json/src/test/json/test_events.hpp +0 -250
  1553. data/ext/third_party/json/src/test/json/test_types.hpp +0 -557
  1554. data/ext/third_party/json/src/test/json/test_unhex.hpp +0 -42
  1555. data/ext/third_party/json/src/test/json/type.cpp +0 -35
  1556. data/ext/third_party/json/src/test/json/ubjson.cpp +0 -119
  1557. data/ext/third_party/json/src/test/json/uri_fragment.cpp +0 -52
  1558. data/ext/third_party/json/src/test/json/validate_event_interfaces.cpp +0 -177
  1559. data/ext/third_party/json/src/test/json/validate_utf8.cpp +0 -37
  1560. data/ext/third_party/json/src/test/json/value_access.cpp +0 -144
  1561. data/ext/third_party/json/src/test/json/value_basics.cpp +0 -241
  1562. data/ext/third_party/json/src/test/json/value_create.cpp +0 -372
  1563. data/ext/third_party/json/src/test/json/value_ptr.cpp +0 -33
  1564. data/ext/third_party/json/src/test/json/value_subscript.cpp +0 -89
  1565. data/ext/third_party/json/src/test/json/with_arguments.cpp +0 -98
  1566. data/ext/third_party/json/tests/blns.json +0 -496
  1567. data/ext/third_party/json/tests/canada.json +0 -9
  1568. data/ext/third_party/json/tests/citm_catalog.json +0 -50469
  1569. data/ext/third_party/json/tests/draft4/additionalItems.json +0 -82
  1570. data/ext/third_party/json/tests/draft4/additionalProperties.json +0 -88
  1571. data/ext/third_party/json/tests/draft4/allOf.json +0 -112
  1572. data/ext/third_party/json/tests/draft4/anyOf.json +0 -68
  1573. data/ext/third_party/json/tests/draft4/default.json +0 -49
  1574. data/ext/third_party/json/tests/draft4/definitions.json +0 -32
  1575. data/ext/third_party/json/tests/draft4/dependencies.json +0 -113
  1576. data/ext/third_party/json/tests/draft4/enum.json +0 -72
  1577. data/ext/third_party/json/tests/draft4/items.json +0 -46
  1578. data/ext/third_party/json/tests/draft4/maxItems.json +0 -28
  1579. data/ext/third_party/json/tests/draft4/maxLength.json +0 -33
  1580. data/ext/third_party/json/tests/draft4/maxProperties.json +0 -28
  1581. data/ext/third_party/json/tests/draft4/maximum.json +0 -42
  1582. data/ext/third_party/json/tests/draft4/minItems.json +0 -28
  1583. data/ext/third_party/json/tests/draft4/minLength.json +0 -33
  1584. data/ext/third_party/json/tests/draft4/minProperties.json +0 -28
  1585. data/ext/third_party/json/tests/draft4/minimum.json +0 -42
  1586. data/ext/third_party/json/tests/draft4/multipleOf.json +0 -60
  1587. data/ext/third_party/json/tests/draft4/not.json +0 -96
  1588. data/ext/third_party/json/tests/draft4/oneOf.json +0 -68
  1589. data/ext/third_party/json/tests/draft4/optional/bignum.json +0 -107
  1590. data/ext/third_party/json/tests/draft4/optional/format.json +0 -148
  1591. data/ext/third_party/json/tests/draft4/optional/zeroTerminatedFloats.json +0 -15
  1592. data/ext/third_party/json/tests/draft4/pattern.json +0 -34
  1593. data/ext/third_party/json/tests/draft4/patternProperties.json +0 -110
  1594. data/ext/third_party/json/tests/draft4/properties.json +0 -92
  1595. data/ext/third_party/json/tests/draft4/ref.json +0 -179
  1596. data/ext/third_party/json/tests/draft4/refRemote.json +0 -74
  1597. data/ext/third_party/json/tests/draft4/required.json +0 -44
  1598. data/ext/third_party/json/tests/draft4/type.json +0 -345
  1599. data/ext/third_party/json/tests/draft4/uniqueItems.json +0 -79
  1600. data/ext/third_party/json/tests/taocpp/binary.jaxn +0 -4
  1601. data/ext/third_party/json/tests/taocpp/dateTime.json +0 -108
  1602. data/ext/third_party/json/tests/taocpp/make_events.cbor +0 -0
  1603. data/ext/third_party/json/tests/taocpp/number.json +0 -682
  1604. data/ext/third_party/json/tests/taocpp/position.json +0 -8
  1605. data/ext/third_party/json/tests/taocpp/schema.json +0 -378
  1606. data/ext/third_party/json/tests/twitter.json +0 -15482
  1607. data/ext/third_party/snappy/.appveyor.yml +0 -36
  1608. data/ext/third_party/snappy/.gitignore +0 -8
  1609. data/ext/third_party/snappy/.travis.yml +0 -98
  1610. data/ext/third_party/snappy/AUTHORS +0 -1
  1611. data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
  1612. data/ext/third_party/snappy/NEWS +0 -188
  1613. data/ext/third_party/snappy/README.md +0 -148
  1614. data/ext/third_party/snappy/docs/README.md +0 -72
  1615. data/ext/third_party/snappy/format_description.txt +0 -110
  1616. data/ext/third_party/snappy/framing_format.txt +0 -135
  1617. data/ext/third_party/snappy/snappy-test.cc +0 -613
  1618. data/ext/third_party/snappy/snappy-test.h +0 -526
  1619. data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
  1620. data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
  1621. data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
  1622. data/ext/third_party/snappy/testdata/alice29.txt +0 -3609
  1623. data/ext/third_party/snappy/testdata/asyoulik.txt +0 -4122
  1624. data/ext/third_party/snappy/testdata/baddata1.snappy +0 -0
  1625. data/ext/third_party/snappy/testdata/baddata2.snappy +0 -0
  1626. data/ext/third_party/snappy/testdata/baddata3.snappy +0 -0
  1627. data/ext/third_party/snappy/testdata/fireworks.jpeg +0 -0
  1628. data/ext/third_party/snappy/testdata/geo.protodata +0 -0
  1629. data/ext/third_party/snappy/testdata/html +0 -1
  1630. data/ext/third_party/snappy/testdata/html_x_4 +0 -1
  1631. data/ext/third_party/snappy/testdata/kppkn.gtb +0 -0
  1632. data/ext/third_party/snappy/testdata/lcet10.txt +0 -7519
  1633. data/ext/third_party/snappy/testdata/paper-100k.pdf +2 -600
  1634. data/ext/third_party/snappy/testdata/plrabn12.txt +0 -10699
  1635. data/ext/third_party/snappy/testdata/urls.10K +0 -10000
  1636. data/ext/third_party/spdlog/.clang-format +0 -108
  1637. data/ext/third_party/spdlog/.clang-tidy +0 -54
  1638. data/ext/third_party/spdlog/.gitattributes +0 -1
  1639. data/ext/third_party/spdlog/.gitignore +0 -83
  1640. data/ext/third_party/spdlog/.travis.yml +0 -112
  1641. data/ext/third_party/spdlog/INSTALL +0 -24
  1642. data/ext/third_party/spdlog/README.md +0 -423
  1643. data/ext/third_party/spdlog/appveyor.yml +0 -51
  1644. data/ext/third_party/spdlog/bench/CMakeLists.txt +0 -25
  1645. data/ext/third_party/spdlog/bench/async_bench.cpp +0 -179
  1646. data/ext/third_party/spdlog/bench/bench.cpp +0 -238
  1647. data/ext/third_party/spdlog/bench/formatter-bench.cpp +0 -80
  1648. data/ext/third_party/spdlog/bench/latency.cpp +0 -166
  1649. data/ext/third_party/spdlog/bench/utils.h +0 -34
  1650. data/ext/third_party/spdlog/example/CMakeLists.txt +0 -23
  1651. data/ext/third_party/spdlog/example/example.cpp +0 -282
  1652. data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
  1653. data/ext/third_party/spdlog/logos/jetbrains-variant-4.svg +0 -43
  1654. data/ext/third_party/spdlog/scripts/extract_version.py +0 -17
  1655. data/ext/third_party/spdlog/scripts/format.sh +0 -16
  1656. data/ext/third_party/spdlog/tests/CMakeLists.txt +0 -70
  1657. data/ext/third_party/spdlog/tests/catch.hpp +0 -15372
  1658. data/ext/third_party/spdlog/tests/catch.license +0 -23
  1659. data/ext/third_party/spdlog/tests/includes.h +0 -26
  1660. data/ext/third_party/spdlog/tests/main.cpp +0 -2
  1661. data/ext/third_party/spdlog/tests/test_async.cpp +0 -188
  1662. data/ext/third_party/spdlog/tests/test_backtrace.cpp +0 -65
  1663. data/ext/third_party/spdlog/tests/test_cfg.cpp +0 -93
  1664. data/ext/third_party/spdlog/tests/test_create_dir.cpp +0 -80
  1665. data/ext/third_party/spdlog/tests/test_daily_logger.cpp +0 -149
  1666. data/ext/third_party/spdlog/tests/test_dup_filter.cpp +0 -88
  1667. data/ext/third_party/spdlog/tests/test_errors.cpp +0 -118
  1668. data/ext/third_party/spdlog/tests/test_eventlog.cpp +0 -71
  1669. data/ext/third_party/spdlog/tests/test_file_helper.cpp +0 -102
  1670. data/ext/third_party/spdlog/tests/test_file_logging.cpp +0 -98
  1671. data/ext/third_party/spdlog/tests/test_fmt_helper.cpp +0 -86
  1672. data/ext/third_party/spdlog/tests/test_macros.cpp +0 -60
  1673. data/ext/third_party/spdlog/tests/test_misc.cpp +0 -271
  1674. data/ext/third_party/spdlog/tests/test_mpmc_q.cpp +0 -106
  1675. data/ext/third_party/spdlog/tests/test_pattern_formatter.cpp +0 -443
  1676. data/ext/third_party/spdlog/tests/test_registry.cpp +0 -116
  1677. data/ext/third_party/spdlog/tests/test_sink.h +0 -79
  1678. data/ext/third_party/spdlog/tests/test_stdout_api.cpp +0 -98
  1679. data/ext/third_party/spdlog/tests/test_systemd.cpp +0 -15
  1680. data/ext/third_party/spdlog/tests/test_time_point.cpp +0 -36
  1681. data/ext/third_party/spdlog/tests/utils.cpp +0 -125
  1682. data/ext/third_party/spdlog/tests/utils.h +0 -18
  1683. data/rbi/couchbase.rbi +0 -79
@@ -0,0 +1,249 @@
1
+ //
2
+ // execution/allocator.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_ALLOCATOR_HPP
12
+ #define ASIO_EXECUTION_ALLOCATOR_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/traits/query_static_constexpr_member.hpp"
25
+ #include "asio/traits/static_query.hpp"
26
+
27
+ #include "asio/detail/push_options.hpp"
28
+
29
+ namespace asio {
30
+
31
+ #if defined(GENERATING_DOCUMENTATION)
32
+
33
+ namespace execution {
34
+
35
+ /// A property to describe which allocator an executor will use to allocate the
36
+ /// memory required to store a submitted function object.
37
+ template <typename ProtoAllocator>
38
+ struct allocator_t
39
+ {
40
+ /// The allocator_t property applies to executors, senders, and schedulers.
41
+ template <typename T>
42
+ static constexpr bool is_applicable_property_v =
43
+ is_executor_v<T> || is_sender_v<T> || is_scheduler_v<T>;
44
+
45
+ /// The allocator_t property can be required.
46
+ static constexpr bool is_requirable = true;
47
+
48
+ /// The allocator_t property can be preferred.
49
+ static constexpr bool is_preferable = true;
50
+
51
+ /// Default constructor.
52
+ constexpr allocator_t();
53
+
54
+ /// Obtain the allocator stored in the allocator_t property object.
55
+ /**
56
+ * Present only if @c ProtoAllocator is non-void.
57
+ */
58
+ constexpr ProtoAllocator value() const;
59
+
60
+ /// Create an allocator_t object with a different allocator.
61
+ /**
62
+ * Present only if @c ProtoAllocator is void.
63
+ */
64
+ template <typename OtherAllocator>
65
+ allocator_t<OtherAllocator operator()(const OtherAllocator& a);
66
+ };
67
+
68
+ /// A special value used for accessing the allocator_t property.
69
+ constexpr allocator_t<void> allocator;
70
+
71
+ } // namespace execution
72
+
73
+ #else // defined(GENERATING_DOCUMENTATION)
74
+
75
+ namespace execution {
76
+
77
+ template <typename ProtoAllocator>
78
+ struct allocator_t
79
+ {
80
+ #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
81
+ template <typename T>
82
+ ASIO_STATIC_CONSTEXPR(bool,
83
+ is_applicable_property_v = is_executor<T>::value
84
+ || is_sender<T>::value || is_scheduler<T>::value);
85
+ #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
86
+
87
+ ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
88
+ ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
89
+
90
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
91
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
92
+ template <typename T>
93
+ static ASIO_CONSTEXPR
94
+ typename traits::query_static_constexpr_member<T, allocator_t>::result_type
95
+ static_query()
96
+ ASIO_NOEXCEPT_IF((
97
+ traits::query_static_constexpr_member<T, allocator_t>::is_noexcept))
98
+ {
99
+ return traits::query_static_constexpr_member<T, allocator_t>::value();
100
+ }
101
+
102
+ template <typename E, typename T = decltype(allocator_t::static_query<E>())>
103
+ static ASIO_CONSTEXPR const T static_query_v
104
+ = allocator_t::static_query<E>();
105
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
106
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
107
+
108
+ ASIO_CONSTEXPR ProtoAllocator value() const
109
+ {
110
+ return a_;
111
+ }
112
+
113
+ private:
114
+ friend struct allocator_t<void>;
115
+
116
+ explicit ASIO_CONSTEXPR allocator_t(const ProtoAllocator& a)
117
+ : a_(a)
118
+ {
119
+ }
120
+
121
+ ProtoAllocator a_;
122
+ };
123
+
124
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
125
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
126
+ template <typename ProtoAllocator> template <typename E, typename T>
127
+ const T allocator_t<ProtoAllocator>::static_query_v;
128
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
129
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
130
+
131
+ template <>
132
+ struct allocator_t<void>
133
+ {
134
+ #if defined(ASIO_HAS_VARIABLE_TEMPLATES)
135
+ template <typename T>
136
+ ASIO_STATIC_CONSTEXPR(bool,
137
+ is_applicable_property_v = is_executor<T>::value
138
+ || is_sender<T>::value || is_scheduler<T>::value);
139
+ #endif // defined(ASIO_HAS_VARIABLE_TEMPLATES)
140
+
141
+ ASIO_STATIC_CONSTEXPR(bool, is_requirable = true);
142
+ ASIO_STATIC_CONSTEXPR(bool, is_preferable = true);
143
+
144
+ ASIO_CONSTEXPR allocator_t()
145
+ {
146
+ }
147
+
148
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
149
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
150
+ template <typename T>
151
+ static ASIO_CONSTEXPR
152
+ typename traits::query_static_constexpr_member<T, allocator_t>::result_type
153
+ static_query()
154
+ ASIO_NOEXCEPT_IF((
155
+ traits::query_static_constexpr_member<T, allocator_t>::is_noexcept))
156
+ {
157
+ return traits::query_static_constexpr_member<T, allocator_t>::value();
158
+ }
159
+
160
+ template <typename E, typename T = decltype(allocator_t::static_query<E>())>
161
+ static ASIO_CONSTEXPR const T static_query_v
162
+ = allocator_t::static_query<E>();
163
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
164
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
165
+
166
+ template <typename OtherProtoAllocator>
167
+ ASIO_CONSTEXPR allocator_t<OtherProtoAllocator> operator()(
168
+ const OtherProtoAllocator& a) const
169
+ {
170
+ return allocator_t<OtherProtoAllocator>(a);
171
+ }
172
+ };
173
+
174
+ #if defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
175
+ && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
176
+ template <typename E, typename T>
177
+ const T allocator_t<void>::static_query_v;
178
+ #endif // defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
179
+ // && defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
180
+
181
+ #if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
182
+ constexpr allocator_t<void> allocator;
183
+ #else // defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
184
+ template <typename T>
185
+ struct allocator_instance
186
+ {
187
+ static allocator_t<T> instance;
188
+ };
189
+
190
+ template <typename T>
191
+ allocator_t<T> allocator_instance<T>::instance;
192
+
193
+ namespace {
194
+ static const allocator_t<void>& allocator = allocator_instance<void>::instance;
195
+ } // namespace
196
+ #endif
197
+
198
+ } // namespace execution
199
+
200
+ #if !defined(ASIO_HAS_VARIABLE_TEMPLATES)
201
+
202
+ template <typename T, typename ProtoAllocator>
203
+ struct is_applicable_property<T, execution::allocator_t<ProtoAllocator> >
204
+ : integral_constant<bool,
205
+ execution::is_executor<T>::value
206
+ || execution::is_sender<T>::value
207
+ || execution::is_scheduler<T>::value>
208
+ {
209
+ };
210
+
211
+ #endif // !defined(ASIO_HAS_VARIABLE_TEMPLATES)
212
+
213
+ namespace traits {
214
+
215
+ #if !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT) \
216
+ || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
217
+
218
+ template <typename T, typename ProtoAllocator>
219
+ struct static_query<T, execution::allocator_t<ProtoAllocator>,
220
+ typename enable_if<
221
+ traits::query_static_constexpr_member<T,
222
+ execution::allocator_t<ProtoAllocator> >::is_valid
223
+ >::type>
224
+ {
225
+ ASIO_STATIC_CONSTEXPR(bool, is_valid = true);
226
+ ASIO_STATIC_CONSTEXPR(bool, is_noexcept = true);
227
+
228
+ typedef typename traits::query_static_constexpr_member<T,
229
+ execution::allocator_t<ProtoAllocator> >::result_type result_type;
230
+
231
+ static ASIO_CONSTEXPR result_type value()
232
+ {
233
+ return traits::query_static_constexpr_member<T,
234
+ execution::allocator_t<ProtoAllocator> >::value();
235
+ }
236
+ };
237
+
238
+ #endif // !defined(ASIO_HAS_DEDUCED_STATIC_QUERY_TRAIT)
239
+ // || !defined(ASIO_HAS_SFINAE_VARIABLE_TEMPLATES)
240
+
241
+ } // namespace traits
242
+
243
+ #endif // defined(GENERATING_DOCUMENTATION)
244
+
245
+ } // namespace asio
246
+
247
+ #include "asio/detail/pop_options.hpp"
248
+
249
+ #endif // ASIO_EXECUTION_ALLOCATOR_HPP
@@ -0,0 +1,2264 @@
1
+ //
2
+ // execution/any_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_ANY_EXECUTOR_HPP
12
+ #define ASIO_EXECUTION_ANY_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 <new>
20
+ #include <typeinfo>
21
+ #include "asio/detail/assert.hpp"
22
+ #include "asio/detail/cstddef.hpp"
23
+ #include "asio/detail/executor_function.hpp"
24
+ #include "asio/detail/memory.hpp"
25
+ #include "asio/detail/non_const_lvalue.hpp"
26
+ #include "asio/detail/scoped_ptr.hpp"
27
+ #include "asio/detail/type_traits.hpp"
28
+ #include "asio/detail/throw_exception.hpp"
29
+ #include "asio/detail/variadic_templates.hpp"
30
+ #include "asio/execution/bad_executor.hpp"
31
+ #include "asio/execution/blocking.hpp"
32
+ #include "asio/execution/execute.hpp"
33
+ #include "asio/execution/executor.hpp"
34
+ #include "asio/prefer.hpp"
35
+ #include "asio/query.hpp"
36
+ #include "asio/require.hpp"
37
+
38
+ #include "asio/detail/push_options.hpp"
39
+
40
+ namespace asio {
41
+
42
+ #if defined(GENERATING_DOCUMENTATION)
43
+
44
+ namespace execution {
45
+
46
+ /// Polymorphic executor wrapper.
47
+ template <typename... SupportableProperties>
48
+ class any_executor
49
+ {
50
+ public:
51
+ /// Default constructor.
52
+ any_executor() noexcept;
53
+
54
+ /// Construct in an empty state. Equivalent effects to default constructor.
55
+ any_executor(nullptr_t) noexcept;
56
+
57
+ /// Copy constructor.
58
+ any_executor(const any_executor& e) noexcept;
59
+
60
+ /// Move constructor.
61
+ any_executor(any_executor&& e) noexcept;
62
+
63
+ /// Construct to point to the same target as another any_executor.
64
+ template <class... OtherSupportableProperties>
65
+ any_executor(any_executor<OtherSupportableProperties...> e);
66
+
67
+ /// Construct a polymorphic wrapper for the specified executor.
68
+ template <typename Executor>
69
+ any_executor(Executor e);
70
+
71
+ /// Assignment operator.
72
+ any_executor& operator=(const any_executor& e) noexcept;
73
+
74
+ /// Move assignment operator.
75
+ any_executor& operator=(any_executor&& e) noexcept;
76
+
77
+ /// Assignment operator that sets the polymorphic wrapper to the empty state.
78
+ any_executor& operator=(nullptr_t);
79
+
80
+ /// Assignment operator to create a polymorphic wrapper for the specified
81
+ /// executor.
82
+ template <typename Executor>
83
+ any_executor& operator=(Executor e);
84
+
85
+ /// Destructor.
86
+ ~any_executor();
87
+
88
+ /// Swap targets with another polymorphic wrapper.
89
+ void swap(any_executor& other) noexcept;
90
+
91
+ /// Obtain a polymorphic wrapper with the specified property.
92
+ /**
93
+ * Do not call this function directly. It is intended for use with the
94
+ * asio::require and asio::prefer customisation points.
95
+ *
96
+ * For example:
97
+ * @code execution::any_executor<execution::blocking_t::possibly_t> ex = ...;
98
+ * auto ex2 = asio::requre(ex, execution::blocking.possibly); @endcode
99
+ */
100
+ template <typename Property>
101
+ any_executor require(Property) const;
102
+
103
+ /// Obtain a polymorphic wrapper with the specified property.
104
+ /**
105
+ * Do not call this function directly. It is intended for use with the
106
+ * asio::prefer customisation point.
107
+ *
108
+ * For example:
109
+ * @code execution::any_executor<execution::blocking_t::possibly_t> ex = ...;
110
+ * auto ex2 = asio::prefer(ex, execution::blocking.possibly); @endcode
111
+ */
112
+ template <typename Property>
113
+ any_executor prefer(Property) const;
114
+
115
+ /// Obtain the value associated with the specified property.
116
+ /**
117
+ * Do not call this function directly. It is intended for use with the
118
+ * asio::query customisation point.
119
+ *
120
+ * For example:
121
+ * @code execution::any_executor<execution::occupancy_t> ex = ...;
122
+ * size_t n = asio::query(ex, execution::occupancy); @endcode
123
+ */
124
+ template <typename Property>
125
+ typename Property::polymorphic_query_result_type query(Property) const;
126
+
127
+ /// Execute the function on the target executor.
128
+ /**
129
+ * Do not call this function directly. It is intended for use with the
130
+ * execution::execute customisation point.
131
+ *
132
+ * For example:
133
+ * @code execution::any_executor<> ex = ...;
134
+ * execution::execute(ex, my_function_object); @endcode
135
+ *
136
+ * Throws asio::bad_executor if the polymorphic wrapper has no target.
137
+ */
138
+ template <typename Function>
139
+ void execute(Function&& f) const;
140
+
141
+ /// Obtain the underlying execution context.
142
+ /**
143
+ * This function is provided for backward compatibility. It is automatically
144
+ * defined when the @c SupportableProperties... list includes a property of
145
+ * type <tt>execution::context_as<U></tt>, for some type <tt>U</tt>.
146
+ */
147
+ automatically_determined context() const;
148
+
149
+ /// Determine whether the wrapper has a target executor.
150
+ /**
151
+ * @returns @c true if the polymorphic wrapper has a target executor,
152
+ * otherwise false.
153
+ */
154
+ explicit operator bool() const noexcept;
155
+
156
+ /// Get the type of the target executor.
157
+ const type_info& target_type() const noexcept;
158
+
159
+ /// Get a pointer to the target executor.
160
+ template <typename Executor> Executor* target() noexcept;
161
+
162
+ /// Get a pointer to the target executor.
163
+ template <typename Executor> const Executor* target() const noexcept;
164
+ };
165
+
166
+ /// Equality operator.
167
+ /**
168
+ * @relates any_executor
169
+ */
170
+ template <typename... SupportableProperties>
171
+ bool operator==(const any_executor<SupportableProperties...>& a,
172
+ const any_executor<SupportableProperties...>& b) noexcept;
173
+
174
+ /// Equality operator.
175
+ /**
176
+ * @relates any_executor
177
+ */
178
+ template <typename... SupportableProperties>
179
+ bool operator==(const any_executor<SupportableProperties...>& a,
180
+ nullptr_t) noexcept;
181
+
182
+ /// Equality operator.
183
+ /**
184
+ * @relates any_executor
185
+ */
186
+ template <typename... SupportableProperties>
187
+ bool operator==(nullptr_t,
188
+ const any_executor<SupportableProperties...>& b) noexcept;
189
+
190
+ /// Inequality operator.
191
+ /**
192
+ * @relates any_executor
193
+ */
194
+ template <typename... SupportableProperties>
195
+ bool operator!=(const any_executor<SupportableProperties...>& a,
196
+ const any_executor<SupportableProperties...>& b) noexcept;
197
+
198
+ /// Inequality operator.
199
+ /**
200
+ * @relates any_executor
201
+ */
202
+ template <typename... SupportableProperties>
203
+ bool operator!=(const any_executor<SupportableProperties...>& a,
204
+ nullptr_t) noexcept;
205
+
206
+ /// Inequality operator.
207
+ /**
208
+ * @relates any_executor
209
+ */
210
+ template <typename... SupportableProperties>
211
+ bool operator!=(nullptr_t,
212
+ const any_executor<SupportableProperties...>& b) noexcept;
213
+
214
+ } // namespace execution
215
+
216
+ #else // defined(GENERATING_DOCUMENTATION)
217
+
218
+ namespace execution {
219
+
220
+ #if !defined(ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL)
221
+ #define ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL
222
+
223
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
224
+
225
+ template <typename... SupportableProperties>
226
+ class any_executor;
227
+
228
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
229
+
230
+ template <typename = void, typename = void, typename = void,
231
+ typename = void, typename = void, typename = void,
232
+ typename = void, typename = void, typename = void>
233
+ class any_executor;
234
+
235
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
236
+
237
+ #endif // !defined(ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL)
238
+
239
+ template <typename U>
240
+ struct context_as_t;
241
+
242
+ namespace detail {
243
+
244
+ // Traits used to detect whether a property is requirable or preferable, taking
245
+ // into account that T::is_requirable or T::is_preferable may not not be well
246
+ // formed.
247
+
248
+ template <typename T, typename = void>
249
+ struct is_requirable : false_type {};
250
+
251
+ template <typename T>
252
+ struct is_requirable<T, typename enable_if<T::is_requirable>::type> :
253
+ true_type {};
254
+
255
+ template <typename T, typename = void>
256
+ struct is_preferable : false_type {};
257
+
258
+ template <typename T>
259
+ struct is_preferable<T, typename enable_if<T::is_preferable>::type> :
260
+ true_type {};
261
+
262
+ // Trait used to detect context_as property, for backward compatibility.
263
+
264
+ template <typename T>
265
+ struct is_context_as : false_type {};
266
+
267
+ template <typename U>
268
+ struct is_context_as<context_as_t<U> > : true_type {};
269
+
270
+ // Helper template to:
271
+ // - Check if a target can supply the supportable properties.
272
+ // - Find the first convertible-from-T property in the list.
273
+
274
+ template <std::size_t I, typename Props>
275
+ struct supportable_properties;
276
+
277
+ template <std::size_t I, typename Prop>
278
+ struct supportable_properties<I, void(Prop)>
279
+ {
280
+ template <typename T>
281
+ struct is_valid_target : integral_constant<bool,
282
+ (
283
+ is_requirable<Prop>::value
284
+ ? can_require<T, Prop>::value
285
+ : true
286
+ )
287
+ &&
288
+ (
289
+ is_preferable<Prop>::value
290
+ ? can_prefer<T, Prop>::value
291
+ : true
292
+ )
293
+ &&
294
+ (
295
+ !is_requirable<Prop>::value && !is_preferable<Prop>::value
296
+ ? can_query<T, Prop>::value
297
+ : true
298
+ )
299
+ >
300
+ {
301
+ };
302
+
303
+ struct found
304
+ {
305
+ ASIO_STATIC_CONSTEXPR(bool, value = true);
306
+ typedef Prop type;
307
+ typedef typename Prop::polymorphic_query_result_type query_result_type;
308
+ ASIO_STATIC_CONSTEXPR(std::size_t, index = I);
309
+ };
310
+
311
+ struct not_found
312
+ {
313
+ ASIO_STATIC_CONSTEXPR(bool, value = false);
314
+ };
315
+
316
+ template <typename T>
317
+ struct find_convertible_property :
318
+ conditional<
319
+ is_same<T, Prop>::value || is_convertible<T, Prop>::value,
320
+ found,
321
+ not_found
322
+ >::type {};
323
+
324
+ template <typename T>
325
+ struct find_convertible_requirable_property :
326
+ conditional<
327
+ is_requirable<Prop>::value
328
+ && (is_same<T, Prop>::value || is_convertible<T, Prop>::value),
329
+ found,
330
+ not_found
331
+ >::type {};
332
+
333
+ template <typename T>
334
+ struct find_convertible_preferable_property :
335
+ conditional<
336
+ is_preferable<Prop>::value
337
+ && (is_same<T, Prop>::value || is_convertible<T, Prop>::value),
338
+ found,
339
+ not_found
340
+ >::type {};
341
+
342
+ struct find_context_as_property :
343
+ conditional<
344
+ is_context_as<Prop>::value,
345
+ found,
346
+ not_found
347
+ >::type {};
348
+ };
349
+
350
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
351
+
352
+ template <std::size_t I, typename Head, typename... Tail>
353
+ struct supportable_properties<I, void(Head, Tail...)>
354
+ {
355
+ template <typename T>
356
+ struct is_valid_target : integral_constant<bool,
357
+ (
358
+ supportable_properties<I,
359
+ void(Head)>::template is_valid_target<T>::value
360
+ &&
361
+ supportable_properties<I + 1,
362
+ void(Tail...)>::template is_valid_target<T>::value
363
+ )
364
+ >
365
+ {
366
+ };
367
+
368
+ template <typename T>
369
+ struct find_convertible_property :
370
+ conditional<
371
+ is_convertible<T, Head>::value,
372
+ typename supportable_properties<I, void(Head)>::found,
373
+ typename supportable_properties<I + 1,
374
+ void(Tail...)>::template find_convertible_property<T>
375
+ >::type {};
376
+
377
+ template <typename T>
378
+ struct find_convertible_requirable_property :
379
+ conditional<
380
+ is_requirable<Head>::value
381
+ && is_convertible<T, Head>::value,
382
+ typename supportable_properties<I, void(Head)>::found,
383
+ typename supportable_properties<I + 1,
384
+ void(Tail...)>::template find_convertible_requirable_property<T>
385
+ >::type {};
386
+
387
+ template <typename T>
388
+ struct find_convertible_preferable_property :
389
+ conditional<
390
+ is_preferable<Head>::value
391
+ && is_convertible<T, Head>::value,
392
+ typename supportable_properties<I, void(Head)>::found,
393
+ typename supportable_properties<I + 1,
394
+ void(Tail...)>::template find_convertible_preferable_property<T>
395
+ >::type {};
396
+
397
+ struct find_context_as_property :
398
+ conditional<
399
+ is_context_as<Head>::value,
400
+ typename supportable_properties<I, void(Head)>::found,
401
+ typename supportable_properties<I + 1,
402
+ void(Tail...)>::find_context_as_property
403
+ >::type {};
404
+ };
405
+
406
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
407
+
408
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF(n) \
409
+ template <std::size_t I, \
410
+ typename Head, ASIO_VARIADIC_TPARAMS(n)> \
411
+ struct supportable_properties<I, \
412
+ void(Head, ASIO_VARIADIC_TARGS(n))> \
413
+ { \
414
+ template <typename T> \
415
+ struct is_valid_target : integral_constant<bool, \
416
+ ( \
417
+ supportable_properties<I, \
418
+ void(Head)>::template is_valid_target<T>::value \
419
+ && \
420
+ supportable_properties<I + 1, \
421
+ void(ASIO_VARIADIC_TARGS(n))>::template \
422
+ is_valid_target<T>::value \
423
+ ) \
424
+ > \
425
+ { \
426
+ }; \
427
+ \
428
+ template <typename T> \
429
+ struct find_convertible_property : \
430
+ conditional< \
431
+ is_convertible<T, Head>::value, \
432
+ typename supportable_properties<I, void(Head)>::found, \
433
+ typename supportable_properties<I + 1, \
434
+ void(ASIO_VARIADIC_TARGS(n))>::template \
435
+ find_convertible_property<T> \
436
+ >::type {}; \
437
+ \
438
+ template <typename T> \
439
+ struct find_convertible_requirable_property : \
440
+ conditional< \
441
+ is_requirable<Head>::value \
442
+ && is_convertible<T, Head>::value, \
443
+ typename supportable_properties<I, void(Head)>::found, \
444
+ typename supportable_properties<I + 1, \
445
+ void(ASIO_VARIADIC_TARGS(n))>::template \
446
+ find_convertible_requirable_property<T> \
447
+ >::type {}; \
448
+ \
449
+ template <typename T> \
450
+ struct find_convertible_preferable_property : \
451
+ conditional< \
452
+ is_preferable<Head>::value \
453
+ && is_convertible<T, Head>::value, \
454
+ typename supportable_properties<I, void(Head)>::found, \
455
+ typename supportable_properties<I + 1, \
456
+ void(ASIO_VARIADIC_TARGS(n))>::template \
457
+ find_convertible_preferable_property<T> \
458
+ >::type {}; \
459
+ \
460
+ struct find_context_as_property : \
461
+ conditional< \
462
+ is_context_as<Head>::value, \
463
+ typename supportable_properties<I, void(Head)>::found, \
464
+ typename supportable_properties<I + 1, void( \
465
+ ASIO_VARIADIC_TARGS(n))>::find_context_as_property \
466
+ >::type {}; \
467
+ }; \
468
+ /**/
469
+ ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF)
470
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROPS_BASE_DEF
471
+
472
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
473
+
474
+ template <typename T, typename Props>
475
+ struct is_valid_target_executor :
476
+ conditional<
477
+ is_executor<T>::value,
478
+ typename supportable_properties<0, Props>::template is_valid_target<T>,
479
+ false_type
480
+ >::type
481
+ {
482
+ };
483
+
484
+ class any_executor_base
485
+ {
486
+ public:
487
+ any_executor_base() ASIO_NOEXCEPT
488
+ : object_fns_(object_fns_table<void>()),
489
+ target_(0),
490
+ target_fns_(target_fns_table<void>())
491
+ {
492
+ }
493
+
494
+ template <ASIO_EXECUTION_EXECUTOR Executor>
495
+ any_executor_base(Executor ex, false_type)
496
+ : target_fns_(target_fns_table<Executor>(
497
+ any_executor_base::query_blocking(ex,
498
+ can_query<const Executor&, const execution::blocking_t&>())
499
+ == execution::blocking.always))
500
+ {
501
+ any_executor_base::construct_object(ex,
502
+ integral_constant<bool,
503
+ sizeof(Executor) <= sizeof(object_type)
504
+ && alignment_of<Executor>::value <= alignment_of<object_type>::value
505
+ >());
506
+ }
507
+
508
+ template <ASIO_EXECUTION_EXECUTOR Executor>
509
+ any_executor_base(Executor other, true_type)
510
+ : object_fns_(object_fns_table<asio::detail::shared_ptr<void> >()),
511
+ target_fns_(other.target_fns_)
512
+ {
513
+ asio::detail::shared_ptr<Executor> p =
514
+ asio::detail::make_shared<Executor>(
515
+ ASIO_MOVE_CAST(Executor)(other));
516
+ target_ = p->template target<void>();
517
+ new (&object_) asio::detail::shared_ptr<void>(
518
+ ASIO_MOVE_CAST(asio::detail::shared_ptr<Executor>)(p));
519
+ }
520
+
521
+ any_executor_base(const any_executor_base& other) ASIO_NOEXCEPT
522
+ : object_fns_(other.object_fns_),
523
+ target_fns_(other.target_fns_)
524
+ {
525
+ object_fns_->copy(*this, other);
526
+ }
527
+
528
+ ~any_executor_base() ASIO_NOEXCEPT
529
+ {
530
+ object_fns_->destroy(*this);
531
+ }
532
+
533
+ any_executor_base& operator=(
534
+ const any_executor_base& other) ASIO_NOEXCEPT
535
+ {
536
+ if (this != &other)
537
+ {
538
+ object_fns_->destroy(*this);
539
+ object_fns_ = other.object_fns_;
540
+ target_fns_ = other.target_fns_;
541
+ object_fns_->copy(*this, other);
542
+ }
543
+ return *this;
544
+ }
545
+
546
+ any_executor_base& operator=(nullptr_t) ASIO_NOEXCEPT
547
+ {
548
+ object_fns_->destroy(*this);
549
+ target_ = 0;
550
+ object_fns_ = object_fns_table<void>();
551
+ target_fns_ = target_fns_table<void>();
552
+ return *this;
553
+ }
554
+
555
+ #if defined(ASIO_HAS_MOVE)
556
+
557
+ any_executor_base(any_executor_base&& other) ASIO_NOEXCEPT
558
+ : object_fns_(other.object_fns_),
559
+ target_fns_(other.target_fns_)
560
+ {
561
+ other.object_fns_ = object_fns_table<void>();
562
+ other.target_fns_ = target_fns_table<void>();
563
+ object_fns_->move(*this, other);
564
+ other.target_ = 0;
565
+ }
566
+
567
+ any_executor_base& operator=(
568
+ any_executor_base&& other) ASIO_NOEXCEPT
569
+ {
570
+ if (this != &other)
571
+ {
572
+ object_fns_->destroy(*this);
573
+ object_fns_ = other.object_fns_;
574
+ other.object_fns_ = object_fns_table<void>();
575
+ target_fns_ = other.target_fns_;
576
+ other.target_fns_ = target_fns_table<void>();
577
+ object_fns_->move(*this, other);
578
+ other.target_ = 0;
579
+ }
580
+ return *this;
581
+ }
582
+
583
+ #endif // defined(ASIO_HAS_MOVE)
584
+
585
+ void swap(any_executor_base& other) ASIO_NOEXCEPT
586
+ {
587
+ if (this != &other)
588
+ {
589
+ any_executor_base tmp(ASIO_MOVE_CAST(any_executor_base)(other));
590
+ other = ASIO_MOVE_CAST(any_executor_base)(*this);
591
+ *this = ASIO_MOVE_CAST(any_executor_base)(tmp);
592
+ }
593
+ }
594
+
595
+ template <typename F>
596
+ void execute(ASIO_MOVE_ARG(F) f) const
597
+ {
598
+ if (target_fns_->blocking_execute != 0)
599
+ {
600
+ asio::detail::non_const_lvalue<F> f2(f);
601
+ target_fns_->blocking_execute(*this, function_view(f2.value));
602
+ }
603
+ else
604
+ {
605
+ target_fns_->execute(*this,
606
+ function(ASIO_MOVE_CAST(F)(f), std::allocator<void>()));
607
+ }
608
+ }
609
+
610
+ template <typename Executor>
611
+ Executor* target()
612
+ {
613
+ return static_cast<Executor*>(target_);
614
+ }
615
+
616
+ template <typename Executor>
617
+ const Executor* target() const
618
+ {
619
+ return static_cast<Executor*>(target_);
620
+ }
621
+
622
+ const std::type_info& target_type() const
623
+ {
624
+ return target_fns_->target_type();
625
+ }
626
+
627
+ struct unspecified_bool_type_t {};
628
+ typedef void (*unspecified_bool_type)(unspecified_bool_type_t);
629
+ static void unspecified_bool_true(unspecified_bool_type_t) {}
630
+
631
+ operator unspecified_bool_type() const ASIO_NOEXCEPT
632
+ {
633
+ return target_ ? &any_executor_base::unspecified_bool_true : 0;
634
+ }
635
+
636
+ bool operator!() const ASIO_NOEXCEPT
637
+ {
638
+ return target_ == 0;
639
+ }
640
+
641
+ protected:
642
+ bool equality_helper(const any_executor_base& other) const ASIO_NOEXCEPT
643
+ {
644
+ if (target_ == other.target_)
645
+ return true;
646
+ if (target_ && !other.target_)
647
+ return false;
648
+ if (!target_ && other.target_)
649
+ return false;
650
+ if (target_fns_ != other.target_fns_)
651
+ return false;
652
+ return target_fns_->equal(*this, other);
653
+ }
654
+
655
+ template <typename Ex>
656
+ Ex& object()
657
+ {
658
+ return *static_cast<Ex*>(static_cast<void*>(&object_));
659
+ }
660
+
661
+ template <typename Ex>
662
+ const Ex& object() const
663
+ {
664
+ return *static_cast<const Ex*>(static_cast<const void*>(&object_));
665
+ }
666
+
667
+ struct object_fns
668
+ {
669
+ void (*destroy)(any_executor_base&);
670
+ void (*copy)(any_executor_base&, const any_executor_base&);
671
+ void (*move)(any_executor_base&, any_executor_base&);
672
+ const void* (*target)(const any_executor_base&);
673
+ };
674
+
675
+ static void destroy_void(any_executor_base&)
676
+ {
677
+ }
678
+
679
+ static void copy_void(any_executor_base& ex1, const any_executor_base&)
680
+ {
681
+ ex1.target_ = 0;
682
+ }
683
+
684
+ static void move_void(any_executor_base& ex1, any_executor_base&)
685
+ {
686
+ ex1.target_ = 0;
687
+ }
688
+
689
+ static const void* target_void(const any_executor_base&)
690
+ {
691
+ return 0;
692
+ }
693
+
694
+ template <typename Obj>
695
+ static const object_fns* object_fns_table(
696
+ typename enable_if<
697
+ is_same<Obj, void>::value
698
+ >::type* = 0)
699
+ {
700
+ static const object_fns fns =
701
+ {
702
+ &any_executor_base::destroy_void,
703
+ &any_executor_base::copy_void,
704
+ &any_executor_base::move_void,
705
+ &any_executor_base::target_void
706
+ };
707
+ return &fns;
708
+ }
709
+
710
+ static void destroy_shared(any_executor_base& ex)
711
+ {
712
+ typedef asio::detail::shared_ptr<void> type;
713
+ ex.object<type>().~type();
714
+ }
715
+
716
+ static void copy_shared(any_executor_base& ex1, const any_executor_base& ex2)
717
+ {
718
+ typedef asio::detail::shared_ptr<void> type;
719
+ new (&ex1.object_) type(ex2.object<type>());
720
+ ex1.target_ = ex2.target_;
721
+ }
722
+
723
+ static void move_shared(any_executor_base& ex1, any_executor_base& ex2)
724
+ {
725
+ typedef asio::detail::shared_ptr<void> type;
726
+ new (&ex1.object_) type(ASIO_MOVE_CAST(type)(ex2.object<type>()));
727
+ ex1.target_ = ex2.target_;
728
+ ex2.object<type>().~type();
729
+ }
730
+
731
+ static const void* target_shared(const any_executor_base& ex)
732
+ {
733
+ typedef asio::detail::shared_ptr<void> type;
734
+ return ex.object<type>().get();
735
+ }
736
+
737
+ template <typename Obj>
738
+ static const object_fns* object_fns_table(
739
+ typename enable_if<
740
+ is_same<Obj, asio::detail::shared_ptr<void> >::value
741
+ >::type* = 0)
742
+ {
743
+ static const object_fns fns =
744
+ {
745
+ &any_executor_base::destroy_shared,
746
+ &any_executor_base::copy_shared,
747
+ &any_executor_base::move_shared,
748
+ &any_executor_base::target_shared
749
+ };
750
+ return &fns;
751
+ }
752
+
753
+ template <typename Obj>
754
+ static void destroy_object(any_executor_base& ex)
755
+ {
756
+ ex.object<Obj>().~Obj();
757
+ }
758
+
759
+ template <typename Obj>
760
+ static void copy_object(any_executor_base& ex1, const any_executor_base& ex2)
761
+ {
762
+ new (&ex1.object_) Obj(ex2.object<Obj>());
763
+ ex1.target_ = &ex1.object<Obj>();
764
+ }
765
+
766
+ template <typename Obj>
767
+ static void move_object(any_executor_base& ex1, any_executor_base& ex2)
768
+ {
769
+ new (&ex1.object_) Obj(ASIO_MOVE_CAST(Obj)(ex2.object<Obj>()));
770
+ ex1.target_ = &ex1.object<Obj>();
771
+ ex2.object<Obj>().~Obj();
772
+ }
773
+
774
+ template <typename Obj>
775
+ static const void* target_object(const any_executor_base& ex)
776
+ {
777
+ return &ex.object<Obj>();
778
+ }
779
+
780
+ template <typename Obj>
781
+ static const object_fns* object_fns_table(
782
+ typename enable_if<
783
+ !is_same<Obj, void>::value
784
+ && !is_same<Obj, asio::detail::shared_ptr<void> >::value
785
+ >::type* = 0)
786
+ {
787
+ static const object_fns fns =
788
+ {
789
+ &any_executor_base::destroy_object<Obj>,
790
+ &any_executor_base::copy_object<Obj>,
791
+ &any_executor_base::move_object<Obj>,
792
+ &any_executor_base::target_object<Obj>
793
+ };
794
+ return &fns;
795
+ }
796
+
797
+ typedef asio::detail::executor_function function;
798
+ typedef asio::detail::executor_function_view function_view;
799
+
800
+ struct target_fns
801
+ {
802
+ const std::type_info& (*target_type)();
803
+ bool (*equal)(const any_executor_base&, const any_executor_base&);
804
+ void (*execute)(const any_executor_base&, ASIO_MOVE_ARG(function));
805
+ void (*blocking_execute)(const any_executor_base&, function_view);
806
+ };
807
+
808
+ static const std::type_info& target_type_void()
809
+ {
810
+ return typeid(void);
811
+ }
812
+
813
+ static bool equal_void(const any_executor_base&, const any_executor_base&)
814
+ {
815
+ return true;
816
+ }
817
+
818
+ static void execute_void(const any_executor_base&,
819
+ ASIO_MOVE_ARG(function))
820
+ {
821
+ bad_executor ex;
822
+ asio::detail::throw_exception(ex);
823
+ }
824
+
825
+ static void blocking_execute_void(const any_executor_base&, function_view)
826
+ {
827
+ bad_executor ex;
828
+ asio::detail::throw_exception(ex);
829
+ }
830
+
831
+ template <typename Ex>
832
+ static const target_fns* target_fns_table(
833
+ typename enable_if<
834
+ is_same<Ex, void>::value
835
+ >::type* = 0)
836
+ {
837
+ static const target_fns fns =
838
+ {
839
+ &any_executor_base::target_type_void,
840
+ &any_executor_base::equal_void,
841
+ &any_executor_base::execute_void,
842
+ &any_executor_base::blocking_execute_void
843
+ };
844
+ return &fns;
845
+ }
846
+
847
+ template <typename Ex>
848
+ static const std::type_info& target_type_ex()
849
+ {
850
+ return typeid(Ex);
851
+ }
852
+
853
+ template <typename Ex>
854
+ static bool equal_ex(const any_executor_base& ex1,
855
+ const any_executor_base& ex2)
856
+ {
857
+ return *ex1.target<Ex>() == *ex2.target<Ex>();
858
+ }
859
+
860
+ template <typename Ex>
861
+ static void execute_ex(const any_executor_base& ex,
862
+ ASIO_MOVE_ARG(function) f)
863
+ {
864
+ execution::execute(*ex.target<Ex>(), ASIO_MOVE_CAST(function)(f));
865
+ }
866
+
867
+ template <typename Ex>
868
+ static void blocking_execute_ex(const any_executor_base& ex, function_view f)
869
+ {
870
+ execution::execute(*ex.target<Ex>(), f);
871
+ }
872
+
873
+ template <typename Ex>
874
+ static const target_fns* target_fns_table(bool is_always_blocking,
875
+ typename enable_if<
876
+ !is_same<Ex, void>::value
877
+ >::type* = 0)
878
+ {
879
+ static const target_fns fns_with_execute =
880
+ {
881
+ &any_executor_base::target_type_ex<Ex>,
882
+ &any_executor_base::equal_ex<Ex>,
883
+ &any_executor_base::execute_ex<Ex>,
884
+ 0
885
+ };
886
+
887
+ static const target_fns fns_with_blocking_execute =
888
+ {
889
+ &any_executor_base::target_type_ex<Ex>,
890
+ &any_executor_base::equal_ex<Ex>,
891
+ 0,
892
+ &any_executor_base::blocking_execute_ex<Ex>
893
+ };
894
+
895
+ return is_always_blocking ? &fns_with_blocking_execute : &fns_with_execute;
896
+ }
897
+
898
+ #if defined(ASIO_MSVC)
899
+ # pragma warning (push)
900
+ # pragma warning (disable:4702)
901
+ #endif // defined(ASIO_MSVC)
902
+
903
+ static void query_fn_void(void*, const void*, const void*)
904
+ {
905
+ bad_executor ex;
906
+ asio::detail::throw_exception(ex);
907
+ }
908
+
909
+ template <typename Ex, class Prop>
910
+ static void query_fn_non_void(void*, const void* ex, const void* prop,
911
+ typename enable_if<
912
+ asio::can_query<const Ex&, const Prop&>::value
913
+ && is_same<typename Prop::polymorphic_query_result_type, void>::value
914
+ >::type*)
915
+ {
916
+ asio::query(*static_cast<const Ex*>(ex),
917
+ *static_cast<const Prop*>(prop));
918
+ }
919
+
920
+ template <typename Ex, class Prop>
921
+ static void query_fn_non_void(void*, const void*, const void*,
922
+ typename enable_if<
923
+ !asio::can_query<const Ex&, const Prop&>::value
924
+ && is_same<typename Prop::polymorphic_query_result_type, void>::value
925
+ >::type*)
926
+ {
927
+ }
928
+
929
+ template <typename Ex, class Prop>
930
+ static void query_fn_non_void(void* result, const void* ex, const void* prop,
931
+ typename enable_if<
932
+ asio::can_query<const Ex&, const Prop&>::value
933
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
934
+ && is_reference<typename Prop::polymorphic_query_result_type>::value
935
+ >::type*)
936
+ {
937
+ *static_cast<typename remove_reference<
938
+ typename Prop::polymorphic_query_result_type>::type**>(result)
939
+ = &static_cast<typename Prop::polymorphic_query_result_type>(
940
+ asio::query(*static_cast<const Ex*>(ex),
941
+ *static_cast<const Prop*>(prop)));
942
+ }
943
+
944
+ template <typename Ex, class Prop>
945
+ static void query_fn_non_void(void*, const void*, const void*,
946
+ typename enable_if<
947
+ !asio::can_query<const Ex&, const Prop&>::value
948
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
949
+ && is_reference<typename Prop::polymorphic_query_result_type>::value
950
+ >::type*)
951
+ {
952
+ std::terminate(); // Combination should not be possible.
953
+ }
954
+
955
+ template <typename Ex, class Prop>
956
+ static void query_fn_non_void(void* result, const void* ex, const void* prop,
957
+ typename enable_if<
958
+ asio::can_query<const Ex&, const Prop&>::value
959
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
960
+ && is_scalar<typename Prop::polymorphic_query_result_type>::value
961
+ >::type*)
962
+ {
963
+ *static_cast<typename Prop::polymorphic_query_result_type*>(result)
964
+ = static_cast<typename Prop::polymorphic_query_result_type>(
965
+ asio::query(*static_cast<const Ex*>(ex),
966
+ *static_cast<const Prop*>(prop)));
967
+ }
968
+
969
+ template <typename Ex, class Prop>
970
+ static void query_fn_non_void(void* result, const void*, const void*,
971
+ typename enable_if<
972
+ !asio::can_query<const Ex&, const Prop&>::value
973
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
974
+ && is_scalar<typename Prop::polymorphic_query_result_type>::value
975
+ >::type*)
976
+ {
977
+ *static_cast<typename Prop::polymorphic_query_result_type*>(result)
978
+ = typename Prop::polymorphic_query_result_type();
979
+ }
980
+
981
+ template <typename Ex, class Prop>
982
+ static void query_fn_non_void(void* result, const void* ex, const void* prop,
983
+ typename enable_if<
984
+ asio::can_query<const Ex&, const Prop&>::value
985
+ && !is_same<typename Prop::polymorphic_query_result_type, void>::value
986
+ && !is_reference<typename Prop::polymorphic_query_result_type>::value
987
+ && !is_scalar<typename Prop::polymorphic_query_result_type>::value
988
+ >::type*)
989
+ {
990
+ *static_cast<typename Prop::polymorphic_query_result_type**>(result)
991
+ = new typename Prop::polymorphic_query_result_type(
992
+ asio::query(*static_cast<const Ex*>(ex),
993
+ *static_cast<const Prop*>(prop)));
994
+ }
995
+
996
+ template <typename Ex, class Prop>
997
+ static void query_fn_non_void(void* result, const void*, const void*, ...)
998
+ {
999
+ *static_cast<typename Prop::polymorphic_query_result_type**>(result)
1000
+ = new typename Prop::polymorphic_query_result_type();
1001
+ }
1002
+
1003
+ template <typename Ex, class Prop>
1004
+ static void query_fn_impl(void* result, const void* ex, const void* prop,
1005
+ typename enable_if<
1006
+ is_same<Ex, void>::value
1007
+ >::type*)
1008
+ {
1009
+ query_fn_void(result, ex, prop);
1010
+ }
1011
+
1012
+ template <typename Ex, class Prop>
1013
+ static void query_fn_impl(void* result, const void* ex, const void* prop,
1014
+ typename enable_if<
1015
+ !is_same<Ex, void>::value
1016
+ >::type*)
1017
+ {
1018
+ query_fn_non_void<Ex, Prop>(result, ex, prop, 0);
1019
+ }
1020
+
1021
+ template <typename Ex, class Prop>
1022
+ static void query_fn(void* result, const void* ex, const void* prop)
1023
+ {
1024
+ query_fn_impl<Ex, Prop>(result, ex, prop, 0);
1025
+ }
1026
+
1027
+ template <typename Poly, typename Ex, class Prop>
1028
+ static Poly require_fn_impl(const void*, const void*,
1029
+ typename enable_if<
1030
+ is_same<Ex, void>::value
1031
+ >::type*)
1032
+ {
1033
+ bad_executor ex;
1034
+ asio::detail::throw_exception(ex);
1035
+ return Poly();
1036
+ }
1037
+
1038
+ template <typename Poly, typename Ex, class Prop>
1039
+ static Poly require_fn_impl(const void* ex, const void* prop,
1040
+ typename enable_if<
1041
+ !is_same<Ex, void>::value && Prop::is_requirable
1042
+ >::type*)
1043
+ {
1044
+ return asio::require(*static_cast<const Ex*>(ex),
1045
+ *static_cast<const Prop*>(prop));
1046
+ }
1047
+
1048
+ template <typename Poly, typename Ex, class Prop>
1049
+ static Poly require_fn_impl(const void*, const void*, ...)
1050
+ {
1051
+ return Poly();
1052
+ }
1053
+
1054
+ template <typename Poly, typename Ex, class Prop>
1055
+ static Poly require_fn(const void* ex, const void* prop)
1056
+ {
1057
+ return require_fn_impl<Poly, Ex, Prop>(ex, prop, 0);
1058
+ }
1059
+
1060
+ template <typename Poly, typename Ex, class Prop>
1061
+ static Poly prefer_fn_impl(const void*, const void*,
1062
+ typename enable_if<
1063
+ is_same<Ex, void>::value
1064
+ >::type*)
1065
+ {
1066
+ bad_executor ex;
1067
+ asio::detail::throw_exception(ex);
1068
+ return Poly();
1069
+ }
1070
+
1071
+ template <typename Poly, typename Ex, class Prop>
1072
+ static Poly prefer_fn_impl(const void* ex, const void* prop,
1073
+ typename enable_if<
1074
+ !is_same<Ex, void>::value && Prop::is_preferable
1075
+ >::type*)
1076
+ {
1077
+ return asio::prefer(*static_cast<const Ex*>(ex),
1078
+ *static_cast<const Prop*>(prop));
1079
+ }
1080
+
1081
+ template <typename Poly, typename Ex, class Prop>
1082
+ static Poly prefer_fn_impl(const void*, const void*, ...)
1083
+ {
1084
+ return Poly();
1085
+ }
1086
+
1087
+ template <typename Poly, typename Ex, class Prop>
1088
+ static Poly prefer_fn(const void* ex, const void* prop)
1089
+ {
1090
+ return prefer_fn_impl<Poly, Ex, Prop>(ex, prop, 0);
1091
+ }
1092
+
1093
+ template <typename Poly>
1094
+ struct prop_fns
1095
+ {
1096
+ void (*query)(void*, const void*, const void*);
1097
+ Poly (*require)(const void*, const void*);
1098
+ Poly (*prefer)(const void*, const void*);
1099
+ };
1100
+
1101
+ #if defined(ASIO_MSVC)
1102
+ # pragma warning (pop)
1103
+ #endif // defined(ASIO_MSVC)
1104
+
1105
+ private:
1106
+ template <typename Executor>
1107
+ static execution::blocking_t query_blocking(const Executor& ex, true_type)
1108
+ {
1109
+ return asio::query(ex, execution::blocking);
1110
+ }
1111
+
1112
+ template <typename Executor>
1113
+ static execution::blocking_t query_blocking(const Executor&, false_type)
1114
+ {
1115
+ return execution::blocking_t();
1116
+ }
1117
+
1118
+ template <typename Executor>
1119
+ void construct_object(Executor& ex, true_type)
1120
+ {
1121
+ object_fns_ = object_fns_table<Executor>();
1122
+ target_ = new (&object_) Executor(ASIO_MOVE_CAST(Executor)(ex));
1123
+ }
1124
+
1125
+ template <typename Executor>
1126
+ void construct_object(Executor& ex, false_type)
1127
+ {
1128
+ object_fns_ = object_fns_table<asio::detail::shared_ptr<void> >();
1129
+ asio::detail::shared_ptr<Executor> p =
1130
+ asio::detail::make_shared<Executor>(
1131
+ ASIO_MOVE_CAST(Executor)(ex));
1132
+ target_ = p.get();
1133
+ new (&object_) asio::detail::shared_ptr<void>(
1134
+ ASIO_MOVE_CAST(asio::detail::shared_ptr<Executor>)(p));
1135
+ }
1136
+
1137
+ /*private:*/public:
1138
+ // template <typename...> friend class any_executor;
1139
+
1140
+ typedef aligned_storage<
1141
+ sizeof(asio::detail::shared_ptr<void>),
1142
+ alignment_of<asio::detail::shared_ptr<void> >::value
1143
+ >::type object_type;
1144
+
1145
+ object_type object_;
1146
+ const object_fns* object_fns_;
1147
+ void* target_;
1148
+ const target_fns* target_fns_;
1149
+ };
1150
+
1151
+ template <typename Derived, typename Property, typename = void>
1152
+ struct any_executor_context
1153
+ {
1154
+ };
1155
+
1156
+ #if !defined(ASIO_NO_TS_EXECUTORS)
1157
+
1158
+ template <typename Derived, typename Property>
1159
+ struct any_executor_context<Derived, Property,
1160
+ typename enable_if<Property::value>::type>
1161
+ {
1162
+ typename Property::query_result_type context() const
1163
+ {
1164
+ return static_cast<const Derived*>(this)->query(typename Property::type());
1165
+ }
1166
+ };
1167
+
1168
+ #endif // !defined(ASIO_NO_TS_EXECUTORS)
1169
+
1170
+ } // namespace detail
1171
+
1172
+ template <>
1173
+ class any_executor<> : public detail::any_executor_base
1174
+ {
1175
+ public:
1176
+ any_executor() ASIO_NOEXCEPT
1177
+ : detail::any_executor_base()
1178
+ {
1179
+ }
1180
+
1181
+ any_executor(nullptr_t) ASIO_NOEXCEPT
1182
+ : detail::any_executor_base()
1183
+ {
1184
+ }
1185
+
1186
+ template <typename Executor>
1187
+ any_executor(Executor ex,
1188
+ typename enable_if<
1189
+ conditional<
1190
+ !is_same<Executor, any_executor>::value
1191
+ && !is_base_of<detail::any_executor_base, Executor>::value,
1192
+ is_executor<Executor>,
1193
+ false_type
1194
+ >::type::value
1195
+ >::type* = 0)
1196
+ : detail::any_executor_base(
1197
+ ASIO_MOVE_CAST(Executor)(ex), false_type())
1198
+ {
1199
+ }
1200
+
1201
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
1202
+
1203
+ template <typename... OtherSupportableProperties>
1204
+ any_executor(any_executor<OtherSupportableProperties...> other)
1205
+ : detail::any_executor_base(
1206
+ static_cast<const detail::any_executor_base&>(other))
1207
+ {
1208
+ }
1209
+
1210
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
1211
+
1212
+ template <typename U0, typename U1, typename U2, typename U3,
1213
+ typename U4, typename U5, typename U6, typename U7>
1214
+ any_executor(any_executor<U0, U1, U2, U3, U4, U5, U6, U7> other)
1215
+ : detail::any_executor_base(
1216
+ static_cast<const detail::any_executor_base&>(other))
1217
+ {
1218
+ }
1219
+
1220
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
1221
+
1222
+ any_executor(const any_executor& other) ASIO_NOEXCEPT
1223
+ : detail::any_executor_base(
1224
+ static_cast<const detail::any_executor_base&>(other))
1225
+ {
1226
+ }
1227
+
1228
+ any_executor& operator=(const any_executor& other) ASIO_NOEXCEPT
1229
+ {
1230
+ if (this != &other)
1231
+ {
1232
+ detail::any_executor_base::operator=(
1233
+ static_cast<const detail::any_executor_base&>(other));
1234
+ }
1235
+ return *this;
1236
+ }
1237
+
1238
+ any_executor& operator=(nullptr_t p) ASIO_NOEXCEPT
1239
+ {
1240
+ detail::any_executor_base::operator=(p);
1241
+ return *this;
1242
+ }
1243
+
1244
+ #if defined(ASIO_HAS_MOVE)
1245
+
1246
+ any_executor(any_executor&& other) ASIO_NOEXCEPT
1247
+ : detail::any_executor_base(
1248
+ static_cast<any_executor_base&&>(
1249
+ static_cast<any_executor_base&>(other)))
1250
+ {
1251
+ }
1252
+
1253
+ any_executor& operator=(any_executor&& other) ASIO_NOEXCEPT
1254
+ {
1255
+ if (this != &other)
1256
+ {
1257
+ detail::any_executor_base::operator=(
1258
+ static_cast<detail::any_executor_base&&>(
1259
+ static_cast<detail::any_executor_base&>(other)));
1260
+ }
1261
+ return *this;
1262
+ }
1263
+
1264
+ #endif // defined(ASIO_HAS_MOVE)
1265
+
1266
+ void swap(any_executor& other) ASIO_NOEXCEPT
1267
+ {
1268
+ detail::any_executor_base::swap(
1269
+ static_cast<detail::any_executor_base&>(other));
1270
+ }
1271
+
1272
+ using detail::any_executor_base::execute;
1273
+ using detail::any_executor_base::target;
1274
+ using detail::any_executor_base::target_type;
1275
+ using detail::any_executor_base::operator unspecified_bool_type;
1276
+ using detail::any_executor_base::operator!;
1277
+
1278
+ bool equality_helper(const any_executor& other) const ASIO_NOEXCEPT
1279
+ {
1280
+ return any_executor_base::equality_helper(other);
1281
+ }
1282
+ };
1283
+
1284
+ inline bool operator==(const any_executor<>& a,
1285
+ const any_executor<>& b) ASIO_NOEXCEPT
1286
+ {
1287
+ return a.equality_helper(b);
1288
+ }
1289
+
1290
+ inline bool operator==(const any_executor<>& a, nullptr_t) ASIO_NOEXCEPT
1291
+ {
1292
+ return !a;
1293
+ }
1294
+
1295
+ inline bool operator==(nullptr_t, const any_executor<>& b) ASIO_NOEXCEPT
1296
+ {
1297
+ return !b;
1298
+ }
1299
+
1300
+ inline bool operator!=(const any_executor<>& a,
1301
+ const any_executor<>& b) ASIO_NOEXCEPT
1302
+ {
1303
+ return !a.equality_helper(b);
1304
+ }
1305
+
1306
+ inline bool operator!=(const any_executor<>& a, nullptr_t) ASIO_NOEXCEPT
1307
+ {
1308
+ return !!a;
1309
+ }
1310
+
1311
+ inline bool operator!=(nullptr_t, const any_executor<>& b) ASIO_NOEXCEPT
1312
+ {
1313
+ return !!b;
1314
+ }
1315
+
1316
+ inline void swap(any_executor<>& a, any_executor<>& b) ASIO_NOEXCEPT
1317
+ {
1318
+ return a.swap(b);
1319
+ }
1320
+
1321
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
1322
+
1323
+ template <typename... SupportableProperties>
1324
+ class any_executor :
1325
+ public detail::any_executor_base,
1326
+ public detail::any_executor_context<
1327
+ any_executor<SupportableProperties...>,
1328
+ typename detail::supportable_properties<
1329
+ 0, void(SupportableProperties...)>::find_context_as_property>
1330
+ {
1331
+ public:
1332
+ any_executor() ASIO_NOEXCEPT
1333
+ : detail::any_executor_base(),
1334
+ prop_fns_(prop_fns_table<void>())
1335
+ {
1336
+ }
1337
+
1338
+ any_executor(nullptr_t) ASIO_NOEXCEPT
1339
+ : detail::any_executor_base(),
1340
+ prop_fns_(prop_fns_table<void>())
1341
+ {
1342
+ }
1343
+
1344
+ template <typename Executor>
1345
+ any_executor(Executor ex,
1346
+ typename enable_if<
1347
+ conditional<
1348
+ !is_same<Executor, any_executor>::value
1349
+ && !is_base_of<detail::any_executor_base, Executor>::value,
1350
+ detail::is_valid_target_executor<
1351
+ Executor, void(SupportableProperties...)>,
1352
+ false_type
1353
+ >::type::value
1354
+ >::type* = 0)
1355
+ : detail::any_executor_base(
1356
+ ASIO_MOVE_CAST(Executor)(ex), false_type()),
1357
+ prop_fns_(prop_fns_table<Executor>())
1358
+ {
1359
+ }
1360
+
1361
+ template <typename... OtherSupportableProperties>
1362
+ any_executor(any_executor<OtherSupportableProperties...> other,
1363
+ typename enable_if<
1364
+ conditional<
1365
+ !is_same<
1366
+ any_executor<OtherSupportableProperties...>,
1367
+ any_executor
1368
+ >::value,
1369
+ typename detail::supportable_properties<
1370
+ 0, void(SupportableProperties...)>::template is_valid_target<
1371
+ any_executor<OtherSupportableProperties...> >,
1372
+ false_type
1373
+ >::type::value
1374
+ >::type* = 0)
1375
+ : detail::any_executor_base(ASIO_MOVE_CAST(
1376
+ any_executor<OtherSupportableProperties...>)(other), true_type()),
1377
+ prop_fns_(prop_fns_table<any_executor<OtherSupportableProperties...> >())
1378
+ {
1379
+ }
1380
+
1381
+ any_executor(const any_executor& other) ASIO_NOEXCEPT
1382
+ : detail::any_executor_base(
1383
+ static_cast<const detail::any_executor_base&>(other)),
1384
+ prop_fns_(other.prop_fns_)
1385
+ {
1386
+ }
1387
+
1388
+ any_executor& operator=(const any_executor& other) ASIO_NOEXCEPT
1389
+ {
1390
+ if (this != &other)
1391
+ {
1392
+ prop_fns_ = other.prop_fns_;
1393
+ detail::any_executor_base::operator=(
1394
+ static_cast<const detail::any_executor_base&>(other));
1395
+ }
1396
+ return *this;
1397
+ }
1398
+
1399
+ any_executor& operator=(nullptr_t p) ASIO_NOEXCEPT
1400
+ {
1401
+ prop_fns_ = prop_fns_table<void>();
1402
+ detail::any_executor_base::operator=(p);
1403
+ return *this;
1404
+ }
1405
+
1406
+ #if defined(ASIO_HAS_MOVE)
1407
+
1408
+ any_executor(any_executor&& other) ASIO_NOEXCEPT
1409
+ : detail::any_executor_base(
1410
+ static_cast<any_executor_base&&>(
1411
+ static_cast<any_executor_base&>(other))),
1412
+ prop_fns_(other.prop_fns_)
1413
+ {
1414
+ other.prop_fns_ = prop_fns_table<void>();
1415
+ }
1416
+
1417
+ any_executor& operator=(any_executor&& other) ASIO_NOEXCEPT
1418
+ {
1419
+ if (this != &other)
1420
+ {
1421
+ prop_fns_ = other.prop_fns_;
1422
+ detail::any_executor_base::operator=(
1423
+ static_cast<detail::any_executor_base&&>(
1424
+ static_cast<detail::any_executor_base&>(other)));
1425
+ }
1426
+ return *this;
1427
+ }
1428
+
1429
+ #endif // defined(ASIO_HAS_MOVE)
1430
+
1431
+ void swap(any_executor& other) ASIO_NOEXCEPT
1432
+ {
1433
+ if (this != &other)
1434
+ {
1435
+ detail::any_executor_base::swap(
1436
+ static_cast<detail::any_executor_base&>(other));
1437
+ const prop_fns<any_executor>* tmp_prop_fns = other.prop_fns_;
1438
+ other.prop_fns_ = prop_fns_;
1439
+ prop_fns_ = tmp_prop_fns;
1440
+ }
1441
+ }
1442
+
1443
+ using detail::any_executor_base::execute;
1444
+ using detail::any_executor_base::target;
1445
+ using detail::any_executor_base::target_type;
1446
+ using detail::any_executor_base::operator unspecified_bool_type;
1447
+ using detail::any_executor_base::operator!;
1448
+
1449
+ bool equality_helper(const any_executor& other) const ASIO_NOEXCEPT
1450
+ {
1451
+ return any_executor_base::equality_helper(other);
1452
+ }
1453
+
1454
+ template <typename T>
1455
+ struct find_convertible_property :
1456
+ detail::supportable_properties<
1457
+ 0, void(SupportableProperties...)>::template
1458
+ find_convertible_property<T> {};
1459
+
1460
+ template <typename Property>
1461
+ void query(const Property& p,
1462
+ typename enable_if<
1463
+ is_same<
1464
+ typename find_convertible_property<Property>::query_result_type,
1465
+ void
1466
+ >::value
1467
+ >::type* = 0) const
1468
+ {
1469
+ typedef find_convertible_property<Property> found;
1470
+ prop_fns_[found::index].query(0, object_fns_->target(*this),
1471
+ &static_cast<const typename found::type&>(p));
1472
+ }
1473
+
1474
+ template <typename Property>
1475
+ typename find_convertible_property<Property>::query_result_type
1476
+ query(const Property& p,
1477
+ typename enable_if<
1478
+ !is_same<
1479
+ typename find_convertible_property<Property>::query_result_type,
1480
+ void
1481
+ >::value
1482
+ &&
1483
+ is_reference<
1484
+ typename find_convertible_property<Property>::query_result_type
1485
+ >::value
1486
+ >::type* = 0) const
1487
+ {
1488
+ typedef find_convertible_property<Property> found;
1489
+ typename remove_reference<
1490
+ typename found::query_result_type>::type* result = 0;
1491
+ prop_fns_[found::index].query(&result, object_fns_->target(*this),
1492
+ &static_cast<const typename found::type&>(p));
1493
+ return *result;
1494
+ }
1495
+
1496
+ template <typename Property>
1497
+ typename find_convertible_property<Property>::query_result_type
1498
+ query(const Property& p,
1499
+ typename enable_if<
1500
+ !is_same<
1501
+ typename find_convertible_property<Property>::query_result_type,
1502
+ void
1503
+ >::value
1504
+ &&
1505
+ is_scalar<
1506
+ typename find_convertible_property<Property>::query_result_type
1507
+ >::value
1508
+ >::type* = 0) const
1509
+ {
1510
+ typedef find_convertible_property<Property> found;
1511
+ typename found::query_result_type result;
1512
+ prop_fns_[found::index].query(&result, object_fns_->target(*this),
1513
+ &static_cast<const typename found::type&>(p));
1514
+ return result;
1515
+ }
1516
+
1517
+ template <typename Property>
1518
+ typename find_convertible_property<Property>::query_result_type
1519
+ query(const Property& p,
1520
+ typename enable_if<
1521
+ !is_same<
1522
+ typename find_convertible_property<Property>::query_result_type,
1523
+ void
1524
+ >::value
1525
+ &&
1526
+ !is_reference<
1527
+ typename find_convertible_property<Property>::query_result_type
1528
+ >::value
1529
+ &&
1530
+ !is_scalar<
1531
+ typename find_convertible_property<Property>::query_result_type
1532
+ >::value
1533
+ >::type* = 0) const
1534
+ {
1535
+ typedef find_convertible_property<Property> found;
1536
+ typename found::query_result_type* result;
1537
+ prop_fns_[found::index].query(&result, object_fns_->target(*this),
1538
+ &static_cast<const typename found::type&>(p));
1539
+ return *asio::detail::scoped_ptr<
1540
+ typename found::query_result_type>(result);
1541
+ }
1542
+
1543
+ template <typename T>
1544
+ struct find_convertible_requirable_property :
1545
+ detail::supportable_properties<
1546
+ 0, void(SupportableProperties...)>::template
1547
+ find_convertible_requirable_property<T> {};
1548
+
1549
+ template <typename Property>
1550
+ any_executor require(const Property& p,
1551
+ typename enable_if<
1552
+ find_convertible_requirable_property<Property>::value
1553
+ >::type* = 0) const
1554
+ {
1555
+ typedef find_convertible_requirable_property<Property> found;
1556
+ return prop_fns_[found::index].require(object_fns_->target(*this),
1557
+ &static_cast<const typename found::type&>(p));
1558
+ }
1559
+
1560
+ template <typename T>
1561
+ struct find_convertible_preferable_property :
1562
+ detail::supportable_properties<
1563
+ 0, void(SupportableProperties...)>::template
1564
+ find_convertible_preferable_property<T> {};
1565
+
1566
+ template <typename Property>
1567
+ any_executor prefer(const Property& p,
1568
+ typename enable_if<
1569
+ find_convertible_preferable_property<Property>::value
1570
+ >::type* = 0) const
1571
+ {
1572
+ typedef find_convertible_preferable_property<Property> found;
1573
+ return prop_fns_[found::index].prefer(object_fns_->target(*this),
1574
+ &static_cast<const typename found::type&>(p));
1575
+ }
1576
+
1577
+ //private:
1578
+ template <typename Ex>
1579
+ static const prop_fns<any_executor>* prop_fns_table()
1580
+ {
1581
+ static const prop_fns<any_executor> fns[] =
1582
+ {
1583
+ {
1584
+ &detail::any_executor_base::query_fn<
1585
+ Ex, SupportableProperties>,
1586
+ &detail::any_executor_base::require_fn<
1587
+ any_executor, Ex, SupportableProperties>,
1588
+ &detail::any_executor_base::prefer_fn<
1589
+ any_executor, Ex, SupportableProperties>
1590
+ }...
1591
+ };
1592
+ return fns;
1593
+ }
1594
+
1595
+ const prop_fns<any_executor>* prop_fns_;
1596
+ };
1597
+
1598
+ template <typename... SupportableProperties>
1599
+ inline bool operator==(const any_executor<SupportableProperties...>& a,
1600
+ const any_executor<SupportableProperties...>& b) ASIO_NOEXCEPT
1601
+ {
1602
+ return a.equality_helper(b);
1603
+ }
1604
+
1605
+ template <typename... SupportableProperties>
1606
+ inline bool operator==(const any_executor<SupportableProperties...>& a,
1607
+ nullptr_t) ASIO_NOEXCEPT
1608
+ {
1609
+ return !a;
1610
+ }
1611
+
1612
+ template <typename... SupportableProperties>
1613
+ inline bool operator==(nullptr_t,
1614
+ const any_executor<SupportableProperties...>& b) ASIO_NOEXCEPT
1615
+ {
1616
+ return !b;
1617
+ }
1618
+
1619
+ template <typename... SupportableProperties>
1620
+ inline bool operator!=(const any_executor<SupportableProperties...>& a,
1621
+ const any_executor<SupportableProperties...>& b) ASIO_NOEXCEPT
1622
+ {
1623
+ return !a.equality_helper(b);
1624
+ }
1625
+
1626
+ template <typename... SupportableProperties>
1627
+ inline bool operator!=(const any_executor<SupportableProperties...>& a,
1628
+ nullptr_t) ASIO_NOEXCEPT
1629
+ {
1630
+ return !!a;
1631
+ }
1632
+
1633
+ template <typename... SupportableProperties>
1634
+ inline bool operator!=(nullptr_t,
1635
+ const any_executor<SupportableProperties...>& b) ASIO_NOEXCEPT
1636
+ {
1637
+ return !!b;
1638
+ }
1639
+
1640
+ template <typename... SupportableProperties>
1641
+ inline void swap(any_executor<SupportableProperties...>& a,
1642
+ any_executor<SupportableProperties...>& b) ASIO_NOEXCEPT
1643
+ {
1644
+ return a.swap(b);
1645
+ }
1646
+
1647
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
1648
+
1649
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS(n) \
1650
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_##n
1651
+
1652
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1 \
1653
+ { \
1654
+ &detail::any_executor_base::query_fn<Ex, T1>, \
1655
+ &detail::any_executor_base::require_fn<any_executor, Ex, T1>, \
1656
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T1> \
1657
+ }
1658
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2 \
1659
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1, \
1660
+ { \
1661
+ &detail::any_executor_base::query_fn<Ex, T2>, \
1662
+ &detail::any_executor_base::require_fn<any_executor, Ex, T2>, \
1663
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T2> \
1664
+ }
1665
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3 \
1666
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2, \
1667
+ { \
1668
+ &detail::any_executor_base::query_fn<Ex, T3>, \
1669
+ &detail::any_executor_base::require_fn<any_executor, Ex, T3>, \
1670
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T3> \
1671
+ }
1672
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4 \
1673
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3, \
1674
+ { \
1675
+ &detail::any_executor_base::query_fn<Ex, T4>, \
1676
+ &detail::any_executor_base::require_fn<any_executor, Ex, T4>, \
1677
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T4> \
1678
+ }
1679
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5 \
1680
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4, \
1681
+ { \
1682
+ &detail::any_executor_base::query_fn<Ex, T5>, \
1683
+ &detail::any_executor_base::require_fn<any_executor, Ex, T5>, \
1684
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T5> \
1685
+ }
1686
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6 \
1687
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5, \
1688
+ { \
1689
+ &detail::any_executor_base::query_fn<Ex, T6>, \
1690
+ &detail::any_executor_base::require_fn<any_executor, Ex, T6>, \
1691
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T6> \
1692
+ }
1693
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7 \
1694
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6, \
1695
+ { \
1696
+ &detail::any_executor_base::query_fn<Ex, T7>, \
1697
+ &detail::any_executor_base::require_fn<any_executor, Ex, T7>, \
1698
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T7> \
1699
+ }
1700
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_8 \
1701
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7, \
1702
+ { \
1703
+ &detail::any_executor_base::query_fn<Ex, T8>, \
1704
+ &detail::any_executor_base::require_fn<any_executor, Ex, T8>, \
1705
+ &detail::any_executor_base::prefer_fn<any_executor, Ex, T8> \
1706
+ }
1707
+
1708
+ #if defined(ASIO_HAS_MOVE)
1709
+
1710
+ # define ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS \
1711
+ any_executor(any_executor&& other) ASIO_NOEXCEPT \
1712
+ : detail::any_executor_base( \
1713
+ static_cast<any_executor_base&&>( \
1714
+ static_cast<any_executor_base&>(other))), \
1715
+ prop_fns_(other.prop_fns_) \
1716
+ { \
1717
+ other.prop_fns_ = prop_fns_table<void>(); \
1718
+ } \
1719
+ \
1720
+ any_executor& operator=(any_executor&& other) ASIO_NOEXCEPT \
1721
+ { \
1722
+ if (this != &other) \
1723
+ { \
1724
+ prop_fns_ = other.prop_fns_; \
1725
+ detail::any_executor_base::operator=( \
1726
+ static_cast<detail::any_executor_base&&>( \
1727
+ static_cast<detail::any_executor_base&>(other))); \
1728
+ } \
1729
+ return *this; \
1730
+ } \
1731
+ /**/
1732
+ #else // defined(ASIO_HAS_MOVE)
1733
+
1734
+ # define ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS
1735
+
1736
+ #endif // defined(ASIO_HAS_MOVE)
1737
+
1738
+ #define ASIO_PRIVATE_ANY_EXECUTOR_DEF(n) \
1739
+ template <ASIO_VARIADIC_TPARAMS(n)> \
1740
+ class any_executor<ASIO_VARIADIC_TARGS(n)> : \
1741
+ public detail::any_executor_base, \
1742
+ public detail::any_executor_context< \
1743
+ any_executor<ASIO_VARIADIC_TARGS(n)>, \
1744
+ typename detail::supportable_properties< \
1745
+ 0, void(ASIO_VARIADIC_TARGS(n))>::find_context_as_property> \
1746
+ { \
1747
+ public: \
1748
+ any_executor() ASIO_NOEXCEPT \
1749
+ : detail::any_executor_base(), \
1750
+ prop_fns_(prop_fns_table<void>()) \
1751
+ { \
1752
+ } \
1753
+ \
1754
+ any_executor(nullptr_t) ASIO_NOEXCEPT \
1755
+ : detail::any_executor_base(), \
1756
+ prop_fns_(prop_fns_table<void>()) \
1757
+ { \
1758
+ } \
1759
+ \
1760
+ template <ASIO_EXECUTION_EXECUTOR Executor> \
1761
+ any_executor(Executor ex, \
1762
+ typename enable_if< \
1763
+ conditional< \
1764
+ !is_same<Executor, any_executor>::value \
1765
+ && !is_base_of<detail::any_executor_base, Executor>::value, \
1766
+ detail::is_valid_target_executor< \
1767
+ Executor, void(ASIO_VARIADIC_TARGS(n))>, \
1768
+ false_type \
1769
+ >::type::value \
1770
+ >::type* = 0) \
1771
+ : detail::any_executor_base(ASIO_MOVE_CAST( \
1772
+ Executor)(ex), false_type()), \
1773
+ prop_fns_(prop_fns_table<Executor>()) \
1774
+ { \
1775
+ } \
1776
+ \
1777
+ any_executor(const any_executor& other) ASIO_NOEXCEPT \
1778
+ : detail::any_executor_base( \
1779
+ static_cast<const detail::any_executor_base&>(other)), \
1780
+ prop_fns_(other.prop_fns_) \
1781
+ { \
1782
+ } \
1783
+ \
1784
+ any_executor(any_executor<> other) \
1785
+ : detail::any_executor_base(ASIO_MOVE_CAST( \
1786
+ any_executor<>)(other), true_type()), \
1787
+ prop_fns_(prop_fns_table<any_executor<> >()) \
1788
+ { \
1789
+ } \
1790
+ \
1791
+ template <typename OtherAnyExecutor> \
1792
+ any_executor(OtherAnyExecutor other, \
1793
+ typename enable_if< \
1794
+ conditional< \
1795
+ !is_same<OtherAnyExecutor, any_executor>::value \
1796
+ && is_base_of<detail::any_executor_base, \
1797
+ OtherAnyExecutor>::value, \
1798
+ typename detail::supportable_properties< \
1799
+ 0, void(ASIO_VARIADIC_TARGS(n))>::template \
1800
+ is_valid_target<OtherAnyExecutor>, \
1801
+ false_type \
1802
+ >::type::value \
1803
+ >::type* = 0) \
1804
+ : detail::any_executor_base(ASIO_MOVE_CAST( \
1805
+ OtherAnyExecutor)(other), true_type()), \
1806
+ prop_fns_(prop_fns_table<OtherAnyExecutor>()) \
1807
+ { \
1808
+ } \
1809
+ \
1810
+ any_executor& operator=(const any_executor& other) ASIO_NOEXCEPT \
1811
+ { \
1812
+ if (this != &other) \
1813
+ { \
1814
+ prop_fns_ = other.prop_fns_; \
1815
+ detail::any_executor_base::operator=( \
1816
+ static_cast<const detail::any_executor_base&>(other)); \
1817
+ } \
1818
+ return *this; \
1819
+ } \
1820
+ \
1821
+ any_executor& operator=(nullptr_t p) ASIO_NOEXCEPT \
1822
+ { \
1823
+ prop_fns_ = prop_fns_table<void>(); \
1824
+ detail::any_executor_base::operator=(p); \
1825
+ return *this; \
1826
+ } \
1827
+ \
1828
+ ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS \
1829
+ \
1830
+ void swap(any_executor& other) ASIO_NOEXCEPT \
1831
+ { \
1832
+ if (this != &other) \
1833
+ { \
1834
+ detail::any_executor_base::swap( \
1835
+ static_cast<detail::any_executor_base&>(other)); \
1836
+ const prop_fns<any_executor>* tmp_prop_fns = other.prop_fns_; \
1837
+ other.prop_fns_ = prop_fns_; \
1838
+ prop_fns_ = tmp_prop_fns; \
1839
+ } \
1840
+ } \
1841
+ \
1842
+ using detail::any_executor_base::execute; \
1843
+ using detail::any_executor_base::target; \
1844
+ using detail::any_executor_base::target_type; \
1845
+ using detail::any_executor_base::operator unspecified_bool_type; \
1846
+ using detail::any_executor_base::operator!; \
1847
+ \
1848
+ bool equality_helper(const any_executor& other) const ASIO_NOEXCEPT \
1849
+ { \
1850
+ return any_executor_base::equality_helper(other); \
1851
+ } \
1852
+ \
1853
+ template <typename T> \
1854
+ struct find_convertible_property : \
1855
+ detail::supportable_properties< \
1856
+ 0, void(ASIO_VARIADIC_TARGS(n))>::template \
1857
+ find_convertible_property<T> {}; \
1858
+ \
1859
+ template <typename Property> \
1860
+ void query(const Property& p, \
1861
+ typename enable_if< \
1862
+ is_same< \
1863
+ typename find_convertible_property<Property>::query_result_type, \
1864
+ void \
1865
+ >::value \
1866
+ >::type* = 0) const \
1867
+ { \
1868
+ typedef find_convertible_property<Property> found; \
1869
+ prop_fns_[found::index].query(0, object_fns_->target(*this), \
1870
+ &static_cast<const typename found::type&>(p)); \
1871
+ } \
1872
+ \
1873
+ template <typename Property> \
1874
+ typename find_convertible_property<Property>::query_result_type \
1875
+ query(const Property& p, \
1876
+ typename enable_if< \
1877
+ !is_same< \
1878
+ typename find_convertible_property<Property>::query_result_type, \
1879
+ void \
1880
+ >::value \
1881
+ && \
1882
+ is_reference< \
1883
+ typename find_convertible_property<Property>::query_result_type \
1884
+ >::value \
1885
+ >::type* = 0) const \
1886
+ { \
1887
+ typedef find_convertible_property<Property> found; \
1888
+ typename remove_reference< \
1889
+ typename found::query_result_type>::type* result; \
1890
+ prop_fns_[found::index].query(&result, object_fns_->target(*this), \
1891
+ &static_cast<const typename found::type&>(p)); \
1892
+ return *result; \
1893
+ } \
1894
+ \
1895
+ template <typename Property> \
1896
+ typename find_convertible_property<Property>::query_result_type \
1897
+ query(const Property& p, \
1898
+ typename enable_if< \
1899
+ !is_same< \
1900
+ typename find_convertible_property<Property>::query_result_type, \
1901
+ void \
1902
+ >::value \
1903
+ && \
1904
+ is_scalar< \
1905
+ typename find_convertible_property<Property>::query_result_type \
1906
+ >::value \
1907
+ >::type* = 0) const \
1908
+ { \
1909
+ typedef find_convertible_property<Property> found; \
1910
+ typename found::query_result_type result; \
1911
+ prop_fns_[found::index].query(&result, object_fns_->target(*this), \
1912
+ &static_cast<const typename found::type&>(p)); \
1913
+ return result; \
1914
+ } \
1915
+ \
1916
+ template <typename Property> \
1917
+ typename find_convertible_property<Property>::query_result_type \
1918
+ query(const Property& p, \
1919
+ typename enable_if< \
1920
+ !is_same< \
1921
+ typename find_convertible_property<Property>::query_result_type, \
1922
+ void \
1923
+ >::value \
1924
+ && \
1925
+ !is_reference< \
1926
+ typename find_convertible_property<Property>::query_result_type \
1927
+ >::value \
1928
+ && \
1929
+ !is_scalar< \
1930
+ typename find_convertible_property<Property>::query_result_type \
1931
+ >::value \
1932
+ >::type* = 0) const \
1933
+ { \
1934
+ typedef find_convertible_property<Property> found; \
1935
+ typename found::query_result_type* result; \
1936
+ prop_fns_[found::index].query(&result, object_fns_->target(*this), \
1937
+ &static_cast<const typename found::type&>(p)); \
1938
+ return *asio::detail::scoped_ptr< \
1939
+ typename found::query_result_type>(result); \
1940
+ } \
1941
+ \
1942
+ template <typename T> \
1943
+ struct find_convertible_requirable_property : \
1944
+ detail::supportable_properties< \
1945
+ 0, void(ASIO_VARIADIC_TARGS(n))>::template \
1946
+ find_convertible_requirable_property<T> {}; \
1947
+ \
1948
+ template <typename Property> \
1949
+ any_executor require(const Property& p, \
1950
+ typename enable_if< \
1951
+ find_convertible_requirable_property<Property>::value \
1952
+ >::type* = 0) const \
1953
+ { \
1954
+ typedef find_convertible_requirable_property<Property> found; \
1955
+ return prop_fns_[found::index].require(object_fns_->target(*this), \
1956
+ &static_cast<const typename found::type&>(p)); \
1957
+ } \
1958
+ \
1959
+ template <typename T> \
1960
+ struct find_convertible_preferable_property : \
1961
+ detail::supportable_properties< \
1962
+ 0, void(ASIO_VARIADIC_TARGS(n))>::template \
1963
+ find_convertible_preferable_property<T> {}; \
1964
+ \
1965
+ template <typename Property> \
1966
+ any_executor prefer(const Property& p, \
1967
+ typename enable_if< \
1968
+ find_convertible_preferable_property<Property>::value \
1969
+ >::type* = 0) const \
1970
+ { \
1971
+ typedef find_convertible_preferable_property<Property> found; \
1972
+ return prop_fns_[found::index].prefer(object_fns_->target(*this), \
1973
+ &static_cast<const typename found::type&>(p)); \
1974
+ } \
1975
+ \
1976
+ template <typename Ex> \
1977
+ static const prop_fns<any_executor>* prop_fns_table() \
1978
+ { \
1979
+ static const prop_fns<any_executor> fns[] = \
1980
+ { \
1981
+ ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS(n) \
1982
+ }; \
1983
+ return fns; \
1984
+ } \
1985
+ \
1986
+ const prop_fns<any_executor>* prop_fns_; \
1987
+ typedef detail::supportable_properties<0, \
1988
+ void(ASIO_VARIADIC_TARGS(n))> supportable_properties_type; \
1989
+ }; \
1990
+ \
1991
+ template <ASIO_VARIADIC_TPARAMS(n)> \
1992
+ inline bool operator==(const any_executor<ASIO_VARIADIC_TARGS(n)>& a, \
1993
+ const any_executor<ASIO_VARIADIC_TARGS(n)>& b) ASIO_NOEXCEPT \
1994
+ { \
1995
+ return a.equality_helper(b); \
1996
+ } \
1997
+ \
1998
+ template <ASIO_VARIADIC_TPARAMS(n)> \
1999
+ inline bool operator==(const any_executor<ASIO_VARIADIC_TARGS(n)>& a, \
2000
+ nullptr_t) ASIO_NOEXCEPT \
2001
+ { \
2002
+ return !a; \
2003
+ } \
2004
+ \
2005
+ template <ASIO_VARIADIC_TPARAMS(n)> \
2006
+ inline bool operator==(nullptr_t, \
2007
+ const any_executor<ASIO_VARIADIC_TARGS(n)>& b) ASIO_NOEXCEPT \
2008
+ { \
2009
+ return !b; \
2010
+ } \
2011
+ \
2012
+ template <ASIO_VARIADIC_TPARAMS(n)> \
2013
+ inline bool operator!=(const any_executor<ASIO_VARIADIC_TARGS(n)>& a, \
2014
+ const any_executor<ASIO_VARIADIC_TARGS(n)>& b) ASIO_NOEXCEPT \
2015
+ { \
2016
+ return !a.equality_helper(b); \
2017
+ } \
2018
+ \
2019
+ template <ASIO_VARIADIC_TPARAMS(n)> \
2020
+ inline bool operator!=(const any_executor<ASIO_VARIADIC_TARGS(n)>& a, \
2021
+ nullptr_t) ASIO_NOEXCEPT \
2022
+ { \
2023
+ return !!a; \
2024
+ } \
2025
+ \
2026
+ template <ASIO_VARIADIC_TPARAMS(n)> \
2027
+ inline bool operator!=(nullptr_t, \
2028
+ const any_executor<ASIO_VARIADIC_TARGS(n)>& b) ASIO_NOEXCEPT \
2029
+ { \
2030
+ return !!b; \
2031
+ } \
2032
+ \
2033
+ template <ASIO_VARIADIC_TPARAMS(n)> \
2034
+ inline void swap(any_executor<ASIO_VARIADIC_TARGS(n)>& a, \
2035
+ any_executor<ASIO_VARIADIC_TARGS(n)>& b) ASIO_NOEXCEPT \
2036
+ { \
2037
+ return a.swap(b); \
2038
+ } \
2039
+ /**/
2040
+ ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ANY_EXECUTOR_DEF)
2041
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_DEF
2042
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_MOVE_OPS
2043
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS
2044
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_1
2045
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_2
2046
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_3
2047
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_4
2048
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_5
2049
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_6
2050
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_7
2051
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PROP_FNS_8
2052
+
2053
+ #endif // if defined(ASIO_HAS_VARIADIC_TEMPLATES)
2054
+
2055
+ } // namespace execution
2056
+ namespace traits {
2057
+
2058
+ #if !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
2059
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
2060
+
2061
+ template <typename... SupportableProperties>
2062
+ struct equality_comparable<execution::any_executor<SupportableProperties...> >
2063
+ {
2064
+ static const bool is_valid = true;
2065
+ static const bool is_noexcept = true;
2066
+ };
2067
+
2068
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2069
+
2070
+ template <>
2071
+ struct equality_comparable<execution::any_executor<> >
2072
+ {
2073
+ static const bool is_valid = true;
2074
+ static const bool is_noexcept = true;
2075
+ };
2076
+
2077
+ #define ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF(n) \
2078
+ template <ASIO_VARIADIC_TPARAMS(n)> \
2079
+ struct equality_comparable< \
2080
+ execution::any_executor<ASIO_VARIADIC_TARGS(n)> > \
2081
+ { \
2082
+ static const bool is_valid = true; \
2083
+ static const bool is_noexcept = true; \
2084
+ }; \
2085
+ /**/
2086
+ ASIO_VARIADIC_GENERATE(
2087
+ ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF)
2088
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_EQUALITY_COMPARABLE_DEF
2089
+
2090
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2091
+ #endif // !defined(ASIO_HAS_DEDUCED_EQUALITY_COMPARABLE_TRAIT)
2092
+
2093
+ #if !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
2094
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
2095
+
2096
+ template <typename F, typename... SupportableProperties>
2097
+ struct execute_member<execution::any_executor<SupportableProperties...>, F>
2098
+ {
2099
+ static const bool is_valid = true;
2100
+ static const bool is_noexcept = false;
2101
+ typedef void result_type;
2102
+ };
2103
+
2104
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2105
+
2106
+ template <typename F>
2107
+ struct execute_member<execution::any_executor<>, F>
2108
+ {
2109
+ static const bool is_valid = true;
2110
+ static const bool is_noexcept = false;
2111
+ typedef void result_type;
2112
+ };
2113
+
2114
+ #define ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF(n) \
2115
+ template <typename F, ASIO_VARIADIC_TPARAMS(n)> \
2116
+ struct execute_member< \
2117
+ execution::any_executor<ASIO_VARIADIC_TARGS(n)>, F> \
2118
+ { \
2119
+ static const bool is_valid = true; \
2120
+ static const bool is_noexcept = false; \
2121
+ typedef void result_type; \
2122
+ }; \
2123
+ /**/
2124
+ ASIO_VARIADIC_GENERATE(
2125
+ ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF)
2126
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_EXECUTE_MEMBER_DEF
2127
+
2128
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2129
+ #endif // !defined(ASIO_HAS_DEDUCED_EXECUTE_MEMBER_TRAIT)
2130
+
2131
+ #if !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
2132
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
2133
+
2134
+ template <typename Prop, typename... SupportableProperties>
2135
+ struct query_member<
2136
+ execution::any_executor<SupportableProperties...>, Prop,
2137
+ typename enable_if<
2138
+ execution::detail::supportable_properties<
2139
+ 0, void(SupportableProperties...)>::template
2140
+ find_convertible_property<Prop>::value
2141
+ >::type>
2142
+ {
2143
+ static const bool is_valid = true;
2144
+ static const bool is_noexcept = false;
2145
+ typedef typename execution::detail::supportable_properties<
2146
+ 0, void(SupportableProperties...)>::template
2147
+ find_convertible_property<Prop>::query_result_type result_type;
2148
+ };
2149
+
2150
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2151
+
2152
+ #define ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF(n) \
2153
+ template <typename Prop, ASIO_VARIADIC_TPARAMS(n)> \
2154
+ struct query_member< \
2155
+ execution::any_executor<ASIO_VARIADIC_TARGS(n)>, Prop, \
2156
+ typename enable_if< \
2157
+ execution::detail::supportable_properties< \
2158
+ 0, void(ASIO_VARIADIC_TARGS(n))>::template \
2159
+ find_convertible_property<Prop>::value \
2160
+ >::type> \
2161
+ { \
2162
+ static const bool is_valid = true; \
2163
+ static const bool is_noexcept = false; \
2164
+ typedef typename execution::detail::supportable_properties< \
2165
+ 0, void(ASIO_VARIADIC_TARGS(n))>::template \
2166
+ find_convertible_property<Prop>::query_result_type result_type; \
2167
+ }; \
2168
+ /**/
2169
+ ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF)
2170
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_QUERY_MEMBER_DEF
2171
+
2172
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2173
+ #endif // !defined(ASIO_HAS_DEDUCED_QUERY_MEMBER_TRAIT)
2174
+
2175
+ #if !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
2176
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
2177
+
2178
+ template <typename Prop, typename... SupportableProperties>
2179
+ struct require_member<
2180
+ execution::any_executor<SupportableProperties...>, Prop,
2181
+ typename enable_if<
2182
+ execution::detail::supportable_properties<
2183
+ 0, void(SupportableProperties...)>::template
2184
+ find_convertible_requirable_property<Prop>::value
2185
+ >::type>
2186
+ {
2187
+ static const bool is_valid = true;
2188
+ static const bool is_noexcept = false;
2189
+ typedef execution::any_executor<SupportableProperties...> result_type;
2190
+ };
2191
+
2192
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2193
+
2194
+ #define ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF(n) \
2195
+ template <typename Prop, ASIO_VARIADIC_TPARAMS(n)> \
2196
+ struct require_member< \
2197
+ execution::any_executor<ASIO_VARIADIC_TARGS(n)>, Prop, \
2198
+ typename enable_if< \
2199
+ execution::detail::supportable_properties< \
2200
+ 0, void(ASIO_VARIADIC_TARGS(n))>::template \
2201
+ find_convertible_requirable_property<Prop>::value \
2202
+ >::type> \
2203
+ { \
2204
+ static const bool is_valid = true; \
2205
+ static const bool is_noexcept = false; \
2206
+ typedef execution::any_executor<ASIO_VARIADIC_TARGS(n)> result_type; \
2207
+ }; \
2208
+ /**/
2209
+ ASIO_VARIADIC_GENERATE(
2210
+ ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF)
2211
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_REQUIRE_MEMBER_DEF
2212
+
2213
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2214
+ #endif // !defined(ASIO_HAS_DEDUCED_REQUIRE_MEMBER_TRAIT)
2215
+
2216
+ #if !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
2217
+ #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
2218
+
2219
+ template <typename Prop, typename... SupportableProperties>
2220
+ struct prefer_member<
2221
+ execution::any_executor<SupportableProperties...>, Prop,
2222
+ typename enable_if<
2223
+ execution::detail::supportable_properties<
2224
+ 0, void(SupportableProperties...)>::template
2225
+ find_convertible_preferable_property<Prop>::value
2226
+ >::type>
2227
+ {
2228
+ static const bool is_valid = true;
2229
+ static const bool is_noexcept = false;
2230
+ typedef execution::any_executor<SupportableProperties...> result_type;
2231
+ };
2232
+
2233
+ #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2234
+
2235
+ #define ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF(n) \
2236
+ template <typename Prop, ASIO_VARIADIC_TPARAMS(n)> \
2237
+ struct prefer_member< \
2238
+ execution::any_executor<ASIO_VARIADIC_TARGS(n)>, Prop, \
2239
+ typename enable_if< \
2240
+ execution::detail::supportable_properties< \
2241
+ 0, void(ASIO_VARIADIC_TARGS(n))>::template \
2242
+ find_convertible_preferable_property<Prop>::value \
2243
+ >::type> \
2244
+ { \
2245
+ static const bool is_valid = true; \
2246
+ static const bool is_noexcept = false; \
2247
+ typedef execution::any_executor<ASIO_VARIADIC_TARGS(n)> result_type; \
2248
+ }; \
2249
+ /**/
2250
+ ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF)
2251
+ #undef ASIO_PRIVATE_ANY_EXECUTOR_PREFER_FREE_DEF
2252
+
2253
+ #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
2254
+ #endif // !defined(ASIO_HAS_DEDUCED_PREFER_FREE_TRAIT)
2255
+
2256
+ } // namespace traits
2257
+
2258
+ #endif // defined(GENERATING_DOCUMENTATION)
2259
+
2260
+ } // namespace asio
2261
+
2262
+ #include "asio/detail/pop_options.hpp"
2263
+
2264
+ #endif // ASIO_EXECUTION_ANY_EXECUTOR_HPP