couchbase 3.0.0.alpha.2 → 3.0.0

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 (887) 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/management/analytics_index_manager.rb +139 -25
  165. data/lib/couchbase/management/bucket_manager.rb +19 -5
  166. data/lib/couchbase/management/collection_manager.rb +16 -7
  167. data/lib/couchbase/management/query_index_manager.rb +75 -20
  168. data/lib/couchbase/management/search_index_manager.rb +65 -15
  169. data/lib/couchbase/management/user_manager.rb +2 -2
  170. data/lib/couchbase/management/view_index_manager.rb +70 -11
  171. data/lib/couchbase/mutation_state.rb +13 -0
  172. data/lib/couchbase/query_options.rb +256 -0
  173. data/lib/couchbase/scope.rb +61 -8
  174. data/lib/couchbase/search_options.rb +1512 -0
  175. data/lib/couchbase/subdoc.rb +87 -23
  176. data/lib/couchbase/version.rb +2 -2
  177. data/lib/couchbase/view_options.rb +155 -0
  178. metadata +88 -783
  179. data/.github/workflows/tests-6.0.3.yml +0 -49
  180. data/.github/workflows/tests.yml +0 -47
  181. data/.gitignore +0 -20
  182. data/.gitmodules +0 -18
  183. data/.idea/.gitignore +0 -5
  184. data/.idea/dictionaries/gem_terms.xml +0 -18
  185. data/.idea/inspectionProfiles/Project_Default.xml +0 -8
  186. data/.idea/vcs.xml +0 -12
  187. data/bin/init-cluster +0 -62
  188. data/bin/setup +0 -24
  189. data/ext/couchbase/configuration_monitor.hxx +0 -93
  190. data/ext/couchbase/operations/command.hxx +0 -77
  191. data/ext/third_party/asio/asio/src/examples/cpp03/Makefile.am +0 -251
  192. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/.gitignore +0 -10
  193. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/server.cpp +0 -285
  194. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/.gitignore +0 -10
  195. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/reference_counted.cpp +0 -131
  196. data/ext/third_party/asio/asio/src/examples/cpp03/chat/.gitignore +0 -11
  197. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_client.cpp +0 -177
  198. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_message.hpp +0 -93
  199. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_server.cpp +0 -249
  200. data/ext/third_party/asio/asio/src/examples/cpp03/chat/posix_chat_client.cpp +0 -204
  201. data/ext/third_party/asio/asio/src/examples/cpp03/echo/.gitignore +0 -11
  202. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp +0 -137
  203. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp +0 -92
  204. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp +0 -59
  205. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp +0 -79
  206. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +0 -59
  207. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp +0 -53
  208. data/ext/third_party/asio/asio/src/examples/cpp03/fork/.gitignore +0 -11
  209. data/ext/third_party/asio/asio/src/examples/cpp03/fork/daemon.cpp +0 -190
  210. data/ext/third_party/asio/asio/src/examples/cpp03/fork/process_per_connection.cpp +0 -161
  211. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/.gitignore +0 -10
  212. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/async_client.cpp +0 -204
  213. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/sync_client.cpp +0 -106
  214. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_1K.html +0 -28
  215. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_2K.html +0 -49
  216. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_4K.html +0 -91
  217. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_8K.html +0 -175
  218. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/.gitignore +0 -11
  219. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.cpp +0 -99
  220. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.hpp +0 -83
  221. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.cpp +0 -38
  222. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.hpp +0 -44
  223. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/header.hpp +0 -28
  224. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/main.cpp +0 -44
  225. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.cpp +0 -46
  226. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.hpp +0 -27
  227. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.cpp +0 -256
  228. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.hpp +0 -64
  229. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request.hpp +0 -34
  230. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.cpp +0 -122
  231. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.hpp +0 -46
  232. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.cpp +0 -315
  233. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.hpp +0 -95
  234. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.cpp +0 -94
  235. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.hpp +0 -69
  236. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/.gitignore +0 -11
  237. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.cpp +0 -93
  238. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.hpp +0 -75
  239. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/header.hpp +0 -28
  240. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.cpp +0 -69
  241. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.hpp +0 -58
  242. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/main.cpp +0 -46
  243. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.cpp +0 -46
  244. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.hpp +0 -27
  245. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.cpp +0 -256
  246. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.hpp +0 -64
  247. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request.hpp +0 -34
  248. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.cpp +0 -122
  249. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.hpp +0 -46
  250. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.cpp +0 -315
  251. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.hpp +0 -95
  252. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.cpp +0 -77
  253. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.hpp +0 -68
  254. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/.gitignore +0 -11
  255. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.cpp +0 -94
  256. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.hpp +0 -78
  257. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/header.hpp +0 -28
  258. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/main.cpp +0 -46
  259. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.cpp +0 -46
  260. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.hpp +0 -27
  261. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.cpp +0 -256
  262. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.hpp +0 -64
  263. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request.hpp +0 -34
  264. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.cpp +0 -122
  265. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.hpp +0 -46
  266. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.cpp +0 -315
  267. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.hpp +0 -95
  268. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.cpp +0 -89
  269. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.hpp +0 -70
  270. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/.gitignore +0 -11
  271. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.cpp +0 -122
  272. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.hpp +0 -44
  273. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/header.hpp +0 -28
  274. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/main.cpp +0 -58
  275. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.cpp +0 -46
  276. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.hpp +0 -27
  277. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.cpp +0 -256
  278. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.hpp +0 -64
  279. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request.hpp +0 -46
  280. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.cpp +0 -226
  281. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.hpp +0 -78
  282. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.cpp +0 -122
  283. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.hpp +0 -73
  284. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/.gitignore +0 -10
  285. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/icmp_header.hpp +0 -94
  286. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ipv4_header.hpp +0 -102
  287. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ping.cpp +0 -163
  288. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/.gitignore +0 -10
  289. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp +0 -171
  290. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/.gitignore +0 -11
  291. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_client.cpp +0 -44
  292. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_server.cpp +0 -51
  293. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/http_client.cpp +0 -91
  294. data/ext/third_party/asio/asio/src/examples/cpp03/local/.gitignore +0 -13
  295. data/ext/third_party/asio/asio/src/examples/cpp03/local/connect_pair.cpp +0 -141
  296. data/ext/third_party/asio/asio/src/examples/cpp03/local/iostream_client.cpp +0 -62
  297. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_client.cpp +0 -61
  298. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_server.cpp +0 -141
  299. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/.gitignore +0 -11
  300. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/receiver.cpp +0 -93
  301. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/sender.cpp +0 -98
  302. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/.gitignore +0 -10
  303. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp +0 -240
  304. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/.gitignore +0 -11
  305. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/client.cpp +0 -192
  306. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/protocol.hpp +0 -156
  307. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/server.cpp +0 -187
  308. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/.gitignore +0 -11
  309. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/client.cpp +0 -125
  310. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/connection.hpp +0 -188
  311. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/server.cpp +0 -123
  312. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/stock.hpp +0 -50
  313. data/ext/third_party/asio/asio/src/examples/cpp03/services/.gitignore +0 -11
  314. data/ext/third_party/asio/asio/src/examples/cpp03/services/basic_logger.hpp +0 -83
  315. data/ext/third_party/asio/asio/src/examples/cpp03/services/daytime_client.cpp +0 -97
  316. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger.hpp +0 -24
  317. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.cpp +0 -11
  318. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.hpp +0 -145
  319. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/.gitignore +0 -10
  320. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/socks4.hpp +0 -144
  321. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/sync_client.cpp +0 -94
  322. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/.gitignore +0 -12
  323. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/echo_server.cpp +0 -122
  324. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/parallel_grep.cpp +0 -89
  325. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/.gitignore +0 -11
  326. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/README +0 -8
  327. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/ca.pem +0 -49
  328. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/client.cpp +0 -157
  329. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/dh2048.pem +0 -8
  330. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.cpp +0 -170
  331. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.pem +0 -71
  332. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/.gitignore +0 -11
  333. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +0 -311
  334. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp +0 -191
  335. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp +0 -200
  336. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp +0 -154
  337. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/server.cpp +0 -433
  338. data/ext/third_party/asio/asio/src/examples/cpp03/timers/.gitignore +0 -10
  339. data/ext/third_party/asio/asio/src/examples/cpp03/timers/time_t_timer.cpp +0 -106
  340. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/.gitignore +0 -10
  341. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/client.cpp +0 -57
  342. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/.gitignore +0 -10
  343. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/server.cpp +0 -50
  344. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/.gitignore +0 -10
  345. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/server.cpp +0 -119
  346. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/.gitignore +0 -10
  347. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/client.cpp +0 -52
  348. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/.gitignore +0 -10
  349. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/server.cpp +0 -53
  350. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/.gitignore +0 -10
  351. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/server.cpp +0 -89
  352. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/.gitignore +0 -10
  353. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/server.cpp +0 -160
  354. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime_dox.txt +0 -500
  355. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/index_dox.txt +0 -48
  356. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/.gitignore +0 -10
  357. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/timer.cpp +0 -24
  358. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/.gitignore +0 -10
  359. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/timer.cpp +0 -29
  360. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/.gitignore +0 -10
  361. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/timer.cpp +0 -43
  362. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/.gitignore +0 -10
  363. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/timer.cpp +0 -54
  364. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/.gitignore +0 -10
  365. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/timer.cpp +0 -80
  366. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer_dox.txt +0 -378
  367. data/ext/third_party/asio/asio/src/examples/cpp03/windows/.gitignore +0 -10
  368. data/ext/third_party/asio/asio/src/examples/cpp03/windows/transmit_file.cpp +0 -177
  369. data/ext/third_party/asio/asio/src/examples/cpp11/Makefile.am +0 -161
  370. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/.gitignore +0 -10
  371. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/server.cpp +0 -255
  372. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/.gitignore +0 -10
  373. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/reference_counted.cpp +0 -122
  374. data/ext/third_party/asio/asio/src/examples/cpp11/chat/.gitignore +0 -11
  375. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_client.cpp +0 -167
  376. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_message.hpp +0 -91
  377. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_server.cpp +0 -227
  378. data/ext/third_party/asio/asio/src/examples/cpp11/echo/.gitignore +0 -11
  379. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_tcp_echo_server.cpp +0 -114
  380. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_udp_echo_server.cpp +0 -82
  381. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp +0 -55
  382. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp +0 -74
  383. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp +0 -58
  384. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_server.cpp +0 -52
  385. data/ext/third_party/asio/asio/src/examples/cpp11/executors/.gitignore +0 -5
  386. data/ext/third_party/asio/asio/src/examples/cpp11/executors/actor.cpp +0 -286
  387. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_1.cpp +0 -54
  388. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_2.cpp +0 -54
  389. data/ext/third_party/asio/asio/src/examples/cpp11/executors/fork_join.cpp +0 -328
  390. data/ext/third_party/asio/asio/src/examples/cpp11/executors/pipeline.cpp +0 -299
  391. data/ext/third_party/asio/asio/src/examples/cpp11/executors/priority_scheduler.cpp +0 -174
  392. data/ext/third_party/asio/asio/src/examples/cpp11/fork/.gitignore +0 -11
  393. data/ext/third_party/asio/asio/src/examples/cpp11/fork/daemon.cpp +0 -189
  394. data/ext/third_party/asio/asio/src/examples/cpp11/fork/process_per_connection.cpp +0 -162
  395. data/ext/third_party/asio/asio/src/examples/cpp11/futures/.gitignore +0 -11
  396. data/ext/third_party/asio/asio/src/examples/cpp11/futures/daytime_client.cpp +0 -94
  397. data/ext/third_party/asio/asio/src/examples/cpp11/handler_tracking/custom_tracking.hpp +0 -201
  398. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/.gitignore +0 -11
  399. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.cpp +0 -94
  400. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.hpp +0 -79
  401. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.cpp +0 -40
  402. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.hpp +0 -48
  403. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/header.hpp +0 -28
  404. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/main.cpp +0 -43
  405. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.cpp +0 -45
  406. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.hpp +0 -27
  407. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.cpp +0 -255
  408. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.hpp +0 -64
  409. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request.hpp +0 -34
  410. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.cpp +0 -121
  411. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.hpp +0 -47
  412. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.cpp +0 -315
  413. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.hpp +0 -96
  414. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.cpp +0 -94
  415. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.hpp +0 -64
  416. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/.gitignore +0 -10
  417. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/prioritised_handlers.cpp +0 -202
  418. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/.gitignore +0 -11
  419. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/http_client.cpp +0 -91
  420. data/ext/third_party/asio/asio/src/examples/cpp11/local/.gitignore +0 -13
  421. data/ext/third_party/asio/asio/src/examples/cpp11/local/connect_pair.cpp +0 -129
  422. data/ext/third_party/asio/asio/src/examples/cpp11/local/iostream_client.cpp +0 -61
  423. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_client.cpp +0 -60
  424. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_server.cpp +0 -121
  425. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/.gitignore +0 -11
  426. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/receiver.cpp +0 -88
  427. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/sender.cpp +0 -91
  428. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/.gitignore +0 -10
  429. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/third_party_lib.cpp +0 -212
  430. data/ext/third_party/asio/asio/src/examples/cpp11/operations/.gitignore +0 -10
  431. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_1.cpp +0 -113
  432. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_2.cpp +0 -131
  433. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_3.cpp +0 -192
  434. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_4.cpp +0 -207
  435. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_5.cpp +0 -243
  436. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_6.cpp +0 -302
  437. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_7.cpp +0 -222
  438. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_8.cpp +0 -217
  439. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/.gitignore +0 -10
  440. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/socks4.hpp +0 -143
  441. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/sync_client.cpp +0 -93
  442. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/.gitignore +0 -12
  443. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/echo_server.cpp +0 -111
  444. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/parallel_grep.cpp +0 -84
  445. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/.gitignore +0 -11
  446. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/README +0 -8
  447. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/ca.pem +0 -49
  448. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/client.cpp +0 -165
  449. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/dh2048.pem +0 -8
  450. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.cpp +0 -143
  451. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.pem +0 -71
  452. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/.gitignore +0 -11
  453. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/async_tcp_client.cpp +0 -311
  454. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_tcp_client.cpp +0 -192
  455. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp +0 -197
  456. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_udp_client.cpp +0 -155
  457. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/server.cpp +0 -433
  458. data/ext/third_party/asio/asio/src/examples/cpp11/timers/.gitignore +0 -10
  459. data/ext/third_party/asio/asio/src/examples/cpp11/timers/time_t_timer.cpp +0 -106
  460. data/ext/third_party/asio/asio/src/examples/cpp14/Makefile.am +0 -64
  461. data/ext/third_party/asio/asio/src/examples/cpp14/echo/.gitignore +0 -11
  462. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_tcp_echo_server.cpp +0 -117
  463. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_udp_echo_server.cpp +0 -83
  464. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp +0 -55
  465. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp +0 -77
  466. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_client.cpp +0 -59
  467. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_server.cpp +0 -53
  468. data/ext/third_party/asio/asio/src/examples/cpp14/executors/.gitignore +0 -6
  469. data/ext/third_party/asio/asio/src/examples/cpp14/executors/actor.cpp +0 -281
  470. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_1.cpp +0 -47
  471. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_2.cpp +0 -68
  472. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_1.cpp +0 -54
  473. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_2.cpp +0 -53
  474. data/ext/third_party/asio/asio/src/examples/cpp14/executors/fork_join.cpp +0 -327
  475. data/ext/third_party/asio/asio/src/examples/cpp14/executors/pipeline.cpp +0 -294
  476. data/ext/third_party/asio/asio/src/examples/cpp14/executors/priority_scheduler.cpp +0 -173
  477. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/.gitignore +0 -11
  478. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/http_client.cpp +0 -91
  479. data/ext/third_party/asio/asio/src/examples/cpp14/operations/.gitignore +0 -10
  480. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_1.cpp +0 -113
  481. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_2.cpp +0 -131
  482. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_3.cpp +0 -186
  483. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_4.cpp +0 -201
  484. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_5.cpp +0 -238
  485. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_6.cpp +0 -298
  486. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_7.cpp +0 -219
  487. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_8.cpp +0 -212
  488. data/ext/third_party/asio/asio/src/examples/cpp17/Makefile.am +0 -8
  489. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/chat_server.cpp +0 -225
  490. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server.cpp +0 -76
  491. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp +0 -78
  492. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/range_based_for.cpp +0 -107
  493. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp +0 -85
  494. data/ext/third_party/asio/asio/src/tests/.gitignore +0 -11
  495. data/ext/third_party/asio/asio/src/tests/Makefile.am +0 -432
  496. data/ext/third_party/asio/asio/src/tests/latency/.gitignore +0 -11
  497. data/ext/third_party/asio/asio/src/tests/latency/allocator.hpp +0 -52
  498. data/ext/third_party/asio/asio/src/tests/latency/high_res_clock.hpp +0 -53
  499. data/ext/third_party/asio/asio/src/tests/latency/tcp_client.cpp +0 -124
  500. data/ext/third_party/asio/asio/src/tests/latency/tcp_server.cpp +0 -114
  501. data/ext/third_party/asio/asio/src/tests/latency/udp_client.cpp +0 -104
  502. data/ext/third_party/asio/asio/src/tests/latency/udp_server.cpp +0 -125
  503. data/ext/third_party/asio/asio/src/tests/performance/.gitignore +0 -11
  504. data/ext/third_party/asio/asio/src/tests/performance/client.cpp +0 -286
  505. data/ext/third_party/asio/asio/src/tests/performance/handler_allocator.hpp +0 -112
  506. data/ext/third_party/asio/asio/src/tests/performance/server.cpp +0 -233
  507. data/ext/third_party/asio/asio/src/tests/unit/.gitignore +0 -75
  508. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_ops.hpp +0 -415
  509. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_result.hpp +0 -94
  510. data/ext/third_party/asio/asio/src/tests/unit/archetypes/gettable_socket_option.hpp +0 -54
  511. data/ext/third_party/asio/asio/src/tests/unit/archetypes/io_control_command.hpp +0 -32
  512. data/ext/third_party/asio/asio/src/tests/unit/archetypes/settable_socket_option.hpp +0 -49
  513. data/ext/third_party/asio/asio/src/tests/unit/associated_allocator.cpp +0 -25
  514. data/ext/third_party/asio/asio/src/tests/unit/associated_executor.cpp +0 -25
  515. data/ext/third_party/asio/asio/src/tests/unit/async_result.cpp +0 -25
  516. data/ext/third_party/asio/asio/src/tests/unit/awaitable.cpp +0 -25
  517. data/ext/third_party/asio/asio/src/tests/unit/basic_datagram_socket.cpp +0 -25
  518. data/ext/third_party/asio/asio/src/tests/unit/basic_deadline_timer.cpp +0 -25
  519. data/ext/third_party/asio/asio/src/tests/unit/basic_raw_socket.cpp +0 -25
  520. data/ext/third_party/asio/asio/src/tests/unit/basic_seq_packet_socket.cpp +0 -25
  521. data/ext/third_party/asio/asio/src/tests/unit/basic_serial_port.cpp +0 -26
  522. data/ext/third_party/asio/asio/src/tests/unit/basic_signal_set.cpp +0 -25
  523. data/ext/third_party/asio/asio/src/tests/unit/basic_socket.cpp +0 -25
  524. data/ext/third_party/asio/asio/src/tests/unit/basic_socket_acceptor.cpp +0 -25
  525. data/ext/third_party/asio/asio/src/tests/unit/basic_stream_socket.cpp +0 -25
  526. data/ext/third_party/asio/asio/src/tests/unit/basic_streambuf.cpp +0 -25
  527. data/ext/third_party/asio/asio/src/tests/unit/basic_waitable_timer.cpp +0 -25
  528. data/ext/third_party/asio/asio/src/tests/unit/bind_executor.cpp +0 -25
  529. data/ext/third_party/asio/asio/src/tests/unit/buffer.cpp +0 -830
  530. data/ext/third_party/asio/asio/src/tests/unit/buffered_read_stream.cpp +0 -338
  531. data/ext/third_party/asio/asio/src/tests/unit/buffered_stream.cpp +0 -364
  532. data/ext/third_party/asio/asio/src/tests/unit/buffered_write_stream.cpp +0 -353
  533. data/ext/third_party/asio/asio/src/tests/unit/buffers_iterator.cpp +0 -292
  534. data/ext/third_party/asio/asio/src/tests/unit/co_spawn.cpp +0 -25
  535. data/ext/third_party/asio/asio/src/tests/unit/completion_condition.cpp +0 -25
  536. data/ext/third_party/asio/asio/src/tests/unit/compose.cpp +0 -185
  537. data/ext/third_party/asio/asio/src/tests/unit/connect.cpp +0 -1190
  538. data/ext/third_party/asio/asio/src/tests/unit/coroutine.cpp +0 -112
  539. data/ext/third_party/asio/asio/src/tests/unit/deadline_timer.cpp +0 -392
  540. data/ext/third_party/asio/asio/src/tests/unit/defer.cpp +0 -25
  541. data/ext/third_party/asio/asio/src/tests/unit/detached.cpp +0 -25
  542. data/ext/third_party/asio/asio/src/tests/unit/dispatch.cpp +0 -25
  543. data/ext/third_party/asio/asio/src/tests/unit/error.cpp +0 -89
  544. data/ext/third_party/asio/asio/src/tests/unit/execution_context.cpp +0 -25
  545. data/ext/third_party/asio/asio/src/tests/unit/executor.cpp +0 -25
  546. data/ext/third_party/asio/asio/src/tests/unit/executor_work_guard.cpp +0 -25
  547. data/ext/third_party/asio/asio/src/tests/unit/generic/.gitignore +0 -14
  548. data/ext/third_party/asio/asio/src/tests/unit/generic/basic_endpoint.cpp +0 -25
  549. data/ext/third_party/asio/asio/src/tests/unit/generic/datagram_protocol.cpp +0 -263
  550. data/ext/third_party/asio/asio/src/tests/unit/generic/raw_protocol.cpp +0 -263
  551. data/ext/third_party/asio/asio/src/tests/unit/generic/seq_packet_protocol.cpp +0 -205
  552. data/ext/third_party/asio/asio/src/tests/unit/generic/stream_protocol.cpp +0 -248
  553. data/ext/third_party/asio/asio/src/tests/unit/high_resolution_timer.cpp +0 -30
  554. data/ext/third_party/asio/asio/src/tests/unit/io_context.cpp +0 -362
  555. data/ext/third_party/asio/asio/src/tests/unit/io_context_strand.cpp +0 -325
  556. data/ext/third_party/asio/asio/src/tests/unit/ip/.gitignore +0 -27
  557. data/ext/third_party/asio/asio/src/tests/unit/ip/address.cpp +0 -144
  558. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_endpoint.cpp +0 -25
  559. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver.cpp +0 -25
  560. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_entry.cpp +0 -25
  561. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_iterator.cpp +0 -25
  562. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_query.cpp +0 -25
  563. data/ext/third_party/asio/asio/src/tests/unit/ip/host_name.cpp +0 -55
  564. data/ext/third_party/asio/asio/src/tests/unit/ip/icmp.cpp +0 -577
  565. data/ext/third_party/asio/asio/src/tests/unit/ip/multicast.cpp +0 -363
  566. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v4.cpp +0 -314
  567. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v6.cpp +0 -238
  568. data/ext/third_party/asio/asio/src/tests/unit/ip/resolver_query_base.cpp +0 -25
  569. data/ext/third_party/asio/asio/src/tests/unit/ip/tcp.cpp +0 -1346
  570. data/ext/third_party/asio/asio/src/tests/unit/ip/udp.cpp +0 -673
  571. data/ext/third_party/asio/asio/src/tests/unit/ip/unicast.cpp +0 -171
  572. data/ext/third_party/asio/asio/src/tests/unit/ip/v6_only.cpp +0 -135
  573. data/ext/third_party/asio/asio/src/tests/unit/is_read_buffered.cpp +0 -129
  574. data/ext/third_party/asio/asio/src/tests/unit/is_write_buffered.cpp +0 -129
  575. data/ext/third_party/asio/asio/src/tests/unit/local/.gitignore +0 -13
  576. data/ext/third_party/asio/asio/src/tests/unit/local/basic_endpoint.cpp +0 -25
  577. data/ext/third_party/asio/asio/src/tests/unit/local/connect_pair.cpp +0 -76
  578. data/ext/third_party/asio/asio/src/tests/unit/local/datagram_protocol.cpp +0 -242
  579. data/ext/third_party/asio/asio/src/tests/unit/local/stream_protocol.cpp +0 -219
  580. data/ext/third_party/asio/asio/src/tests/unit/packaged_task.cpp +0 -25
  581. data/ext/third_party/asio/asio/src/tests/unit/placeholders.cpp +0 -25
  582. data/ext/third_party/asio/asio/src/tests/unit/posix/.gitignore +0 -14
  583. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_descriptor.cpp +0 -25
  584. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_stream_descriptor.cpp +0 -25
  585. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor.cpp +0 -25
  586. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor_base.cpp +0 -25
  587. data/ext/third_party/asio/asio/src/tests/unit/posix/stream_descriptor.cpp +0 -183
  588. data/ext/third_party/asio/asio/src/tests/unit/post.cpp +0 -25
  589. data/ext/third_party/asio/asio/src/tests/unit/read.cpp +0 -4997
  590. data/ext/third_party/asio/asio/src/tests/unit/read_at.cpp +0 -7502
  591. data/ext/third_party/asio/asio/src/tests/unit/read_until.cpp +0 -1658
  592. data/ext/third_party/asio/asio/src/tests/unit/redirect_error.cpp +0 -25
  593. data/ext/third_party/asio/asio/src/tests/unit/serial_port.cpp +0 -173
  594. data/ext/third_party/asio/asio/src/tests/unit/serial_port_base.cpp +0 -99
  595. data/ext/third_party/asio/asio/src/tests/unit/signal_set.cpp +0 -95
  596. data/ext/third_party/asio/asio/src/tests/unit/socket_base.cpp +0 -650
  597. data/ext/third_party/asio/asio/src/tests/unit/ssl/.gitignore +0 -15
  598. data/ext/third_party/asio/asio/src/tests/unit/ssl/context.cpp +0 -25
  599. data/ext/third_party/asio/asio/src/tests/unit/ssl/context_base.cpp +0 -25
  600. data/ext/third_party/asio/asio/src/tests/unit/ssl/error.cpp +0 -25
  601. data/ext/third_party/asio/asio/src/tests/unit/ssl/host_name_verification.cpp +0 -25
  602. data/ext/third_party/asio/asio/src/tests/unit/ssl/rfc2818_verification.cpp +0 -25
  603. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream.cpp +0 -191
  604. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream_base.cpp +0 -25
  605. data/ext/third_party/asio/asio/src/tests/unit/steady_timer.cpp +0 -30
  606. data/ext/third_party/asio/asio/src/tests/unit/strand.cpp +0 -263
  607. data/ext/third_party/asio/asio/src/tests/unit/streambuf.cpp +0 -62
  608. data/ext/third_party/asio/asio/src/tests/unit/system_context.cpp +0 -30
  609. data/ext/third_party/asio/asio/src/tests/unit/system_executor.cpp +0 -30
  610. data/ext/third_party/asio/asio/src/tests/unit/system_timer.cpp +0 -399
  611. data/ext/third_party/asio/asio/src/tests/unit/this_coro.cpp +0 -25
  612. data/ext/third_party/asio/asio/src/tests/unit/thread.cpp +0 -25
  613. data/ext/third_party/asio/asio/src/tests/unit/time_traits.cpp +0 -25
  614. data/ext/third_party/asio/asio/src/tests/unit/ts/.gitignore +0 -17
  615. data/ext/third_party/asio/asio/src/tests/unit/ts/buffer.cpp +0 -30
  616. data/ext/third_party/asio/asio/src/tests/unit/ts/executor.cpp +0 -30
  617. data/ext/third_party/asio/asio/src/tests/unit/ts/internet.cpp +0 -30
  618. data/ext/third_party/asio/asio/src/tests/unit/ts/io_context.cpp +0 -30
  619. data/ext/third_party/asio/asio/src/tests/unit/ts/net.cpp +0 -30
  620. data/ext/third_party/asio/asio/src/tests/unit/ts/netfwd.cpp +0 -33
  621. data/ext/third_party/asio/asio/src/tests/unit/ts/socket.cpp +0 -30
  622. data/ext/third_party/asio/asio/src/tests/unit/ts/timer.cpp +0 -30
  623. data/ext/third_party/asio/asio/src/tests/unit/unit_test.hpp +0 -175
  624. data/ext/third_party/asio/asio/src/tests/unit/use_awaitable.cpp +0 -25
  625. data/ext/third_party/asio/asio/src/tests/unit/use_future.cpp +0 -670
  626. data/ext/third_party/asio/asio/src/tests/unit/uses_executor.cpp +0 -25
  627. data/ext/third_party/asio/asio/src/tests/unit/wait_traits.cpp +0 -25
  628. data/ext/third_party/asio/asio/src/tests/unit/windows/.gitignore +0 -18
  629. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_object_handle.cpp +0 -25
  630. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_overlapped_handle.cpp +0 -25
  631. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_random_access_handle.cpp +0 -25
  632. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_stream_handle.cpp +0 -25
  633. data/ext/third_party/asio/asio/src/tests/unit/windows/object_handle.cpp +0 -130
  634. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_handle.cpp +0 -26
  635. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_ptr.cpp +0 -107
  636. data/ext/third_party/asio/asio/src/tests/unit/windows/random_access_handle.cpp +0 -155
  637. data/ext/third_party/asio/asio/src/tests/unit/windows/stream_handle.cpp +0 -148
  638. data/ext/third_party/asio/asio/src/tests/unit/write.cpp +0 -4904
  639. data/ext/third_party/asio/asio/src/tests/unit/write_at.cpp +0 -7563
  640. data/ext/third_party/asio/asio/src/tools/handlerviz.pl +0 -299
  641. data/ext/third_party/gsl/tests/CMakeLists.txt +0 -267
  642. data/ext/third_party/gsl/tests/CMakeLists.txt.in +0 -14
  643. data/ext/third_party/gsl/tests/algorithm_tests.cpp +0 -227
  644. data/ext/third_party/gsl/tests/assertion_tests.cpp +0 -61
  645. data/ext/third_party/gsl/tests/at_tests.cpp +0 -135
  646. data/ext/third_party/gsl/tests/bounds_tests.cpp +0 -102
  647. data/ext/third_party/gsl/tests/byte_tests.cpp +0 -129
  648. data/ext/third_party/gsl/tests/multi_span_tests.cpp +0 -1866
  649. data/ext/third_party/gsl/tests/no_exception_ensure_tests.cpp +0 -48
  650. data/ext/third_party/gsl/tests/notnull_tests.cpp +0 -535
  651. data/ext/third_party/gsl/tests/owner_tests.cpp +0 -43
  652. data/ext/third_party/gsl/tests/span_compatibility_tests.cpp +0 -1021
  653. data/ext/third_party/gsl/tests/span_ext_tests.cpp +0 -360
  654. data/ext/third_party/gsl/tests/span_tests.cpp +0 -1244
  655. data/ext/third_party/gsl/tests/strict_notnull_tests.cpp +0 -190
  656. data/ext/third_party/gsl/tests/strided_span_tests.cpp +0 -790
  657. data/ext/third_party/gsl/tests/string_span_tests.cpp +0 -1217
  658. data/ext/third_party/gsl/tests/utils_tests.cpp +0 -129
  659. data/ext/third_party/http_parser/contrib/parsertrace.c +0 -157
  660. data/ext/third_party/http_parser/contrib/url_parser.c +0 -47
  661. data/ext/third_party/http_parser/fuzzers/fuzz_parser.c +0 -26
  662. data/ext/third_party/http_parser/fuzzers/fuzz_url.c +0 -14
  663. data/ext/third_party/json/contrib/nlohmann.cpp +0 -48
  664. data/ext/third_party/json/contrib/nlohmann/from_value.hpp +0 -62
  665. data/ext/third_party/json/contrib/nlohmann/json.hpp +0 -18928
  666. data/ext/third_party/json/contrib/nlohmann/to_value.hpp +0 -109
  667. data/ext/third_party/json/doc/Advanced-Use-Cases.md +0 -83
  668. data/ext/third_party/json/doc/Batteries-Included.md +0 -212
  669. data/ext/third_party/json/doc/Binding-Traits.md +0 -319
  670. data/ext/third_party/json/doc/Changelog.md +0 -31
  671. data/ext/third_party/json/doc/Common-Use-Cases.md +0 -148
  672. data/ext/third_party/json/doc/Design-Decisions.md +0 -36
  673. data/ext/third_party/json/doc/Events-Interface.md +0 -140
  674. data/ext/third_party/json/doc/Getting-Started.md +0 -19
  675. data/ext/third_party/json/doc/Instance-Sharing.md +0 -163
  676. data/ext/third_party/json/doc/Interoperability.md +0 -75
  677. data/ext/third_party/json/doc/Overview.md +0 -24
  678. data/ext/third_party/json/doc/Overview.png +0 -0
  679. data/ext/third_party/json/doc/Parser-Interface.md +0 -84
  680. data/ext/third_party/json/doc/README.md +0 -78
  681. data/ext/third_party/json/doc/Scratchpad.md +0 -25
  682. data/ext/third_party/json/doc/Type-Traits.md +0 -364
  683. data/ext/third_party/json/doc/Types.png +0 -0
  684. data/ext/third_party/json/doc/Value-Class.md +0 -525
  685. data/ext/third_party/json/src/example/json/CMakeLists.txt +0 -67
  686. data/ext/third_party/json/src/example/json/cbor_to_jaxn.cpp +0 -18
  687. data/ext/third_party/json/src/example/json/cbor_to_json.cpp +0 -18
  688. data/ext/third_party/json/src/example/json/cbor_to_msgpack.cpp +0 -18
  689. data/ext/third_party/json/src/example/json/cbor_to_pretty_jaxn.cpp +0 -18
  690. data/ext/third_party/json/src/example/json/cbor_to_pretty_json.cpp +0 -18
  691. data/ext/third_party/json/src/example/json/cbor_to_ubjson.cpp +0 -18
  692. data/ext/third_party/json/src/example/json/jaxn_to_cbor.cpp +0 -18
  693. data/ext/third_party/json/src/example/json/jaxn_to_cplusplus.cpp +0 -249
  694. data/ext/third_party/json/src/example/json/jaxn_to_jaxn.cpp +0 -18
  695. data/ext/third_party/json/src/example/json/jaxn_to_msgpack.cpp +0 -18
  696. data/ext/third_party/json/src/example/json/jaxn_to_pretty_jaxn.cpp +0 -18
  697. data/ext/third_party/json/src/example/json/jaxn_to_ubjson.cpp +0 -18
  698. data/ext/third_party/json/src/example/json/json_to_cbor.cpp +0 -18
  699. data/ext/third_party/json/src/example/json/json_to_json.cpp +0 -18
  700. data/ext/third_party/json/src/example/json/json_to_msgpack.cpp +0 -18
  701. data/ext/third_party/json/src/example/json/json_to_pretty_json.cpp +0 -18
  702. data/ext/third_party/json/src/example/json/json_to_ubjson.cpp +0 -18
  703. data/ext/third_party/json/src/example/json/msgpack_to_cbor.cpp +0 -18
  704. data/ext/third_party/json/src/example/json/msgpack_to_jaxn.cpp +0 -18
  705. data/ext/third_party/json/src/example/json/msgpack_to_json.cpp +0 -18
  706. data/ext/third_party/json/src/example/json/msgpack_to_pretty_jaxn.cpp +0 -18
  707. data/ext/third_party/json/src/example/json/msgpack_to_pretty_json.cpp +0 -18
  708. data/ext/third_party/json/src/example/json/msgpack_to_ubjson.cpp +0 -18
  709. data/ext/third_party/json/src/example/json/printf_doubles.cpp +0 -51
  710. data/ext/third_party/json/src/example/json/ubjson_to_cbor.cpp +0 -18
  711. data/ext/third_party/json/src/example/json/ubjson_to_jaxn.cpp +0 -18
  712. data/ext/third_party/json/src/example/json/ubjson_to_json.cpp +0 -18
  713. data/ext/third_party/json/src/example/json/ubjson_to_msgpack.cpp +0 -18
  714. data/ext/third_party/json/src/example/json/ubjson_to_pretty_jaxn.cpp +0 -18
  715. data/ext/third_party/json/src/example/json/ubjson_to_pretty_json.cpp +0 -18
  716. data/ext/third_party/json/src/example/json/validate_event_order.cpp +0 -27
  717. data/ext/third_party/json/src/example/json/validate_integer.cpp +0 -56
  718. data/ext/third_party/json/src/perf/json/bench_mark.hpp +0 -43
  719. data/ext/third_party/json/src/perf/json/benchmark.cpp +0 -34
  720. data/ext/third_party/json/src/perf/json/parse_file.cpp +0 -17
  721. data/ext/third_party/json/src/perf/json/pretty_print_file.cpp +0 -19
  722. data/ext/third_party/json/src/perf/json/print_double.cpp +0 -34
  723. data/ext/third_party/json/src/perf/json/print_file.cpp +0 -19
  724. data/ext/third_party/json/src/perf/json/sizes.cpp +0 -24
  725. data/ext/third_party/json/src/perf/json/syntax_only.cpp +0 -27
  726. data/ext/third_party/json/src/test/json/CMakeLists.txt +0 -97
  727. data/ext/third_party/json/src/test/json/big_list_of_naughty_strings.cpp +0 -43
  728. data/ext/third_party/json/src/test/json/binding_array.cpp +0 -549
  729. data/ext/third_party/json/src/test/json/binding_factory.cpp +0 -265
  730. data/ext/third_party/json/src/test/json/binding_object.cpp +0 -208
  731. data/ext/third_party/json/src/test/json/binding_versions.cpp +0 -95
  732. data/ext/third_party/json/src/test/json/cbor.cpp +0 -149
  733. data/ext/third_party/json/src/test/json/cbor_parts_parser.cpp +0 -36
  734. data/ext/third_party/json/src/test/json/contrib_diff.cpp +0 -43
  735. data/ext/third_party/json/src/test/json/contrib_get.cpp +0 -42
  736. data/ext/third_party/json/src/test/json/contrib_patch_add.cpp +0 -75
  737. data/ext/third_party/json/src/test/json/contrib_patch_copy.cpp +0 -113
  738. data/ext/third_party/json/src/test/json/contrib_patch_move.cpp +0 -97
  739. data/ext/third_party/json/src/test/json/contrib_patch_remove.cpp +0 -85
  740. data/ext/third_party/json/src/test/json/contrib_patch_replace.cpp +0 -79
  741. data/ext/third_party/json/src/test/json/contrib_patch_test.cpp +0 -69
  742. data/ext/third_party/json/src/test/json/contrib_position.cpp +0 -48
  743. data/ext/third_party/json/src/test/json/contrib_reference.cpp +0 -44
  744. data/ext/third_party/json/src/test/json/contrib_schema.cpp +0 -132
  745. data/ext/third_party/json/src/test/json/contrib_traits.cpp +0 -258
  746. data/ext/third_party/json/src/test/json/double.cpp +0 -182
  747. data/ext/third_party/json/src/test/json/enable_implicit_constructor.cpp +0 -54
  748. data/ext/third_party/json/src/test/json/escape.cpp +0 -42
  749. data/ext/third_party/json/src/test/json/events_binary_to.cpp +0 -56
  750. data/ext/third_party/json/src/test/json/events_compare.cpp +0 -433
  751. data/ext/third_party/json/src/test/json/events_debug.cpp +0 -24
  752. data/ext/third_party/json/src/test/json/events_hash.cpp +0 -65
  753. data/ext/third_party/json/src/test/json/events_to_stream.cpp +0 -28
  754. data/ext/third_party/json/src/test/json/events_to_string.cpp +0 -25
  755. data/ext/third_party/json/src/test/json/include_json.cpp +0 -14
  756. data/ext/third_party/json/src/test/json/integer.cpp +0 -118
  757. data/ext/third_party/json/src/test/json/jaxn_ostream.cpp +0 -76
  758. data/ext/third_party/json/src/test/json/jaxn_parse.cpp +0 -239
  759. data/ext/third_party/json/src/test/json/jaxn_parts_parser.cpp +0 -220
  760. data/ext/third_party/json/src/test/json/json_ostream.cpp +0 -102
  761. data/ext/third_party/json/src/test/json/json_parse.cpp +0 -153
  762. data/ext/third_party/json/src/test/json/json_parts_parser.cpp +0 -124
  763. data/ext/third_party/json/src/test/json/json_pointer.cpp +0 -176
  764. data/ext/third_party/json/src/test/json/key_camel_case_to_snake_case.cpp +0 -38
  765. data/ext/third_party/json/src/test/json/key_snake_case_to_camel_case.cpp +0 -33
  766. data/ext/third_party/json/src/test/json/literal.cpp +0 -18
  767. data/ext/third_party/json/src/test/json/main.hpp +0 -20
  768. data/ext/third_party/json/src/test/json/make_events.hpp +0 -362
  769. data/ext/third_party/json/src/test/json/msgpack.cpp +0 -136
  770. data/ext/third_party/json/src/test/json/object_construction.cpp +0 -167
  771. data/ext/third_party/json/src/test/json/opaque_pointer.cpp +0 -192
  772. data/ext/third_party/json/src/test/json/operators.cpp +0 -494
  773. data/ext/third_party/json/src/test/json/optional.cpp +0 -79
  774. data/ext/third_party/json/src/test/json/public_base.cpp +0 -142
  775. data/ext/third_party/json/src/test/json/self_contained.cpp +0 -106
  776. data/ext/third_party/json/src/test/json/sha256.cpp +0 -38
  777. data/ext/third_party/json/src/test/json/string_view.cpp +0 -70
  778. data/ext/third_party/json/src/test/json/temporary_parsing.cpp +0 -339
  779. data/ext/third_party/json/src/test/json/test.hpp +0 -74
  780. data/ext/third_party/json/src/test/json/test_events.hpp +0 -250
  781. data/ext/third_party/json/src/test/json/test_types.hpp +0 -557
  782. data/ext/third_party/json/src/test/json/test_unhex.hpp +0 -42
  783. data/ext/third_party/json/src/test/json/type.cpp +0 -35
  784. data/ext/third_party/json/src/test/json/ubjson.cpp +0 -119
  785. data/ext/third_party/json/src/test/json/uri_fragment.cpp +0 -52
  786. data/ext/third_party/json/src/test/json/validate_event_interfaces.cpp +0 -177
  787. data/ext/third_party/json/src/test/json/validate_utf8.cpp +0 -37
  788. data/ext/third_party/json/src/test/json/value_access.cpp +0 -144
  789. data/ext/third_party/json/src/test/json/value_basics.cpp +0 -241
  790. data/ext/third_party/json/src/test/json/value_create.cpp +0 -372
  791. data/ext/third_party/json/src/test/json/value_ptr.cpp +0 -33
  792. data/ext/third_party/json/src/test/json/value_subscript.cpp +0 -89
  793. data/ext/third_party/json/src/test/json/with_arguments.cpp +0 -98
  794. data/ext/third_party/json/tests/blns.json +0 -496
  795. data/ext/third_party/json/tests/canada.json +0 -9
  796. data/ext/third_party/json/tests/citm_catalog.json +0 -50469
  797. data/ext/third_party/json/tests/draft4/additionalItems.json +0 -82
  798. data/ext/third_party/json/tests/draft4/additionalProperties.json +0 -88
  799. data/ext/third_party/json/tests/draft4/allOf.json +0 -112
  800. data/ext/third_party/json/tests/draft4/anyOf.json +0 -68
  801. data/ext/third_party/json/tests/draft4/default.json +0 -49
  802. data/ext/third_party/json/tests/draft4/definitions.json +0 -32
  803. data/ext/third_party/json/tests/draft4/dependencies.json +0 -113
  804. data/ext/third_party/json/tests/draft4/enum.json +0 -72
  805. data/ext/third_party/json/tests/draft4/items.json +0 -46
  806. data/ext/third_party/json/tests/draft4/maxItems.json +0 -28
  807. data/ext/third_party/json/tests/draft4/maxLength.json +0 -33
  808. data/ext/third_party/json/tests/draft4/maxProperties.json +0 -28
  809. data/ext/third_party/json/tests/draft4/maximum.json +0 -42
  810. data/ext/third_party/json/tests/draft4/minItems.json +0 -28
  811. data/ext/third_party/json/tests/draft4/minLength.json +0 -33
  812. data/ext/third_party/json/tests/draft4/minProperties.json +0 -28
  813. data/ext/third_party/json/tests/draft4/minimum.json +0 -42
  814. data/ext/third_party/json/tests/draft4/multipleOf.json +0 -60
  815. data/ext/third_party/json/tests/draft4/not.json +0 -96
  816. data/ext/third_party/json/tests/draft4/oneOf.json +0 -68
  817. data/ext/third_party/json/tests/draft4/optional/bignum.json +0 -107
  818. data/ext/third_party/json/tests/draft4/optional/format.json +0 -148
  819. data/ext/third_party/json/tests/draft4/optional/zeroTerminatedFloats.json +0 -15
  820. data/ext/third_party/json/tests/draft4/pattern.json +0 -34
  821. data/ext/third_party/json/tests/draft4/patternProperties.json +0 -110
  822. data/ext/third_party/json/tests/draft4/properties.json +0 -92
  823. data/ext/third_party/json/tests/draft4/ref.json +0 -179
  824. data/ext/third_party/json/tests/draft4/refRemote.json +0 -74
  825. data/ext/third_party/json/tests/draft4/required.json +0 -44
  826. data/ext/third_party/json/tests/draft4/type.json +0 -345
  827. data/ext/third_party/json/tests/draft4/uniqueItems.json +0 -79
  828. data/ext/third_party/json/tests/taocpp/binary.jaxn +0 -4
  829. data/ext/third_party/json/tests/taocpp/dateTime.json +0 -108
  830. data/ext/third_party/json/tests/taocpp/make_events.cbor +0 -0
  831. data/ext/third_party/json/tests/taocpp/number.json +0 -682
  832. data/ext/third_party/json/tests/taocpp/position.json +0 -8
  833. data/ext/third_party/json/tests/taocpp/schema.json +0 -378
  834. data/ext/third_party/json/tests/twitter.json +0 -15482
  835. data/ext/third_party/snappy/testdata/alice29.txt +0 -3609
  836. data/ext/third_party/snappy/testdata/asyoulik.txt +0 -4122
  837. data/ext/third_party/snappy/testdata/baddata1.snappy +0 -0
  838. data/ext/third_party/snappy/testdata/baddata2.snappy +0 -0
  839. data/ext/third_party/snappy/testdata/baddata3.snappy +0 -0
  840. data/ext/third_party/snappy/testdata/fireworks.jpeg +0 -0
  841. data/ext/third_party/snappy/testdata/geo.protodata +0 -0
  842. data/ext/third_party/snappy/testdata/html +0 -1
  843. data/ext/third_party/snappy/testdata/html_x_4 +0 -1
  844. data/ext/third_party/snappy/testdata/kppkn.gtb +0 -0
  845. data/ext/third_party/snappy/testdata/lcet10.txt +0 -7519
  846. data/ext/third_party/snappy/testdata/paper-100k.pdf +2 -600
  847. data/ext/third_party/snappy/testdata/plrabn12.txt +0 -10699
  848. data/ext/third_party/snappy/testdata/urls.10K +0 -10000
  849. data/ext/third_party/spdlog/bench/CMakeLists.txt +0 -25
  850. data/ext/third_party/spdlog/bench/async_bench.cpp +0 -179
  851. data/ext/third_party/spdlog/bench/bench.cpp +0 -238
  852. data/ext/third_party/spdlog/bench/formatter-bench.cpp +0 -80
  853. data/ext/third_party/spdlog/bench/latency.cpp +0 -166
  854. data/ext/third_party/spdlog/bench/utils.h +0 -34
  855. data/ext/third_party/spdlog/example/CMakeLists.txt +0 -23
  856. data/ext/third_party/spdlog/example/example.cpp +0 -282
  857. data/ext/third_party/spdlog/logos/jetbrains-variant-4.svg +0 -43
  858. data/ext/third_party/spdlog/scripts/extract_version.py +0 -17
  859. data/ext/third_party/spdlog/scripts/format.sh +0 -16
  860. data/ext/third_party/spdlog/tests/CMakeLists.txt +0 -70
  861. data/ext/third_party/spdlog/tests/catch.hpp +0 -15372
  862. data/ext/third_party/spdlog/tests/catch.license +0 -23
  863. data/ext/third_party/spdlog/tests/includes.h +0 -26
  864. data/ext/third_party/spdlog/tests/main.cpp +0 -2
  865. data/ext/third_party/spdlog/tests/test_async.cpp +0 -188
  866. data/ext/third_party/spdlog/tests/test_backtrace.cpp +0 -65
  867. data/ext/third_party/spdlog/tests/test_cfg.cpp +0 -93
  868. data/ext/third_party/spdlog/tests/test_create_dir.cpp +0 -80
  869. data/ext/third_party/spdlog/tests/test_daily_logger.cpp +0 -149
  870. data/ext/third_party/spdlog/tests/test_dup_filter.cpp +0 -88
  871. data/ext/third_party/spdlog/tests/test_errors.cpp +0 -118
  872. data/ext/third_party/spdlog/tests/test_eventlog.cpp +0 -71
  873. data/ext/third_party/spdlog/tests/test_file_helper.cpp +0 -102
  874. data/ext/third_party/spdlog/tests/test_file_logging.cpp +0 -98
  875. data/ext/third_party/spdlog/tests/test_fmt_helper.cpp +0 -86
  876. data/ext/third_party/spdlog/tests/test_macros.cpp +0 -60
  877. data/ext/third_party/spdlog/tests/test_misc.cpp +0 -271
  878. data/ext/third_party/spdlog/tests/test_mpmc_q.cpp +0 -106
  879. data/ext/third_party/spdlog/tests/test_pattern_formatter.cpp +0 -443
  880. data/ext/third_party/spdlog/tests/test_registry.cpp +0 -116
  881. data/ext/third_party/spdlog/tests/test_sink.h +0 -79
  882. data/ext/third_party/spdlog/tests/test_stdout_api.cpp +0 -98
  883. data/ext/third_party/spdlog/tests/test_systemd.cpp +0 -15
  884. data/ext/third_party/spdlog/tests/test_time_point.cpp +0 -36
  885. data/ext/third_party/spdlog/tests/utils.cpp +0 -125
  886. data/ext/third_party/spdlog/tests/utils.h +0 -18
  887. data/rbi/couchbase.rbi +0 -79
@@ -0,0 +1,207 @@
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 <cstring>
21
+
22
+ #include <arpa/inet.h>
23
+
24
+ #include <io/dns_message.hxx>
25
+
26
+ namespace couchbase::io::dns
27
+ {
28
+ class dns_codec
29
+ {
30
+ public:
31
+ static dns_message decode(const std::vector<uint8_t>& payload)
32
+ {
33
+ dns_message message{};
34
+ std::size_t offset = 0;
35
+
36
+ std::memcpy(&message.header.id, payload.data() + offset, sizeof(std::uint16_t));
37
+ offset += sizeof(std::uint16_t);
38
+ message.header.id = ntohs(message.header.id);
39
+
40
+ uint16_t flags = 0;
41
+ std::memcpy(&flags, payload.data() + offset, sizeof(std::uint16_t));
42
+ offset += sizeof(std::uint16_t);
43
+ message.header.flags.decode(ntohs(flags));
44
+
45
+ std::memcpy(&message.header.question_records, payload.data() + offset, sizeof(std::uint16_t));
46
+ offset += sizeof(std::uint16_t);
47
+ message.header.question_records = ntohs(message.header.question_records);
48
+
49
+ std::memcpy(&message.header.answer_records, payload.data() + offset, sizeof(std::uint16_t));
50
+ offset += sizeof(std::uint16_t);
51
+ message.header.answer_records = ntohs(message.header.answer_records);
52
+
53
+ std::memcpy(&message.header.authority_records, payload.data() + offset, sizeof(std::uint16_t));
54
+ offset += sizeof(std::uint16_t);
55
+ message.header.authority_records = ntohs(message.header.authority_records);
56
+
57
+ std::memcpy(&message.header.additional_records, payload.data() + offset, sizeof(std::uint16_t));
58
+ offset += sizeof(std::uint16_t);
59
+ message.header.additional_records = ntohs(message.header.additional_records);
60
+
61
+ for (std::uint16_t idx = 0; idx < message.header.question_records; ++idx) {
62
+ question_record qr;
63
+ qr.name = get_name(payload, offset);
64
+
65
+ std::uint16_t val = 0;
66
+ std::memcpy(&val, payload.data() + offset, sizeof(std::uint16_t));
67
+ offset += sizeof(std::uint16_t);
68
+ val = ntohs(val);
69
+ qr.type = static_cast<resource_type>(val);
70
+
71
+ std::memcpy(&val, payload.data() + offset, sizeof(std::uint16_t));
72
+ offset += sizeof(std::uint16_t);
73
+ val = ntohs(val);
74
+ qr.klass = static_cast<resource_class>(val);
75
+
76
+ message.questions.emplace_back(qr);
77
+ }
78
+
79
+ message.answers.reserve(message.header.answer_records);
80
+ for (std::uint16_t idx = 0; idx < message.header.answer_records; ++idx) {
81
+ srv_record ar;
82
+ ar.name = get_name(payload, offset);
83
+
84
+ std::uint16_t val = 0;
85
+ std::memcpy(&val, payload.data() + offset, sizeof(std::uint16_t));
86
+ offset += sizeof(std::uint16_t);
87
+ val = ntohs(val);
88
+ ar.type = static_cast<resource_type>(val);
89
+
90
+ std::memcpy(&val, payload.data() + offset, sizeof(std::uint16_t));
91
+ offset += sizeof(std::uint16_t);
92
+ val = ntohs(val);
93
+ ar.klass = static_cast<resource_class>(val);
94
+
95
+ std::memcpy(&ar.ttl, payload.data() + offset, sizeof(std::uint32_t));
96
+ offset += static_cast<std::uint16_t>(4U);
97
+ ar.ttl = ntohl(ar.ttl);
98
+
99
+ std::uint16_t size = 0;
100
+ std::memcpy(&size, payload.data() + offset, sizeof(std::uint16_t));
101
+ offset += sizeof(std::uint16_t);
102
+ size = ntohs(size);
103
+
104
+ if (ar.klass != resource_class::in || ar.type != resource_type::srv) {
105
+ // ignore everything except SRV answers
106
+ offset += size;
107
+ continue;
108
+ }
109
+
110
+ std::memcpy(&val, payload.data() + offset, sizeof(std::uint16_t));
111
+ offset += sizeof(std::uint16_t);
112
+ ar.priority = ntohs(val);
113
+
114
+ std::memcpy(&val, payload.data() + offset, sizeof(std::uint16_t));
115
+ offset += sizeof(std::uint16_t);
116
+ ar.weight = ntohs(val);
117
+
118
+ std::memcpy(&val, payload.data() + offset, sizeof(std::uint16_t));
119
+ offset += sizeof(std::uint16_t);
120
+ ar.port = ntohs(val);
121
+
122
+ ar.target = get_name(payload, offset);
123
+
124
+ message.answers.emplace_back(ar);
125
+ }
126
+ return message;
127
+ }
128
+
129
+ static std::vector<uint8_t> encode(const dns_message& message)
130
+ {
131
+ std::vector<std::uint8_t> payload;
132
+ payload.resize(message.request_size(), 0);
133
+ std::size_t offset = 0;
134
+
135
+ // write header
136
+ {
137
+ uint16_t val;
138
+
139
+ val = htons(message.header.id);
140
+ std::memcpy(payload.data() + offset, &val, sizeof(std::uint16_t));
141
+ offset += sizeof(std::uint16_t);
142
+
143
+ val = htons(message.header.flags.encode());
144
+ std::memcpy(payload.data() + offset, &val, sizeof(std::uint16_t));
145
+ offset += sizeof(std::uint16_t);
146
+
147
+ val = htons(static_cast<std::uint16_t>(message.questions.size()));
148
+ std::memcpy(payload.data() + offset, &val, sizeof(std::uint16_t));
149
+ offset += sizeof(std::uint16_t) + 3 * sizeof(std::uint16_t); // answer, authority, additional are all zeros
150
+ }
151
+
152
+ // write body
153
+ for (const auto& question : message.questions) {
154
+ for (const auto& label : question.name.labels) {
155
+ payload[offset] = static_cast<std::uint8_t>(label.size());
156
+ ++offset;
157
+ std::memcpy(payload.data() + offset, label.data(), label.size());
158
+ offset += label.size();
159
+ }
160
+ payload[offset] = '\0';
161
+ ++offset;
162
+
163
+ uint16_t val;
164
+
165
+ val = htons(static_cast<std::uint16_t>(question.type));
166
+ std::memcpy(payload.data() + offset, &val, sizeof(std::uint16_t));
167
+ offset += sizeof(std::uint16_t);
168
+
169
+ val = htons(static_cast<std::uint16_t>(question.klass));
170
+ std::memcpy(payload.data() + offset, &val, sizeof(std::uint16_t));
171
+ offset += sizeof(std::uint16_t);
172
+ }
173
+ return payload;
174
+ }
175
+
176
+ private:
177
+ static resource_name get_name(const std::vector<std::uint8_t>& payload, std::size_t& offset)
178
+ {
179
+ resource_name name{};
180
+ std::optional<std::size_t> save_offset{};
181
+ while (true) {
182
+ std::uint8_t len = payload[offset];
183
+ if (len == 0) {
184
+ offset += 1;
185
+ if (save_offset) {
186
+ // restore offset after pointer jump
187
+ offset = *save_offset;
188
+ }
189
+ return name;
190
+ }
191
+ if ((len & 0b1100'0000U) != 0) {
192
+ std::uint16_t ptr = 0;
193
+ std::memcpy(&ptr, payload.data() + offset, sizeof(std::uint16_t));
194
+ ptr = ntohs(ptr);
195
+ ptr &= 0b0011'1111'1111'1111U;
196
+ // store old offset and jump to pointer
197
+ save_offset = offset + sizeof(std::uint16_t);
198
+ offset = ptr;
199
+ } else {
200
+ std::string label(payload.data() + offset + 1, payload.data() + offset + 1 + len);
201
+ name.labels.emplace_back(label);
202
+ offset += static_cast<std::uint16_t>(1U + len);
203
+ }
204
+ }
205
+ }
206
+ };
207
+ } // namespace couchbase::io::dns
@@ -0,0 +1,116 @@
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 <unistd.h>
21
+
22
+ #include <string>
23
+ #include <fstream>
24
+
25
+ #include <asio/ip/address.hpp>
26
+
27
+ #include <timeout_defaults.hxx>
28
+
29
+ namespace couchbase::io::dns
30
+ {
31
+ class dns_config
32
+ {
33
+ public:
34
+ static inline constexpr auto default_resolv_conf_path = "/etc/resolv.conf";
35
+ static inline constexpr auto default_host = "8.8.8.8";
36
+ static inline constexpr std::uint16_t default_port = 53;
37
+
38
+ [[nodiscard]] const asio::ip::address& address() const
39
+ {
40
+ return address_;
41
+ }
42
+
43
+ [[nodiscard]] std::uint16_t port() const
44
+ {
45
+ return port_;
46
+ }
47
+
48
+ [[nodiscard]] std::chrono::milliseconds timeout() const
49
+ {
50
+ return timeout_;
51
+ }
52
+
53
+ static dns_config& get()
54
+ {
55
+ static dns_config instance{};
56
+
57
+ instance.initialize();
58
+
59
+ return instance;
60
+ }
61
+
62
+ private:
63
+ void initialize()
64
+ {
65
+ if (!initialized_) {
66
+ load_resolv_conf(default_resolv_conf_path);
67
+ std::error_code ec;
68
+ address_ = asio::ip::address::from_string(host_, ec);
69
+ if (ec) {
70
+ host_ = default_host;
71
+ address_ = asio::ip::address::from_string(host_, ec);
72
+ }
73
+ initialized_ = true;
74
+ }
75
+ }
76
+
77
+ void load_resolv_conf(const char* conf_path)
78
+ {
79
+ if (access(conf_path, R_OK) == 0) {
80
+ std::ifstream conf(conf_path);
81
+ while (conf.good()) {
82
+ std::string line;
83
+ std::getline(conf, line);
84
+ if (line.empty()) {
85
+ continue;
86
+ }
87
+ std::size_t offset = 0;
88
+ while (line[offset] == ' ') {
89
+ ++offset;
90
+ }
91
+ if (line[offset] == '#') {
92
+ continue;
93
+ }
94
+ std::size_t space = line.find(' ', offset);
95
+ if (space == std::string::npos || space == offset || line.size() < space + 2) {
96
+ continue;
97
+ }
98
+ std::string keyword = line.substr(offset, space);
99
+ if (keyword != "nameserver") {
100
+ continue;
101
+ }
102
+ offset = space + 1;
103
+ space = line.find(' ', offset);
104
+ host_ = line.substr(offset, space);
105
+ break;
106
+ }
107
+ }
108
+ }
109
+
110
+ std::atomic_bool initialized_{ false };
111
+ std::string host_{ default_host };
112
+ asio::ip::address address_{};
113
+ std::uint16_t port_{ default_port };
114
+ std::chrono::milliseconds timeout_{ timeout_defaults::dns_srv_timeout };
115
+ };
116
+ } // namespace couchbase::io::dns
@@ -0,0 +1,555 @@
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 <cstdint>
21
+ #include <vector>
22
+ #include <string>
23
+
24
+ namespace couchbase::io::dns
25
+ {
26
+ /**
27
+ * 3.2.2. TYPE values
28
+ * ==================
29
+ *
30
+ * TYPE fields are used in resource records. Note that these types are a subset of QTYPEs.
31
+ */
32
+ enum class resource_type : std::uint16_t {
33
+ /**
34
+ * a host address
35
+ */
36
+ a = 1,
37
+
38
+ /**
39
+ * an authoritative name server
40
+ */
41
+ ns = 2,
42
+
43
+ /**
44
+ * a mail destination (Obsolete - use MX)
45
+ */
46
+ md = 3,
47
+
48
+ /**
49
+ * a mail forwarder (Obsolete - use MX)
50
+ */
51
+ mf = 4,
52
+
53
+ /**
54
+ * the canonical name for an alias
55
+ */
56
+ cname = 5,
57
+
58
+ /**
59
+ * marks the start of a zone of authority
60
+ */
61
+ soa = 6,
62
+
63
+ /**
64
+ * a mailbox domain name (EXPERIMENTAL)
65
+ */
66
+ mb = 7,
67
+
68
+ /**
69
+ * a mail group member (EXPERIMENTAL)
70
+ */
71
+ mg = 8,
72
+
73
+ /**
74
+ * a mail rename domain name (EXPERIMENTAL)
75
+ */
76
+ mr = 9,
77
+
78
+ /**
79
+ * a null RR (EXPERIMENTAL)
80
+ */
81
+ null = 10,
82
+
83
+ /**
84
+ * a well known service description
85
+ */
86
+ wks = 11,
87
+
88
+ /**
89
+ * a domain name pointer
90
+ */
91
+ ptr = 12,
92
+
93
+ /**
94
+ * host information
95
+ */
96
+ hinfo = 13,
97
+
98
+ /**
99
+ * mailbox or mail list information
100
+ */
101
+ minfo = 14,
102
+
103
+ /**
104
+ * mail exchange
105
+ */
106
+ mx = 15,
107
+
108
+ /**
109
+ * text strings
110
+ */
111
+ txt = 16,
112
+
113
+ /**
114
+ * location services (RFC2782)
115
+ */
116
+ srv = 33,
117
+ };
118
+
119
+ /**
120
+ * 3.2.4. CLASS values
121
+ * ===================
122
+ *
123
+ * CLASS fields appear in resource records. The following CLASS mnemonics and values are defined:
124
+ *
125
+ *
126
+ * 3.2.5. QCLASS values
127
+ * ====================
128
+ *
129
+ * QCLASS fields appear in the question section of a query. QCLASS values are a superset of CLASS values; every CLASS is a valid QCLASS. In
130
+ * addition to CLASS values, the following QCLASSes are defined:
131
+ */
132
+ enum class resource_class : std::uint16_t {
133
+ /**
134
+ * the Internet
135
+ */
136
+ in = 1,
137
+
138
+ /**
139
+ * the CSNET class (Obsolete - used only for examples in some obsolete RFCs)
140
+ */
141
+ cs = 2,
142
+
143
+ /**
144
+ * the CHAOS class
145
+ */
146
+ ch = 3,
147
+
148
+ /**
149
+ * Hesiod [Dyer 87]
150
+ */
151
+ hs = 4,
152
+
153
+ /**
154
+ * any class
155
+ */
156
+ any = 255,
157
+ };
158
+
159
+ /**
160
+ * [OPCODE]
161
+ *
162
+ * A four bit field that specifies kind of query in this message. This value is set by the originator of a query and copied into the
163
+ * response. The values are:
164
+ *
165
+ * 3-15 reserved for future use
166
+ */
167
+ enum class opcode : std::uint8_t {
168
+ /**
169
+ * a standard query (QUERY)
170
+ */
171
+ standard_query = 0,
172
+
173
+ /**
174
+ * an inverse query (IQUERY)
175
+ */
176
+ inverse_query = 1,
177
+
178
+ /**
179
+ * a server status request (STATUS)
180
+ */
181
+ status = 2,
182
+ };
183
+
184
+ /**
185
+ * [QR]
186
+ *
187
+ * A one bit field that specifies whether this message is a query (0), or a response (1).
188
+ */
189
+ enum class message_type : std::uint8_t {
190
+ query = 0,
191
+ response = 1,
192
+ };
193
+
194
+ /**
195
+ * [AA]
196
+ *
197
+ * Authoritative Answer - this bit is valid in responses, and specifies that the responding name server is an authority for the domain name
198
+ * in question section.
199
+ *
200
+ * Note that the contents of the answer section may have multiple owner names because of aliases. The AA bit corresponds to the name which
201
+ * matches the query name, or the first owner name in the answer section.
202
+ */
203
+ enum class authoritative_answer : std::uint8_t {
204
+ no = 0,
205
+ yes = 1,
206
+ };
207
+
208
+ /**
209
+ * [TC]
210
+ *
211
+ * TrunCation - specifies that this message was truncated due to length greater than that permitted on the transmission channel.
212
+ */
213
+ enum class truncation : std::uint8_t {
214
+ no = 0,
215
+ yes = 1,
216
+ };
217
+
218
+ /**
219
+ * [RD]
220
+ *
221
+ * Recursion Desired - this bit may be set in a query and is copied into the response. If RD is set, it directs the name server to pursue
222
+ * the query recursively. Recursive query support is optional.
223
+ */
224
+ enum class recursion_desired : std::uint8_t {
225
+ no = 0,
226
+ yes = 1,
227
+ };
228
+
229
+ /**
230
+ * [RA]
231
+ *
232
+ * Recursion Available - this be is set or cleared in a response, and denotes whether recursive query support is available in the name
233
+ * server.
234
+ */
235
+ enum class recursion_available : std::uint8_t {
236
+ no = 0,
237
+ yes = 1,
238
+ };
239
+
240
+ /**
241
+ * [RCODE]
242
+ *
243
+ * Response code - this 4 bit field is set as part of responses. The values have the following interpretation:
244
+ *
245
+ * 6-15 Reserved for future use.
246
+ */
247
+ enum class response_code : std::uint8_t {
248
+ /**
249
+ * No error condition
250
+ */
251
+ no_error = 0,
252
+
253
+ /**
254
+ * The name server was unable to interpret the query.
255
+ */
256
+ format_error = 1,
257
+
258
+ /**
259
+ * The name server was unable to process this query due to a problem with the name server.
260
+ */
261
+ server_failure = 2,
262
+
263
+ /**
264
+ * Meaningful only for responses from an authoritative name server, this code signifies that the domain name referenced in the query
265
+ * does not exist.
266
+ */
267
+ name_error = 3,
268
+
269
+ /**
270
+ * The name server does not support the requested kind of query.
271
+ */
272
+ not_implemented = 4,
273
+
274
+ /**
275
+ * The name server refuses to perform the specified operation for policy reasons. For example, a name server may not wish to provide
276
+ * the information to the particular requester, or a name server may not wish to perform a particular operation (e.g., zone transfer)
277
+ * for particular data.
278
+ */
279
+ refused = 5,
280
+ };
281
+
282
+ /**
283
+ * 4.1.1. Header section format
284
+ * ============================
285
+ *
286
+ * The header contains the following fields:
287
+ *
288
+ * 1 1 1 1 1 1
289
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
290
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
291
+ * | ID |
292
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
293
+ * |QR| OPCODE |AA|TC|RD|RA| <zero> | RCODE |
294
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
295
+ * | QDCOUNT |
296
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
297
+ * | ANCOUNT |
298
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
299
+ * | NSCOUNT |
300
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
301
+ * | ARCOUNT |
302
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
303
+ */
304
+ struct dns_header {
305
+ struct dns_flags {
306
+ message_type qr{ message_type::query };
307
+ dns::opcode opcode{ dns::opcode::standard_query };
308
+ authoritative_answer aa{ authoritative_answer::no };
309
+ truncation tc{ truncation::no };
310
+ recursion_desired rd{ recursion_desired::yes };
311
+ recursion_available ra{ recursion_available::no };
312
+ response_code rcode{ response_code::no_error };
313
+
314
+ [[nodiscard]] std::uint16_t encode() const
315
+ {
316
+ return std::uint16_t((static_cast<std::uint32_t>(qr) & 1U) << 15U | (static_cast<std::uint32_t>(opcode) & 15U) << 11U |
317
+ (static_cast<std::uint32_t>(aa) & 1U) << 10U | (static_cast<std::uint32_t>(tc) & 1U) << 9U |
318
+ (static_cast<std::uint32_t>(rd) & 1U) << 8U | (static_cast<std::uint32_t>(ra) & 1U) << 7U |
319
+ (static_cast<std::uint32_t>(rcode) & 15U));
320
+ }
321
+
322
+ void decode(std::uint16_t blob)
323
+ {
324
+ qr = static_cast<message_type>((static_cast<std::uint32_t>(blob) >> 15U) & 1U);
325
+ opcode = static_cast<dns::opcode>((static_cast<std::uint32_t>(blob) >> 11U) & 15U);
326
+
327
+ aa = ((static_cast<std::uint32_t>(blob) >> 10U) & 1U) != 0U ? authoritative_answer::yes : authoritative_answer::no;
328
+ tc = ((static_cast<std::uint32_t>(blob) >> 9U) & 1U) != 0U ? truncation::yes : truncation::no;
329
+ rd = ((static_cast<std::uint32_t>(blob) >> 8U) & 1U) != 0U ? recursion_desired::yes : recursion_desired::no;
330
+ ra = ((static_cast<std::uint32_t>(blob) >> 7U) & 1U) != 0U ? recursion_available::yes : recursion_available::no;
331
+
332
+ rcode = static_cast<response_code>(blob & 15U);
333
+ }
334
+ };
335
+
336
+ /**
337
+ * [ID]
338
+ *
339
+ * A 16 bit identifier assigned by the program that generates any kind of query. This identifier is copied the corresponding reply and
340
+ * can be used by the requester to match up replies to outstanding queries.
341
+ */
342
+ std::uint16_t id;
343
+
344
+ dns_flags flags;
345
+
346
+ /**
347
+ * [QDCOUNT]
348
+ *
349
+ * an unsigned 16 bit integer specifying the number of entries in the question section.
350
+ */
351
+ std::uint16_t question_records;
352
+
353
+ /**
354
+ * [ANCOUNT]
355
+ *
356
+ * an unsigned 16 bit integer specifying the number of resource records in the answer section.
357
+ */
358
+ std::uint16_t answer_records;
359
+
360
+ /**
361
+ * [NSCOUNT]
362
+ *
363
+ * an unsigned 16 bit integer specifying the number of name server resource records in the authority records section.
364
+ */
365
+ std::uint16_t authority_records;
366
+
367
+ /**
368
+ * [ARCOUNT]
369
+ *
370
+ * an unsigned 16 bit integer specifying the number of resource records in the additional records section.
371
+ */
372
+ std::uint16_t additional_records;
373
+ };
374
+
375
+ struct resource_name {
376
+ std::vector<std::string> labels{};
377
+ };
378
+
379
+ /**
380
+ * 4.1.2. Question section format
381
+ * ==============================
382
+ *
383
+ * The question section is used to carry the "question" in most queries, i.e., the parameters that define what is being asked. The section
384
+ * contains QDCOUNT (usually 1) entries, each of the following format:
385
+ *
386
+ * 1 1 1 1 1 1
387
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
388
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
389
+ * | |
390
+ * / QNAME /
391
+ * / /
392
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
393
+ * | QTYPE |
394
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
395
+ * | QCLASS |
396
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
397
+ */
398
+ struct question_record {
399
+ /**
400
+ * [QNAME]
401
+ *
402
+ * a domain name represented as a sequence of labels, where each label consists of a length octet followed by that number of octets. The
403
+ * domain name terminates with the zero length octet for the null label of the root. Note that this field may be an odd number of
404
+ * octets; no padding is used.
405
+ */
406
+ resource_name name{};
407
+
408
+ /**
409
+ * [QTYPE]
410
+ *
411
+ * a two octet code which specifies the type of the query. The values for this field include all codes valid for a TYPE field, together
412
+ * with some more general codes which can match more than one type of RR.
413
+ */
414
+ resource_type type{};
415
+
416
+ /**
417
+ * [QCLASS]
418
+ *
419
+ * a two octet code that specifies the class of the query. For example, the QCLASS field is IN for the Internet.
420
+ */
421
+ resource_class klass{};
422
+
423
+ [[nodiscard]] std::size_t size() const
424
+ {
425
+ std::size_t res = 2 * sizeof(std::uint16_t); // type + class
426
+ for (const auto& label : name.labels) {
427
+ res += sizeof(std::uint8_t) + label.size();
428
+ }
429
+ ++res; // '\0'
430
+ return res;
431
+ }
432
+ };
433
+
434
+ /**
435
+ * 4.1.3. Resource record format
436
+ * =============================
437
+ *
438
+ * The answer, authority, and additional sections all share the same format: a variable number of resource records, where
439
+ * the number of records is specified in the corresponding count field in the header. Each resource record has the
440
+ * following format:
441
+ *
442
+ * 1 1 1 1 1 1
443
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
444
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
445
+ * | |
446
+ * / /
447
+ * / NAME /
448
+ * | |
449
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
450
+ * | TYPE |
451
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
452
+ * | CLASS |
453
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
454
+ * | TTL |
455
+ * | |
456
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
457
+ * | RDLENGTH |
458
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
459
+ * / RDATA /
460
+ * / /
461
+ * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
462
+ *
463
+ * [RDLENGTH]
464
+ *
465
+ * an unsigned 16 bit integer that specifies the length in octets of the RDATA field.
466
+ *
467
+ * [RDATA]
468
+ *
469
+ * a variable length string of octets that describes the resource. The format of this information varies according to the TYPE and CLASS
470
+ * of the resource record. For example, the if the TYPE is A and the CLASS is IN, the RDATA field is a 4 octet ARPA Internet address.
471
+ */
472
+ struct resource_record {
473
+ /**
474
+ * [NAME]
475
+ *
476
+ * a domain name to which this resource record pertains.
477
+ */
478
+ resource_name name{};
479
+
480
+ /**
481
+ * [TYPE]
482
+ *
483
+ * two octets containing one of the RR type codes. This field specifies the meaning of the data in the RDATA field.
484
+ */
485
+ resource_type type{};
486
+
487
+ /**
488
+ * [CLASS]
489
+ *
490
+ * two octets which specify the class of the data in the RDATA field.
491
+ */
492
+ resource_class klass{};
493
+
494
+ /**
495
+ *
496
+ * [TTL]
497
+ *
498
+ * a 32 bit unsigned integer that specifies the time interval (in seconds) that the resource record may be cached before it should be
499
+ * discarded. Zero values are interpreted to mean that the RR can only be used for the transaction in progress, and should not be
500
+ * cached.
501
+ */
502
+ std::uint32_t ttl{};
503
+ };
504
+
505
+ struct srv_record : resource_record {
506
+ std::uint16_t priority{};
507
+ std::uint16_t weight{};
508
+ std::uint16_t port{};
509
+ resource_name target{};
510
+ };
511
+
512
+ /**
513
+ * 4.1. Format
514
+ * ===========
515
+ *
516
+ * All communications inside of the domain protocol are carried in a single format called a message. The top level format of message is
517
+ * divided into 5 sections (some of which are empty in certain cases) shown below:
518
+ *
519
+ * +---------------------+
520
+ * | Header |
521
+ * +---------------------+
522
+ * | Question | the question for the name server
523
+ * +---------------------+
524
+ * | Answer | RRs answering the question
525
+ * +---------------------+
526
+ * | Authority | RRs pointing toward an authority
527
+ * +---------------------+
528
+ * | Additional | RRs holding additional information
529
+ * +---------------------+
530
+ *
531
+ * The header section is always present. The header includes fields that specify which of the remaining sections are present, and also
532
+ * specify whether the message is a query or a response, a standard query or some other opcode, etc.
533
+ *
534
+ * The names of the sections after the header are derived from their use in standard queries. The question section contains fields that
535
+ * describe a question to a name server. These fields are a query type (QTYPE), a query class (QCLASS), and a query domain name (QNAME).
536
+ * The last three sections have the same format: a possibly empty list of concatenated resource records (RRs). The answer section contains
537
+ * RRs that answer the question; the authority section contains RRs that point toward an authoritative name server; the additional records
538
+ * section contains RRs which relate to the query, but are not strictly answers for the question.
539
+ */
540
+ struct dns_message {
541
+ dns_header header{};
542
+ std::vector<question_record> questions{};
543
+ std::vector<srv_record> answers{};
544
+ // the implementation only cares about SRV answers, so ignore everything else
545
+
546
+ [[nodiscard]] std::size_t request_size() const
547
+ {
548
+ std::size_t res = 6 * sizeof(std::uint16_t); // header
549
+ for (const auto& question : questions) {
550
+ res += question.size();
551
+ }
552
+ return res;
553
+ }
554
+ };
555
+ } // namespace couchbase::io::dns