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
@@ -1,197 +0,0 @@
1
- //
2
- // blocking_token_tcp_client.cpp
3
- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
- //
5
- // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
- //
7
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
- //
10
-
11
- #include "asio/connect.hpp"
12
- #include "asio/io_context.hpp"
13
- #include "asio/ip/tcp.hpp"
14
- #include "asio/read_until.hpp"
15
- #include "asio/streambuf.hpp"
16
- #include "asio/system_error.hpp"
17
- #include "asio/write.hpp"
18
- #include <cstdlib>
19
- #include <iostream>
20
- #include <memory>
21
- #include <string>
22
-
23
- using asio::ip::tcp;
24
-
25
- // We will use our sockets only with an io_context.
26
- using tcp_socket = asio::basic_stream_socket<
27
- tcp, asio::io_context::executor_type>;
28
-
29
- //----------------------------------------------------------------------
30
-
31
- // A custom completion token that makes asynchronous operations behave as
32
- // though they are blocking calls with a timeout.
33
- struct close_after
34
- {
35
- close_after(std::chrono::steady_clock::duration t, tcp_socket& s)
36
- : timeout_(t), socket_(s)
37
- {
38
- }
39
-
40
- // The maximum time to wait for an asynchronous operation to complete.
41
- std::chrono::steady_clock::duration timeout_;
42
-
43
- // The socket to be closed if the operation does not complete in time.
44
- tcp_socket& socket_;
45
- };
46
-
47
- namespace asio {
48
-
49
- // The async_result template is specialised to allow the close_after token to
50
- // be used with asynchronous operations that have a completion signature of
51
- // void(error_code, T). Generalising this for all completion signature forms is
52
- // left as an exercise for the reader.
53
- template <typename T>
54
- class async_result<close_after, void(std::error_code, T)>
55
- {
56
- public:
57
- // An asynchronous operation's initiating function automatically creates an
58
- // completion_handler_type object from the token. This function object is
59
- // then called on completion of the asynchronous operation.
60
- class completion_handler_type
61
- {
62
- public:
63
- completion_handler_type(const close_after& token)
64
- : token_(token)
65
- {
66
- }
67
-
68
- void operator()(const std::error_code& error, T t)
69
- {
70
- *error_ = error;
71
- *t_ = t;
72
- }
73
-
74
- private:
75
- friend class async_result;
76
- close_after token_;
77
- std::error_code* error_;
78
- T* t_;
79
- };
80
-
81
- // The async_result constructor associates the completion handler object with
82
- // the result of the initiating function.
83
- explicit async_result(completion_handler_type& h)
84
- : timeout_(h.token_.timeout_),
85
- socket_(h.token_.socket_)
86
- {
87
- h.error_ = &error_;
88
- h.t_ = &t_;
89
- }
90
-
91
- // The return_type typedef determines the result type of the asynchronous
92
- // operation's initiating function.
93
- typedef T return_type;
94
-
95
- // The get() function is used to obtain the result of the asynchronous
96
- // operation's initiating function. For the close_after completion token, we
97
- // use this function to run the io_context until the operation is complete.
98
- return_type get()
99
- {
100
- asio::io_context& io_context = socket_.get_executor().context();
101
-
102
- // Restart the io_context, as it may have been left in the "stopped" state
103
- // by a previous operation.
104
- io_context.restart();
105
-
106
- // Block until the asynchronous operation has completed, or timed out. If
107
- // the pending asynchronous operation is a composed operation, the deadline
108
- // applies to the entire operation, rather than individual operations on
109
- // the socket.
110
- io_context.run_for(timeout_);
111
-
112
- // If the asynchronous operation completed successfully then the io_context
113
- // would have been stopped due to running out of work. If it was not
114
- // stopped, then the io_context::run_for call must have timed out and the
115
- // operation is still incomplete.
116
- if (!io_context.stopped())
117
- {
118
- // Close the socket to cancel the outstanding asynchronous operation.
119
- socket_.close();
120
-
121
- // Run the io_context again until the operation completes.
122
- io_context.run();
123
- }
124
-
125
- // If the operation failed, throw an exception. Otherwise return the result.
126
- return error_ ? throw std::system_error(error_) : t_;
127
- }
128
-
129
- private:
130
- std::chrono::steady_clock::duration timeout_;
131
- tcp_socket& socket_;
132
- std::error_code error_;
133
- T t_;
134
- };
135
-
136
- } // namespace asio
137
-
138
- //----------------------------------------------------------------------
139
-
140
- int main(int argc, char* argv[])
141
- {
142
- try
143
- {
144
- if (argc != 4)
145
- {
146
- std::cerr << "Usage: blocking_tcp_client <host> <port> <message>\n";
147
- return 1;
148
- }
149
-
150
- asio::io_context io_context;
151
-
152
- // Resolve the host name and service to a list of endpoints.
153
- auto endpoints = tcp::resolver(io_context).resolve(argv[1], argv[2]);
154
-
155
- tcp_socket socket(io_context);
156
-
157
- // Run an asynchronous connect operation with a timeout.
158
- asio::async_connect(socket, endpoints,
159
- close_after(std::chrono::seconds(10), socket));
160
-
161
- auto time_sent = std::chrono::steady_clock::now();
162
-
163
- // Run an asynchronous write operation with a timeout.
164
- std::string msg = argv[3] + std::string("\n");
165
- asio::async_write(socket, asio::buffer(msg),
166
- close_after(std::chrono::seconds(10), socket));
167
-
168
- for (std::string input_buffer;;)
169
- {
170
- // Run an asynchronous read operation with a timeout.
171
- std::size_t n = asio::async_read_until(socket,
172
- asio::dynamic_buffer(input_buffer), '\n',
173
- close_after(std::chrono::seconds(10), socket));
174
-
175
- std::string line(input_buffer.substr(0, n - 1));
176
- input_buffer.erase(0, n);
177
-
178
- // Keep going until we get back the line that was sent.
179
- if (line == argv[3])
180
- break;
181
- }
182
-
183
- auto time_received = std::chrono::steady_clock::now();
184
-
185
- std::cout << "Round trip time: ";
186
- std::cout << std::chrono::duration_cast<
187
- std::chrono::microseconds>(
188
- time_received - time_sent).count();
189
- std::cout << " microseconds\n";
190
- }
191
- catch (std::exception& e)
192
- {
193
- std::cerr << "Exception: " << e.what() << "\n";
194
- }
195
-
196
- return 0;
197
- }
@@ -1,155 +0,0 @@
1
- //
2
- // blocking_udp_client.cpp
3
- // ~~~~~~~~~~~~~~~~~~~~~~~
4
- //
5
- // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
- //
7
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
- //
10
-
11
- #include "asio/buffer.hpp"
12
- #include "asio/io_context.hpp"
13
- #include "asio/ip/udp.hpp"
14
- #include <cstdlib>
15
- #include <functional>
16
- #include <iostream>
17
-
18
- using asio::ip::udp;
19
- using std::placeholders::_1;
20
- using std::placeholders::_2;
21
-
22
- //----------------------------------------------------------------------
23
-
24
- //
25
- // This class manages socket timeouts by running the io_context using the timed
26
- // io_context::run_for() member function. Each asynchronous operation is given
27
- // a timeout within which it must complete. The socket operations themselves
28
- // use std::bind to specify the completion handler:
29
- //
30
- // +---------------+
31
- // | |
32
- // | receive |
33
- // | |
34
- // +---------------+
35
- // |
36
- // async_- | +----------------+
37
- // receive() | | |
38
- // +--->| handle_receive |
39
- // | |
40
- // +----------------+
41
- //
42
- // For a given socket operation, the client object runs the io_context to block
43
- // thread execution until the operation completes or the timeout is reached. If
44
- // the io_context::run_for() function times out, the socket is closed and the
45
- // outstanding asynchronous operation is cancelled.
46
- //
47
- class client
48
- {
49
- public:
50
- client(const udp::endpoint& listen_endpoint)
51
- : socket_(io_context_, listen_endpoint)
52
- {
53
- }
54
-
55
- std::size_t receive(const asio::mutable_buffer& buffer,
56
- std::chrono::steady_clock::duration timeout,
57
- std::error_code& error)
58
- {
59
- // Start the asynchronous operation. The handle_receive function used as a
60
- // callback will update the error and length variables.
61
- std::size_t length = 0;
62
- socket_.async_receive(asio::buffer(buffer),
63
- std::bind(&client::handle_receive, _1, _2, &error, &length));
64
-
65
- // Run the operation until it completes, or until the timeout.
66
- run(timeout);
67
-
68
- return length;
69
- }
70
-
71
- private:
72
- void run(std::chrono::steady_clock::duration timeout)
73
- {
74
- // Restart the io_context, as it may have been left in the "stopped" state
75
- // by a previous operation.
76
- io_context_.restart();
77
-
78
- // Block until the asynchronous operation has completed, or timed out. If
79
- // the pending asynchronous operation is a composed operation, the deadline
80
- // applies to the entire operation, rather than individual operations on
81
- // the socket.
82
- io_context_.run_for(timeout);
83
-
84
- // If the asynchronous operation completed successfully then the io_context
85
- // would have been stopped due to running out of work. If it was not
86
- // stopped, then the io_context::run_for call must have timed out.
87
- if (!io_context_.stopped())
88
- {
89
- // Cancel the outstanding asynchronous operation.
90
- socket_.cancel();
91
-
92
- // Run the io_context again until the operation completes.
93
- io_context_.run();
94
- }
95
- }
96
-
97
- static void handle_receive(
98
- const std::error_code& error, std::size_t length,
99
- std::error_code* out_error, std::size_t* out_length)
100
- {
101
- *out_error = error;
102
- *out_length = length;
103
- }
104
-
105
- private:
106
- asio::io_context io_context_;
107
- udp::socket socket_;
108
- };
109
-
110
- //----------------------------------------------------------------------
111
-
112
- int main(int argc, char* argv[])
113
- {
114
- try
115
- {
116
- using namespace std; // For atoi.
117
-
118
- if (argc != 3)
119
- {
120
- std::cerr << "Usage: blocking_udp_client <listen_addr> <listen_port>\n";
121
- return 1;
122
- }
123
-
124
- udp::endpoint listen_endpoint(
125
- asio::ip::make_address(argv[1]),
126
- std::atoi(argv[2]));
127
-
128
- client c(listen_endpoint);
129
-
130
- for (;;)
131
- {
132
- char data[1024];
133
- std::error_code error;
134
- std::size_t n = c.receive(asio::buffer(data),
135
- std::chrono::seconds(10), error);
136
-
137
- if (error)
138
- {
139
- std::cout << "Receive error: " << error.message() << "\n";
140
- }
141
- else
142
- {
143
- std::cout << "Received: ";
144
- std::cout.write(data, n);
145
- std::cout << "\n";
146
- }
147
- }
148
- }
149
- catch (std::exception& e)
150
- {
151
- std::cerr << "Exception: " << e.what() << "\n";
152
- }
153
-
154
- return 0;
155
- }
@@ -1,433 +0,0 @@
1
- //
2
- // server.cpp
3
- // ~~~~~~~~~~
4
- //
5
- // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
- //
7
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
- //
10
-
11
- #include <algorithm>
12
- #include <cstdlib>
13
- #include <deque>
14
- #include <iostream>
15
- #include <memory>
16
- #include <set>
17
- #include <string>
18
- #include "asio/buffer.hpp"
19
- #include "asio/io_context.hpp"
20
- #include "asio/ip/tcp.hpp"
21
- #include "asio/ip/udp.hpp"
22
- #include "asio/read_until.hpp"
23
- #include "asio/steady_timer.hpp"
24
- #include "asio/write.hpp"
25
-
26
- using asio::steady_timer;
27
- using asio::ip::tcp;
28
- using asio::ip::udp;
29
-
30
- //----------------------------------------------------------------------
31
-
32
- class subscriber
33
- {
34
- public:
35
- virtual ~subscriber() = default;
36
- virtual void deliver(const std::string& msg) = 0;
37
- };
38
-
39
- typedef std::shared_ptr<subscriber> subscriber_ptr;
40
-
41
- //----------------------------------------------------------------------
42
-
43
- class channel
44
- {
45
- public:
46
- void join(subscriber_ptr subscriber)
47
- {
48
- subscribers_.insert(subscriber);
49
- }
50
-
51
- void leave(subscriber_ptr subscriber)
52
- {
53
- subscribers_.erase(subscriber);
54
- }
55
-
56
- void deliver(const std::string& msg)
57
- {
58
- for (const auto& s : subscribers_)
59
- {
60
- s->deliver(msg);
61
- }
62
- }
63
-
64
- private:
65
- std::set<subscriber_ptr> subscribers_;
66
- };
67
-
68
- //----------------------------------------------------------------------
69
-
70
- //
71
- // This class manages socket timeouts by applying the concept of a deadline.
72
- // Some asynchronous operations are given deadlines by which they must complete.
73
- // Deadlines are enforced by two "actors" that persist for the lifetime of the
74
- // session object, one for input and one for output:
75
- //
76
- // +----------------+ +----------------+
77
- // | | | |
78
- // | check_deadline |<-------+ | check_deadline |<-------+
79
- // | | | | | |
80
- // +----------------+ | +----------------+ |
81
- // | | | |
82
- // async_wait() | +----------------+ async_wait() | +----------------+
83
- // on input | | lambda | on output | | lambda |
84
- // deadline +--->| in | deadline +--->| in |
85
- // | check_deadline | | check_deadline |
86
- // +----------------+ +----------------+
87
- //
88
- // If either deadline actor determines that the corresponding deadline has
89
- // expired, the socket is closed and any outstanding operations are cancelled.
90
- //
91
- // The input actor reads messages from the socket, where messages are delimited
92
- // by the newline character:
93
- //
94
- // +-------------+
95
- // | |
96
- // | read_line |<----+
97
- // | | |
98
- // +-------------+ |
99
- // | |
100
- // async_- | +-------------+
101
- // read_- | | lambda |
102
- // until() +--->| in |
103
- // | read_line |
104
- // +-------------+
105
- //
106
- // The deadline for receiving a complete message is 30 seconds. If a non-empty
107
- // message is received, it is delivered to all subscribers. If a heartbeat (a
108
- // message that consists of a single newline character) is received, a heartbeat
109
- // is enqueued for the client, provided there are no other messages waiting to
110
- // be sent.
111
- //
112
- // The output actor is responsible for sending messages to the client:
113
- //
114
- // +----------------+
115
- // | |<---------------------+
116
- // | await_output | |
117
- // | |<-------+ |
118
- // +----------------+ | |
119
- // | | | |
120
- // | async_- | +----------------+ |
121
- // | wait() | | lambda | |
122
- // | +->| in | |
123
- // | | await_output | |
124
- // | +----------------+ |
125
- // V |
126
- // +--------------+ +--------------+
127
- // | | async_write() | lambda |
128
- // | write_line |-------------->| in |
129
- // | | | write_line |
130
- // +--------------+ +--------------+
131
- //
132
- // The output actor first waits for an output message to be enqueued. It does
133
- // this by using a steady_timer as an asynchronous condition variable. The
134
- // steady_timer will be signalled whenever the output queue is non-empty.
135
- //
136
- // Once a message is available, it is sent to the client. The deadline for
137
- // sending a complete message is 30 seconds. After the message is successfully
138
- // sent, the output actor again waits for the output queue to become non-empty.
139
- //
140
- class tcp_session
141
- : public subscriber,
142
- public std::enable_shared_from_this<tcp_session>
143
- {
144
- public:
145
- tcp_session(tcp::socket socket, channel& ch)
146
- : channel_(ch),
147
- socket_(std::move(socket))
148
- {
149
- input_deadline_.expires_at(steady_timer::time_point::max());
150
- output_deadline_.expires_at(steady_timer::time_point::max());
151
-
152
- // The non_empty_output_queue_ steady_timer is set to the maximum time
153
- // point whenever the output queue is empty. This ensures that the output
154
- // actor stays asleep until a message is put into the queue.
155
- non_empty_output_queue_.expires_at(steady_timer::time_point::max());
156
- }
157
-
158
- // Called by the server object to initiate the four actors.
159
- void start()
160
- {
161
- channel_.join(shared_from_this());
162
-
163
- read_line();
164
- check_deadline(input_deadline_);
165
-
166
- await_output();
167
- check_deadline(output_deadline_);
168
- }
169
-
170
- private:
171
- void stop()
172
- {
173
- channel_.leave(shared_from_this());
174
-
175
- std::error_code ignored_error;
176
- socket_.close(ignored_error);
177
- input_deadline_.cancel();
178
- non_empty_output_queue_.cancel();
179
- output_deadline_.cancel();
180
- }
181
-
182
- bool stopped() const
183
- {
184
- return !socket_.is_open();
185
- }
186
-
187
- void deliver(const std::string& msg) override
188
- {
189
- output_queue_.push_back(msg + "\n");
190
-
191
- // Signal that the output queue contains messages. Modifying the expiry
192
- // will wake the output actor, if it is waiting on the timer.
193
- non_empty_output_queue_.expires_at(steady_timer::time_point::min());
194
- }
195
-
196
- void read_line()
197
- {
198
- // Set a deadline for the read operation.
199
- input_deadline_.expires_after(std::chrono::seconds(30));
200
-
201
- // Start an asynchronous operation to read a newline-delimited message.
202
- auto self(shared_from_this());
203
- asio::async_read_until(socket_,
204
- asio::dynamic_buffer(input_buffer_), '\n',
205
- [this, self](const std::error_code& error, std::size_t n)
206
- {
207
- // Check if the session was stopped while the operation was pending.
208
- if (stopped())
209
- return;
210
-
211
- if (!error)
212
- {
213
- // Extract the newline-delimited message from the buffer.
214
- std::string msg(input_buffer_.substr(0, n - 1));
215
- input_buffer_.erase(0, n);
216
-
217
- if (!msg.empty())
218
- {
219
- channel_.deliver(msg);
220
- }
221
- else
222
- {
223
-
224
- // We received a heartbeat message from the client. If there's
225
- // nothing else being sent or ready to be sent, send a heartbeat
226
- // right back.
227
- if (output_queue_.empty())
228
- {
229
- output_queue_.push_back("\n");
230
-
231
- // Signal that the output queue contains messages. Modifying
232
- // the expiry will wake the output actor, if it is waiting on
233
- // the timer.
234
- non_empty_output_queue_.expires_at(
235
- steady_timer::time_point::min());
236
- }
237
- }
238
-
239
- read_line();
240
- }
241
- else
242
- {
243
- stop();
244
- }
245
- });
246
- }
247
-
248
- void await_output()
249
- {
250
- auto self(shared_from_this());
251
- non_empty_output_queue_.async_wait(
252
- [this, self](const std::error_code& /*error*/)
253
- {
254
- // Check if the session was stopped while the operation was pending.
255
- if (stopped())
256
- return;
257
-
258
- if (output_queue_.empty())
259
- {
260
- // There are no messages that are ready to be sent. The actor goes
261
- // to sleep by waiting on the non_empty_output_queue_ timer. When a
262
- // new message is added, the timer will be modified and the actor
263
- // will wake.
264
- non_empty_output_queue_.expires_at(steady_timer::time_point::max());
265
- await_output();
266
- }
267
- else
268
- {
269
- write_line();
270
- }
271
- });
272
- }
273
-
274
- void write_line()
275
- {
276
- // Set a deadline for the write operation.
277
- output_deadline_.expires_after(std::chrono::seconds(30));
278
-
279
- // Start an asynchronous operation to send a message.
280
- auto self(shared_from_this());
281
- asio::async_write(socket_,
282
- asio::buffer(output_queue_.front()),
283
- [this, self](const std::error_code& error, std::size_t /*n*/)
284
- {
285
- // Check if the session was stopped while the operation was pending.
286
- if (stopped())
287
- return;
288
-
289
- if (!error)
290
- {
291
- output_queue_.pop_front();
292
-
293
- await_output();
294
- }
295
- else
296
- {
297
- stop();
298
- }
299
- });
300
- }
301
-
302
- void check_deadline(steady_timer& deadline)
303
- {
304
- auto self(shared_from_this());
305
- deadline.async_wait(
306
- [this, self, &deadline](const std::error_code& /*error*/)
307
- {
308
- // Check if the session was stopped while the operation was pending.
309
- if (stopped())
310
- return;
311
-
312
- // Check whether the deadline has passed. We compare the deadline
313
- // against the current time since a new asynchronous operation may
314
- // have moved the deadline before this actor had a chance to run.
315
- if (deadline.expiry() <= steady_timer::clock_type::now())
316
- {
317
- // The deadline has passed. Stop the session. The other actors will
318
- // terminate as soon as possible.
319
- stop();
320
- }
321
- else
322
- {
323
- // Put the actor back to sleep.
324
- check_deadline(deadline);
325
- }
326
- });
327
- }
328
-
329
- channel& channel_;
330
- tcp::socket socket_;
331
- std::string input_buffer_;
332
- steady_timer input_deadline_{socket_.get_executor()};
333
- std::deque<std::string> output_queue_;
334
- steady_timer non_empty_output_queue_{socket_.get_executor()};
335
- steady_timer output_deadline_{socket_.get_executor()};
336
- };
337
-
338
- typedef std::shared_ptr<tcp_session> tcp_session_ptr;
339
-
340
- //----------------------------------------------------------------------
341
-
342
- class udp_broadcaster
343
- : public subscriber
344
- {
345
- public:
346
- udp_broadcaster(asio::io_context& io_context,
347
- const udp::endpoint& broadcast_endpoint)
348
- : socket_(io_context)
349
- {
350
- socket_.connect(broadcast_endpoint);
351
- socket_.set_option(udp::socket::broadcast(true));
352
- }
353
-
354
- private:
355
- void deliver(const std::string& msg)
356
- {
357
- std::error_code ignored_error;
358
- socket_.send(asio::buffer(msg), 0, ignored_error);
359
- }
360
-
361
- udp::socket socket_;
362
- };
363
-
364
- //----------------------------------------------------------------------
365
-
366
- class server
367
- {
368
- public:
369
- server(asio::io_context& io_context,
370
- const tcp::endpoint& listen_endpoint,
371
- const udp::endpoint& broadcast_endpoint)
372
- : io_context_(io_context),
373
- acceptor_(io_context, listen_endpoint)
374
- {
375
- channel_.join(
376
- std::make_shared<udp_broadcaster>(
377
- io_context_, broadcast_endpoint));
378
-
379
- accept();
380
- }
381
-
382
- private:
383
- void accept()
384
- {
385
- acceptor_.async_accept(
386
- [this](const std::error_code& error, tcp::socket socket)
387
- {
388
- if (!error)
389
- {
390
- std::make_shared<tcp_session>(std::move(socket), channel_)->start();
391
- }
392
-
393
- accept();
394
- });
395
- }
396
-
397
- asio::io_context& io_context_;
398
- tcp::acceptor acceptor_;
399
- channel channel_;
400
- };
401
-
402
- //----------------------------------------------------------------------
403
-
404
- int main(int argc, char* argv[])
405
- {
406
- try
407
- {
408
- using namespace std; // For atoi.
409
-
410
- if (argc != 4)
411
- {
412
- std::cerr << "Usage: server <listen_port> <bcast_address> <bcast_port>\n";
413
- return 1;
414
- }
415
-
416
- asio::io_context io_context;
417
-
418
- tcp::endpoint listen_endpoint(tcp::v4(), atoi(argv[1]));
419
-
420
- udp::endpoint broadcast_endpoint(
421
- asio::ip::make_address(argv[2]), atoi(argv[3]));
422
-
423
- server s(io_context, listen_endpoint, broadcast_endpoint);
424
-
425
- io_context.run();
426
- }
427
- catch (std::exception& e)
428
- {
429
- std::cerr << "Exception: " << e.what() << "\n";
430
- }
431
-
432
- return 0;
433
- }