couchbase 3.0.0.alpha.2-universal-darwin-19 → 3.0.0-universal-darwin-19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (888) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +227 -0
  3. data/.rubocop_todo.yml +47 -0
  4. data/.yardopts +1 -0
  5. data/CONTRIBUTING.md +110 -0
  6. data/Gemfile +16 -3
  7. data/README.md +6 -4
  8. data/Rakefile +6 -2
  9. data/couchbase.gemspec +46 -13
  10. data/examples/analytics.rb +236 -0
  11. data/examples/auth.rb +33 -0
  12. data/examples/crud.rb +16 -2
  13. data/examples/managing_analytics_indexes.rb +86 -0
  14. data/examples/managing_buckets.rb +17 -3
  15. data/examples/managing_collections.rb +22 -9
  16. data/examples/managing_query_indexes.rb +39 -19
  17. data/examples/managing_search_indexes.rb +77 -0
  18. data/examples/managing_view_indexes.rb +68 -0
  19. data/examples/query.rb +17 -3
  20. data/examples/query_with_consistency.rb +30 -20
  21. data/examples/search.rb +202 -0
  22. data/examples/search_with_consistency.rb +97 -0
  23. data/examples/subdocument.rb +42 -30
  24. data/examples/view.rb +59 -0
  25. data/ext/.clang-tidy +2 -0
  26. data/ext/.idea/misc.xml +12 -0
  27. data/ext/CMakeLists.txt +50 -3
  28. data/ext/build_config.hxx.in +20 -0
  29. data/ext/build_version.hxx.in +1 -1
  30. data/ext/couchbase/bucket.hxx +228 -51
  31. data/ext/couchbase/cluster.hxx +147 -87
  32. data/ext/couchbase/cluster_options.hxx +53 -0
  33. data/ext/couchbase/configuration.hxx +232 -14
  34. data/ext/couchbase/couchbase.cxx +4250 -1458
  35. data/ext/couchbase/error_map.hxx +202 -2
  36. data/ext/couchbase/errors.hxx +8 -2
  37. data/ext/couchbase/io/dns_client.hxx +217 -0
  38. data/ext/couchbase/io/dns_codec.hxx +207 -0
  39. data/ext/couchbase/io/dns_config.hxx +116 -0
  40. data/ext/couchbase/io/dns_message.hxx +555 -0
  41. data/ext/couchbase/io/http_command.hxx +91 -0
  42. data/ext/couchbase/io/http_session.hxx +119 -47
  43. data/ext/couchbase/io/{session_manager.hxx → http_session_manager.hxx} +34 -34
  44. data/ext/couchbase/io/mcbp_command.hxx +237 -0
  45. data/ext/couchbase/io/mcbp_message.hxx +24 -2
  46. data/ext/couchbase/io/mcbp_parser.hxx +2 -0
  47. data/ext/couchbase/io/mcbp_session.hxx +455 -173
  48. data/ext/couchbase/io/retry_action.hxx +30 -0
  49. data/ext/couchbase/io/retry_context.hxx +39 -0
  50. data/ext/couchbase/io/retry_orchestrator.hxx +96 -0
  51. data/ext/couchbase/io/retry_reason.hxx +235 -0
  52. data/ext/couchbase/io/retry_strategy.hxx +156 -0
  53. data/ext/couchbase/io/streams.hxx +165 -0
  54. data/ext/couchbase/mutation_token.hxx +1 -1
  55. data/ext/couchbase/operations.hxx +33 -1
  56. data/ext/couchbase/operations/analytics_dataset_create.hxx +117 -0
  57. data/ext/couchbase/operations/analytics_dataset_drop.hxx +103 -0
  58. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +107 -0
  59. data/ext/couchbase/operations/analytics_dataverse_create.hxx +104 -0
  60. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +104 -0
  61. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +91 -0
  62. data/ext/couchbase/operations/analytics_index_create.hxx +128 -0
  63. data/ext/couchbase/operations/analytics_index_drop.hxx +110 -0
  64. data/ext/couchbase/operations/analytics_index_get_all.hxx +106 -0
  65. data/ext/couchbase/operations/analytics_link_connect.hxx +102 -0
  66. data/ext/couchbase/operations/analytics_link_disconnect.hxx +101 -0
  67. data/ext/couchbase/operations/bucket_create.hxx +5 -2
  68. data/ext/couchbase/operations/bucket_drop.hxx +5 -2
  69. data/ext/couchbase/operations/bucket_flush.hxx +5 -2
  70. data/ext/couchbase/operations/bucket_get.hxx +5 -2
  71. data/ext/couchbase/operations/bucket_get_all.hxx +5 -2
  72. data/ext/couchbase/operations/bucket_update.hxx +5 -2
  73. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +5 -2
  74. data/ext/couchbase/operations/collection_create.hxx +10 -3
  75. data/ext/couchbase/operations/collection_drop.hxx +5 -2
  76. data/ext/couchbase/operations/design_document.hxx +59 -0
  77. data/ext/couchbase/operations/document_analytics.hxx +288 -0
  78. data/ext/couchbase/operations/document_decrement.hxx +11 -4
  79. data/ext/couchbase/operations/document_exists.hxx +5 -1
  80. data/ext/couchbase/operations/document_get.hxx +8 -1
  81. data/ext/couchbase/operations/document_get_and_lock.hxx +8 -1
  82. data/ext/couchbase/operations/document_get_and_touch.hxx +10 -3
  83. data/ext/couchbase/operations/document_get_projected.hxx +249 -0
  84. data/ext/couchbase/operations/document_increment.hxx +14 -5
  85. data/ext/couchbase/operations/document_insert.hxx +10 -3
  86. data/ext/couchbase/operations/document_lookup_in.hxx +27 -1
  87. data/ext/couchbase/operations/document_mutate_in.hxx +51 -2
  88. data/ext/couchbase/operations/document_query.hxx +31 -11
  89. data/ext/couchbase/operations/document_remove.hxx +8 -1
  90. data/ext/couchbase/operations/document_replace.hxx +10 -3
  91. data/ext/couchbase/operations/document_search.hxx +360 -0
  92. data/ext/couchbase/operations/document_touch.hxx +10 -3
  93. data/ext/couchbase/operations/document_unlock.hxx +8 -1
  94. data/ext/couchbase/operations/document_upsert.hxx +10 -3
  95. data/ext/couchbase/operations/document_view.hxx +228 -0
  96. data/ext/couchbase/operations/query_index_build_deferred.hxx +4 -3
  97. data/ext/couchbase/operations/query_index_create.hxx +18 -7
  98. data/ext/couchbase/operations/query_index_drop.hxx +16 -5
  99. data/ext/couchbase/operations/query_index_get_all.hxx +15 -5
  100. data/ext/couchbase/operations/scope_create.hxx +5 -2
  101. data/ext/couchbase/operations/scope_drop.hxx +5 -2
  102. data/ext/couchbase/operations/scope_get_all.hxx +6 -2
  103. data/ext/couchbase/operations/search_index.hxx +79 -0
  104. data/ext/couchbase/operations/search_index_analyze_document.hxx +92 -0
  105. data/ext/couchbase/operations/search_index_control_ingest.hxx +80 -0
  106. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +80 -0
  107. data/ext/couchbase/operations/search_index_control_query.hxx +80 -0
  108. data/ext/couchbase/operations/search_index_drop.hxx +77 -0
  109. data/ext/couchbase/operations/search_index_get.hxx +80 -0
  110. data/ext/couchbase/operations/search_index_get_all.hxx +82 -0
  111. data/ext/couchbase/operations/search_index_get_documents_count.hxx +81 -0
  112. data/ext/couchbase/operations/search_index_upsert.hxx +106 -0
  113. data/ext/couchbase/operations/view_index_drop.hxx +67 -0
  114. data/ext/couchbase/operations/view_index_get.hxx +90 -0
  115. data/ext/couchbase/operations/view_index_get_all.hxx +125 -0
  116. data/ext/couchbase/operations/view_index_upsert.hxx +87 -0
  117. data/ext/couchbase/origin.hxx +178 -0
  118. data/ext/couchbase/platform/backtrace.c +189 -0
  119. data/ext/couchbase/platform/backtrace.h +54 -0
  120. data/ext/couchbase/platform/terminate_handler.cc +122 -0
  121. data/ext/couchbase/platform/terminate_handler.h +36 -0
  122. data/ext/couchbase/protocol/client_opcode.hxx +17 -3
  123. data/ext/couchbase/protocol/client_response.hxx +1 -1
  124. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +1 -6
  125. data/ext/couchbase/protocol/cmd_decrement.hxx +5 -5
  126. data/ext/couchbase/protocol/cmd_get_and_touch.hxx +5 -5
  127. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +7 -7
  128. data/ext/couchbase/protocol/cmd_get_collection_id.hxx +117 -0
  129. data/ext/couchbase/protocol/cmd_hello.hxx +10 -0
  130. data/ext/couchbase/protocol/cmd_increment.hxx +5 -5
  131. data/ext/couchbase/protocol/cmd_info.hxx +0 -11
  132. data/ext/couchbase/protocol/cmd_insert.hxx +5 -5
  133. data/ext/couchbase/protocol/cmd_lookup_in.hxx +1 -0
  134. data/ext/couchbase/protocol/cmd_mutate_in.hxx +53 -5
  135. data/ext/couchbase/protocol/cmd_replace.hxx +5 -5
  136. data/ext/couchbase/protocol/cmd_touch.hxx +1 -1
  137. data/ext/couchbase/protocol/cmd_upsert.hxx +5 -5
  138. data/ext/couchbase/protocol/status.hxx +14 -4
  139. data/ext/couchbase/service_type.hxx +38 -1
  140. data/ext/couchbase/timeout_defaults.hxx +41 -0
  141. data/ext/couchbase/utils/connection_string.hxx +370 -0
  142. data/ext/couchbase/version.hxx +2 -2
  143. data/ext/extconf.rb +60 -24
  144. data/ext/test/main.cxx +139 -22
  145. data/ext/third_party/http_parser/Makefile +160 -0
  146. data/ext/third_party/json/Makefile +77 -0
  147. data/lib/couchbase.rb +0 -1
  148. data/lib/couchbase/analytics_options.rb +177 -0
  149. data/lib/couchbase/authenticator.rb +14 -0
  150. data/lib/couchbase/binary_collection.rb +17 -13
  151. data/lib/couchbase/binary_collection_options.rb +14 -8
  152. data/lib/couchbase/bucket.rb +55 -3
  153. data/lib/couchbase/cluster.rb +219 -250
  154. data/lib/couchbase/collection.rb +67 -33
  155. data/lib/couchbase/collection_options.rb +95 -15
  156. data/lib/couchbase/common_options.rb +1 -1
  157. data/{bin/console → lib/couchbase/datastructures.rb} +4 -7
  158. data/lib/couchbase/datastructures/couchbase_list.rb +171 -0
  159. data/lib/couchbase/datastructures/couchbase_map.rb +205 -0
  160. data/lib/couchbase/datastructures/couchbase_queue.rb +145 -0
  161. data/lib/couchbase/datastructures/couchbase_set.rb +139 -0
  162. data/lib/couchbase/errors.rb +76 -66
  163. data/lib/couchbase/json_transcoder.rb +4 -4
  164. data/lib/couchbase/libcouchbase.bundle +0 -0
  165. data/lib/couchbase/management/analytics_index_manager.rb +139 -25
  166. data/lib/couchbase/management/bucket_manager.rb +19 -5
  167. data/lib/couchbase/management/collection_manager.rb +16 -7
  168. data/lib/couchbase/management/query_index_manager.rb +75 -20
  169. data/lib/couchbase/management/search_index_manager.rb +65 -15
  170. data/lib/couchbase/management/user_manager.rb +2 -2
  171. data/lib/couchbase/management/view_index_manager.rb +70 -11
  172. data/lib/couchbase/mutation_state.rb +13 -0
  173. data/lib/couchbase/query_options.rb +256 -0
  174. data/lib/couchbase/scope.rb +61 -8
  175. data/lib/couchbase/search_options.rb +1512 -0
  176. data/lib/couchbase/subdoc.rb +87 -23
  177. data/lib/couchbase/version.rb +2 -2
  178. data/lib/couchbase/view_options.rb +155 -0
  179. metadata +86 -781
  180. data/.github/workflows/tests-6.0.3.yml +0 -49
  181. data/.github/workflows/tests.yml +0 -47
  182. data/.gitignore +0 -20
  183. data/.gitmodules +0 -18
  184. data/.idea/.gitignore +0 -5
  185. data/.idea/dictionaries/gem_terms.xml +0 -18
  186. data/.idea/inspectionProfiles/Project_Default.xml +0 -8
  187. data/.idea/vcs.xml +0 -12
  188. data/bin/init-cluster +0 -62
  189. data/bin/setup +0 -24
  190. data/ext/couchbase/configuration_monitor.hxx +0 -93
  191. data/ext/couchbase/operations/command.hxx +0 -77
  192. data/ext/third_party/asio/asio/src/examples/cpp03/Makefile.am +0 -251
  193. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/.gitignore +0 -10
  194. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/server.cpp +0 -285
  195. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/.gitignore +0 -10
  196. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/reference_counted.cpp +0 -131
  197. data/ext/third_party/asio/asio/src/examples/cpp03/chat/.gitignore +0 -11
  198. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_client.cpp +0 -177
  199. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_message.hpp +0 -93
  200. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_server.cpp +0 -249
  201. data/ext/third_party/asio/asio/src/examples/cpp03/chat/posix_chat_client.cpp +0 -204
  202. data/ext/third_party/asio/asio/src/examples/cpp03/echo/.gitignore +0 -11
  203. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp +0 -137
  204. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp +0 -92
  205. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp +0 -59
  206. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp +0 -79
  207. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +0 -59
  208. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp +0 -53
  209. data/ext/third_party/asio/asio/src/examples/cpp03/fork/.gitignore +0 -11
  210. data/ext/third_party/asio/asio/src/examples/cpp03/fork/daemon.cpp +0 -190
  211. data/ext/third_party/asio/asio/src/examples/cpp03/fork/process_per_connection.cpp +0 -161
  212. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/.gitignore +0 -10
  213. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/async_client.cpp +0 -204
  214. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/sync_client.cpp +0 -106
  215. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_1K.html +0 -28
  216. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_2K.html +0 -49
  217. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_4K.html +0 -91
  218. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_8K.html +0 -175
  219. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/.gitignore +0 -11
  220. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.cpp +0 -99
  221. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.hpp +0 -83
  222. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.cpp +0 -38
  223. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.hpp +0 -44
  224. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/header.hpp +0 -28
  225. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/main.cpp +0 -44
  226. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.cpp +0 -46
  227. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.hpp +0 -27
  228. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.cpp +0 -256
  229. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.hpp +0 -64
  230. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request.hpp +0 -34
  231. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.cpp +0 -122
  232. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.hpp +0 -46
  233. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.cpp +0 -315
  234. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.hpp +0 -95
  235. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.cpp +0 -94
  236. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.hpp +0 -69
  237. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/.gitignore +0 -11
  238. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.cpp +0 -93
  239. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.hpp +0 -75
  240. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/header.hpp +0 -28
  241. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.cpp +0 -69
  242. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.hpp +0 -58
  243. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/main.cpp +0 -46
  244. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.cpp +0 -46
  245. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.hpp +0 -27
  246. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.cpp +0 -256
  247. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.hpp +0 -64
  248. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request.hpp +0 -34
  249. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.cpp +0 -122
  250. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.hpp +0 -46
  251. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.cpp +0 -315
  252. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.hpp +0 -95
  253. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.cpp +0 -77
  254. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.hpp +0 -68
  255. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/.gitignore +0 -11
  256. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.cpp +0 -94
  257. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.hpp +0 -78
  258. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/header.hpp +0 -28
  259. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/main.cpp +0 -46
  260. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.cpp +0 -46
  261. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.hpp +0 -27
  262. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.cpp +0 -256
  263. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.hpp +0 -64
  264. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request.hpp +0 -34
  265. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.cpp +0 -122
  266. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.hpp +0 -46
  267. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.cpp +0 -315
  268. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.hpp +0 -95
  269. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.cpp +0 -89
  270. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.hpp +0 -70
  271. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/.gitignore +0 -11
  272. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.cpp +0 -122
  273. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.hpp +0 -44
  274. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/header.hpp +0 -28
  275. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/main.cpp +0 -58
  276. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.cpp +0 -46
  277. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.hpp +0 -27
  278. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.cpp +0 -256
  279. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.hpp +0 -64
  280. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request.hpp +0 -46
  281. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.cpp +0 -226
  282. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.hpp +0 -78
  283. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.cpp +0 -122
  284. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.hpp +0 -73
  285. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/.gitignore +0 -10
  286. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/icmp_header.hpp +0 -94
  287. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ipv4_header.hpp +0 -102
  288. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ping.cpp +0 -163
  289. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/.gitignore +0 -10
  290. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp +0 -171
  291. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/.gitignore +0 -11
  292. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_client.cpp +0 -44
  293. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_server.cpp +0 -51
  294. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/http_client.cpp +0 -91
  295. data/ext/third_party/asio/asio/src/examples/cpp03/local/.gitignore +0 -13
  296. data/ext/third_party/asio/asio/src/examples/cpp03/local/connect_pair.cpp +0 -141
  297. data/ext/third_party/asio/asio/src/examples/cpp03/local/iostream_client.cpp +0 -62
  298. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_client.cpp +0 -61
  299. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_server.cpp +0 -141
  300. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/.gitignore +0 -11
  301. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/receiver.cpp +0 -93
  302. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/sender.cpp +0 -98
  303. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/.gitignore +0 -10
  304. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp +0 -240
  305. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/.gitignore +0 -11
  306. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/client.cpp +0 -192
  307. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/protocol.hpp +0 -156
  308. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/server.cpp +0 -187
  309. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/.gitignore +0 -11
  310. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/client.cpp +0 -125
  311. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/connection.hpp +0 -188
  312. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/server.cpp +0 -123
  313. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/stock.hpp +0 -50
  314. data/ext/third_party/asio/asio/src/examples/cpp03/services/.gitignore +0 -11
  315. data/ext/third_party/asio/asio/src/examples/cpp03/services/basic_logger.hpp +0 -83
  316. data/ext/third_party/asio/asio/src/examples/cpp03/services/daytime_client.cpp +0 -97
  317. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger.hpp +0 -24
  318. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.cpp +0 -11
  319. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.hpp +0 -145
  320. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/.gitignore +0 -10
  321. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/socks4.hpp +0 -144
  322. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/sync_client.cpp +0 -94
  323. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/.gitignore +0 -12
  324. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/echo_server.cpp +0 -122
  325. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/parallel_grep.cpp +0 -89
  326. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/.gitignore +0 -11
  327. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/README +0 -8
  328. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/ca.pem +0 -49
  329. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/client.cpp +0 -157
  330. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/dh2048.pem +0 -8
  331. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.cpp +0 -170
  332. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.pem +0 -71
  333. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/.gitignore +0 -11
  334. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +0 -311
  335. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp +0 -191
  336. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp +0 -200
  337. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp +0 -154
  338. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/server.cpp +0 -433
  339. data/ext/third_party/asio/asio/src/examples/cpp03/timers/.gitignore +0 -10
  340. data/ext/third_party/asio/asio/src/examples/cpp03/timers/time_t_timer.cpp +0 -106
  341. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/.gitignore +0 -10
  342. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/client.cpp +0 -57
  343. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/.gitignore +0 -10
  344. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/server.cpp +0 -50
  345. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/.gitignore +0 -10
  346. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/server.cpp +0 -119
  347. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/.gitignore +0 -10
  348. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/client.cpp +0 -52
  349. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/.gitignore +0 -10
  350. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/server.cpp +0 -53
  351. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/.gitignore +0 -10
  352. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/server.cpp +0 -89
  353. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/.gitignore +0 -10
  354. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/server.cpp +0 -160
  355. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime_dox.txt +0 -500
  356. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/index_dox.txt +0 -48
  357. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/.gitignore +0 -10
  358. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/timer.cpp +0 -24
  359. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/.gitignore +0 -10
  360. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/timer.cpp +0 -29
  361. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/.gitignore +0 -10
  362. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/timer.cpp +0 -43
  363. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/.gitignore +0 -10
  364. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/timer.cpp +0 -54
  365. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/.gitignore +0 -10
  366. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/timer.cpp +0 -80
  367. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer_dox.txt +0 -378
  368. data/ext/third_party/asio/asio/src/examples/cpp03/windows/.gitignore +0 -10
  369. data/ext/third_party/asio/asio/src/examples/cpp03/windows/transmit_file.cpp +0 -177
  370. data/ext/third_party/asio/asio/src/examples/cpp11/Makefile.am +0 -161
  371. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/.gitignore +0 -10
  372. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/server.cpp +0 -255
  373. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/.gitignore +0 -10
  374. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/reference_counted.cpp +0 -122
  375. data/ext/third_party/asio/asio/src/examples/cpp11/chat/.gitignore +0 -11
  376. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_client.cpp +0 -167
  377. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_message.hpp +0 -91
  378. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_server.cpp +0 -227
  379. data/ext/third_party/asio/asio/src/examples/cpp11/echo/.gitignore +0 -11
  380. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_tcp_echo_server.cpp +0 -114
  381. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_udp_echo_server.cpp +0 -82
  382. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp +0 -55
  383. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp +0 -74
  384. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp +0 -58
  385. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_server.cpp +0 -52
  386. data/ext/third_party/asio/asio/src/examples/cpp11/executors/.gitignore +0 -5
  387. data/ext/third_party/asio/asio/src/examples/cpp11/executors/actor.cpp +0 -286
  388. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_1.cpp +0 -54
  389. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_2.cpp +0 -54
  390. data/ext/third_party/asio/asio/src/examples/cpp11/executors/fork_join.cpp +0 -328
  391. data/ext/third_party/asio/asio/src/examples/cpp11/executors/pipeline.cpp +0 -299
  392. data/ext/third_party/asio/asio/src/examples/cpp11/executors/priority_scheduler.cpp +0 -174
  393. data/ext/third_party/asio/asio/src/examples/cpp11/fork/.gitignore +0 -11
  394. data/ext/third_party/asio/asio/src/examples/cpp11/fork/daemon.cpp +0 -189
  395. data/ext/third_party/asio/asio/src/examples/cpp11/fork/process_per_connection.cpp +0 -162
  396. data/ext/third_party/asio/asio/src/examples/cpp11/futures/.gitignore +0 -11
  397. data/ext/third_party/asio/asio/src/examples/cpp11/futures/daytime_client.cpp +0 -94
  398. data/ext/third_party/asio/asio/src/examples/cpp11/handler_tracking/custom_tracking.hpp +0 -201
  399. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/.gitignore +0 -11
  400. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.cpp +0 -94
  401. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.hpp +0 -79
  402. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.cpp +0 -40
  403. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.hpp +0 -48
  404. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/header.hpp +0 -28
  405. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/main.cpp +0 -43
  406. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.cpp +0 -45
  407. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.hpp +0 -27
  408. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.cpp +0 -255
  409. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.hpp +0 -64
  410. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request.hpp +0 -34
  411. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.cpp +0 -121
  412. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.hpp +0 -47
  413. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.cpp +0 -315
  414. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.hpp +0 -96
  415. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.cpp +0 -94
  416. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.hpp +0 -64
  417. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/.gitignore +0 -10
  418. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/prioritised_handlers.cpp +0 -202
  419. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/.gitignore +0 -11
  420. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/http_client.cpp +0 -91
  421. data/ext/third_party/asio/asio/src/examples/cpp11/local/.gitignore +0 -13
  422. data/ext/third_party/asio/asio/src/examples/cpp11/local/connect_pair.cpp +0 -129
  423. data/ext/third_party/asio/asio/src/examples/cpp11/local/iostream_client.cpp +0 -61
  424. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_client.cpp +0 -60
  425. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_server.cpp +0 -121
  426. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/.gitignore +0 -11
  427. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/receiver.cpp +0 -88
  428. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/sender.cpp +0 -91
  429. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/.gitignore +0 -10
  430. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/third_party_lib.cpp +0 -212
  431. data/ext/third_party/asio/asio/src/examples/cpp11/operations/.gitignore +0 -10
  432. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_1.cpp +0 -113
  433. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_2.cpp +0 -131
  434. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_3.cpp +0 -192
  435. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_4.cpp +0 -207
  436. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_5.cpp +0 -243
  437. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_6.cpp +0 -302
  438. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_7.cpp +0 -222
  439. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_8.cpp +0 -217
  440. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/.gitignore +0 -10
  441. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/socks4.hpp +0 -143
  442. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/sync_client.cpp +0 -93
  443. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/.gitignore +0 -12
  444. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/echo_server.cpp +0 -111
  445. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/parallel_grep.cpp +0 -84
  446. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/.gitignore +0 -11
  447. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/README +0 -8
  448. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/ca.pem +0 -49
  449. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/client.cpp +0 -165
  450. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/dh2048.pem +0 -8
  451. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.cpp +0 -143
  452. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.pem +0 -71
  453. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/.gitignore +0 -11
  454. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/async_tcp_client.cpp +0 -311
  455. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_tcp_client.cpp +0 -192
  456. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp +0 -197
  457. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_udp_client.cpp +0 -155
  458. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/server.cpp +0 -433
  459. data/ext/third_party/asio/asio/src/examples/cpp11/timers/.gitignore +0 -10
  460. data/ext/third_party/asio/asio/src/examples/cpp11/timers/time_t_timer.cpp +0 -106
  461. data/ext/third_party/asio/asio/src/examples/cpp14/Makefile.am +0 -64
  462. data/ext/third_party/asio/asio/src/examples/cpp14/echo/.gitignore +0 -11
  463. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_tcp_echo_server.cpp +0 -117
  464. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_udp_echo_server.cpp +0 -83
  465. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp +0 -55
  466. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp +0 -77
  467. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_client.cpp +0 -59
  468. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_server.cpp +0 -53
  469. data/ext/third_party/asio/asio/src/examples/cpp14/executors/.gitignore +0 -6
  470. data/ext/third_party/asio/asio/src/examples/cpp14/executors/actor.cpp +0 -281
  471. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_1.cpp +0 -47
  472. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_2.cpp +0 -68
  473. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_1.cpp +0 -54
  474. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_2.cpp +0 -53
  475. data/ext/third_party/asio/asio/src/examples/cpp14/executors/fork_join.cpp +0 -327
  476. data/ext/third_party/asio/asio/src/examples/cpp14/executors/pipeline.cpp +0 -294
  477. data/ext/third_party/asio/asio/src/examples/cpp14/executors/priority_scheduler.cpp +0 -173
  478. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/.gitignore +0 -11
  479. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/http_client.cpp +0 -91
  480. data/ext/third_party/asio/asio/src/examples/cpp14/operations/.gitignore +0 -10
  481. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_1.cpp +0 -113
  482. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_2.cpp +0 -131
  483. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_3.cpp +0 -186
  484. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_4.cpp +0 -201
  485. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_5.cpp +0 -238
  486. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_6.cpp +0 -298
  487. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_7.cpp +0 -219
  488. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_8.cpp +0 -212
  489. data/ext/third_party/asio/asio/src/examples/cpp17/Makefile.am +0 -8
  490. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/chat_server.cpp +0 -225
  491. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server.cpp +0 -76
  492. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp +0 -78
  493. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/range_based_for.cpp +0 -107
  494. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp +0 -85
  495. data/ext/third_party/asio/asio/src/tests/.gitignore +0 -11
  496. data/ext/third_party/asio/asio/src/tests/Makefile.am +0 -432
  497. data/ext/third_party/asio/asio/src/tests/latency/.gitignore +0 -11
  498. data/ext/third_party/asio/asio/src/tests/latency/allocator.hpp +0 -52
  499. data/ext/third_party/asio/asio/src/tests/latency/high_res_clock.hpp +0 -53
  500. data/ext/third_party/asio/asio/src/tests/latency/tcp_client.cpp +0 -124
  501. data/ext/third_party/asio/asio/src/tests/latency/tcp_server.cpp +0 -114
  502. data/ext/third_party/asio/asio/src/tests/latency/udp_client.cpp +0 -104
  503. data/ext/third_party/asio/asio/src/tests/latency/udp_server.cpp +0 -125
  504. data/ext/third_party/asio/asio/src/tests/performance/.gitignore +0 -11
  505. data/ext/third_party/asio/asio/src/tests/performance/client.cpp +0 -286
  506. data/ext/third_party/asio/asio/src/tests/performance/handler_allocator.hpp +0 -112
  507. data/ext/third_party/asio/asio/src/tests/performance/server.cpp +0 -233
  508. data/ext/third_party/asio/asio/src/tests/unit/.gitignore +0 -75
  509. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_ops.hpp +0 -415
  510. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_result.hpp +0 -94
  511. data/ext/third_party/asio/asio/src/tests/unit/archetypes/gettable_socket_option.hpp +0 -54
  512. data/ext/third_party/asio/asio/src/tests/unit/archetypes/io_control_command.hpp +0 -32
  513. data/ext/third_party/asio/asio/src/tests/unit/archetypes/settable_socket_option.hpp +0 -49
  514. data/ext/third_party/asio/asio/src/tests/unit/associated_allocator.cpp +0 -25
  515. data/ext/third_party/asio/asio/src/tests/unit/associated_executor.cpp +0 -25
  516. data/ext/third_party/asio/asio/src/tests/unit/async_result.cpp +0 -25
  517. data/ext/third_party/asio/asio/src/tests/unit/awaitable.cpp +0 -25
  518. data/ext/third_party/asio/asio/src/tests/unit/basic_datagram_socket.cpp +0 -25
  519. data/ext/third_party/asio/asio/src/tests/unit/basic_deadline_timer.cpp +0 -25
  520. data/ext/third_party/asio/asio/src/tests/unit/basic_raw_socket.cpp +0 -25
  521. data/ext/third_party/asio/asio/src/tests/unit/basic_seq_packet_socket.cpp +0 -25
  522. data/ext/third_party/asio/asio/src/tests/unit/basic_serial_port.cpp +0 -26
  523. data/ext/third_party/asio/asio/src/tests/unit/basic_signal_set.cpp +0 -25
  524. data/ext/third_party/asio/asio/src/tests/unit/basic_socket.cpp +0 -25
  525. data/ext/third_party/asio/asio/src/tests/unit/basic_socket_acceptor.cpp +0 -25
  526. data/ext/third_party/asio/asio/src/tests/unit/basic_stream_socket.cpp +0 -25
  527. data/ext/third_party/asio/asio/src/tests/unit/basic_streambuf.cpp +0 -25
  528. data/ext/third_party/asio/asio/src/tests/unit/basic_waitable_timer.cpp +0 -25
  529. data/ext/third_party/asio/asio/src/tests/unit/bind_executor.cpp +0 -25
  530. data/ext/third_party/asio/asio/src/tests/unit/buffer.cpp +0 -830
  531. data/ext/third_party/asio/asio/src/tests/unit/buffered_read_stream.cpp +0 -338
  532. data/ext/third_party/asio/asio/src/tests/unit/buffered_stream.cpp +0 -364
  533. data/ext/third_party/asio/asio/src/tests/unit/buffered_write_stream.cpp +0 -353
  534. data/ext/third_party/asio/asio/src/tests/unit/buffers_iterator.cpp +0 -292
  535. data/ext/third_party/asio/asio/src/tests/unit/co_spawn.cpp +0 -25
  536. data/ext/third_party/asio/asio/src/tests/unit/completion_condition.cpp +0 -25
  537. data/ext/third_party/asio/asio/src/tests/unit/compose.cpp +0 -185
  538. data/ext/third_party/asio/asio/src/tests/unit/connect.cpp +0 -1190
  539. data/ext/third_party/asio/asio/src/tests/unit/coroutine.cpp +0 -112
  540. data/ext/third_party/asio/asio/src/tests/unit/deadline_timer.cpp +0 -392
  541. data/ext/third_party/asio/asio/src/tests/unit/defer.cpp +0 -25
  542. data/ext/third_party/asio/asio/src/tests/unit/detached.cpp +0 -25
  543. data/ext/third_party/asio/asio/src/tests/unit/dispatch.cpp +0 -25
  544. data/ext/third_party/asio/asio/src/tests/unit/error.cpp +0 -89
  545. data/ext/third_party/asio/asio/src/tests/unit/execution_context.cpp +0 -25
  546. data/ext/third_party/asio/asio/src/tests/unit/executor.cpp +0 -25
  547. data/ext/third_party/asio/asio/src/tests/unit/executor_work_guard.cpp +0 -25
  548. data/ext/third_party/asio/asio/src/tests/unit/generic/.gitignore +0 -14
  549. data/ext/third_party/asio/asio/src/tests/unit/generic/basic_endpoint.cpp +0 -25
  550. data/ext/third_party/asio/asio/src/tests/unit/generic/datagram_protocol.cpp +0 -263
  551. data/ext/third_party/asio/asio/src/tests/unit/generic/raw_protocol.cpp +0 -263
  552. data/ext/third_party/asio/asio/src/tests/unit/generic/seq_packet_protocol.cpp +0 -205
  553. data/ext/third_party/asio/asio/src/tests/unit/generic/stream_protocol.cpp +0 -248
  554. data/ext/third_party/asio/asio/src/tests/unit/high_resolution_timer.cpp +0 -30
  555. data/ext/third_party/asio/asio/src/tests/unit/io_context.cpp +0 -362
  556. data/ext/third_party/asio/asio/src/tests/unit/io_context_strand.cpp +0 -325
  557. data/ext/third_party/asio/asio/src/tests/unit/ip/.gitignore +0 -27
  558. data/ext/third_party/asio/asio/src/tests/unit/ip/address.cpp +0 -144
  559. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_endpoint.cpp +0 -25
  560. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver.cpp +0 -25
  561. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_entry.cpp +0 -25
  562. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_iterator.cpp +0 -25
  563. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_query.cpp +0 -25
  564. data/ext/third_party/asio/asio/src/tests/unit/ip/host_name.cpp +0 -55
  565. data/ext/third_party/asio/asio/src/tests/unit/ip/icmp.cpp +0 -577
  566. data/ext/third_party/asio/asio/src/tests/unit/ip/multicast.cpp +0 -363
  567. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v4.cpp +0 -314
  568. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v6.cpp +0 -238
  569. data/ext/third_party/asio/asio/src/tests/unit/ip/resolver_query_base.cpp +0 -25
  570. data/ext/third_party/asio/asio/src/tests/unit/ip/tcp.cpp +0 -1346
  571. data/ext/third_party/asio/asio/src/tests/unit/ip/udp.cpp +0 -673
  572. data/ext/third_party/asio/asio/src/tests/unit/ip/unicast.cpp +0 -171
  573. data/ext/third_party/asio/asio/src/tests/unit/ip/v6_only.cpp +0 -135
  574. data/ext/third_party/asio/asio/src/tests/unit/is_read_buffered.cpp +0 -129
  575. data/ext/third_party/asio/asio/src/tests/unit/is_write_buffered.cpp +0 -129
  576. data/ext/third_party/asio/asio/src/tests/unit/local/.gitignore +0 -13
  577. data/ext/third_party/asio/asio/src/tests/unit/local/basic_endpoint.cpp +0 -25
  578. data/ext/third_party/asio/asio/src/tests/unit/local/connect_pair.cpp +0 -76
  579. data/ext/third_party/asio/asio/src/tests/unit/local/datagram_protocol.cpp +0 -242
  580. data/ext/third_party/asio/asio/src/tests/unit/local/stream_protocol.cpp +0 -219
  581. data/ext/third_party/asio/asio/src/tests/unit/packaged_task.cpp +0 -25
  582. data/ext/third_party/asio/asio/src/tests/unit/placeholders.cpp +0 -25
  583. data/ext/third_party/asio/asio/src/tests/unit/posix/.gitignore +0 -14
  584. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_descriptor.cpp +0 -25
  585. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_stream_descriptor.cpp +0 -25
  586. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor.cpp +0 -25
  587. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor_base.cpp +0 -25
  588. data/ext/third_party/asio/asio/src/tests/unit/posix/stream_descriptor.cpp +0 -183
  589. data/ext/third_party/asio/asio/src/tests/unit/post.cpp +0 -25
  590. data/ext/third_party/asio/asio/src/tests/unit/read.cpp +0 -4997
  591. data/ext/third_party/asio/asio/src/tests/unit/read_at.cpp +0 -7502
  592. data/ext/third_party/asio/asio/src/tests/unit/read_until.cpp +0 -1658
  593. data/ext/third_party/asio/asio/src/tests/unit/redirect_error.cpp +0 -25
  594. data/ext/third_party/asio/asio/src/tests/unit/serial_port.cpp +0 -173
  595. data/ext/third_party/asio/asio/src/tests/unit/serial_port_base.cpp +0 -99
  596. data/ext/third_party/asio/asio/src/tests/unit/signal_set.cpp +0 -95
  597. data/ext/third_party/asio/asio/src/tests/unit/socket_base.cpp +0 -650
  598. data/ext/third_party/asio/asio/src/tests/unit/ssl/.gitignore +0 -15
  599. data/ext/third_party/asio/asio/src/tests/unit/ssl/context.cpp +0 -25
  600. data/ext/third_party/asio/asio/src/tests/unit/ssl/context_base.cpp +0 -25
  601. data/ext/third_party/asio/asio/src/tests/unit/ssl/error.cpp +0 -25
  602. data/ext/third_party/asio/asio/src/tests/unit/ssl/host_name_verification.cpp +0 -25
  603. data/ext/third_party/asio/asio/src/tests/unit/ssl/rfc2818_verification.cpp +0 -25
  604. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream.cpp +0 -191
  605. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream_base.cpp +0 -25
  606. data/ext/third_party/asio/asio/src/tests/unit/steady_timer.cpp +0 -30
  607. data/ext/third_party/asio/asio/src/tests/unit/strand.cpp +0 -263
  608. data/ext/third_party/asio/asio/src/tests/unit/streambuf.cpp +0 -62
  609. data/ext/third_party/asio/asio/src/tests/unit/system_context.cpp +0 -30
  610. data/ext/third_party/asio/asio/src/tests/unit/system_executor.cpp +0 -30
  611. data/ext/third_party/asio/asio/src/tests/unit/system_timer.cpp +0 -399
  612. data/ext/third_party/asio/asio/src/tests/unit/this_coro.cpp +0 -25
  613. data/ext/third_party/asio/asio/src/tests/unit/thread.cpp +0 -25
  614. data/ext/third_party/asio/asio/src/tests/unit/time_traits.cpp +0 -25
  615. data/ext/third_party/asio/asio/src/tests/unit/ts/.gitignore +0 -17
  616. data/ext/third_party/asio/asio/src/tests/unit/ts/buffer.cpp +0 -30
  617. data/ext/third_party/asio/asio/src/tests/unit/ts/executor.cpp +0 -30
  618. data/ext/third_party/asio/asio/src/tests/unit/ts/internet.cpp +0 -30
  619. data/ext/third_party/asio/asio/src/tests/unit/ts/io_context.cpp +0 -30
  620. data/ext/third_party/asio/asio/src/tests/unit/ts/net.cpp +0 -30
  621. data/ext/third_party/asio/asio/src/tests/unit/ts/netfwd.cpp +0 -33
  622. data/ext/third_party/asio/asio/src/tests/unit/ts/socket.cpp +0 -30
  623. data/ext/third_party/asio/asio/src/tests/unit/ts/timer.cpp +0 -30
  624. data/ext/third_party/asio/asio/src/tests/unit/unit_test.hpp +0 -175
  625. data/ext/third_party/asio/asio/src/tests/unit/use_awaitable.cpp +0 -25
  626. data/ext/third_party/asio/asio/src/tests/unit/use_future.cpp +0 -670
  627. data/ext/third_party/asio/asio/src/tests/unit/uses_executor.cpp +0 -25
  628. data/ext/third_party/asio/asio/src/tests/unit/wait_traits.cpp +0 -25
  629. data/ext/third_party/asio/asio/src/tests/unit/windows/.gitignore +0 -18
  630. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_object_handle.cpp +0 -25
  631. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_overlapped_handle.cpp +0 -25
  632. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_random_access_handle.cpp +0 -25
  633. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_stream_handle.cpp +0 -25
  634. data/ext/third_party/asio/asio/src/tests/unit/windows/object_handle.cpp +0 -130
  635. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_handle.cpp +0 -26
  636. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_ptr.cpp +0 -107
  637. data/ext/third_party/asio/asio/src/tests/unit/windows/random_access_handle.cpp +0 -155
  638. data/ext/third_party/asio/asio/src/tests/unit/windows/stream_handle.cpp +0 -148
  639. data/ext/third_party/asio/asio/src/tests/unit/write.cpp +0 -4904
  640. data/ext/third_party/asio/asio/src/tests/unit/write_at.cpp +0 -7563
  641. data/ext/third_party/asio/asio/src/tools/handlerviz.pl +0 -299
  642. data/ext/third_party/gsl/tests/CMakeLists.txt +0 -267
  643. data/ext/third_party/gsl/tests/CMakeLists.txt.in +0 -14
  644. data/ext/third_party/gsl/tests/algorithm_tests.cpp +0 -227
  645. data/ext/third_party/gsl/tests/assertion_tests.cpp +0 -61
  646. data/ext/third_party/gsl/tests/at_tests.cpp +0 -135
  647. data/ext/third_party/gsl/tests/bounds_tests.cpp +0 -102
  648. data/ext/third_party/gsl/tests/byte_tests.cpp +0 -129
  649. data/ext/third_party/gsl/tests/multi_span_tests.cpp +0 -1866
  650. data/ext/third_party/gsl/tests/no_exception_ensure_tests.cpp +0 -48
  651. data/ext/third_party/gsl/tests/notnull_tests.cpp +0 -535
  652. data/ext/third_party/gsl/tests/owner_tests.cpp +0 -43
  653. data/ext/third_party/gsl/tests/span_compatibility_tests.cpp +0 -1021
  654. data/ext/third_party/gsl/tests/span_ext_tests.cpp +0 -360
  655. data/ext/third_party/gsl/tests/span_tests.cpp +0 -1244
  656. data/ext/third_party/gsl/tests/strict_notnull_tests.cpp +0 -190
  657. data/ext/third_party/gsl/tests/strided_span_tests.cpp +0 -790
  658. data/ext/third_party/gsl/tests/string_span_tests.cpp +0 -1217
  659. data/ext/third_party/gsl/tests/utils_tests.cpp +0 -129
  660. data/ext/third_party/http_parser/contrib/parsertrace.c +0 -157
  661. data/ext/third_party/http_parser/contrib/url_parser.c +0 -47
  662. data/ext/third_party/http_parser/fuzzers/fuzz_parser.c +0 -26
  663. data/ext/third_party/http_parser/fuzzers/fuzz_url.c +0 -14
  664. data/ext/third_party/json/contrib/nlohmann.cpp +0 -48
  665. data/ext/third_party/json/contrib/nlohmann/from_value.hpp +0 -62
  666. data/ext/third_party/json/contrib/nlohmann/json.hpp +0 -18928
  667. data/ext/third_party/json/contrib/nlohmann/to_value.hpp +0 -109
  668. data/ext/third_party/json/doc/Advanced-Use-Cases.md +0 -83
  669. data/ext/third_party/json/doc/Batteries-Included.md +0 -212
  670. data/ext/third_party/json/doc/Binding-Traits.md +0 -319
  671. data/ext/third_party/json/doc/Changelog.md +0 -31
  672. data/ext/third_party/json/doc/Common-Use-Cases.md +0 -148
  673. data/ext/third_party/json/doc/Design-Decisions.md +0 -36
  674. data/ext/third_party/json/doc/Events-Interface.md +0 -140
  675. data/ext/third_party/json/doc/Getting-Started.md +0 -19
  676. data/ext/third_party/json/doc/Instance-Sharing.md +0 -163
  677. data/ext/third_party/json/doc/Interoperability.md +0 -75
  678. data/ext/third_party/json/doc/Overview.md +0 -24
  679. data/ext/third_party/json/doc/Overview.png +0 -0
  680. data/ext/third_party/json/doc/Parser-Interface.md +0 -84
  681. data/ext/third_party/json/doc/README.md +0 -78
  682. data/ext/third_party/json/doc/Scratchpad.md +0 -25
  683. data/ext/third_party/json/doc/Type-Traits.md +0 -364
  684. data/ext/third_party/json/doc/Types.png +0 -0
  685. data/ext/third_party/json/doc/Value-Class.md +0 -525
  686. data/ext/third_party/json/src/example/json/CMakeLists.txt +0 -67
  687. data/ext/third_party/json/src/example/json/cbor_to_jaxn.cpp +0 -18
  688. data/ext/third_party/json/src/example/json/cbor_to_json.cpp +0 -18
  689. data/ext/third_party/json/src/example/json/cbor_to_msgpack.cpp +0 -18
  690. data/ext/third_party/json/src/example/json/cbor_to_pretty_jaxn.cpp +0 -18
  691. data/ext/third_party/json/src/example/json/cbor_to_pretty_json.cpp +0 -18
  692. data/ext/third_party/json/src/example/json/cbor_to_ubjson.cpp +0 -18
  693. data/ext/third_party/json/src/example/json/jaxn_to_cbor.cpp +0 -18
  694. data/ext/third_party/json/src/example/json/jaxn_to_cplusplus.cpp +0 -249
  695. data/ext/third_party/json/src/example/json/jaxn_to_jaxn.cpp +0 -18
  696. data/ext/third_party/json/src/example/json/jaxn_to_msgpack.cpp +0 -18
  697. data/ext/third_party/json/src/example/json/jaxn_to_pretty_jaxn.cpp +0 -18
  698. data/ext/third_party/json/src/example/json/jaxn_to_ubjson.cpp +0 -18
  699. data/ext/third_party/json/src/example/json/json_to_cbor.cpp +0 -18
  700. data/ext/third_party/json/src/example/json/json_to_json.cpp +0 -18
  701. data/ext/third_party/json/src/example/json/json_to_msgpack.cpp +0 -18
  702. data/ext/third_party/json/src/example/json/json_to_pretty_json.cpp +0 -18
  703. data/ext/third_party/json/src/example/json/json_to_ubjson.cpp +0 -18
  704. data/ext/third_party/json/src/example/json/msgpack_to_cbor.cpp +0 -18
  705. data/ext/third_party/json/src/example/json/msgpack_to_jaxn.cpp +0 -18
  706. data/ext/third_party/json/src/example/json/msgpack_to_json.cpp +0 -18
  707. data/ext/third_party/json/src/example/json/msgpack_to_pretty_jaxn.cpp +0 -18
  708. data/ext/third_party/json/src/example/json/msgpack_to_pretty_json.cpp +0 -18
  709. data/ext/third_party/json/src/example/json/msgpack_to_ubjson.cpp +0 -18
  710. data/ext/third_party/json/src/example/json/printf_doubles.cpp +0 -51
  711. data/ext/third_party/json/src/example/json/ubjson_to_cbor.cpp +0 -18
  712. data/ext/third_party/json/src/example/json/ubjson_to_jaxn.cpp +0 -18
  713. data/ext/third_party/json/src/example/json/ubjson_to_json.cpp +0 -18
  714. data/ext/third_party/json/src/example/json/ubjson_to_msgpack.cpp +0 -18
  715. data/ext/third_party/json/src/example/json/ubjson_to_pretty_jaxn.cpp +0 -18
  716. data/ext/third_party/json/src/example/json/ubjson_to_pretty_json.cpp +0 -18
  717. data/ext/third_party/json/src/example/json/validate_event_order.cpp +0 -27
  718. data/ext/third_party/json/src/example/json/validate_integer.cpp +0 -56
  719. data/ext/third_party/json/src/perf/json/bench_mark.hpp +0 -43
  720. data/ext/third_party/json/src/perf/json/benchmark.cpp +0 -34
  721. data/ext/third_party/json/src/perf/json/parse_file.cpp +0 -17
  722. data/ext/third_party/json/src/perf/json/pretty_print_file.cpp +0 -19
  723. data/ext/third_party/json/src/perf/json/print_double.cpp +0 -34
  724. data/ext/third_party/json/src/perf/json/print_file.cpp +0 -19
  725. data/ext/third_party/json/src/perf/json/sizes.cpp +0 -24
  726. data/ext/third_party/json/src/perf/json/syntax_only.cpp +0 -27
  727. data/ext/third_party/json/src/test/json/CMakeLists.txt +0 -97
  728. data/ext/third_party/json/src/test/json/big_list_of_naughty_strings.cpp +0 -43
  729. data/ext/third_party/json/src/test/json/binding_array.cpp +0 -549
  730. data/ext/third_party/json/src/test/json/binding_factory.cpp +0 -265
  731. data/ext/third_party/json/src/test/json/binding_object.cpp +0 -208
  732. data/ext/third_party/json/src/test/json/binding_versions.cpp +0 -95
  733. data/ext/third_party/json/src/test/json/cbor.cpp +0 -149
  734. data/ext/third_party/json/src/test/json/cbor_parts_parser.cpp +0 -36
  735. data/ext/third_party/json/src/test/json/contrib_diff.cpp +0 -43
  736. data/ext/third_party/json/src/test/json/contrib_get.cpp +0 -42
  737. data/ext/third_party/json/src/test/json/contrib_patch_add.cpp +0 -75
  738. data/ext/third_party/json/src/test/json/contrib_patch_copy.cpp +0 -113
  739. data/ext/third_party/json/src/test/json/contrib_patch_move.cpp +0 -97
  740. data/ext/third_party/json/src/test/json/contrib_patch_remove.cpp +0 -85
  741. data/ext/third_party/json/src/test/json/contrib_patch_replace.cpp +0 -79
  742. data/ext/third_party/json/src/test/json/contrib_patch_test.cpp +0 -69
  743. data/ext/third_party/json/src/test/json/contrib_position.cpp +0 -48
  744. data/ext/third_party/json/src/test/json/contrib_reference.cpp +0 -44
  745. data/ext/third_party/json/src/test/json/contrib_schema.cpp +0 -132
  746. data/ext/third_party/json/src/test/json/contrib_traits.cpp +0 -258
  747. data/ext/third_party/json/src/test/json/double.cpp +0 -182
  748. data/ext/third_party/json/src/test/json/enable_implicit_constructor.cpp +0 -54
  749. data/ext/third_party/json/src/test/json/escape.cpp +0 -42
  750. data/ext/third_party/json/src/test/json/events_binary_to.cpp +0 -56
  751. data/ext/third_party/json/src/test/json/events_compare.cpp +0 -433
  752. data/ext/third_party/json/src/test/json/events_debug.cpp +0 -24
  753. data/ext/third_party/json/src/test/json/events_hash.cpp +0 -65
  754. data/ext/third_party/json/src/test/json/events_to_stream.cpp +0 -28
  755. data/ext/third_party/json/src/test/json/events_to_string.cpp +0 -25
  756. data/ext/third_party/json/src/test/json/include_json.cpp +0 -14
  757. data/ext/third_party/json/src/test/json/integer.cpp +0 -118
  758. data/ext/third_party/json/src/test/json/jaxn_ostream.cpp +0 -76
  759. data/ext/third_party/json/src/test/json/jaxn_parse.cpp +0 -239
  760. data/ext/third_party/json/src/test/json/jaxn_parts_parser.cpp +0 -220
  761. data/ext/third_party/json/src/test/json/json_ostream.cpp +0 -102
  762. data/ext/third_party/json/src/test/json/json_parse.cpp +0 -153
  763. data/ext/third_party/json/src/test/json/json_parts_parser.cpp +0 -124
  764. data/ext/third_party/json/src/test/json/json_pointer.cpp +0 -176
  765. data/ext/third_party/json/src/test/json/key_camel_case_to_snake_case.cpp +0 -38
  766. data/ext/third_party/json/src/test/json/key_snake_case_to_camel_case.cpp +0 -33
  767. data/ext/third_party/json/src/test/json/literal.cpp +0 -18
  768. data/ext/third_party/json/src/test/json/main.hpp +0 -20
  769. data/ext/third_party/json/src/test/json/make_events.hpp +0 -362
  770. data/ext/third_party/json/src/test/json/msgpack.cpp +0 -136
  771. data/ext/third_party/json/src/test/json/object_construction.cpp +0 -167
  772. data/ext/third_party/json/src/test/json/opaque_pointer.cpp +0 -192
  773. data/ext/third_party/json/src/test/json/operators.cpp +0 -494
  774. data/ext/third_party/json/src/test/json/optional.cpp +0 -79
  775. data/ext/third_party/json/src/test/json/public_base.cpp +0 -142
  776. data/ext/third_party/json/src/test/json/self_contained.cpp +0 -106
  777. data/ext/third_party/json/src/test/json/sha256.cpp +0 -38
  778. data/ext/third_party/json/src/test/json/string_view.cpp +0 -70
  779. data/ext/third_party/json/src/test/json/temporary_parsing.cpp +0 -339
  780. data/ext/third_party/json/src/test/json/test.hpp +0 -74
  781. data/ext/third_party/json/src/test/json/test_events.hpp +0 -250
  782. data/ext/third_party/json/src/test/json/test_types.hpp +0 -557
  783. data/ext/third_party/json/src/test/json/test_unhex.hpp +0 -42
  784. data/ext/third_party/json/src/test/json/type.cpp +0 -35
  785. data/ext/third_party/json/src/test/json/ubjson.cpp +0 -119
  786. data/ext/third_party/json/src/test/json/uri_fragment.cpp +0 -52
  787. data/ext/third_party/json/src/test/json/validate_event_interfaces.cpp +0 -177
  788. data/ext/third_party/json/src/test/json/validate_utf8.cpp +0 -37
  789. data/ext/third_party/json/src/test/json/value_access.cpp +0 -144
  790. data/ext/third_party/json/src/test/json/value_basics.cpp +0 -241
  791. data/ext/third_party/json/src/test/json/value_create.cpp +0 -372
  792. data/ext/third_party/json/src/test/json/value_ptr.cpp +0 -33
  793. data/ext/third_party/json/src/test/json/value_subscript.cpp +0 -89
  794. data/ext/third_party/json/src/test/json/with_arguments.cpp +0 -98
  795. data/ext/third_party/json/tests/blns.json +0 -496
  796. data/ext/third_party/json/tests/canada.json +0 -9
  797. data/ext/third_party/json/tests/citm_catalog.json +0 -50469
  798. data/ext/third_party/json/tests/draft4/additionalItems.json +0 -82
  799. data/ext/third_party/json/tests/draft4/additionalProperties.json +0 -88
  800. data/ext/third_party/json/tests/draft4/allOf.json +0 -112
  801. data/ext/third_party/json/tests/draft4/anyOf.json +0 -68
  802. data/ext/third_party/json/tests/draft4/default.json +0 -49
  803. data/ext/third_party/json/tests/draft4/definitions.json +0 -32
  804. data/ext/third_party/json/tests/draft4/dependencies.json +0 -113
  805. data/ext/third_party/json/tests/draft4/enum.json +0 -72
  806. data/ext/third_party/json/tests/draft4/items.json +0 -46
  807. data/ext/third_party/json/tests/draft4/maxItems.json +0 -28
  808. data/ext/third_party/json/tests/draft4/maxLength.json +0 -33
  809. data/ext/third_party/json/tests/draft4/maxProperties.json +0 -28
  810. data/ext/third_party/json/tests/draft4/maximum.json +0 -42
  811. data/ext/third_party/json/tests/draft4/minItems.json +0 -28
  812. data/ext/third_party/json/tests/draft4/minLength.json +0 -33
  813. data/ext/third_party/json/tests/draft4/minProperties.json +0 -28
  814. data/ext/third_party/json/tests/draft4/minimum.json +0 -42
  815. data/ext/third_party/json/tests/draft4/multipleOf.json +0 -60
  816. data/ext/third_party/json/tests/draft4/not.json +0 -96
  817. data/ext/third_party/json/tests/draft4/oneOf.json +0 -68
  818. data/ext/third_party/json/tests/draft4/optional/bignum.json +0 -107
  819. data/ext/third_party/json/tests/draft4/optional/format.json +0 -148
  820. data/ext/third_party/json/tests/draft4/optional/zeroTerminatedFloats.json +0 -15
  821. data/ext/third_party/json/tests/draft4/pattern.json +0 -34
  822. data/ext/third_party/json/tests/draft4/patternProperties.json +0 -110
  823. data/ext/third_party/json/tests/draft4/properties.json +0 -92
  824. data/ext/third_party/json/tests/draft4/ref.json +0 -179
  825. data/ext/third_party/json/tests/draft4/refRemote.json +0 -74
  826. data/ext/third_party/json/tests/draft4/required.json +0 -44
  827. data/ext/third_party/json/tests/draft4/type.json +0 -345
  828. data/ext/third_party/json/tests/draft4/uniqueItems.json +0 -79
  829. data/ext/third_party/json/tests/taocpp/binary.jaxn +0 -4
  830. data/ext/third_party/json/tests/taocpp/dateTime.json +0 -108
  831. data/ext/third_party/json/tests/taocpp/make_events.cbor +0 -0
  832. data/ext/third_party/json/tests/taocpp/number.json +0 -682
  833. data/ext/third_party/json/tests/taocpp/position.json +0 -8
  834. data/ext/third_party/json/tests/taocpp/schema.json +0 -378
  835. data/ext/third_party/json/tests/twitter.json +0 -15482
  836. data/ext/third_party/snappy/testdata/alice29.txt +0 -3609
  837. data/ext/third_party/snappy/testdata/asyoulik.txt +0 -4122
  838. data/ext/third_party/snappy/testdata/baddata1.snappy +0 -0
  839. data/ext/third_party/snappy/testdata/baddata2.snappy +0 -0
  840. data/ext/third_party/snappy/testdata/baddata3.snappy +0 -0
  841. data/ext/third_party/snappy/testdata/fireworks.jpeg +0 -0
  842. data/ext/third_party/snappy/testdata/geo.protodata +0 -0
  843. data/ext/third_party/snappy/testdata/html +0 -1
  844. data/ext/third_party/snappy/testdata/html_x_4 +0 -1
  845. data/ext/third_party/snappy/testdata/kppkn.gtb +0 -0
  846. data/ext/third_party/snappy/testdata/lcet10.txt +0 -7519
  847. data/ext/third_party/snappy/testdata/paper-100k.pdf +2 -600
  848. data/ext/third_party/snappy/testdata/plrabn12.txt +0 -10699
  849. data/ext/third_party/snappy/testdata/urls.10K +0 -10000
  850. data/ext/third_party/spdlog/bench/CMakeLists.txt +0 -25
  851. data/ext/third_party/spdlog/bench/async_bench.cpp +0 -179
  852. data/ext/third_party/spdlog/bench/bench.cpp +0 -238
  853. data/ext/third_party/spdlog/bench/formatter-bench.cpp +0 -80
  854. data/ext/third_party/spdlog/bench/latency.cpp +0 -166
  855. data/ext/third_party/spdlog/bench/utils.h +0 -34
  856. data/ext/third_party/spdlog/example/CMakeLists.txt +0 -23
  857. data/ext/third_party/spdlog/example/example.cpp +0 -282
  858. data/ext/third_party/spdlog/logos/jetbrains-variant-4.svg +0 -43
  859. data/ext/third_party/spdlog/scripts/extract_version.py +0 -17
  860. data/ext/third_party/spdlog/scripts/format.sh +0 -16
  861. data/ext/third_party/spdlog/tests/CMakeLists.txt +0 -70
  862. data/ext/third_party/spdlog/tests/catch.hpp +0 -15372
  863. data/ext/third_party/spdlog/tests/catch.license +0 -23
  864. data/ext/third_party/spdlog/tests/includes.h +0 -26
  865. data/ext/third_party/spdlog/tests/main.cpp +0 -2
  866. data/ext/third_party/spdlog/tests/test_async.cpp +0 -188
  867. data/ext/third_party/spdlog/tests/test_backtrace.cpp +0 -65
  868. data/ext/third_party/spdlog/tests/test_cfg.cpp +0 -93
  869. data/ext/third_party/spdlog/tests/test_create_dir.cpp +0 -80
  870. data/ext/third_party/spdlog/tests/test_daily_logger.cpp +0 -149
  871. data/ext/third_party/spdlog/tests/test_dup_filter.cpp +0 -88
  872. data/ext/third_party/spdlog/tests/test_errors.cpp +0 -118
  873. data/ext/third_party/spdlog/tests/test_eventlog.cpp +0 -71
  874. data/ext/third_party/spdlog/tests/test_file_helper.cpp +0 -102
  875. data/ext/third_party/spdlog/tests/test_file_logging.cpp +0 -98
  876. data/ext/third_party/spdlog/tests/test_fmt_helper.cpp +0 -86
  877. data/ext/third_party/spdlog/tests/test_macros.cpp +0 -60
  878. data/ext/third_party/spdlog/tests/test_misc.cpp +0 -271
  879. data/ext/third_party/spdlog/tests/test_mpmc_q.cpp +0 -106
  880. data/ext/third_party/spdlog/tests/test_pattern_formatter.cpp +0 -443
  881. data/ext/third_party/spdlog/tests/test_registry.cpp +0 -116
  882. data/ext/third_party/spdlog/tests/test_sink.h +0 -79
  883. data/ext/third_party/spdlog/tests/test_stdout_api.cpp +0 -98
  884. data/ext/third_party/spdlog/tests/test_systemd.cpp +0 -15
  885. data/ext/third_party/spdlog/tests/test_time_point.cpp +0 -36
  886. data/ext/third_party/spdlog/tests/utils.cpp +0 -125
  887. data/ext/third_party/spdlog/tests/utils.h +0 -18
  888. data/rbi/couchbase.rbi +0 -79
@@ -0,0 +1,30 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <chrono>
21
+ #include <optional>
22
+
23
+ namespace couchbase::io
24
+ {
25
+ struct retry_action {
26
+ bool retry_requested{ false };
27
+ std::chrono::milliseconds duration{};
28
+ };
29
+
30
+ } // namespace couchbase::io
@@ -0,0 +1,39 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <set>
21
+ #include <chrono>
22
+
23
+ #include <io/retry_reason.hxx>
24
+ #include <io/retry_strategy.hxx>
25
+
26
+ namespace couchbase::io
27
+ {
28
+
29
+ template<class RetryStrategy>
30
+ struct retry_context
31
+ {
32
+ bool idempotent;
33
+ int retry_attempts{ 0 };
34
+ std::chrono::milliseconds last_duration{ 0 };
35
+ std::set<retry_reason> reasons{};
36
+ RetryStrategy strategy{};
37
+ };
38
+
39
+ } // namespace couchbase::io
@@ -0,0 +1,96 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <spdlog/spdlog.h>
21
+
22
+ #include <io/retry_reason.hxx>
23
+ #include <io/retry_action.hxx>
24
+
25
+ namespace couchbase::io::retry_orchestrator
26
+ {
27
+
28
+ namespace priv
29
+ {
30
+ template<class Command>
31
+ std::chrono::milliseconds
32
+ cap_duration(std::chrono::milliseconds uncapped, std::shared_ptr<Command> command)
33
+ {
34
+ auto theoretical_deadline = std::chrono::steady_clock::now() + uncapped;
35
+ auto absolute_deadline = command->deadline.expiry();
36
+ auto delta = std::chrono::duration_cast<std::chrono::milliseconds>(theoretical_deadline - absolute_deadline);
37
+ if (delta.count() > 0) {
38
+ auto capped = uncapped - delta;
39
+ if (capped.count() < 0) {
40
+ return uncapped; // something went wrong, return the uncapped one as a safety net
41
+ }
42
+ return capped;
43
+ }
44
+ return uncapped;
45
+ }
46
+
47
+ std::chrono::milliseconds
48
+ controlled_backoff(int retry_attempts)
49
+ {
50
+ switch (retry_attempts) {
51
+ case 0:
52
+ return std::chrono::milliseconds(1);
53
+ case 1:
54
+ return std::chrono::milliseconds(10);
55
+ case 2:
56
+ return std::chrono::milliseconds(50);
57
+ case 3:
58
+ return std::chrono::milliseconds(100);
59
+ case 4:
60
+ return std::chrono::milliseconds(500);
61
+ default:
62
+ return std::chrono::milliseconds(1000);
63
+ }
64
+ }
65
+
66
+ template<class Manager, class Command>
67
+ void
68
+ retry_with_duration(std::shared_ptr<Manager> manager,
69
+ std::shared_ptr<Command> command,
70
+ retry_reason reason,
71
+ std::chrono::milliseconds duration)
72
+ {
73
+ ++command->request.retries.retry_attempts;
74
+ command->request.retries.reasons.insert(reason);
75
+ command->request.retries.last_duration = duration;
76
+ manager->schedule_for_retry(command, duration);
77
+ }
78
+
79
+ } // namespace priv
80
+
81
+ template<class Manager, class Command>
82
+ void
83
+ maybe_retry(std::shared_ptr<Manager> manager, std::shared_ptr<Command> command, retry_reason reason, std::error_code ec)
84
+ {
85
+ if (always_retry(reason)) {
86
+ return priv::retry_with_duration(manager, command, reason, priv::controlled_backoff(command->request.retries.retry_attempts));
87
+ }
88
+
89
+ retry_action action = command->request.retries.strategy.should_retry(command->request, reason);
90
+ if (action.retry_requested) {
91
+ return priv::retry_with_duration(manager, command, reason, priv::cap_duration(action.duration, command));
92
+ }
93
+ return command->invoke_handler(ec);
94
+ }
95
+
96
+ } // namespace couchbase::io::retry_orchestrator
@@ -0,0 +1,235 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <spdlog/fmt/fmt.h>
21
+
22
+ namespace couchbase::io
23
+ {
24
+ enum class retry_reason {
25
+ /**
26
+ * default value, e.g. when we don't need to retry
27
+ */
28
+ do_not_retry,
29
+
30
+ /**
31
+ * All unexpected/unknown retry errors must not be retried to avoid accidental data loss and non-deterministic behavior.
32
+ */
33
+ unknown,
34
+
35
+ /**
36
+ * The socket is not available into which the operation should’ve been written.
37
+ */
38
+ socket_not_available,
39
+
40
+ /**
41
+ * The service on a node (i.e. kv, query) is not available.
42
+ */
43
+ service_not_available,
44
+
45
+ /**
46
+ * The node where the operation is supposed to be dispatched to is not available.
47
+ */
48
+ node_not_available,
49
+
50
+ /**
51
+ * A not my vbucket response has been received.
52
+ */
53
+ kv_not_my_vbucket,
54
+
55
+ /**
56
+ * A KV response has been received which signals an outdated collection.
57
+ */
58
+ kv_collection_outdated,
59
+
60
+ /**
61
+ * An unknown response was returned and the consulted KV error map indicated a retry.
62
+ */
63
+ kv_error_map_retry_indicated,
64
+
65
+ kv_locked,
66
+
67
+ kv_temporary_failure,
68
+
69
+ kv_sync_write_in_progress,
70
+
71
+ kv_sync_write_re_commit_in_progress,
72
+
73
+ service_response_code_indicated,
74
+
75
+ /**
76
+ * While an operation was in-flight, the underlying socket has been closed.
77
+ */
78
+ socket_closed_while_in_flight,
79
+
80
+ /**
81
+ * The circuit breaker is open for the given socket/endpoint and as a result the operation is not sent into it.
82
+ */
83
+ circuit_breaker_open,
84
+
85
+ query_prepared_statement_failure,
86
+
87
+ query_index_not_found,
88
+
89
+ analytics_temporary_failure,
90
+
91
+ search_too_many_requests,
92
+
93
+ views_temporary_failure,
94
+
95
+ views_no_active_partition,
96
+ };
97
+
98
+ constexpr inline bool
99
+ allows_non_idempotent_retry(retry_reason reason)
100
+ {
101
+ switch (reason) {
102
+ case retry_reason::socket_not_available:
103
+ case retry_reason::service_not_available:
104
+ case retry_reason::node_not_available:
105
+ case retry_reason::kv_not_my_vbucket:
106
+ case retry_reason::kv_collection_outdated:
107
+ case retry_reason::kv_error_map_retry_indicated:
108
+ case retry_reason::kv_locked:
109
+ case retry_reason::kv_temporary_failure:
110
+ case retry_reason::kv_sync_write_in_progress:
111
+ case retry_reason::kv_sync_write_re_commit_in_progress:
112
+ case retry_reason::service_response_code_indicated:
113
+ case retry_reason::circuit_breaker_open:
114
+ case retry_reason::query_prepared_statement_failure:
115
+ case retry_reason::query_index_not_found:
116
+ case retry_reason::analytics_temporary_failure:
117
+ case retry_reason::search_too_many_requests:
118
+ case retry_reason::views_temporary_failure:
119
+ case retry_reason::views_no_active_partition:
120
+ return true;
121
+ case retry_reason::do_not_retry:
122
+ case retry_reason::socket_closed_while_in_flight:
123
+ case retry_reason::unknown:
124
+ return false;
125
+ }
126
+ return false;
127
+ }
128
+
129
+ constexpr inline bool
130
+ always_retry(retry_reason reason)
131
+ {
132
+ switch (reason) {
133
+ case retry_reason::kv_not_my_vbucket:
134
+ case retry_reason::kv_collection_outdated:
135
+ case retry_reason::views_no_active_partition:
136
+ return true;
137
+ case retry_reason::do_not_retry:
138
+ case retry_reason::socket_not_available:
139
+ case retry_reason::service_not_available:
140
+ case retry_reason::node_not_available:
141
+ case retry_reason::kv_error_map_retry_indicated:
142
+ case retry_reason::kv_locked:
143
+ case retry_reason::kv_temporary_failure:
144
+ case retry_reason::kv_sync_write_in_progress:
145
+ case retry_reason::kv_sync_write_re_commit_in_progress:
146
+ case retry_reason::service_response_code_indicated:
147
+ case retry_reason::socket_closed_while_in_flight:
148
+ case retry_reason::circuit_breaker_open:
149
+ case retry_reason::query_prepared_statement_failure:
150
+ case retry_reason::query_index_not_found:
151
+ case retry_reason::analytics_temporary_failure:
152
+ case retry_reason::search_too_many_requests:
153
+ case retry_reason::views_temporary_failure:
154
+ case retry_reason::unknown:
155
+ return false;
156
+ }
157
+ return false;
158
+ }
159
+
160
+ } // namespace couchbase::io
161
+
162
+ template<>
163
+ struct fmt::formatter<couchbase::io::retry_reason> : formatter<string_view> {
164
+ template<typename FormatContext>
165
+ auto format(couchbase::io::retry_reason reason, FormatContext& ctx)
166
+ {
167
+ string_view name = "unknown";
168
+ switch (reason) {
169
+ case couchbase::io::retry_reason::do_not_retry:
170
+ name = "do_not_retry";
171
+ break;
172
+ case couchbase::io::retry_reason::unknown:
173
+ name = "unknown";
174
+ break;
175
+ case couchbase::io::retry_reason::socket_not_available:
176
+ name = "socket_not_available";
177
+ break;
178
+ case couchbase::io::retry_reason::service_not_available:
179
+ name = "service_not_available";
180
+ break;
181
+ case couchbase::io::retry_reason::node_not_available:
182
+ name = "node_not_available";
183
+ break;
184
+ case couchbase::io::retry_reason::kv_not_my_vbucket:
185
+ name = "kv_not_my_vbucket";
186
+ break;
187
+ case couchbase::io::retry_reason::kv_collection_outdated:
188
+ name = "kv_collection_outdated";
189
+ break;
190
+ case couchbase::io::retry_reason::kv_error_map_retry_indicated:
191
+ name = "kv_error_map_retry_indicated";
192
+ break;
193
+ case couchbase::io::retry_reason::kv_locked:
194
+ name = "kv_locked";
195
+ break;
196
+ case couchbase::io::retry_reason::kv_temporary_failure:
197
+ name = "kv_temporary_failure";
198
+ break;
199
+ case couchbase::io::retry_reason::kv_sync_write_in_progress:
200
+ name = "kv_sync_write_in_progress";
201
+ break;
202
+ case couchbase::io::retry_reason::kv_sync_write_re_commit_in_progress:
203
+ name = "kv_sync_write_re_commit_in_progress";
204
+ break;
205
+ case couchbase::io::retry_reason::service_response_code_indicated:
206
+ name = "service_response_code_indicated";
207
+ break;
208
+ case couchbase::io::retry_reason::socket_closed_while_in_flight:
209
+ name = "socket_closed_while_in_flight";
210
+ break;
211
+ case couchbase::io::retry_reason::circuit_breaker_open:
212
+ name = "circuit_breaker_open";
213
+ break;
214
+ case couchbase::io::retry_reason::query_prepared_statement_failure:
215
+ name = "query_prepared_statement_failure";
216
+ break;
217
+ case couchbase::io::retry_reason::query_index_not_found:
218
+ name = "query_index_not_found";
219
+ break;
220
+ case couchbase::io::retry_reason::analytics_temporary_failure:
221
+ name = "analytics_temporary_failure";
222
+ break;
223
+ case couchbase::io::retry_reason::search_too_many_requests:
224
+ name = "search_too_many_requests";
225
+ break;
226
+ case couchbase::io::retry_reason::views_temporary_failure:
227
+ name = "views_temporary_failure";
228
+ break;
229
+ case couchbase::io::retry_reason::views_no_active_partition:
230
+ name = "views_no_active_partition";
231
+ break;
232
+ }
233
+ return formatter<string_view>::format(name, ctx);
234
+ }
235
+ };
@@ -0,0 +1,156 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <gsl/gsl_assert>
21
+
22
+ #include <io/retry_reason.hxx>
23
+ #include <io/retry_action.hxx>
24
+
25
+ namespace couchbase::io::retry_strategy
26
+ {
27
+ namespace backoff
28
+ {
29
+ struct backoff_delay {
30
+ std::chrono::milliseconds delay;
31
+ std::chrono::milliseconds min_delay;
32
+ std::chrono::milliseconds max_delay;
33
+ };
34
+
35
+ class fixed
36
+ {
37
+ private:
38
+ backoff_delay delay_;
39
+
40
+ public:
41
+ explicit fixed(std::chrono::milliseconds delay)
42
+ : delay_{ delay, delay, delay }
43
+ {
44
+ }
45
+
46
+ template<class Request>
47
+ backoff_delay operator()(Request&)
48
+ {
49
+ return delay_;
50
+ }
51
+ };
52
+
53
+ class exponential
54
+ {
55
+ public:
56
+ /**
57
+ * Backoff function with exponential backoff delay. Retries are performed after a backoff interval of
58
+ *
59
+ * first_backoff * (factor^n)
60
+ *
61
+ * where n is the iteration. If max_backoff is not zero, the maximum backoff applied will be limited to max_backoff.
62
+ *
63
+ * If based_on_previous_value is true, backoff will be calculated using
64
+ *
65
+ * prev_backoff * factor
66
+ *
67
+ * When backoffs are combined with jitter, this value will be different from the actual exponential value for the iteration.
68
+ *
69
+ * @param first_backoff First backoff duration
70
+ * @param factor The multiplicand for calculating backoff
71
+ * @param max_backoff Maximum backoff duration
72
+ * @param based_on_previous_value If true, calculation is based on previous value which may be a backoff with jitter applied
73
+ */
74
+ exponential(std::chrono::milliseconds first_backoff,
75
+ int factor,
76
+ std::chrono::milliseconds max_backoff = {},
77
+ bool based_on_previous_value = false)
78
+ {
79
+ Expects(first_backoff.count() > 0);
80
+ if (max_backoff.count() <= 0) {
81
+ max_backoff = std::chrono::milliseconds{ std::numeric_limits<std::chrono::milliseconds::rep>::max() };
82
+ }
83
+ Expects(max_backoff > first_backoff);
84
+ first_backoff_ = first_backoff;
85
+ max_backoff_ = max_backoff;
86
+ factor_ = factor;
87
+ based_on_previous_value_ = based_on_previous_value;
88
+ }
89
+
90
+ template<class Request>
91
+ backoff_delay operator()(Request& request)
92
+ {
93
+ std::chrono::milliseconds previous_backoff = request.retries.last_duration;
94
+ std::chrono::milliseconds next_backoff;
95
+
96
+ if (based_on_previous_value_) {
97
+ if (previous_backoff >= max_backoff_) {
98
+ next_backoff = max_backoff_;
99
+ } else {
100
+ next_backoff = previous_backoff * factor_;
101
+ }
102
+ if (next_backoff < first_backoff_) {
103
+ next_backoff = first_backoff_;
104
+ }
105
+ } else {
106
+ if (previous_backoff >= max_backoff_) {
107
+ next_backoff = max_backoff_;
108
+ } else {
109
+ next_backoff = first_backoff_ * static_cast<int>(std::pow(factor_, request.retries.retry_attempts - 1));
110
+ }
111
+ }
112
+ return { next_backoff, first_backoff_, max_backoff_ };
113
+ }
114
+
115
+ private:
116
+ std::chrono::milliseconds first_backoff_;
117
+ std::chrono::milliseconds max_backoff_;
118
+ int factor_;
119
+ bool based_on_previous_value_;
120
+ };
121
+
122
+ } // namespace backoff
123
+
124
+ class best_effort
125
+ {
126
+ public:
127
+ best_effort()
128
+ : backoff_(std::chrono::milliseconds(1), 2, std::chrono::milliseconds(500))
129
+ {
130
+ }
131
+
132
+ template<class Request>
133
+ retry_action should_retry(Request& request, retry_reason reason)
134
+ {
135
+ if (request.retries.idempotent || allows_non_idempotent_retry(reason)) {
136
+ backoff::backoff_delay delay = backoff_(request);
137
+ return { true, delay.delay };
138
+ }
139
+ return { false };
140
+ }
141
+
142
+ private:
143
+ backoff::exponential backoff_;
144
+ };
145
+
146
+ class fail_fast
147
+ {
148
+ public:
149
+ template<class Request>
150
+ retry_action should_retry(Request&, retry_reason)
151
+ {
152
+ return { false };
153
+ }
154
+ };
155
+
156
+ } // namespace couchbase::io::retry_strategy