couchbase 1.3.15 → 3.3.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 (1897) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +202 -0
  3. data/README.md +130 -0
  4. data/ext/CMakeLists.txt +66 -0
  5. data/ext/couchbase/CMakeLists.txt +142 -0
  6. data/ext/couchbase/LICENSE.txt +202 -0
  7. data/ext/couchbase/cmake/Backtrace.cmake +35 -0
  8. data/ext/couchbase/cmake/BuildTracing.cmake +6 -0
  9. data/ext/couchbase/cmake/Cache.cmake +29 -0
  10. data/ext/couchbase/cmake/CompilerWarnings.cmake +83 -0
  11. data/ext/couchbase/cmake/DetectStandardFilesystem.cmake +30 -0
  12. data/ext/couchbase/cmake/OpenSSL.cmake +24 -0
  13. data/ext/couchbase/cmake/PreventInSourceBuilds.cmake +21 -0
  14. data/ext/couchbase/cmake/Sanitizers.cmake +67 -0
  15. data/ext/couchbase/cmake/StandardProjectSettings.cmake +45 -0
  16. data/ext/couchbase/cmake/StaticAnalyzers.cmake +37 -0
  17. data/ext/couchbase/cmake/Testing.cmake +63 -0
  18. data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +44 -0
  19. data/ext/couchbase/cmake/VersionInfo.cmake +46 -0
  20. data/ext/couchbase/cmake/build_config.hxx.in +20 -0
  21. data/ext/couchbase/cmake/build_version.hxx.in +32 -0
  22. data/ext/couchbase/cmake/test_filesystem.cpp.in +22 -0
  23. data/ext/couchbase/couchbase/analytics_scan_consistency.hxx +26 -0
  24. data/ext/couchbase/couchbase/bucket.hxx +536 -0
  25. data/ext/couchbase/couchbase/capella_ca.hxx +43 -0
  26. data/ext/couchbase/couchbase/cas.hxx +47 -0
  27. data/ext/couchbase/couchbase/cas_fmt.hxx +37 -0
  28. data/ext/couchbase/couchbase/cluster.cxx +111 -0
  29. data/ext/couchbase/couchbase/cluster.hxx +423 -0
  30. data/ext/couchbase/couchbase/cluster_options.cxx +45 -0
  31. data/ext/couchbase/couchbase/cluster_options.hxx +78 -0
  32. data/ext/couchbase/couchbase/crypto/CMakeLists.txt +12 -0
  33. data/ext/couchbase/couchbase/crypto/cbcrypto.cc +887 -0
  34. data/ext/couchbase/couchbase/crypto/cbcrypto.h +88 -0
  35. data/ext/couchbase/couchbase/design_document_namespace.hxx +26 -0
  36. data/ext/couchbase/couchbase/design_document_namespace_fmt.hxx +47 -0
  37. data/ext/couchbase/couchbase/diagnostics.hxx +97 -0
  38. data/ext/couchbase/couchbase/diagnostics_fmt.hxx +113 -0
  39. data/ext/couchbase/couchbase/diagnostics_json.hxx +100 -0
  40. data/ext/couchbase/couchbase/document_id.cxx +89 -0
  41. data/ext/couchbase/couchbase/document_id.hxx +102 -0
  42. data/ext/couchbase/couchbase/document_id_fmt.hxx +37 -0
  43. data/ext/couchbase/couchbase/error_context/analytics.hxx +51 -0
  44. data/ext/couchbase/couchbase/error_context/http.hxx +47 -0
  45. data/ext/couchbase/couchbase/error_context/key_value.hxx +50 -0
  46. data/ext/couchbase/couchbase/error_context/query.hxx +51 -0
  47. data/ext/couchbase/couchbase/error_context/search.hxx +50 -0
  48. data/ext/couchbase/couchbase/error_context/view.hxx +51 -0
  49. data/ext/couchbase/couchbase/errors.hxx +1038 -0
  50. data/ext/couchbase/couchbase/io/CMakeLists.txt +12 -0
  51. data/ext/couchbase/couchbase/io/dns_client.hxx +217 -0
  52. data/ext/couchbase/couchbase/io/dns_codec.hxx +206 -0
  53. data/ext/couchbase/couchbase/io/dns_config.hxx +115 -0
  54. data/ext/couchbase/couchbase/io/dns_message.hxx +555 -0
  55. data/ext/couchbase/couchbase/io/http_command.hxx +174 -0
  56. data/ext/couchbase/couchbase/io/http_context.hxx +40 -0
  57. data/ext/couchbase/couchbase/io/http_message.hxx +116 -0
  58. data/ext/couchbase/couchbase/io/http_parser.cxx +141 -0
  59. data/ext/couchbase/couchbase/io/http_parser.hxx +55 -0
  60. data/ext/couchbase/couchbase/io/http_session.hxx +544 -0
  61. data/ext/couchbase/couchbase/io/http_session_manager.hxx +377 -0
  62. data/ext/couchbase/couchbase/io/http_traits.hxx +30 -0
  63. data/ext/couchbase/couchbase/io/ip_protocol.hxx +28 -0
  64. data/ext/couchbase/couchbase/io/mcbp_command.hxx +300 -0
  65. data/ext/couchbase/couchbase/io/mcbp_context.hxx +39 -0
  66. data/ext/couchbase/couchbase/io/mcbp_message.cxx +39 -0
  67. data/ext/couchbase/couchbase/io/mcbp_message.hxx +55 -0
  68. data/ext/couchbase/couchbase/io/mcbp_parser.cxx +86 -0
  69. data/ext/couchbase/couchbase/io/mcbp_parser.hxx +45 -0
  70. data/ext/couchbase/couchbase/io/mcbp_session.hxx +1317 -0
  71. data/ext/couchbase/couchbase/io/mcbp_traits.hxx +30 -0
  72. data/ext/couchbase/couchbase/io/query_cache.hxx +61 -0
  73. data/ext/couchbase/couchbase/io/retry_action.hxx +30 -0
  74. data/ext/couchbase/couchbase/io/retry_context.hxx +38 -0
  75. data/ext/couchbase/couchbase/io/retry_orchestrator.hxx +112 -0
  76. data/ext/couchbase/couchbase/io/retry_reason.hxx +158 -0
  77. data/ext/couchbase/couchbase/io/retry_reason_fmt.hxx +103 -0
  78. data/ext/couchbase/couchbase/io/retry_strategy.hxx +152 -0
  79. data/ext/couchbase/couchbase/io/streams.hxx +253 -0
  80. data/ext/couchbase/couchbase/json_string.hxx +48 -0
  81. data/ext/couchbase/couchbase/logger/CMakeLists.txt +9 -0
  82. data/ext/couchbase/couchbase/logger/configuration.hxx +52 -0
  83. data/ext/couchbase/couchbase/logger/custom_rotating_file_sink.cxx +157 -0
  84. data/ext/couchbase/couchbase/logger/custom_rotating_file_sink.hxx +76 -0
  85. data/ext/couchbase/couchbase/logger/logger.cxx +337 -0
  86. data/ext/couchbase/couchbase/logger/logger.hxx +235 -0
  87. data/ext/couchbase/couchbase/management/CMakeLists.txt +13 -0
  88. data/ext/couchbase/couchbase/management/analytics_dataset.hxx +30 -0
  89. data/ext/couchbase/couchbase/management/analytics_index.hxx +30 -0
  90. data/ext/couchbase/couchbase/management/analytics_link.hxx +22 -0
  91. data/ext/couchbase/couchbase/management/analytics_link_azure_blob_external.cxx +67 -0
  92. data/ext/couchbase/couchbase/management/analytics_link_azure_blob_external.hxx +76 -0
  93. data/ext/couchbase/couchbase/management/analytics_link_azure_blob_external_json.hxx +52 -0
  94. data/ext/couchbase/couchbase/management/analytics_link_couchbase_remote.cxx +104 -0
  95. data/ext/couchbase/couchbase/management/analytics_link_couchbase_remote.hxx +107 -0
  96. data/ext/couchbase/couchbase/management/analytics_link_couchbase_remote_json.hxx +63 -0
  97. data/ext/couchbase/couchbase/management/analytics_link_s3_external.cxx +57 -0
  98. data/ext/couchbase/couchbase/management/analytics_link_s3_external.hxx +69 -0
  99. data/ext/couchbase/couchbase/management/analytics_link_s3_external_json.hxx +47 -0
  100. data/ext/couchbase/couchbase/management/bucket_settings.hxx +134 -0
  101. data/ext/couchbase/couchbase/management/bucket_settings_json.hxx +123 -0
  102. data/ext/couchbase/couchbase/management/design_document.hxx +41 -0
  103. data/ext/couchbase/couchbase/management/eventing_function.hxx +188 -0
  104. data/ext/couchbase/couchbase/management/eventing_function_json.hxx +212 -0
  105. data/ext/couchbase/couchbase/management/eventing_status.hxx +84 -0
  106. data/ext/couchbase/couchbase/management/eventing_status_json.hxx +77 -0
  107. data/ext/couchbase/couchbase/management/query_index.hxx +39 -0
  108. data/ext/couchbase/couchbase/management/rbac.hxx +77 -0
  109. data/ext/couchbase/couchbase/management/rbac_fmt.hxx +49 -0
  110. data/ext/couchbase/couchbase/management/rbac_json.hxx +179 -0
  111. data/ext/couchbase/couchbase/management/search_index.hxx +38 -0
  112. data/ext/couchbase/couchbase/management/search_index_json.hxx +58 -0
  113. data/ext/couchbase/couchbase/meta/CMakeLists.txt +15 -0
  114. data/ext/couchbase/couchbase/meta/version.cxx +181 -0
  115. data/ext/couchbase/couchbase/meta/version.hxx +45 -0
  116. data/ext/couchbase/couchbase/metrics/CMakeLists.txt +11 -0
  117. data/ext/couchbase/couchbase/metrics/logging_meter.cxx +194 -0
  118. data/ext/couchbase/couchbase/metrics/logging_meter.hxx +74 -0
  119. data/ext/couchbase/couchbase/metrics/logging_meter_options.hxx +28 -0
  120. data/ext/couchbase/couchbase/metrics/meter.hxx +52 -0
  121. data/ext/couchbase/couchbase/metrics/noop_meter.hxx +47 -0
  122. data/ext/couchbase/couchbase/mutation_token.hxx +31 -0
  123. data/ext/couchbase/couchbase/mutation_token_fmt.hxx +37 -0
  124. data/ext/couchbase/couchbase/operations/CMakeLists.txt +35 -0
  125. data/ext/couchbase/couchbase/operations/document_analytics.cxx +195 -0
  126. data/ext/couchbase/couchbase/operations/document_analytics.hxx +92 -0
  127. data/ext/couchbase/couchbase/operations/document_append.cxx +46 -0
  128. data/ext/couchbase/couchbase/operations/document_append.hxx +63 -0
  129. data/ext/couchbase/couchbase/operations/document_decrement.cxx +57 -0
  130. data/ext/couchbase/couchbase/operations/document_decrement.hxx +67 -0
  131. data/ext/couchbase/couchbase/operations/document_exists.cxx +49 -0
  132. data/ext/couchbase/couchbase/operations/document_exists.hxx +61 -0
  133. data/ext/couchbase/couchbase/operations/document_get.cxx +44 -0
  134. data/ext/couchbase/couchbase/operations/document_get.hxx +53 -0
  135. data/ext/couchbase/couchbase/operations/document_get_and_lock.cxx +45 -0
  136. data/ext/couchbase/couchbase/operations/document_get_and_lock.hxx +54 -0
  137. data/ext/couchbase/couchbase/operations/document_get_and_touch.cxx +45 -0
  138. data/ext/couchbase/couchbase/operations/document_get_and_touch.hxx +54 -0
  139. data/ext/couchbase/couchbase/operations/document_get_projected.cxx +227 -0
  140. data/ext/couchbase/couchbase/operations/document_get_projected.hxx +58 -0
  141. data/ext/couchbase/couchbase/operations/document_increment.cxx +57 -0
  142. data/ext/couchbase/couchbase/operations/document_increment.hxx +67 -0
  143. data/ext/couchbase/couchbase/operations/document_insert.cxx +48 -0
  144. data/ext/couchbase/couchbase/operations/document_insert.hxx +65 -0
  145. data/ext/couchbase/couchbase/operations/document_lookup_in.cxx +81 -0
  146. data/ext/couchbase/couchbase/operations/document_lookup_in.hxx +64 -0
  147. data/ext/couchbase/couchbase/operations/document_mutate_in.cxx +104 -0
  148. data/ext/couchbase/couchbase/operations/document_mutate_in.hxx +82 -0
  149. data/ext/couchbase/couchbase/operations/document_prepend.cxx +46 -0
  150. data/ext/couchbase/couchbase/operations/document_prepend.hxx +63 -0
  151. data/ext/couchbase/couchbase/operations/document_query.cxx +370 -0
  152. data/ext/couchbase/couchbase/operations/document_query.hxx +123 -0
  153. data/ext/couchbase/couchbase/operations/document_remove.cxx +46 -0
  154. data/ext/couchbase/couchbase/operations/document_remove.hxx +63 -0
  155. data/ext/couchbase/couchbase/operations/document_replace.cxx +52 -0
  156. data/ext/couchbase/couchbase/operations/document_replace.hxx +67 -0
  157. data/ext/couchbase/couchbase/operations/document_search.cxx +311 -0
  158. data/ext/couchbase/couchbase/operations/document_search.hxx +153 -0
  159. data/ext/couchbase/couchbase/operations/document_touch.cxx +43 -0
  160. data/ext/couchbase/couchbase/operations/document_touch.hxx +52 -0
  161. data/ext/couchbase/couchbase/operations/document_unlock.cxx +43 -0
  162. data/ext/couchbase/couchbase/operations/document_unlock.hxx +52 -0
  163. data/ext/couchbase/couchbase/operations/document_upsert.cxx +52 -0
  164. data/ext/couchbase/couchbase/operations/document_upsert.hxx +66 -0
  165. data/ext/couchbase/couchbase/operations/document_view.cxx +183 -0
  166. data/ext/couchbase/couchbase/operations/document_view.hxx +97 -0
  167. data/ext/couchbase/couchbase/operations/http_noop.cxx +60 -0
  168. data/ext/couchbase/couchbase/operations/http_noop.hxx +48 -0
  169. data/ext/couchbase/couchbase/operations/management/CMakeLists.txt +79 -0
  170. data/ext/couchbase/couchbase/operations/management/analytics.hxx +34 -0
  171. data/ext/couchbase/couchbase/operations/management/analytics_dataset_create.cxx +94 -0
  172. data/ext/couchbase/couchbase/operations/management/analytics_dataset_create.hxx +57 -0
  173. data/ext/couchbase/couchbase/operations/management/analytics_dataset_drop.cxx +83 -0
  174. data/ext/couchbase/couchbase/operations/management/analytics_dataset_drop.hxx +54 -0
  175. data/ext/couchbase/couchbase/operations/management/analytics_dataset_get_all.cxx +80 -0
  176. data/ext/couchbase/couchbase/operations/management/analytics_dataset_get_all.hxx +52 -0
  177. data/ext/couchbase/couchbase/operations/management/analytics_dataverse_create.cxx +82 -0
  178. data/ext/couchbase/couchbase/operations/management/analytics_dataverse_create.hxx +53 -0
  179. data/ext/couchbase/couchbase/operations/management/analytics_dataverse_drop.cxx +82 -0
  180. data/ext/couchbase/couchbase/operations/management/analytics_dataverse_drop.hxx +53 -0
  181. data/ext/couchbase/couchbase/operations/management/analytics_get_pending_mutations.cxx +70 -0
  182. data/ext/couchbase/couchbase/operations/management/analytics_get_pending_mutations.hxx +52 -0
  183. data/ext/couchbase/couchbase/operations/management/analytics_index_create.cxx +106 -0
  184. data/ext/couchbase/couchbase/operations/management/analytics_index_create.hxx +56 -0
  185. data/ext/couchbase/couchbase/operations/management/analytics_index_drop.cxx +90 -0
  186. data/ext/couchbase/couchbase/operations/management/analytics_index_drop.hxx +55 -0
  187. data/ext/couchbase/couchbase/operations/management/analytics_index_get_all.cxx +80 -0
  188. data/ext/couchbase/couchbase/operations/management/analytics_index_get_all.hxx +52 -0
  189. data/ext/couchbase/couchbase/operations/management/analytics_link_connect.cxx +82 -0
  190. data/ext/couchbase/couchbase/operations/management/analytics_link_connect.hxx +57 -0
  191. data/ext/couchbase/couchbase/operations/management/analytics_link_create.cxx +87 -0
  192. data/ext/couchbase/couchbase/operations/management/analytics_link_create.hxx +77 -0
  193. data/ext/couchbase/couchbase/operations/management/analytics_link_disconnect.cxx +80 -0
  194. data/ext/couchbase/couchbase/operations/management/analytics_link_disconnect.hxx +56 -0
  195. data/ext/couchbase/couchbase/operations/management/analytics_link_drop.cxx +103 -0
  196. data/ext/couchbase/couchbase/operations/management/analytics_link_drop.hxx +56 -0
  197. data/ext/couchbase/couchbase/operations/management/analytics_link_get_all.cxx +130 -0
  198. data/ext/couchbase/couchbase/operations/management/analytics_link_get_all.hxx +63 -0
  199. data/ext/couchbase/couchbase/operations/management/analytics_link_replace.cxx +87 -0
  200. data/ext/couchbase/couchbase/operations/management/analytics_link_replace.hxx +78 -0
  201. data/ext/couchbase/couchbase/operations/management/analytics_link_utils.hxx +37 -0
  202. data/ext/couchbase/couchbase/operations/management/analytics_problem.hxx +30 -0
  203. data/ext/couchbase/couchbase/operations/management/bucket.hxx +25 -0
  204. data/ext/couchbase/couchbase/operations/management/bucket_create.cxx +171 -0
  205. data/ext/couchbase/couchbase/operations/management/bucket_create.hxx +52 -0
  206. data/ext/couchbase/couchbase/operations/management/bucket_describe.cxx +67 -0
  207. data/ext/couchbase/couchbase/operations/management/bucket_describe.hxx +61 -0
  208. data/ext/couchbase/couchbase/operations/management/bucket_drop.cxx +52 -0
  209. data/ext/couchbase/couchbase/operations/management/bucket_drop.hxx +49 -0
  210. data/ext/couchbase/couchbase/operations/management/bucket_flush.cxx +59 -0
  211. data/ext/couchbase/couchbase/operations/management/bucket_flush.hxx +49 -0
  212. data/ext/couchbase/couchbase/operations/management/bucket_get.cxx +59 -0
  213. data/ext/couchbase/couchbase/operations/management/bucket_get.hxx +51 -0
  214. data/ext/couchbase/couchbase/operations/management/bucket_get_all.cxx +59 -0
  215. data/ext/couchbase/couchbase/operations/management/bucket_get_all.hxx +49 -0
  216. data/ext/couchbase/couchbase/operations/management/bucket_update.cxx +130 -0
  217. data/ext/couchbase/couchbase/operations/management/bucket_update.hxx +52 -0
  218. data/ext/couchbase/couchbase/operations/management/cluster_describe.cxx +90 -0
  219. data/ext/couchbase/couchbase/operations/management/cluster_describe.hxx +72 -0
  220. data/ext/couchbase/couchbase/operations/management/cluster_developer_preview_enable.cxx +44 -0
  221. data/ext/couchbase/couchbase/operations/management/cluster_developer_preview_enable.hxx +48 -0
  222. data/ext/couchbase/couchbase/operations/management/collection_create.cxx +83 -0
  223. data/ext/couchbase/couchbase/operations/management/collection_create.hxx +53 -0
  224. data/ext/couchbase/couchbase/operations/management/collection_drop.cxx +73 -0
  225. data/ext/couchbase/couchbase/operations/management/collection_drop.hxx +52 -0
  226. data/ext/couchbase/couchbase/operations/management/collections.hxx +25 -0
  227. data/ext/couchbase/couchbase/operations/management/collections_manifest_get.cxx +40 -0
  228. data/ext/couchbase/couchbase/operations/management/collections_manifest_get.hxx +53 -0
  229. data/ext/couchbase/couchbase/operations/management/error_utils.cxx +265 -0
  230. data/ext/couchbase/couchbase/operations/management/error_utils.hxx +48 -0
  231. data/ext/couchbase/couchbase/operations/management/eventing.hxx +28 -0
  232. data/ext/couchbase/couchbase/operations/management/eventing_deploy_function.cxx +56 -0
  233. data/ext/couchbase/couchbase/operations/management/eventing_deploy_function.hxx +52 -0
  234. data/ext/couchbase/couchbase/operations/management/eventing_drop_function.cxx +57 -0
  235. data/ext/couchbase/couchbase/operations/management/eventing_drop_function.hxx +52 -0
  236. data/ext/couchbase/couchbase/operations/management/eventing_get_all_functions.cxx +64 -0
  237. data/ext/couchbase/couchbase/operations/management/eventing_get_all_functions.hxx +51 -0
  238. data/ext/couchbase/couchbase/operations/management/eventing_get_function.cxx +56 -0
  239. data/ext/couchbase/couchbase/operations/management/eventing_get_function.hxx +53 -0
  240. data/ext/couchbase/couchbase/operations/management/eventing_get_status.cxx +56 -0
  241. data/ext/couchbase/couchbase/operations/management/eventing_get_status.hxx +53 -0
  242. data/ext/couchbase/couchbase/operations/management/eventing_pause_function.cxx +56 -0
  243. data/ext/couchbase/couchbase/operations/management/eventing_pause_function.hxx +52 -0
  244. data/ext/couchbase/couchbase/operations/management/eventing_problem.hxx +31 -0
  245. data/ext/couchbase/couchbase/operations/management/eventing_resume_function.cxx +56 -0
  246. data/ext/couchbase/couchbase/operations/management/eventing_resume_function.hxx +52 -0
  247. data/ext/couchbase/couchbase/operations/management/eventing_undeploy_function.cxx +56 -0
  248. data/ext/couchbase/couchbase/operations/management/eventing_undeploy_function.hxx +52 -0
  249. data/ext/couchbase/couchbase/operations/management/eventing_upsert_function.cxx +341 -0
  250. data/ext/couchbase/couchbase/operations/management/eventing_upsert_function.hxx +52 -0
  251. data/ext/couchbase/couchbase/operations/management/freeform.cxx +55 -0
  252. data/ext/couchbase/couchbase/operations/management/freeform.hxx +55 -0
  253. data/ext/couchbase/couchbase/operations/management/group_drop.cxx +51 -0
  254. data/ext/couchbase/couchbase/operations/management/group_drop.hxx +49 -0
  255. data/ext/couchbase/couchbase/operations/management/group_get.cxx +60 -0
  256. data/ext/couchbase/couchbase/operations/management/group_get.hxx +50 -0
  257. data/ext/couchbase/couchbase/operations/management/group_get_all.cxx +58 -0
  258. data/ext/couchbase/couchbase/operations/management/group_get_all.hxx +49 -0
  259. data/ext/couchbase/couchbase/operations/management/group_upsert.cxx +96 -0
  260. data/ext/couchbase/couchbase/operations/management/group_upsert.hxx +51 -0
  261. data/ext/couchbase/couchbase/operations/management/query.hxx +23 -0
  262. data/ext/couchbase/couchbase/operations/management/query_index_build_deferred.cxx +88 -0
  263. data/ext/couchbase/couchbase/operations/management/query_index_build_deferred.hxx +61 -0
  264. data/ext/couchbase/couchbase/operations/management/query_index_create.cxx +149 -0
  265. data/ext/couchbase/couchbase/operations/management/query_index_create.hxx +65 -0
  266. data/ext/couchbase/couchbase/operations/management/query_index_drop.cxx +128 -0
  267. data/ext/couchbase/couchbase/operations/management/query_index_drop.hxx +61 -0
  268. data/ext/couchbase/couchbase/operations/management/query_index_get_all.cxx +126 -0
  269. data/ext/couchbase/couchbase/operations/management/query_index_get_all.hxx +54 -0
  270. data/ext/couchbase/couchbase/operations/management/role_get_all.cxx +58 -0
  271. data/ext/couchbase/couchbase/operations/management/role_get_all.hxx +49 -0
  272. data/ext/couchbase/couchbase/operations/management/scope_create.cxx +75 -0
  273. data/ext/couchbase/couchbase/operations/management/scope_create.hxx +51 -0
  274. data/ext/couchbase/couchbase/operations/management/scope_drop.cxx +70 -0
  275. data/ext/couchbase/couchbase/operations/management/scope_drop.hxx +51 -0
  276. data/ext/couchbase/couchbase/operations/management/scope_get_all.cxx +62 -0
  277. data/ext/couchbase/couchbase/operations/management/scope_get_all.hxx +51 -0
  278. data/ext/couchbase/couchbase/operations/management/search.hxx +30 -0
  279. data/ext/couchbase/couchbase/operations/management/search_get_stats.cxx +41 -0
  280. data/ext/couchbase/couchbase/operations/management/search_get_stats.hxx +48 -0
  281. data/ext/couchbase/couchbase/operations/management/search_index_analyze_document.cxx +85 -0
  282. data/ext/couchbase/couchbase/operations/management/search_index_analyze_document.hxx +54 -0
  283. data/ext/couchbase/couchbase/operations/management/search_index_control_ingest.cxx +73 -0
  284. data/ext/couchbase/couchbase/operations/management/search_index_control_ingest.hxx +52 -0
  285. data/ext/couchbase/couchbase/operations/management/search_index_control_plan_freeze.cxx +73 -0
  286. data/ext/couchbase/couchbase/operations/management/search_index_control_plan_freeze.hxx +57 -0
  287. data/ext/couchbase/couchbase/operations/management/search_index_control_query.cxx +73 -0
  288. data/ext/couchbase/couchbase/operations/management/search_index_control_query.hxx +52 -0
  289. data/ext/couchbase/couchbase/operations/management/search_index_drop.cxx +72 -0
  290. data/ext/couchbase/couchbase/operations/management/search_index_drop.hxx +51 -0
  291. data/ext/couchbase/couchbase/operations/management/search_index_get.cxx +75 -0
  292. data/ext/couchbase/couchbase/operations/management/search_index_get.hxx +54 -0
  293. data/ext/couchbase/couchbase/operations/management/search_index_get_all.cxx +67 -0
  294. data/ext/couchbase/couchbase/operations/management/search_index_get_all.hxx +51 -0
  295. data/ext/couchbase/couchbase/operations/management/search_index_get_documents_count.cxx +79 -0
  296. data/ext/couchbase/couchbase/operations/management/search_index_get_documents_count.hxx +53 -0
  297. data/ext/couchbase/couchbase/operations/management/search_index_get_stats.cxx +71 -0
  298. data/ext/couchbase/couchbase/operations/management/search_index_get_stats.hxx +52 -0
  299. data/ext/couchbase/couchbase/operations/management/search_index_upsert.cxx +108 -0
  300. data/ext/couchbase/couchbase/operations/management/search_index_upsert.hxx +52 -0
  301. data/ext/couchbase/couchbase/operations/management/user.hxx +28 -0
  302. data/ext/couchbase/couchbase/operations/management/user_drop.cxx +52 -0
  303. data/ext/couchbase/couchbase/operations/management/user_drop.hxx +51 -0
  304. data/ext/couchbase/couchbase/operations/management/user_get.cxx +61 -0
  305. data/ext/couchbase/couchbase/operations/management/user_get.hxx +52 -0
  306. data/ext/couchbase/couchbase/operations/management/user_get_all.cxx +59 -0
  307. data/ext/couchbase/couchbase/operations/management/user_get_all.hxx +51 -0
  308. data/ext/couchbase/couchbase/operations/management/user_upsert.cxx +101 -0
  309. data/ext/couchbase/couchbase/operations/management/user_upsert.hxx +52 -0
  310. data/ext/couchbase/couchbase/operations/management/view.hxx +23 -0
  311. data/ext/couchbase/couchbase/operations/management/view_index_drop.cxx +46 -0
  312. data/ext/couchbase/couchbase/operations/management/view_index_drop.hxx +52 -0
  313. data/ext/couchbase/couchbase/operations/management/view_index_get.cxx +74 -0
  314. data/ext/couchbase/couchbase/operations/management/view_index_get.hxx +53 -0
  315. data/ext/couchbase/couchbase/operations/management/view_index_get_all.cxx +108 -0
  316. data/ext/couchbase/couchbase/operations/management/view_index_get_all.hxx +52 -0
  317. data/ext/couchbase/couchbase/operations/management/view_index_upsert.cxx +71 -0
  318. data/ext/couchbase/couchbase/operations/management/view_index_upsert.hxx +51 -0
  319. data/ext/couchbase/couchbase/operations/mcbp_noop.cxx +38 -0
  320. data/ext/couchbase/couchbase/operations/mcbp_noop.hxx +49 -0
  321. data/ext/couchbase/couchbase/operations.hxx +42 -0
  322. data/ext/couchbase/couchbase/origin.hxx +185 -0
  323. data/ext/couchbase/couchbase/platform/CMakeLists.txt +16 -0
  324. data/ext/couchbase/couchbase/platform/backtrace.c +189 -0
  325. data/ext/couchbase/couchbase/platform/backtrace.h +54 -0
  326. data/ext/couchbase/couchbase/platform/base64.cc +234 -0
  327. data/ext/couchbase/couchbase/platform/base64.h +44 -0
  328. data/ext/couchbase/couchbase/platform/dirutils.cc +123 -0
  329. data/ext/couchbase/couchbase/platform/dirutils.h +43 -0
  330. data/ext/couchbase/couchbase/platform/random.cc +120 -0
  331. data/ext/couchbase/couchbase/platform/random.h +39 -0
  332. data/ext/couchbase/couchbase/platform/string_hex.cc +99 -0
  333. data/ext/couchbase/couchbase/platform/string_hex.h +50 -0
  334. data/ext/couchbase/couchbase/platform/terminate_handler.cc +125 -0
  335. data/ext/couchbase/couchbase/platform/terminate_handler.h +36 -0
  336. data/ext/couchbase/couchbase/platform/uuid.cc +98 -0
  337. data/ext/couchbase/couchbase/platform/uuid.h +56 -0
  338. data/ext/couchbase/couchbase/protocol/CMakeLists.txt +42 -0
  339. data/ext/couchbase/couchbase/protocol/client_opcode.hxx +359 -0
  340. data/ext/couchbase/couchbase/protocol/client_opcode_fmt.hxx +316 -0
  341. data/ext/couchbase/couchbase/protocol/client_request.cxx +37 -0
  342. data/ext/couchbase/couchbase/protocol/client_request.hxx +157 -0
  343. data/ext/couchbase/couchbase/protocol/client_response.cxx +74 -0
  344. data/ext/couchbase/couchbase/protocol/client_response.hxx +211 -0
  345. data/ext/couchbase/couchbase/protocol/cmd_append.cxx +82 -0
  346. data/ext/couchbase/couchbase/protocol/cmd_append.hxx +107 -0
  347. data/ext/couchbase/couchbase/protocol/cmd_cluster_map_change_notification.cxx +51 -0
  348. data/ext/couchbase/couchbase/protocol/cmd_cluster_map_change_notification.hxx +57 -0
  349. data/ext/couchbase/couchbase/protocol/cmd_decrement.cxx +112 -0
  350. data/ext/couchbase/couchbase/protocol/cmd_decrement.hxx +131 -0
  351. data/ext/couchbase/couchbase/protocol/cmd_exists.cxx +92 -0
  352. data/ext/couchbase/couchbase/protocol/cmd_exists.hxx +121 -0
  353. data/ext/couchbase/couchbase/protocol/cmd_get.cxx +63 -0
  354. data/ext/couchbase/couchbase/protocol/cmd_get.hxx +101 -0
  355. data/ext/couchbase/couchbase/protocol/cmd_get_and_lock.cxx +68 -0
  356. data/ext/couchbase/couchbase/protocol/cmd_get_and_lock.hxx +117 -0
  357. data/ext/couchbase/couchbase/protocol/cmd_get_and_touch.cxx +70 -0
  358. data/ext/couchbase/couchbase/protocol/cmd_get_and_touch.hxx +117 -0
  359. data/ext/couchbase/couchbase/protocol/cmd_get_cluster_config.cxx +84 -0
  360. data/ext/couchbase/couchbase/protocol/cmd_get_cluster_config.hxx +89 -0
  361. data/ext/couchbase/couchbase/protocol/cmd_get_collection_id.cxx +50 -0
  362. data/ext/couchbase/couchbase/protocol/cmd_get_collection_id.hxx +98 -0
  363. data/ext/couchbase/couchbase/protocol/cmd_get_collections_manifest.cxx +44 -0
  364. data/ext/couchbase/couchbase/protocol/cmd_get_collections_manifest.hxx +84 -0
  365. data/ext/couchbase/couchbase/protocol/cmd_get_error_map.cxx +59 -0
  366. data/ext/couchbase/couchbase/protocol/cmd_get_error_map.hxx +103 -0
  367. data/ext/couchbase/couchbase/protocol/cmd_get_meta.cxx +74 -0
  368. data/ext/couchbase/couchbase/protocol/cmd_get_meta.hxx +119 -0
  369. data/ext/couchbase/couchbase/protocol/cmd_hello.cxx +66 -0
  370. data/ext/couchbase/couchbase/protocol/cmd_hello.hxx +144 -0
  371. data/ext/couchbase/couchbase/protocol/cmd_increment.cxx +117 -0
  372. data/ext/couchbase/couchbase/protocol/cmd_increment.hxx +131 -0
  373. data/ext/couchbase/couchbase/protocol/cmd_info.hxx +29 -0
  374. data/ext/couchbase/couchbase/protocol/cmd_insert.cxx +92 -0
  375. data/ext/couchbase/couchbase/protocol/cmd_insert.hxx +123 -0
  376. data/ext/couchbase/couchbase/protocol/cmd_lookup_in.cxx +109 -0
  377. data/ext/couchbase/couchbase/protocol/cmd_lookup_in.hxx +165 -0
  378. data/ext/couchbase/couchbase/protocol/cmd_mutate_in.cxx +174 -0
  379. data/ext/couchbase/couchbase/protocol/cmd_mutate_in.hxx +311 -0
  380. data/ext/couchbase/couchbase/protocol/cmd_noop.cxx +36 -0
  381. data/ext/couchbase/couchbase/protocol/cmd_noop.hxx +75 -0
  382. data/ext/couchbase/couchbase/protocol/cmd_prepend.cxx +82 -0
  383. data/ext/couchbase/couchbase/protocol/cmd_prepend.hxx +102 -0
  384. data/ext/couchbase/couchbase/protocol/cmd_remove.cxx +83 -0
  385. data/ext/couchbase/couchbase/protocol/cmd_remove.hxx +93 -0
  386. data/ext/couchbase/couchbase/protocol/cmd_replace.cxx +105 -0
  387. data/ext/couchbase/couchbase/protocol/cmd_replace.hxx +130 -0
  388. data/ext/couchbase/couchbase/protocol/cmd_sasl_auth.cxx +40 -0
  389. data/ext/couchbase/couchbase/protocol/cmd_sasl_auth.hxx +97 -0
  390. data/ext/couchbase/couchbase/protocol/cmd_sasl_list_mechs.cxx +48 -0
  391. data/ext/couchbase/couchbase/protocol/cmd_sasl_list_mechs.hxx +82 -0
  392. data/ext/couchbase/couchbase/protocol/cmd_sasl_step.cxx +40 -0
  393. data/ext/couchbase/couchbase/protocol/cmd_sasl_step.hxx +97 -0
  394. data/ext/couchbase/couchbase/protocol/cmd_select_bucket.cxx +36 -0
  395. data/ext/couchbase/couchbase/protocol/cmd_select_bucket.hxx +82 -0
  396. data/ext/couchbase/couchbase/protocol/cmd_touch.cxx +57 -0
  397. data/ext/couchbase/couchbase/protocol/cmd_touch.hxx +84 -0
  398. data/ext/couchbase/couchbase/protocol/cmd_unlock.cxx +48 -0
  399. data/ext/couchbase/couchbase/protocol/cmd_unlock.hxx +81 -0
  400. data/ext/couchbase/couchbase/protocol/cmd_upsert.cxx +104 -0
  401. data/ext/couchbase/couchbase/protocol/cmd_upsert.hxx +125 -0
  402. data/ext/couchbase/couchbase/protocol/datatype.hxx +48 -0
  403. data/ext/couchbase/couchbase/protocol/durability_level.hxx +59 -0
  404. data/ext/couchbase/couchbase/protocol/durability_level_fmt.hxx +52 -0
  405. data/ext/couchbase/couchbase/protocol/enhanced_error_info.hxx +28 -0
  406. data/ext/couchbase/couchbase/protocol/enhanced_error_info_fmt.hxx +44 -0
  407. data/ext/couchbase/couchbase/protocol/frame_info_id.hxx +142 -0
  408. data/ext/couchbase/couchbase/protocol/frame_info_id_fmt.hxx +79 -0
  409. data/ext/couchbase/couchbase/protocol/hello_feature.hxx +186 -0
  410. data/ext/couchbase/couchbase/protocol/hello_feature_fmt.hxx +106 -0
  411. data/ext/couchbase/couchbase/protocol/magic.hxx +53 -0
  412. data/ext/couchbase/couchbase/protocol/magic_fmt.hxx +58 -0
  413. data/ext/couchbase/couchbase/protocol/server_opcode.hxx +39 -0
  414. data/ext/couchbase/couchbase/protocol/server_opcode_fmt.hxx +46 -0
  415. data/ext/couchbase/couchbase/protocol/server_request.hxx +121 -0
  416. data/ext/couchbase/couchbase/protocol/status.cxx +187 -0
  417. data/ext/couchbase/couchbase/protocol/status.hxx +180 -0
  418. data/ext/couchbase/couchbase/protocol/status_fmt.hxx +241 -0
  419. data/ext/couchbase/couchbase/query_profile_mode.hxx +27 -0
  420. data/ext/couchbase/couchbase/query_scan_consistency.hxx +23 -0
  421. data/ext/couchbase/couchbase/sasl/CMakeLists.txt +16 -0
  422. data/ext/couchbase/couchbase/sasl/client.cc +50 -0
  423. data/ext/couchbase/couchbase/sasl/client.h +128 -0
  424. data/ext/couchbase/couchbase/sasl/context.cc +34 -0
  425. data/ext/couchbase/couchbase/sasl/context.h +52 -0
  426. data/ext/couchbase/couchbase/sasl/error.h +28 -0
  427. data/ext/couchbase/couchbase/sasl/error_fmt.h +70 -0
  428. data/ext/couchbase/couchbase/sasl/mechanism.cc +45 -0
  429. data/ext/couchbase/couchbase/sasl/mechanism.h +52 -0
  430. data/ext/couchbase/couchbase/sasl/plain/plain.cc +39 -0
  431. data/ext/couchbase/couchbase/sasl/plain/plain.h +54 -0
  432. data/ext/couchbase/couchbase/sasl/scram-sha/scram-sha.cc +372 -0
  433. data/ext/couchbase/couchbase/sasl/scram-sha/scram-sha.h +184 -0
  434. data/ext/couchbase/couchbase/sasl/scram-sha/stringutils.cc +82 -0
  435. data/ext/couchbase/couchbase/sasl/scram-sha/stringutils.h +48 -0
  436. data/ext/couchbase/couchbase/search_highlight_style.hxx +23 -0
  437. data/ext/couchbase/couchbase/search_scan_consistency.hxx +23 -0
  438. data/ext/couchbase/couchbase/service_type.hxx +31 -0
  439. data/ext/couchbase/couchbase/service_type_fmt.hxx +61 -0
  440. data/ext/couchbase/couchbase/timeout_defaults.hxx +42 -0
  441. data/ext/couchbase/couchbase/topology/CMakeLists.txt +9 -0
  442. data/ext/couchbase/couchbase/topology/capabilities.hxx +43 -0
  443. data/ext/couchbase/couchbase/topology/capabilities_fmt.hxx +106 -0
  444. data/ext/couchbase/couchbase/topology/collections_manifest.hxx +42 -0
  445. data/ext/couchbase/couchbase/topology/collections_manifest_fmt.hxx +52 -0
  446. data/ext/couchbase/couchbase/topology/collections_manifest_json.hxx +50 -0
  447. data/ext/couchbase/couchbase/topology/configuration.cxx +223 -0
  448. data/ext/couchbase/couchbase/topology/configuration.hxx +120 -0
  449. data/ext/couchbase/couchbase/topology/configuration_fmt.hxx +166 -0
  450. data/ext/couchbase/couchbase/topology/configuration_json.hxx +259 -0
  451. data/ext/couchbase/couchbase/topology/error_map.hxx +149 -0
  452. data/ext/couchbase/couchbase/topology/error_map_fmt.hxx +94 -0
  453. data/ext/couchbase/couchbase/topology/error_map_json.hxx +88 -0
  454. data/ext/couchbase/couchbase/tracing/CMakeLists.txt +9 -0
  455. data/ext/couchbase/couchbase/tracing/constants.hxx +274 -0
  456. data/ext/couchbase/couchbase/tracing/noop_tracer.hxx +55 -0
  457. data/ext/couchbase/couchbase/tracing/request_tracer.hxx +79 -0
  458. data/ext/couchbase/couchbase/tracing/threshold_logging_options.hxx +68 -0
  459. data/ext/couchbase/couchbase/tracing/threshold_logging_tracer.cxx +422 -0
  460. data/ext/couchbase/couchbase/tracing/threshold_logging_tracer.hxx +49 -0
  461. data/ext/couchbase/couchbase/utils/CMakeLists.txt +17 -0
  462. data/ext/couchbase/couchbase/utils/byteswap.cxx +45 -0
  463. data/ext/couchbase/couchbase/utils/byteswap.hxx +49 -0
  464. data/ext/couchbase/couchbase/utils/connection_string.cxx +420 -0
  465. data/ext/couchbase/couchbase/utils/connection_string.hxx +76 -0
  466. data/ext/couchbase/couchbase/utils/crc32.hxx +48 -0
  467. data/ext/couchbase/couchbase/utils/duration_parser.cxx +193 -0
  468. data/ext/couchbase/couchbase/utils/duration_parser.hxx +45 -0
  469. data/ext/couchbase/couchbase/utils/join_strings.hxx +65 -0
  470. data/ext/couchbase/couchbase/utils/json.cxx +71 -0
  471. data/ext/couchbase/couchbase/utils/json.hxx +37 -0
  472. data/ext/couchbase/couchbase/utils/json_stream_control.hxx +32 -0
  473. data/ext/couchbase/couchbase/utils/json_streaming_lexer.cxx +394 -0
  474. data/ext/couchbase/couchbase/utils/json_streaming_lexer.hxx +58 -0
  475. data/ext/couchbase/couchbase/utils/movable_function.hxx +110 -0
  476. data/ext/couchbase/couchbase/utils/name_codec.hxx +41 -0
  477. data/ext/couchbase/couchbase/utils/unsigned_leb128.hxx +181 -0
  478. data/ext/couchbase/couchbase/utils/url_codec.cxx +404 -0
  479. data/ext/couchbase/couchbase/utils/url_codec.hxx +72 -0
  480. data/ext/couchbase/couchbase/view_scan_consistency.hxx +27 -0
  481. data/ext/couchbase/couchbase/view_sort_order.hxx +23 -0
  482. data/ext/couchbase/test/CMakeLists.txt +22 -0
  483. data/ext/couchbase/test/benchmark_helper_integration.hxx +22 -0
  484. data/ext/couchbase/test/benchmark_integration_get.cxx +45 -0
  485. data/ext/couchbase/test/test_helper.hxx +25 -0
  486. data/ext/couchbase/test/test_helper_integration.hxx +24 -0
  487. data/ext/couchbase/test/test_integration_arithmetic.cxx +112 -0
  488. data/ext/couchbase/test/test_integration_binary_operations.cxx +115 -0
  489. data/ext/couchbase/test/test_integration_collections.cxx +176 -0
  490. data/ext/couchbase/test/test_integration_connect.cxx +148 -0
  491. data/ext/couchbase/test/test_integration_crud.cxx +726 -0
  492. data/ext/couchbase/test/test_integration_diagnostics.cxx +365 -0
  493. data/ext/couchbase/test/test_integration_durability.cxx +82 -0
  494. data/ext/couchbase/test/test_integration_management.cxx +2657 -0
  495. data/ext/couchbase/test/test_integration_query.cxx +407 -0
  496. data/ext/couchbase/test/test_integration_subdoc.cxx +893 -0
  497. data/ext/couchbase/test/test_unit_connection_string.cxx +379 -0
  498. data/ext/couchbase/test/test_unit_json_streaming_lexer.cxx +115 -0
  499. data/ext/couchbase/test/test_unit_jsonsl.cxx +511 -0
  500. data/ext/couchbase/test/test_unit_utils.cxx +127 -0
  501. data/ext/couchbase/third_party/asio/asio/include/asio/any_io_executor.hpp +301 -0
  502. data/ext/couchbase/third_party/asio/asio/include/asio/associated_allocator.hpp +177 -0
  503. data/ext/couchbase/third_party/asio/asio/include/asio/associated_cancellation_slot.hpp +177 -0
  504. data/ext/couchbase/third_party/asio/asio/include/asio/associated_executor.hpp +222 -0
  505. data/ext/couchbase/third_party/asio/asio/include/asio/associator.hpp +35 -0
  506. data/ext/couchbase/third_party/asio/asio/include/asio/async_result.hpp +1271 -0
  507. data/ext/couchbase/third_party/asio/asio/include/asio/awaitable.hpp +133 -0
  508. data/ext/couchbase/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +1303 -0
  509. data/ext/couchbase/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +703 -0
  510. data/ext/couchbase/third_party/asio/asio/include/asio/basic_file.hpp +829 -0
  511. data/ext/couchbase/third_party/asio/asio/include/asio/basic_io_object.hpp +290 -0
  512. data/ext/couchbase/third_party/asio/asio/include/asio/basic_random_access_file.hpp +677 -0
  513. data/ext/couchbase/third_party/asio/asio/include/asio/basic_raw_socket.hpp +1294 -0
  514. data/ext/couchbase/third_party/asio/asio/include/asio/basic_readable_pipe.hpp +523 -0
  515. data/ext/couchbase/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +798 -0
  516. data/ext/couchbase/third_party/asio/asio/include/asio/basic_serial_port.hpp +907 -0
  517. data/ext/couchbase/third_party/asio/asio/include/asio/basic_signal_set.hpp +576 -0
  518. data/ext/couchbase/third_party/asio/asio/include/asio/basic_socket.hpp +1923 -0
  519. data/ext/couchbase/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +2606 -0
  520. data/ext/couchbase/third_party/asio/asio/include/asio/basic_socket_iostream.hpp +407 -0
  521. data/ext/couchbase/third_party/asio/asio/include/asio/basic_socket_streambuf.hpp +687 -0
  522. data/ext/couchbase/third_party/asio/asio/include/asio/basic_stream_file.hpp +730 -0
  523. data/ext/couchbase/third_party/asio/asio/include/asio/basic_stream_socket.hpp +1120 -0
  524. data/ext/couchbase/third_party/asio/asio/include/asio/basic_streambuf.hpp +452 -0
  525. data/ext/couchbase/third_party/asio/asio/include/asio/basic_streambuf_fwd.hpp +36 -0
  526. data/ext/couchbase/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +821 -0
  527. data/ext/couchbase/third_party/asio/asio/include/asio/basic_writable_pipe.hpp +519 -0
  528. data/ext/couchbase/third_party/asio/asio/include/asio/bind_cancellation_slot.hpp +721 -0
  529. data/ext/couchbase/third_party/asio/asio/include/asio/bind_executor.hpp +754 -0
  530. data/ext/couchbase/third_party/asio/asio/include/asio/buffer.hpp +2496 -0
  531. data/ext/couchbase/third_party/asio/asio/include/asio/buffer_registration.hpp +327 -0
  532. data/ext/couchbase/third_party/asio/asio/include/asio/buffered_read_stream.hpp +253 -0
  533. data/ext/couchbase/third_party/asio/asio/include/asio/buffered_read_stream_fwd.hpp +25 -0
  534. data/ext/couchbase/third_party/asio/asio/include/asio/buffered_stream.hpp +279 -0
  535. data/ext/couchbase/third_party/asio/asio/include/asio/buffered_stream_fwd.hpp +25 -0
  536. data/ext/couchbase/third_party/asio/asio/include/asio/buffered_write_stream.hpp +245 -0
  537. data/ext/couchbase/third_party/asio/asio/include/asio/buffered_write_stream_fwd.hpp +25 -0
  538. data/ext/couchbase/third_party/asio/asio/include/asio/buffers_iterator.hpp +521 -0
  539. data/ext/couchbase/third_party/asio/asio/include/asio/cancellation_signal.hpp +305 -0
  540. data/ext/couchbase/third_party/asio/asio/include/asio/cancellation_state.hpp +235 -0
  541. data/ext/couchbase/third_party/asio/asio/include/asio/cancellation_type.hpp +174 -0
  542. data/ext/couchbase/third_party/asio/asio/include/asio/co_spawn.hpp +499 -0
  543. data/ext/couchbase/third_party/asio/asio/include/asio/completion_condition.hpp +218 -0
  544. data/ext/couchbase/third_party/asio/asio/include/asio/compose.hpp +136 -0
  545. data/ext/couchbase/third_party/asio/asio/include/asio/connect.hpp +1136 -0
  546. data/ext/couchbase/third_party/asio/asio/include/asio/connect_pipe.hpp +83 -0
  547. data/ext/couchbase/third_party/asio/asio/include/asio/coroutine.hpp +328 -0
  548. data/ext/couchbase/third_party/asio/asio/include/asio/deadline_timer.hpp +38 -0
  549. data/ext/couchbase/third_party/asio/asio/include/asio/defer.hpp +130 -0
  550. data/ext/couchbase/third_party/asio/asio/include/asio/detached.hpp +112 -0
  551. data/ext/couchbase/third_party/asio/asio/include/asio/detail/array.hpp +38 -0
  552. data/ext/couchbase/third_party/asio/asio/include/asio/detail/array_fwd.hpp +34 -0
  553. data/ext/couchbase/third_party/asio/asio/include/asio/detail/assert.hpp +32 -0
  554. data/ext/couchbase/third_party/asio/asio/include/asio/detail/atomic_count.hpp +67 -0
  555. data/ext/couchbase/third_party/asio/asio/include/asio/detail/base_from_cancellation_state.hpp +163 -0
  556. data/ext/couchbase/third_party/asio/asio/include/asio/detail/base_from_completion_cond.hpp +69 -0
  557. data/ext/couchbase/third_party/asio/asio/include/asio/detail/bind_handler.hpp +1071 -0
  558. data/ext/couchbase/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
  559. data/ext/couchbase/third_party/asio/asio/include/asio/detail/buffer_resize_guard.hpp +66 -0
  560. data/ext/couchbase/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +841 -0
  561. data/ext/couchbase/third_party/asio/asio/include/asio/detail/buffered_stream_storage.hpp +126 -0
  562. data/ext/couchbase/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
  563. data/ext/couchbase/third_party/asio/asio/include/asio/detail/call_stack.hpp +125 -0
  564. data/ext/couchbase/third_party/asio/asio/include/asio/detail/chrono.hpp +66 -0
  565. data/ext/couchbase/third_party/asio/asio/include/asio/detail/chrono_time_traits.hpp +190 -0
  566. data/ext/couchbase/third_party/asio/asio/include/asio/detail/completion_handler.hpp +88 -0
  567. data/ext/couchbase/third_party/asio/asio/include/asio/detail/concurrency_hint.hpp +94 -0
  568. data/ext/couchbase/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +120 -0
  569. data/ext/couchbase/third_party/asio/asio/include/asio/detail/conditionally_enabled_mutex.hpp +149 -0
  570. data/ext/couchbase/third_party/asio/asio/include/asio/detail/config.hpp +1998 -0
  571. data/ext/couchbase/third_party/asio/asio/include/asio/detail/consuming_buffers.hpp +451 -0
  572. data/ext/couchbase/third_party/asio/asio/include/asio/detail/cstddef.hpp +31 -0
  573. data/ext/couchbase/third_party/asio/asio/include/asio/detail/cstdint.hpp +62 -0
  574. data/ext/couchbase/third_party/asio/asio/include/asio/detail/date_time_fwd.hpp +34 -0
  575. data/ext/couchbase/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +335 -0
  576. data/ext/couchbase/third_party/asio/asio/include/asio/detail/dependent_type.hpp +36 -0
  577. data/ext/couchbase/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +179 -0
  578. data/ext/couchbase/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +148 -0
  579. data/ext/couchbase/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +148 -0
  580. data/ext/couchbase/third_party/asio/asio/include/asio/detail/dev_poll_reactor.hpp +230 -0
  581. data/ext/couchbase/third_party/asio/asio/include/asio/detail/epoll_reactor.hpp +278 -0
  582. data/ext/couchbase/third_party/asio/asio/include/asio/detail/event.hpp +48 -0
  583. data/ext/couchbase/third_party/asio/asio/include/asio/detail/eventfd_select_interrupter.hpp +83 -0
  584. data/ext/couchbase/third_party/asio/asio/include/asio/detail/executor_function.hpp +204 -0
  585. data/ext/couchbase/third_party/asio/asio/include/asio/detail/executor_op.hpp +84 -0
  586. data/ext/couchbase/third_party/asio/asio/include/asio/detail/fd_set_adapter.hpp +39 -0
  587. data/ext/couchbase/third_party/asio/asio/include/asio/detail/fenced_block.hpp +80 -0
  588. data/ext/couchbase/third_party/asio/asio/include/asio/detail/functional.hpp +44 -0
  589. data/ext/couchbase/third_party/asio/asio/include/asio/detail/future.hpp +33 -0
  590. data/ext/couchbase/third_party/asio/asio/include/asio/detail/gcc_arm_fenced_block.hpp +91 -0
  591. data/ext/couchbase/third_party/asio/asio/include/asio/detail/gcc_hppa_fenced_block.hpp +68 -0
  592. data/ext/couchbase/third_party/asio/asio/include/asio/detail/gcc_sync_fenced_block.hpp +65 -0
  593. data/ext/couchbase/third_party/asio/asio/include/asio/detail/gcc_x86_fenced_block.hpp +99 -0
  594. data/ext/couchbase/third_party/asio/asio/include/asio/detail/global.hpp +52 -0
  595. data/ext/couchbase/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +288 -0
  596. data/ext/couchbase/third_party/asio/asio/include/asio/detail/handler_cont_helpers.hpp +45 -0
  597. data/ext/couchbase/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +80 -0
  598. data/ext/couchbase/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +264 -0
  599. data/ext/couchbase/third_party/asio/asio/include/asio/detail/handler_type_requirements.hpp +559 -0
  600. data/ext/couchbase/third_party/asio/asio/include/asio/detail/handler_work.hpp +525 -0
  601. data/ext/couchbase/third_party/asio/asio/include/asio/detail/hash_map.hpp +331 -0
  602. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp +118 -0
  603. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +933 -0
  604. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/dev_poll_reactor.hpp +111 -0
  605. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/dev_poll_reactor.ipp +460 -0
  606. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/epoll_reactor.hpp +109 -0
  607. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/epoll_reactor.ipp +817 -0
  608. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp +171 -0
  609. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +396 -0
  610. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/io_uring_descriptor_service.ipp +202 -0
  611. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/io_uring_file_service.ipp +131 -0
  612. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/io_uring_service.hpp +112 -0
  613. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/io_uring_service.ipp +879 -0
  614. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/io_uring_socket_service_base.ipp +249 -0
  615. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/kqueue_reactor.hpp +113 -0
  616. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/kqueue_reactor.ipp +599 -0
  617. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/null_event.ipp +74 -0
  618. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/pipe_select_interrupter.ipp +129 -0
  619. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/posix_event.ipp +63 -0
  620. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/posix_mutex.ipp +46 -0
  621. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/posix_serial_port_service.ipp +149 -0
  622. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/posix_thread.ipp +84 -0
  623. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/posix_tss_ptr.ipp +46 -0
  624. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/reactive_descriptor_service.ipp +225 -0
  625. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/reactive_socket_service_base.ipp +302 -0
  626. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/resolver_service_base.ipp +158 -0
  627. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +674 -0
  628. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/select_reactor.hpp +124 -0
  629. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/select_reactor.ipp +357 -0
  630. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/service_registry.hpp +94 -0
  631. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/service_registry.ipp +197 -0
  632. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +746 -0
  633. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +3964 -0
  634. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/socket_select_interrupter.ipp +185 -0
  635. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +354 -0
  636. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.ipp +158 -0
  637. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +87 -0
  638. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +202 -0
  639. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/thread_context.ipp +35 -0
  640. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/throw_error.ipp +66 -0
  641. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/timer_queue_ptime.ipp +97 -0
  642. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/timer_queue_set.ipp +101 -0
  643. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_event.ipp +76 -0
  644. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_iocp_file_service.ipp +250 -0
  645. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_iocp_handle_service.ipp +525 -0
  646. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.hpp +120 -0
  647. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +608 -0
  648. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp +192 -0
  649. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp +821 -0
  650. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_mutex.ipp +84 -0
  651. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_object_handle_service.ipp +448 -0
  652. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_static_mutex.ipp +136 -0
  653. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_thread.ipp +150 -0
  654. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/win_tss_ptr.ipp +57 -0
  655. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp +626 -0
  656. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp +92 -0
  657. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp +121 -0
  658. data/ext/couchbase/third_party/asio/asio/include/asio/detail/impl/winsock_init.ipp +82 -0
  659. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_control.hpp +84 -0
  660. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +172 -0
  661. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_descriptor_read_at_op.hpp +190 -0
  662. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_descriptor_read_op.hpp +185 -0
  663. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_descriptor_service.hpp +661 -0
  664. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_descriptor_write_at_op.hpp +184 -0
  665. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_descriptor_write_op.hpp +180 -0
  666. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_file_service.hpp +251 -0
  667. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_null_buffers_op.hpp +111 -0
  668. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_operation.hpp +84 -0
  669. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_service.hpp +318 -0
  670. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_accept_op.hpp +277 -0
  671. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_connect_op.hpp +137 -0
  672. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_recv_op.hpp +200 -0
  673. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_recvfrom_op.hpp +201 -0
  674. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_recvmsg_op.hpp +187 -0
  675. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_send_op.hpp +186 -0
  676. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_sendto_op.hpp +189 -0
  677. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_service.hpp +613 -0
  678. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_socket_service_base.hpp +663 -0
  679. data/ext/couchbase/third_party/asio/asio/include/asio/detail/io_uring_wait_op.hpp +109 -0
  680. data/ext/couchbase/third_party/asio/asio/include/asio/detail/is_buffer_sequence.hpp +338 -0
  681. data/ext/couchbase/third_party/asio/asio/include/asio/detail/is_executor.hpp +126 -0
  682. data/ext/couchbase/third_party/asio/asio/include/asio/detail/keyword_tss_ptr.hpp +70 -0
  683. data/ext/couchbase/third_party/asio/asio/include/asio/detail/kqueue_reactor.hpp +254 -0
  684. data/ext/couchbase/third_party/asio/asio/include/asio/detail/limits.hpp +26 -0
  685. data/ext/couchbase/third_party/asio/asio/include/asio/detail/local_free_on_block_exit.hpp +59 -0
  686. data/ext/couchbase/third_party/asio/asio/include/asio/detail/macos_fenced_block.hpp +62 -0
  687. data/ext/couchbase/third_party/asio/asio/include/asio/detail/memory.hpp +133 -0
  688. data/ext/couchbase/third_party/asio/asio/include/asio/detail/mutex.hpp +48 -0
  689. data/ext/couchbase/third_party/asio/asio/include/asio/detail/non_const_lvalue.hpp +54 -0
  690. data/ext/couchbase/third_party/asio/asio/include/asio/detail/noncopyable.hpp +43 -0
  691. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_event.hpp +106 -0
  692. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_fenced_block.hpp +47 -0
  693. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_global.hpp +59 -0
  694. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_mutex.hpp +60 -0
  695. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_reactor.hpp +83 -0
  696. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_signal_blocker.hpp +69 -0
  697. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_socket_service.hpp +519 -0
  698. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_static_mutex.hpp +60 -0
  699. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_thread.hpp +67 -0
  700. data/ext/couchbase/third_party/asio/asio/include/asio/detail/null_tss_ptr.hpp +68 -0
  701. data/ext/couchbase/third_party/asio/asio/include/asio/detail/object_pool.hpp +171 -0
  702. data/ext/couchbase/third_party/asio/asio/include/asio/detail/old_win_sdk_compat.hpp +214 -0
  703. data/ext/couchbase/third_party/asio/asio/include/asio/detail/op_queue.hpp +162 -0
  704. data/ext/couchbase/third_party/asio/asio/include/asio/detail/operation.hpp +38 -0
  705. data/ext/couchbase/third_party/asio/asio/include/asio/detail/pipe_select_interrupter.hpp +89 -0
  706. data/ext/couchbase/third_party/asio/asio/include/asio/detail/pop_options.hpp +153 -0
  707. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_event.hpp +175 -0
  708. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_fd_set_adapter.hpp +118 -0
  709. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_global.hpp +80 -0
  710. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_mutex.hpp +76 -0
  711. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_serial_port_service.hpp +248 -0
  712. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_signal_blocker.hpp +85 -0
  713. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_static_mutex.hpp +64 -0
  714. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_thread.hpp +109 -0
  715. data/ext/couchbase/third_party/asio/asio/include/asio/detail/posix_tss_ptr.hpp +79 -0
  716. data/ext/couchbase/third_party/asio/asio/include/asio/detail/push_options.hpp +219 -0
  717. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +511 -0
  718. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +98 -0
  719. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +242 -0
  720. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +123 -0
  721. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +159 -0
  722. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +164 -0
  723. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +145 -0
  724. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +162 -0
  725. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +156 -0
  726. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +607 -0
  727. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +654 -0
  728. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +98 -0
  729. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactor.hpp +54 -0
  730. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactor_op.hpp +71 -0
  731. data/ext/couchbase/third_party/asio/asio/include/asio/detail/reactor_op_queue.hpp +212 -0
  732. data/ext/couchbase/third_party/asio/asio/include/asio/detail/recycling_allocator.hpp +105 -0
  733. data/ext/couchbase/third_party/asio/asio/include/asio/detail/regex_fwd.hpp +44 -0
  734. data/ext/couchbase/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +140 -0
  735. data/ext/couchbase/third_party/asio/asio/include/asio/detail/resolve_op.hpp +45 -0
  736. data/ext/couchbase/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +150 -0
  737. data/ext/couchbase/third_party/asio/asio/include/asio/detail/resolver_service.hpp +145 -0
  738. data/ext/couchbase/third_party/asio/asio/include/asio/detail/resolver_service_base.hpp +158 -0
  739. data/ext/couchbase/third_party/asio/asio/include/asio/detail/scheduler.hpp +241 -0
  740. data/ext/couchbase/third_party/asio/asio/include/asio/detail/scheduler_operation.hpp +78 -0
  741. data/ext/couchbase/third_party/asio/asio/include/asio/detail/scheduler_task.hpp +49 -0
  742. data/ext/couchbase/third_party/asio/asio/include/asio/detail/scheduler_thread_info.hpp +40 -0
  743. data/ext/couchbase/third_party/asio/asio/include/asio/detail/scoped_lock.hpp +101 -0
  744. data/ext/couchbase/third_party/asio/asio/include/asio/detail/scoped_ptr.hpp +87 -0
  745. data/ext/couchbase/third_party/asio/asio/include/asio/detail/select_interrupter.hpp +46 -0
  746. data/ext/couchbase/third_party/asio/asio/include/asio/detail/select_reactor.hpp +252 -0
  747. data/ext/couchbase/third_party/asio/asio/include/asio/detail/service_registry.hpp +164 -0
  748. data/ext/couchbase/third_party/asio/asio/include/asio/detail/signal_blocker.hpp +44 -0
  749. data/ext/couchbase/third_party/asio/asio/include/asio/detail/signal_handler.hpp +90 -0
  750. data/ext/couchbase/third_party/asio/asio/include/asio/detail/signal_init.hpp +47 -0
  751. data/ext/couchbase/third_party/asio/asio/include/asio/detail/signal_op.hpp +49 -0
  752. data/ext/couchbase/third_party/asio/asio/include/asio/detail/signal_set_service.hpp +241 -0
  753. data/ext/couchbase/third_party/asio/asio/include/asio/detail/socket_holder.hpp +98 -0
  754. data/ext/couchbase/third_party/asio/asio/include/asio/detail/socket_ops.hpp +383 -0
  755. data/ext/couchbase/third_party/asio/asio/include/asio/detail/socket_option.hpp +316 -0
  756. data/ext/couchbase/third_party/asio/asio/include/asio/detail/socket_select_interrupter.hpp +91 -0
  757. data/ext/couchbase/third_party/asio/asio/include/asio/detail/socket_types.hpp +417 -0
  758. data/ext/couchbase/third_party/asio/asio/include/asio/detail/solaris_fenced_block.hpp +62 -0
  759. data/ext/couchbase/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
  760. data/ext/couchbase/third_party/asio/asio/include/asio/detail/static_mutex.hpp +52 -0
  761. data/ext/couchbase/third_party/asio/asio/include/asio/detail/std_event.hpp +188 -0
  762. data/ext/couchbase/third_party/asio/asio/include/asio/detail/std_fenced_block.hpp +62 -0
  763. data/ext/couchbase/third_party/asio/asio/include/asio/detail/std_global.hpp +70 -0
  764. data/ext/couchbase/third_party/asio/asio/include/asio/detail/std_mutex.hpp +73 -0
  765. data/ext/couchbase/third_party/asio/asio/include/asio/detail/std_static_mutex.hpp +81 -0
  766. data/ext/couchbase/third_party/asio/asio/include/asio/detail/std_thread.hpp +71 -0
  767. data/ext/couchbase/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +173 -0
  768. data/ext/couchbase/third_party/asio/asio/include/asio/detail/strand_service.hpp +144 -0
  769. data/ext/couchbase/third_party/asio/asio/include/asio/detail/string_view.hpp +47 -0
  770. data/ext/couchbase/third_party/asio/asio/include/asio/detail/thread.hpp +60 -0
  771. data/ext/couchbase/third_party/asio/asio/include/asio/detail/thread_context.hpp +51 -0
  772. data/ext/couchbase/third_party/asio/asio/include/asio/detail/thread_group.hpp +99 -0
  773. data/ext/couchbase/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +260 -0
  774. data/ext/couchbase/third_party/asio/asio/include/asio/detail/throw_error.hpp +53 -0
  775. data/ext/couchbase/third_party/asio/asio/include/asio/detail/throw_exception.hpp +51 -0
  776. data/ext/couchbase/third_party/asio/asio/include/asio/detail/timer_queue.hpp +389 -0
  777. data/ext/couchbase/third_party/asio/asio/include/asio/detail/timer_queue_base.hpp +68 -0
  778. data/ext/couchbase/third_party/asio/asio/include/asio/detail/timer_queue_ptime.hpp +103 -0
  779. data/ext/couchbase/third_party/asio/asio/include/asio/detail/timer_queue_set.hpp +66 -0
  780. data/ext/couchbase/third_party/asio/asio/include/asio/detail/timer_scheduler.hpp +37 -0
  781. data/ext/couchbase/third_party/asio/asio/include/asio/detail/timer_scheduler_fwd.hpp +42 -0
  782. data/ext/couchbase/third_party/asio/asio/include/asio/detail/tss_ptr.hpp +69 -0
  783. data/ext/couchbase/third_party/asio/asio/include/asio/detail/type_traits.hpp +156 -0
  784. data/ext/couchbase/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +294 -0
  785. data/ext/couchbase/third_party/asio/asio/include/asio/detail/wait_handler.hpp +90 -0
  786. data/ext/couchbase/third_party/asio/asio/include/asio/detail/wait_op.hpp +49 -0
  787. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_event.hpp +164 -0
  788. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_fd_set_adapter.hpp +149 -0
  789. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_fenced_block.hpp +90 -0
  790. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_global.hpp +71 -0
  791. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_file_service.hpp +280 -0
  792. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +117 -0
  793. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_handle_service.hpp +403 -0
  794. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +110 -0
  795. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +345 -0
  796. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +127 -0
  797. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_operation.hpp +96 -0
  798. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +96 -0
  799. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +171 -0
  800. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_serial_port_service.hpp +232 -0
  801. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +338 -0
  802. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +135 -0
  803. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +124 -0
  804. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +133 -0
  805. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +125 -0
  806. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +118 -0
  807. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_socket_service.hpp +659 -0
  808. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_socket_service_base.hpp +832 -0
  809. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_thread_info.hpp +34 -0
  810. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +128 -0
  811. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_mutex.hpp +78 -0
  812. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_object_handle_service.hpp +195 -0
  813. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_static_mutex.hpp +74 -0
  814. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_thread.hpp +147 -0
  815. data/ext/couchbase/third_party/asio/asio/include/asio/detail/win_tss_ptr.hpp +79 -0
  816. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winapp_thread.hpp +124 -0
  817. data/ext/couchbase/third_party/asio/asio/include/asio/detail/wince_thread.hpp +124 -0
  818. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_async_manager.hpp +305 -0
  819. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_async_op.hpp +65 -0
  820. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +125 -0
  821. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_resolver_service.hpp +212 -0
  822. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +98 -0
  823. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +119 -0
  824. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +110 -0
  825. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_ssocket_service.hpp +250 -0
  826. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_ssocket_service_base.hpp +362 -0
  827. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_timer_scheduler.hpp +147 -0
  828. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winrt_utils.hpp +106 -0
  829. data/ext/couchbase/third_party/asio/asio/include/asio/detail/winsock_init.hpp +128 -0
  830. data/ext/couchbase/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +151 -0
  831. data/ext/couchbase/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +327 -0
  832. data/ext/couchbase/third_party/asio/asio/include/asio/dispatch.hpp +121 -0
  833. data/ext/couchbase/third_party/asio/asio/include/asio/error.hpp +356 -0
  834. data/ext/couchbase/third_party/asio/asio/include/asio/error_code.hpp +202 -0
  835. data/ext/couchbase/third_party/asio/asio/include/asio/execution/allocator.hpp +337 -0
  836. data/ext/couchbase/third_party/asio/asio/include/asio/execution/any_executor.hpp +2351 -0
  837. data/ext/couchbase/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
  838. data/ext/couchbase/third_party/asio/asio/include/asio/execution/blocking.hpp +1551 -0
  839. data/ext/couchbase/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1212 -0
  840. data/ext/couchbase/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +397 -0
  841. data/ext/couchbase/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1215 -0
  842. data/ext/couchbase/third_party/asio/asio/include/asio/execution/connect.hpp +489 -0
  843. data/ext/couchbase/third_party/asio/asio/include/asio/execution/context.hpp +233 -0
  844. data/ext/couchbase/third_party/asio/asio/include/asio/execution/context_as.hpp +221 -0
  845. data/ext/couchbase/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
  846. data/ext/couchbase/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
  847. data/ext/couchbase/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
  848. data/ext/couchbase/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
  849. data/ext/couchbase/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
  850. data/ext/couchbase/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
  851. data/ext/couchbase/third_party/asio/asio/include/asio/execution/execute.hpp +283 -0
  852. data/ext/couchbase/third_party/asio/asio/include/asio/execution/executor.hpp +252 -0
  853. data/ext/couchbase/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
  854. data/ext/couchbase/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
  855. data/ext/couchbase/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
  856. data/ext/couchbase/third_party/asio/asio/include/asio/execution/mapping.hpp +1116 -0
  857. data/ext/couchbase/third_party/asio/asio/include/asio/execution/occupancy.hpp +226 -0
  858. data/ext/couchbase/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
  859. data/ext/couchbase/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +867 -0
  860. data/ext/couchbase/third_party/asio/asio/include/asio/execution/prefer_only.hpp +331 -0
  861. data/ext/couchbase/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
  862. data/ext/couchbase/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
  863. data/ext/couchbase/third_party/asio/asio/include/asio/execution/relationship.hpp +865 -0
  864. data/ext/couchbase/third_party/asio/asio/include/asio/execution/schedule.hpp +287 -0
  865. data/ext/couchbase/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
  866. data/ext/couchbase/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
  867. data/ext/couchbase/third_party/asio/asio/include/asio/execution/set_done.hpp +250 -0
  868. data/ext/couchbase/third_party/asio/asio/include/asio/execution/set_error.hpp +250 -0
  869. data/ext/couchbase/third_party/asio/asio/include/asio/execution/set_value.hpp +483 -0
  870. data/ext/couchbase/third_party/asio/asio/include/asio/execution/start.hpp +247 -0
  871. data/ext/couchbase/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
  872. data/ext/couchbase/third_party/asio/asio/include/asio/execution.hpp +48 -0
  873. data/ext/couchbase/third_party/asio/asio/include/asio/execution_context.hpp +412 -0
  874. data/ext/couchbase/third_party/asio/asio/include/asio/executor.hpp +347 -0
  875. data/ext/couchbase/third_party/asio/asio/include/asio/executor_work_guard.hpp +302 -0
  876. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/append.hpp +71 -0
  877. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/as_single.hpp +135 -0
  878. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/as_tuple.hpp +131 -0
  879. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/awaitable_operators.hpp +536 -0
  880. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/basic_channel.hpp +415 -0
  881. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/basic_concurrent_channel.hpp +424 -0
  882. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/cancellation_condition.hpp +155 -0
  883. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/channel.hpp +70 -0
  884. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/channel_error.hpp +84 -0
  885. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/channel_traits.hpp +231 -0
  886. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/co_spawn.hpp +191 -0
  887. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/concurrent_channel.hpp +70 -0
  888. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/coro.hpp +263 -0
  889. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/coro_traits.hpp +228 -0
  890. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/deferred.hpp +605 -0
  891. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/channel_handler.hpp +70 -0
  892. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/channel_message.hpp +122 -0
  893. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/channel_operation.hpp +199 -0
  894. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/channel_payload.hpp +93 -0
  895. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/channel_receive_op.hpp +112 -0
  896. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/channel_send_functions.hpp +131 -0
  897. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/channel_send_op.hpp +140 -0
  898. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/channel_service.hpp +497 -0
  899. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/completion_handler_erasure.hpp +158 -0
  900. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/coro_promise_allocator.hpp +118 -0
  901. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/has_signature.hpp +54 -0
  902. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/impl/channel_service.hpp +611 -0
  903. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/detail/partial_promise.hpp +176 -0
  904. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/append.hpp +217 -0
  905. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/as_single.hpp +229 -0
  906. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/as_tuple.hpp +246 -0
  907. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/channel_error.ipp +61 -0
  908. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/coro.hpp +1204 -0
  909. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/deferred.hpp +104 -0
  910. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/parallel_group.hpp +432 -0
  911. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/prepend.hpp +217 -0
  912. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/promise.hpp +102 -0
  913. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/impl/use_coro.hpp +267 -0
  914. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/parallel_group.hpp +215 -0
  915. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/prepend.hpp +71 -0
  916. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/promise.hpp +610 -0
  917. data/ext/couchbase/third_party/asio/asio/include/asio/experimental/use_coro.hpp +169 -0
  918. data/ext/couchbase/third_party/asio/asio/include/asio/file_base.hpp +160 -0
  919. data/ext/couchbase/third_party/asio/asio/include/asio/generic/basic_endpoint.hpp +193 -0
  920. data/ext/couchbase/third_party/asio/asio/include/asio/generic/datagram_protocol.hpp +123 -0
  921. data/ext/couchbase/third_party/asio/asio/include/asio/generic/detail/endpoint.hpp +133 -0
  922. data/ext/couchbase/third_party/asio/asio/include/asio/generic/detail/impl/endpoint.ipp +110 -0
  923. data/ext/couchbase/third_party/asio/asio/include/asio/generic/raw_protocol.hpp +121 -0
  924. data/ext/couchbase/third_party/asio/asio/include/asio/generic/seq_packet_protocol.hpp +122 -0
  925. data/ext/couchbase/third_party/asio/asio/include/asio/generic/stream_protocol.hpp +127 -0
  926. data/ext/couchbase/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +104 -0
  927. data/ext/couchbase/third_party/asio/asio/include/asio/handler_continuation_hook.hpp +54 -0
  928. data/ext/couchbase/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +111 -0
  929. data/ext/couchbase/third_party/asio/asio/include/asio/high_resolution_timer.hpp +44 -0
  930. data/ext/couchbase/third_party/asio/asio/include/asio/impl/any_io_executor.ipp +124 -0
  931. data/ext/couchbase/third_party/asio/asio/include/asio/impl/awaitable.hpp +760 -0
  932. data/ext/couchbase/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +498 -0
  933. data/ext/couchbase/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +478 -0
  934. data/ext/couchbase/third_party/asio/asio/include/asio/impl/cancellation_signal.ipp +96 -0
  935. data/ext/couchbase/third_party/asio/asio/include/asio/impl/co_spawn.hpp +346 -0
  936. data/ext/couchbase/third_party/asio/asio/include/asio/impl/compose.hpp +707 -0
  937. data/ext/couchbase/third_party/asio/asio/include/asio/impl/connect.hpp +905 -0
  938. data/ext/couchbase/third_party/asio/asio/include/asio/impl/connect_pipe.hpp +73 -0
  939. data/ext/couchbase/third_party/asio/asio/include/asio/impl/connect_pipe.ipp +149 -0
  940. data/ext/couchbase/third_party/asio/asio/include/asio/impl/defer.hpp +256 -0
  941. data/ext/couchbase/third_party/asio/asio/include/asio/impl/detached.hpp +130 -0
  942. data/ext/couchbase/third_party/asio/asio/include/asio/impl/dispatch.hpp +251 -0
  943. data/ext/couchbase/third_party/asio/asio/include/asio/impl/error.ipp +128 -0
  944. data/ext/couchbase/third_party/asio/asio/include/asio/impl/error_code.ipp +206 -0
  945. data/ext/couchbase/third_party/asio/asio/include/asio/impl/execution_context.hpp +109 -0
  946. data/ext/couchbase/third_party/asio/asio/include/asio/impl/execution_context.ipp +82 -0
  947. data/ext/couchbase/third_party/asio/asio/include/asio/impl/executor.hpp +300 -0
  948. data/ext/couchbase/third_party/asio/asio/include/asio/impl/executor.ipp +43 -0
  949. data/ext/couchbase/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +62 -0
  950. data/ext/couchbase/third_party/asio/asio/include/asio/impl/io_context.hpp +444 -0
  951. data/ext/couchbase/third_party/asio/asio/include/asio/impl/io_context.ipp +175 -0
  952. data/ext/couchbase/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
  953. data/ext/couchbase/third_party/asio/asio/include/asio/impl/post.hpp +256 -0
  954. data/ext/couchbase/third_party/asio/asio/include/asio/impl/read.hpp +1199 -0
  955. data/ext/couchbase/third_party/asio/asio/include/asio/impl/read_at.hpp +733 -0
  956. data/ext/couchbase/third_party/asio/asio/include/asio/impl/read_until.hpp +3315 -0
  957. data/ext/couchbase/third_party/asio/asio/include/asio/impl/redirect_error.hpp +609 -0
  958. data/ext/couchbase/third_party/asio/asio/include/asio/impl/serial_port_base.hpp +59 -0
  959. data/ext/couchbase/third_party/asio/asio/include/asio/impl/serial_port_base.ipp +554 -0
  960. data/ext/couchbase/third_party/asio/asio/include/asio/impl/spawn.hpp +517 -0
  961. data/ext/couchbase/third_party/asio/asio/include/asio/impl/src.hpp +95 -0
  962. data/ext/couchbase/third_party/asio/asio/include/asio/impl/system_context.hpp +34 -0
  963. data/ext/couchbase/third_party/asio/asio/include/asio/impl/system_context.ipp +92 -0
  964. data/ext/couchbase/third_party/asio/asio/include/asio/impl/system_executor.hpp +185 -0
  965. data/ext/couchbase/third_party/asio/asio/include/asio/impl/thread_pool.hpp +354 -0
  966. data/ext/couchbase/third_party/asio/asio/include/asio/impl/thread_pool.ipp +141 -0
  967. data/ext/couchbase/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +291 -0
  968. data/ext/couchbase/third_party/asio/asio/include/asio/impl/use_future.hpp +1028 -0
  969. data/ext/couchbase/third_party/asio/asio/include/asio/impl/write.hpp +1100 -0
  970. data/ext/couchbase/third_party/asio/asio/include/asio/impl/write_at.hpp +644 -0
  971. data/ext/couchbase/third_party/asio/asio/include/asio/io_context.hpp +1560 -0
  972. data/ext/couchbase/third_party/asio/asio/include/asio/io_context_strand.hpp +376 -0
  973. data/ext/couchbase/third_party/asio/asio/include/asio/io_service.hpp +33 -0
  974. data/ext/couchbase/third_party/asio/asio/include/asio/io_service_strand.hpp +20 -0
  975. data/ext/couchbase/third_party/asio/asio/include/asio/ip/address.hpp +290 -0
  976. data/ext/couchbase/third_party/asio/asio/include/asio/ip/address_v4.hpp +355 -0
  977. data/ext/couchbase/third_party/asio/asio/include/asio/ip/address_v4_iterator.hpp +162 -0
  978. data/ext/couchbase/third_party/asio/asio/include/asio/ip/address_v4_range.hpp +134 -0
  979. data/ext/couchbase/third_party/asio/asio/include/asio/ip/address_v6.hpp +382 -0
  980. data/ext/couchbase/third_party/asio/asio/include/asio/ip/address_v6_iterator.hpp +183 -0
  981. data/ext/couchbase/third_party/asio/asio/include/asio/ip/address_v6_range.hpp +129 -0
  982. data/ext/couchbase/third_party/asio/asio/include/asio/ip/bad_address_cast.hpp +53 -0
  983. data/ext/couchbase/third_party/asio/asio/include/asio/ip/basic_endpoint.hpp +291 -0
  984. data/ext/couchbase/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +1076 -0
  985. data/ext/couchbase/third_party/asio/asio/include/asio/ip/basic_resolver_entry.hpp +113 -0
  986. data/ext/couchbase/third_party/asio/asio/include/asio/ip/basic_resolver_iterator.hpp +192 -0
  987. data/ext/couchbase/third_party/asio/asio/include/asio/ip/basic_resolver_query.hpp +244 -0
  988. data/ext/couchbase/third_party/asio/asio/include/asio/ip/basic_resolver_results.hpp +311 -0
  989. data/ext/couchbase/third_party/asio/asio/include/asio/ip/detail/endpoint.hpp +141 -0
  990. data/ext/couchbase/third_party/asio/asio/include/asio/ip/detail/impl/endpoint.ipp +199 -0
  991. data/ext/couchbase/third_party/asio/asio/include/asio/ip/detail/socket_option.hpp +566 -0
  992. data/ext/couchbase/third_party/asio/asio/include/asio/ip/host_name.hpp +42 -0
  993. data/ext/couchbase/third_party/asio/asio/include/asio/ip/icmp.hpp +115 -0
  994. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/address.hpp +67 -0
  995. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/address.ipp +239 -0
  996. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/address_v4.hpp +67 -0
  997. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/address_v4.ipp +210 -0
  998. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/address_v6.hpp +67 -0
  999. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/address_v6.ipp +350 -0
  1000. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/basic_endpoint.hpp +43 -0
  1001. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/host_name.ipp +54 -0
  1002. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/network_v4.hpp +54 -0
  1003. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/network_v4.ipp +216 -0
  1004. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/network_v6.hpp +53 -0
  1005. data/ext/couchbase/third_party/asio/asio/include/asio/ip/impl/network_v6.ipp +185 -0
  1006. data/ext/couchbase/third_party/asio/asio/include/asio/ip/multicast.hpp +191 -0
  1007. data/ext/couchbase/third_party/asio/asio/include/asio/ip/network_v4.hpp +261 -0
  1008. data/ext/couchbase/third_party/asio/asio/include/asio/ip/network_v6.hpp +235 -0
  1009. data/ext/couchbase/third_party/asio/asio/include/asio/ip/resolver_base.hpp +129 -0
  1010. data/ext/couchbase/third_party/asio/asio/include/asio/ip/resolver_query_base.hpp +43 -0
  1011. data/ext/couchbase/third_party/asio/asio/include/asio/ip/tcp.hpp +155 -0
  1012. data/ext/couchbase/third_party/asio/asio/include/asio/ip/udp.hpp +111 -0
  1013. data/ext/couchbase/third_party/asio/asio/include/asio/ip/unicast.hpp +70 -0
  1014. data/ext/couchbase/third_party/asio/asio/include/asio/ip/v6_only.hpp +69 -0
  1015. data/ext/couchbase/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
  1016. data/ext/couchbase/third_party/asio/asio/include/asio/is_executor.hpp +46 -0
  1017. data/ext/couchbase/third_party/asio/asio/include/asio/is_read_buffered.hpp +59 -0
  1018. data/ext/couchbase/third_party/asio/asio/include/asio/is_write_buffered.hpp +59 -0
  1019. data/ext/couchbase/third_party/asio/asio/include/asio/local/basic_endpoint.hpp +247 -0
  1020. data/ext/couchbase/third_party/asio/asio/include/asio/local/connect_pair.hpp +101 -0
  1021. data/ext/couchbase/third_party/asio/asio/include/asio/local/datagram_protocol.hpp +80 -0
  1022. data/ext/couchbase/third_party/asio/asio/include/asio/local/detail/endpoint.hpp +139 -0
  1023. data/ext/couchbase/third_party/asio/asio/include/asio/local/detail/impl/endpoint.ipp +131 -0
  1024. data/ext/couchbase/third_party/asio/asio/include/asio/local/stream_protocol.hpp +90 -0
  1025. data/ext/couchbase/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
  1026. data/ext/couchbase/third_party/asio/asio/include/asio/packaged_task.hpp +126 -0
  1027. data/ext/couchbase/third_party/asio/asio/include/asio/placeholders.hpp +151 -0
  1028. data/ext/couchbase/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +720 -0
  1029. data/ext/couchbase/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +501 -0
  1030. data/ext/couchbase/third_party/asio/asio/include/asio/posix/descriptor.hpp +37 -0
  1031. data/ext/couchbase/third_party/asio/asio/include/asio/posix/descriptor_base.hpp +90 -0
  1032. data/ext/couchbase/third_party/asio/asio/include/asio/posix/stream_descriptor.hpp +37 -0
  1033. data/ext/couchbase/third_party/asio/asio/include/asio/post.hpp +126 -0
  1034. data/ext/couchbase/third_party/asio/asio/include/asio/prefer.hpp +734 -0
  1035. data/ext/couchbase/third_party/asio/asio/include/asio/query.hpp +324 -0
  1036. data/ext/couchbase/third_party/asio/asio/include/asio/random_access_file.hpp +35 -0
  1037. data/ext/couchbase/third_party/asio/asio/include/asio/read.hpp +1388 -0
  1038. data/ext/couchbase/third_party/asio/asio/include/asio/read_at.hpp +738 -0
  1039. data/ext/couchbase/third_party/asio/asio/include/asio/read_until.hpp +3031 -0
  1040. data/ext/couchbase/third_party/asio/asio/include/asio/readable_pipe.hpp +35 -0
  1041. data/ext/couchbase/third_party/asio/asio/include/asio/redirect_error.hpp +66 -0
  1042. data/ext/couchbase/third_party/asio/asio/include/asio/registered_buffer.hpp +356 -0
  1043. data/ext/couchbase/third_party/asio/asio/include/asio/require.hpp +571 -0
  1044. data/ext/couchbase/third_party/asio/asio/include/asio/require_concept.hpp +352 -0
  1045. data/ext/couchbase/third_party/asio/asio/include/asio/serial_port.hpp +36 -0
  1046. data/ext/couchbase/third_party/asio/asio/include/asio/serial_port_base.hpp +167 -0
  1047. data/ext/couchbase/third_party/asio/asio/include/asio/signal_set.hpp +28 -0
  1048. data/ext/couchbase/third_party/asio/asio/include/asio/socket_base.hpp +559 -0
  1049. data/ext/couchbase/third_party/asio/asio/include/asio/spawn.hpp +344 -0
  1050. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/context.hpp +761 -0
  1051. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/context_base.hpp +209 -0
  1052. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +119 -0
  1053. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +170 -0
  1054. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +67 -0
  1055. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +363 -0
  1056. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/impl/openssl_init.ipp +165 -0
  1057. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/io.hpp +425 -0
  1058. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/openssl_init.hpp +101 -0
  1059. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/openssl_types.hpp +34 -0
  1060. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/password_callback.hpp +66 -0
  1061. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +72 -0
  1062. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +69 -0
  1063. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +206 -0
  1064. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/verify_callback.hpp +62 -0
  1065. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +76 -0
  1066. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/error.hpp +125 -0
  1067. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/host_name_verification.hpp +90 -0
  1068. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/impl/context.hpp +67 -0
  1069. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/impl/context.ipp +1245 -0
  1070. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/impl/error.ipp +102 -0
  1071. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/impl/host_name_verification.ipp +73 -0
  1072. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/impl/rfc2818_verification.ipp +164 -0
  1073. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/impl/src.hpp +29 -0
  1074. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/rfc2818_verification.hpp +98 -0
  1075. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/stream.hpp +972 -0
  1076. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/stream_base.hpp +52 -0
  1077. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/verify_context.hpp +67 -0
  1078. data/ext/couchbase/third_party/asio/asio/include/asio/ssl/verify_mode.hpp +63 -0
  1079. data/ext/couchbase/third_party/asio/asio/include/asio/ssl.hpp +28 -0
  1080. data/ext/couchbase/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
  1081. data/ext/couchbase/third_party/asio/asio/include/asio/steady_timer.hpp +42 -0
  1082. data/ext/couchbase/third_party/asio/asio/include/asio/strand.hpp +569 -0
  1083. data/ext/couchbase/third_party/asio/asio/include/asio/stream_file.hpp +35 -0
  1084. data/ext/couchbase/third_party/asio/asio/include/asio/streambuf.hpp +33 -0
  1085. data/ext/couchbase/third_party/asio/asio/include/asio/system_context.hpp +90 -0
  1086. data/ext/couchbase/third_party/asio/asio/include/asio/system_error.hpp +131 -0
  1087. data/ext/couchbase/third_party/asio/asio/include/asio/system_executor.hpp +684 -0
  1088. data/ext/couchbase/third_party/asio/asio/include/asio/system_timer.hpp +42 -0
  1089. data/ext/couchbase/third_party/asio/asio/include/asio/this_coro.hpp +280 -0
  1090. data/ext/couchbase/third_party/asio/asio/include/asio/thread.hpp +92 -0
  1091. data/ext/couchbase/third_party/asio/asio/include/asio/thread_pool.hpp +1140 -0
  1092. data/ext/couchbase/third_party/asio/asio/include/asio/time_traits.hpp +86 -0
  1093. data/ext/couchbase/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
  1094. data/ext/couchbase/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
  1095. data/ext/couchbase/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
  1096. data/ext/couchbase/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
  1097. data/ext/couchbase/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +104 -0
  1098. data/ext/couchbase/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
  1099. data/ext/couchbase/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
  1100. data/ext/couchbase/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
  1101. data/ext/couchbase/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
  1102. data/ext/couchbase/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
  1103. data/ext/couchbase/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
  1104. data/ext/couchbase/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
  1105. data/ext/couchbase/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
  1106. data/ext/couchbase/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
  1107. data/ext/couchbase/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
  1108. data/ext/couchbase/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
  1109. data/ext/couchbase/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
  1110. data/ext/couchbase/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
  1111. data/ext/couchbase/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
  1112. data/ext/couchbase/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
  1113. data/ext/couchbase/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
  1114. data/ext/couchbase/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
  1115. data/ext/couchbase/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
  1116. data/ext/couchbase/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
  1117. data/ext/couchbase/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
  1118. data/ext/couchbase/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
  1119. data/ext/couchbase/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
  1120. data/ext/couchbase/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
  1121. data/ext/couchbase/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +124 -0
  1122. data/ext/couchbase/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
  1123. data/ext/couchbase/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
  1124. data/ext/couchbase/third_party/asio/asio/include/asio/ts/buffer.hpp +24 -0
  1125. data/ext/couchbase/third_party/asio/asio/include/asio/ts/executor.hpp +35 -0
  1126. data/ext/couchbase/third_party/asio/asio/include/asio/ts/internet.hpp +40 -0
  1127. data/ext/couchbase/third_party/asio/asio/include/asio/ts/io_context.hpp +20 -0
  1128. data/ext/couchbase/third_party/asio/asio/include/asio/ts/net.hpp +26 -0
  1129. data/ext/couchbase/third_party/asio/asio/include/asio/ts/netfwd.hpp +254 -0
  1130. data/ext/couchbase/third_party/asio/asio/include/asio/ts/socket.hpp +27 -0
  1131. data/ext/couchbase/third_party/asio/asio/include/asio/ts/timer.hpp +26 -0
  1132. data/ext/couchbase/third_party/asio/asio/include/asio/unyield.hpp +21 -0
  1133. data/ext/couchbase/third_party/asio/asio/include/asio/use_awaitable.hpp +166 -0
  1134. data/ext/couchbase/third_party/asio/asio/include/asio/use_future.hpp +160 -0
  1135. data/ext/couchbase/third_party/asio/asio/include/asio/uses_executor.hpp +71 -0
  1136. data/ext/couchbase/third_party/asio/asio/include/asio/version.hpp +23 -0
  1137. data/ext/couchbase/third_party/asio/asio/include/asio/wait_traits.hpp +56 -0
  1138. data/ext/couchbase/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +435 -0
  1139. data/ext/couchbase/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +361 -0
  1140. data/ext/couchbase/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +510 -0
  1141. data/ext/couchbase/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +494 -0
  1142. data/ext/couchbase/third_party/asio/asio/include/asio/windows/object_handle.hpp +38 -0
  1143. data/ext/couchbase/third_party/asio/asio/include/asio/windows/overlapped_handle.hpp +39 -0
  1144. data/ext/couchbase/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +145 -0
  1145. data/ext/couchbase/third_party/asio/asio/include/asio/windows/random_access_handle.hpp +37 -0
  1146. data/ext/couchbase/third_party/asio/asio/include/asio/windows/stream_handle.hpp +37 -0
  1147. data/ext/couchbase/third_party/asio/asio/include/asio/writable_pipe.hpp +35 -0
  1148. data/ext/couchbase/third_party/asio/asio/include/asio/write.hpp +1346 -0
  1149. data/ext/couchbase/third_party/asio/asio/include/asio/write_at.hpp +746 -0
  1150. data/ext/couchbase/third_party/asio/asio/include/asio/yield.hpp +23 -0
  1151. data/ext/couchbase/third_party/asio/asio/include/asio.hpp +201 -0
  1152. data/ext/couchbase/third_party/fmt/CMakeLists.txt +410 -0
  1153. data/ext/couchbase/third_party/fmt/ChangeLog.rst +4364 -0
  1154. data/ext/couchbase/third_party/fmt/LICENSE.rst +27 -0
  1155. data/ext/couchbase/third_party/fmt/README.rst +528 -0
  1156. data/ext/couchbase/third_party/fmt/include/fmt/args.h +244 -0
  1157. data/ext/couchbase/third_party/fmt/include/fmt/chrono.h +2055 -0
  1158. data/ext/couchbase/third_party/fmt/include/fmt/color.h +638 -0
  1159. data/ext/couchbase/third_party/fmt/include/fmt/compile.h +642 -0
  1160. data/ext/couchbase/third_party/fmt/include/fmt/core.h +3217 -0
  1161. data/ext/couchbase/third_party/fmt/include/fmt/format-inl.h +2637 -0
  1162. data/ext/couchbase/third_party/fmt/include/fmt/format.h +3120 -0
  1163. data/ext/couchbase/third_party/fmt/include/fmt/locale.h +2 -0
  1164. data/ext/couchbase/third_party/fmt/include/fmt/os.h +527 -0
  1165. data/ext/couchbase/third_party/fmt/include/fmt/ostream.h +135 -0
  1166. data/ext/couchbase/third_party/fmt/include/fmt/printf.h +657 -0
  1167. data/ext/couchbase/third_party/fmt/include/fmt/ranges.h +742 -0
  1168. data/ext/couchbase/third_party/fmt/include/fmt/xchar.h +236 -0
  1169. data/ext/couchbase/third_party/fmt/src/fmt.cc +99 -0
  1170. data/ext/couchbase/third_party/fmt/src/format.cc +124 -0
  1171. data/ext/couchbase/third_party/fmt/src/os.cc +361 -0
  1172. data/ext/couchbase/third_party/fmt/support/cmake/FindSetEnv.cmake +7 -0
  1173. data/ext/couchbase/third_party/fmt/support/cmake/JoinPaths.cmake +26 -0
  1174. data/ext/couchbase/third_party/fmt/support/cmake/cxx14.cmake +70 -0
  1175. data/ext/couchbase/third_party/fmt/support/cmake/fmt-config.cmake.in +4 -0
  1176. data/ext/couchbase/third_party/fmt/support/cmake/fmt.pc.in +11 -0
  1177. data/ext/couchbase/third_party/gsl/CMakeLists.txt +61 -0
  1178. data/ext/couchbase/third_party/gsl/LICENSE +21 -0
  1179. data/ext/couchbase/third_party/gsl/ThirdPartyNotices.txt +41 -0
  1180. data/ext/couchbase/third_party/gsl/cmake/guidelineSupportLibrary.cmake +116 -0
  1181. data/ext/couchbase/third_party/gsl/include/CMakeLists.txt +20 -0
  1182. data/ext/couchbase/third_party/gsl/include/gsl/algorithm +63 -0
  1183. data/ext/couchbase/third_party/gsl/include/gsl/assert +136 -0
  1184. data/ext/couchbase/third_party/gsl/include/gsl/byte +213 -0
  1185. data/ext/couchbase/third_party/gsl/include/gsl/gsl +32 -0
  1186. data/ext/couchbase/third_party/gsl/include/gsl/gsl_algorithm +4 -0
  1187. data/ext/couchbase/third_party/gsl/include/gsl/gsl_assert +3 -0
  1188. data/ext/couchbase/third_party/gsl/include/gsl/gsl_byte +3 -0
  1189. data/ext/couchbase/third_party/gsl/include/gsl/gsl_narrow +3 -0
  1190. data/ext/couchbase/third_party/gsl/include/gsl/gsl_util +3 -0
  1191. data/ext/couchbase/third_party/gsl/include/gsl/narrow +66 -0
  1192. data/ext/couchbase/third_party/gsl/include/gsl/pointers +323 -0
  1193. data/ext/couchbase/third_party/gsl/include/gsl/span +821 -0
  1194. data/ext/couchbase/third_party/gsl/include/gsl/span_ext +212 -0
  1195. data/ext/couchbase/third_party/gsl/include/gsl/string_span +767 -0
  1196. data/ext/couchbase/third_party/gsl/include/gsl/util +157 -0
  1197. data/ext/couchbase/third_party/hdr_histogram_c/CMakeLists.txt +84 -0
  1198. data/ext/couchbase/third_party/hdr_histogram_c/COPYING.txt +121 -0
  1199. data/ext/couchbase/third_party/hdr_histogram_c/LICENSE.txt +41 -0
  1200. data/ext/couchbase/third_party/hdr_histogram_c/config.cmake.in +6 -0
  1201. data/ext/couchbase/third_party/hdr_histogram_c/src/CMakeLists.txt +83 -0
  1202. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_atomic.h +146 -0
  1203. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_encoding.c +322 -0
  1204. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_encoding.h +79 -0
  1205. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_endian.h +116 -0
  1206. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_histogram.c +1211 -0
  1207. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_histogram.h +516 -0
  1208. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_histogram_log.c +1290 -0
  1209. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_histogram_log.h +236 -0
  1210. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_histogram_log_no_op.c +171 -0
  1211. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_interval_recorder.c +227 -0
  1212. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_interval_recorder.h +109 -0
  1213. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_malloc.h +19 -0
  1214. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_tests.h +22 -0
  1215. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_thread.c +108 -0
  1216. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_thread.h +55 -0
  1217. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_time.c +98 -0
  1218. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_time.h +49 -0
  1219. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_writer_reader_phaser.c +143 -0
  1220. data/ext/couchbase/third_party/hdr_histogram_c/src/hdr_writer_reader_phaser.h +51 -0
  1221. data/ext/couchbase/third_party/http_parser/LICENSE-MIT +19 -0
  1222. data/ext/couchbase/third_party/http_parser/http_parser.c +2575 -0
  1223. data/ext/couchbase/third_party/http_parser/http_parser.h +449 -0
  1224. data/ext/couchbase/third_party/json/CMakeLists.txt +90 -0
  1225. data/ext/couchbase/third_party/json/LICENSE +21 -0
  1226. data/ext/couchbase/third_party/json/LICENSE.double-conversion +32 -0
  1227. data/ext/couchbase/third_party/json/LICENSE.itoa +19 -0
  1228. data/ext/couchbase/third_party/json/LICENSE.ryu +201 -0
  1229. data/ext/couchbase/third_party/json/external/PEGTL/.cmake/pegtl-config.cmake.in +4 -0
  1230. data/ext/couchbase/third_party/json/external/PEGTL/.cmake/test_filesystem.cpp.in +22 -0
  1231. data/ext/couchbase/third_party/json/external/PEGTL/CMakeLists.txt +155 -0
  1232. data/ext/couchbase/third_party/json/external/PEGTL/LICENSE +21 -0
  1233. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/apply_mode.hpp +19 -0
  1234. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/argv_input.hpp +49 -0
  1235. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/ascii.hpp +54 -0
  1236. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/buffer_input.hpp +226 -0
  1237. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/change_action.hpp +38 -0
  1238. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/change_action_and_state.hpp +71 -0
  1239. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/change_action_and_states.hpp +62 -0
  1240. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/change_control.hpp +36 -0
  1241. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/change_state.hpp +69 -0
  1242. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/change_states.hpp +61 -0
  1243. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/config.hpp +11 -0
  1244. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/abnf.hpp +35 -0
  1245. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/add_state.hpp +69 -0
  1246. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/alphabet.hpp +67 -0
  1247. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/analyze.hpp +189 -0
  1248. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/analyze_traits.hpp +277 -0
  1249. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/check_bytes.hpp +55 -0
  1250. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/control_action.hpp +81 -0
  1251. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/coverage.hpp +151 -0
  1252. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/forward.hpp +16 -0
  1253. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/function.hpp +52 -0
  1254. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/http.hpp +277 -0
  1255. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/icu/internal.hpp +98 -0
  1256. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/icu/utf16.hpp +196 -0
  1257. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/icu/utf32.hpp +196 -0
  1258. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/icu/utf8.hpp +103 -0
  1259. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/if_then.hpp +56 -0
  1260. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/instantiate.hpp +38 -0
  1261. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/integer.hpp +468 -0
  1262. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/endian.hpp +77 -0
  1263. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/endian_gcc.hpp +198 -0
  1264. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/endian_win.hpp +102 -0
  1265. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/peek_mask_uint.hpp +54 -0
  1266. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/peek_mask_uint8.hpp +33 -0
  1267. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/peek_uint.hpp +45 -0
  1268. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/peek_uint8.hpp +32 -0
  1269. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/peek_utf16.hpp +54 -0
  1270. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/peek_utf32.hpp +43 -0
  1271. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/read_uint.hpp +77 -0
  1272. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
  1273. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/internal/vector_stack_guard.hpp +45 -0
  1274. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/iri.hpp +106 -0
  1275. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/json.hpp +91 -0
  1276. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/json_pointer.hpp +33 -0
  1277. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/limit_bytes.hpp +88 -0
  1278. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/limit_depth.hpp +83 -0
  1279. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/parse_tree.hpp +443 -0
  1280. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/parse_tree_to_dot.hpp +111 -0
  1281. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/peg.hpp +121 -0
  1282. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/predicates.hpp +126 -0
  1283. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/print.hpp +75 -0
  1284. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/print_coverage.hpp +53 -0
  1285. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/proto3.hpp +142 -0
  1286. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/raw_string.hpp +232 -0
  1287. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/remove_first_state.hpp +72 -0
  1288. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/remove_last_states.hpp +121 -0
  1289. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/rep_one_min_max.hpp +100 -0
  1290. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/rep_string.hpp +43 -0
  1291. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/separated_seq.hpp +45 -0
  1292. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/shuffle_states.hpp +193 -0
  1293. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/state_control.hpp +122 -0
  1294. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/to_string.hpp +38 -0
  1295. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/trace.hpp +227 -0
  1296. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/uint16.hpp +62 -0
  1297. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/uint32.hpp +62 -0
  1298. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/uint64.hpp +63 -0
  1299. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/uint8.hpp +36 -0
  1300. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/unescape.hpp +214 -0
  1301. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/uri.hpp +111 -0
  1302. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/utf16.hpp +57 -0
  1303. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/contrib/utf32.hpp +57 -0
  1304. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/cstream_input.hpp +32 -0
  1305. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/demangle.hpp +175 -0
  1306. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/disable_action.hpp +35 -0
  1307. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/discard_input.hpp +37 -0
  1308. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/discard_input_on_failure.hpp +39 -0
  1309. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/discard_input_on_success.hpp +39 -0
  1310. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/enable_action.hpp +35 -0
  1311. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/eol.hpp +37 -0
  1312. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/eol_pair.hpp +18 -0
  1313. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/file_input.hpp +44 -0
  1314. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/action.hpp +54 -0
  1315. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/action_input.hpp +106 -0
  1316. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/any.hpp +77 -0
  1317. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/apply.hpp +53 -0
  1318. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/apply0.hpp +51 -0
  1319. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/apply0_single.hpp +34 -0
  1320. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/apply_single.hpp +34 -0
  1321. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/at.hpp +55 -0
  1322. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/bof.hpp +32 -0
  1323. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/bol.hpp +31 -0
  1324. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/bump.hpp +45 -0
  1325. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/bump_help.hpp +26 -0
  1326. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/bytes.hpp +43 -0
  1327. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/control.hpp +54 -0
  1328. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/cr_crlf_eol.hpp +32 -0
  1329. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/cr_eol.hpp +32 -0
  1330. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/crlf_eol.hpp +32 -0
  1331. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/cstream_reader.hpp +58 -0
  1332. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/cstring_reader.hpp +40 -0
  1333. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/dependent_false.hpp +16 -0
  1334. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/dependent_true.hpp +16 -0
  1335. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/disable.hpp +54 -0
  1336. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/discard.hpp +34 -0
  1337. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/enable.hpp +54 -0
  1338. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/enable_control.hpp +25 -0
  1339. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/eof.hpp +32 -0
  1340. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/eol.hpp +32 -0
  1341. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/eolf.hpp +33 -0
  1342. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/failure.hpp +32 -0
  1343. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/file_mapper_posix.hpp +159 -0
  1344. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/file_mapper_win32.hpp +243 -0
  1345. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/file_reader.hpp +152 -0
  1346. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/filesystem.hpp +64 -0
  1347. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/has_apply.hpp +21 -0
  1348. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/has_apply0.hpp +21 -0
  1349. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/has_match.hpp +40 -0
  1350. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/has_unwind.hpp +21 -0
  1351. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/identifier.hpp +22 -0
  1352. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/if_apply.hpp +54 -0
  1353. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/if_must.hpp +52 -0
  1354. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/if_must_else.hpp +26 -0
  1355. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/if_then_else.hpp +51 -0
  1356. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/input_pair.hpp +29 -0
  1357. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/istream_reader.hpp +50 -0
  1358. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/istring.hpp +81 -0
  1359. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/iterator.hpp +49 -0
  1360. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/lf_crlf_eol.hpp +37 -0
  1361. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/lf_eol.hpp +32 -0
  1362. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/list.hpp +19 -0
  1363. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/list_must.hpp +25 -0
  1364. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/list_tail.hpp +22 -0
  1365. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/list_tail_pad.hpp +22 -0
  1366. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/marker.hpp +80 -0
  1367. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/minus.hpp +21 -0
  1368. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/missing_apply.hpp +28 -0
  1369. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/missing_apply0.hpp +26 -0
  1370. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/must.hpp +69 -0
  1371. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/not_at.hpp +55 -0
  1372. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/one.hpp +66 -0
  1373. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/opt.hpp +57 -0
  1374. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/pad.hpp +19 -0
  1375. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/pad_opt.hpp +20 -0
  1376. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/path_to_string.hpp +28 -0
  1377. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/peek_char.hpp +32 -0
  1378. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/peek_utf8.hpp +89 -0
  1379. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/pegtl_string.hpp +90 -0
  1380. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/plus.hpp +60 -0
  1381. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/raise.hpp +49 -0
  1382. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/range.hpp +60 -0
  1383. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/ranges.hpp +90 -0
  1384. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/rematch.hpp +72 -0
  1385. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/rep.hpp +67 -0
  1386. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/rep_min.hpp +20 -0
  1387. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/rep_min_max.hpp +81 -0
  1388. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/rep_opt.hpp +61 -0
  1389. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/require.hpp +42 -0
  1390. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/result_on_found.hpp +19 -0
  1391. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/rules.hpp +64 -0
  1392. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/seq.hpp +58 -0
  1393. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/sor.hpp +67 -0
  1394. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/star.hpp +52 -0
  1395. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/star_must.hpp +24 -0
  1396. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/state.hpp +75 -0
  1397. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/string.hpp +67 -0
  1398. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/success.hpp +32 -0
  1399. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/try_catch_type.hpp +69 -0
  1400. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/internal/until.hpp +88 -0
  1401. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/istream_input.hpp +32 -0
  1402. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/match.hpp +173 -0
  1403. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/memory_input.hpp +378 -0
  1404. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/mmap_input.hpp +79 -0
  1405. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/must_if.hpp +69 -0
  1406. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/normal.hpp +99 -0
  1407. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/nothing.hpp +19 -0
  1408. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/parse.hpp +72 -0
  1409. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/parse_error.hpp +119 -0
  1410. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/position.hpp +98 -0
  1411. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/read_input.hpp +54 -0
  1412. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/require_apply.hpp +16 -0
  1413. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/require_apply0.hpp +16 -0
  1414. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/rewind_mode.hpp +20 -0
  1415. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/rules.hpp +71 -0
  1416. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/string_input.hpp +64 -0
  1417. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/tracking_mode.hpp +19 -0
  1418. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/type_list.hpp +46 -0
  1419. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/utf8.hpp +28 -0
  1420. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/version.hpp +13 -0
  1421. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl/visit.hpp +80 -0
  1422. data/ext/couchbase/third_party/json/external/PEGTL/include/tao/pegtl.hpp +48 -0
  1423. data/ext/couchbase/third_party/json/include/tao/json/basic_value.hpp +962 -0
  1424. data/ext/couchbase/third_party/json/include/tao/json/binary.hpp +103 -0
  1425. data/ext/couchbase/third_party/json/include/tao/json/binary_view.hpp +31 -0
  1426. data/ext/couchbase/third_party/json/include/tao/json/binding/constant.hpp +231 -0
  1427. data/ext/couchbase/third_party/json/include/tao/json/binding/element.hpp +71 -0
  1428. data/ext/couchbase/third_party/json/include/tao/json/binding/element2.hpp +35 -0
  1429. data/ext/couchbase/third_party/json/include/tao/json/binding/factory.hpp +253 -0
  1430. data/ext/couchbase/third_party/json/include/tao/json/binding/for_nothing_value.hpp +17 -0
  1431. data/ext/couchbase/third_party/json/include/tao/json/binding/for_unknown_key.hpp +17 -0
  1432. data/ext/couchbase/third_party/json/include/tao/json/binding/inherit.hpp +14 -0
  1433. data/ext/couchbase/third_party/json/include/tao/json/binding/internal/array.hpp +105 -0
  1434. data/ext/couchbase/third_party/json/include/tao/json/binding/internal/elementr.hpp +134 -0
  1435. data/ext/couchbase/third_party/json/include/tao/json/binding/internal/elementw.hpp +251 -0
  1436. data/ext/couchbase/third_party/json/include/tao/json/binding/internal/inherit.hpp +45 -0
  1437. data/ext/couchbase/third_party/json/include/tao/json/binding/internal/object.hpp +269 -0
  1438. data/ext/couchbase/third_party/json/include/tao/json/binding/internal/type_key.hpp +54 -0
  1439. data/ext/couchbase/third_party/json/include/tao/json/binding/member.hpp +47 -0
  1440. data/ext/couchbase/third_party/json/include/tao/json/binding/member_kind.hpp +17 -0
  1441. data/ext/couchbase/third_party/json/include/tao/json/binding/versions.hpp +130 -0
  1442. data/ext/couchbase/third_party/json/include/tao/json/binding.hpp +74 -0
  1443. data/ext/couchbase/third_party/json/include/tao/json/cbor/consume_file.hpp +34 -0
  1444. data/ext/couchbase/third_party/json/include/tao/json/cbor/consume_string.hpp +32 -0
  1445. data/ext/couchbase/third_party/json/include/tao/json/cbor/events/from_binary.hpp +44 -0
  1446. data/ext/couchbase/third_party/json/include/tao/json/cbor/events/from_file.hpp +27 -0
  1447. data/ext/couchbase/third_party/json/include/tao/json/cbor/events/from_input.hpp +43 -0
  1448. data/ext/couchbase/third_party/json/include/tao/json/cbor/events/from_string.hpp +37 -0
  1449. data/ext/couchbase/third_party/json/include/tao/json/cbor/events/to_stream.hpp +161 -0
  1450. data/ext/couchbase/third_party/json/include/tao/json/cbor/events/to_string.hpp +37 -0
  1451. data/ext/couchbase/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
  1452. data/ext/couchbase/third_party/json/include/tao/json/cbor/from_file.hpp +33 -0
  1453. data/ext/couchbase/third_party/json/include/tao/json/cbor/from_input.hpp +33 -0
  1454. data/ext/couchbase/third_party/json/include/tao/json/cbor/from_string.hpp +32 -0
  1455. data/ext/couchbase/third_party/json/include/tao/json/cbor/internal/grammar.hpp +424 -0
  1456. data/ext/couchbase/third_party/json/include/tao/json/cbor/internal/major.hpp +28 -0
  1457. data/ext/couchbase/third_party/json/include/tao/json/cbor/parts_parser.hpp +395 -0
  1458. data/ext/couchbase/third_party/json/include/tao/json/cbor/to_stream.hpp +27 -0
  1459. data/ext/couchbase/third_party/json/include/tao/json/cbor/to_string.hpp +29 -0
  1460. data/ext/couchbase/third_party/json/include/tao/json/cbor.hpp +19 -0
  1461. data/ext/couchbase/third_party/json/include/tao/json/consume.hpp +43 -0
  1462. data/ext/couchbase/third_party/json/include/tao/json/consume_file.hpp +33 -0
  1463. data/ext/couchbase/third_party/json/include/tao/json/consume_string.hpp +31 -0
  1464. data/ext/couchbase/third_party/json/include/tao/json/contrib/array_traits.hpp +43 -0
  1465. data/ext/couchbase/third_party/json/include/tao/json/contrib/deque_traits.hpp +41 -0
  1466. data/ext/couchbase/third_party/json/include/tao/json/contrib/diff.hpp +106 -0
  1467. data/ext/couchbase/third_party/json/include/tao/json/contrib/get.hpp +152 -0
  1468. data/ext/couchbase/third_party/json/include/tao/json/contrib/internal/array_traits.hpp +92 -0
  1469. data/ext/couchbase/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +76 -0
  1470. data/ext/couchbase/third_party/json/include/tao/json/contrib/internal/object_traits.hpp +105 -0
  1471. data/ext/couchbase/third_party/json/include/tao/json/contrib/internal/type_traits.hpp +36 -0
  1472. data/ext/couchbase/third_party/json/include/tao/json/contrib/list_traits.hpp +41 -0
  1473. data/ext/couchbase/third_party/json/include/tao/json/contrib/map_traits.hpp +43 -0
  1474. data/ext/couchbase/third_party/json/include/tao/json/contrib/multimap_traits.hpp +43 -0
  1475. data/ext/couchbase/third_party/json/include/tao/json/contrib/multiset_traits.hpp +41 -0
  1476. data/ext/couchbase/third_party/json/include/tao/json/contrib/pair_traits.hpp +21 -0
  1477. data/ext/couchbase/third_party/json/include/tao/json/contrib/patch.hpp +117 -0
  1478. data/ext/couchbase/third_party/json/include/tao/json/contrib/pointer_traits.hpp +59 -0
  1479. data/ext/couchbase/third_party/json/include/tao/json/contrib/position.hpp +166 -0
  1480. data/ext/couchbase/third_party/json/include/tao/json/contrib/reference.hpp +113 -0
  1481. data/ext/couchbase/third_party/json/include/tao/json/contrib/schema.hpp +1874 -0
  1482. data/ext/couchbase/third_party/json/include/tao/json/contrib/set_traits.hpp +41 -0
  1483. data/ext/couchbase/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +98 -0
  1484. data/ext/couchbase/third_party/json/include/tao/json/contrib/traits.hpp +128 -0
  1485. data/ext/couchbase/third_party/json/include/tao/json/contrib/tuple_traits.hpp +51 -0
  1486. data/ext/couchbase/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +97 -0
  1487. data/ext/couchbase/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +43 -0
  1488. data/ext/couchbase/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +41 -0
  1489. data/ext/couchbase/third_party/json/include/tao/json/contrib/variant_traits.hpp +73 -0
  1490. data/ext/couchbase/third_party/json/include/tao/json/contrib/vector_bool_traits.hpp +45 -0
  1491. data/ext/couchbase/third_party/json/include/tao/json/contrib/vector_traits.hpp +51 -0
  1492. data/ext/couchbase/third_party/json/include/tao/json/events/apply.hpp +20 -0
  1493. data/ext/couchbase/third_party/json/include/tao/json/events/binary_to_base64.hpp +26 -0
  1494. data/ext/couchbase/third_party/json/include/tao/json/events/binary_to_base64url.hpp +28 -0
  1495. data/ext/couchbase/third_party/json/include/tao/json/events/binary_to_exception.hpp +27 -0
  1496. data/ext/couchbase/third_party/json/include/tao/json/events/binary_to_hex.hpp +26 -0
  1497. data/ext/couchbase/third_party/json/include/tao/json/events/compare.hpp +255 -0
  1498. data/ext/couchbase/third_party/json/include/tao/json/events/debug.hpp +145 -0
  1499. data/ext/couchbase/third_party/json/include/tao/json/events/discard.hpp +43 -0
  1500. data/ext/couchbase/third_party/json/include/tao/json/events/from_file.hpp +28 -0
  1501. data/ext/couchbase/third_party/json/include/tao/json/events/from_input.hpp +45 -0
  1502. data/ext/couchbase/third_party/json/include/tao/json/events/from_stream.hpp +33 -0
  1503. data/ext/couchbase/third_party/json/include/tao/json/events/from_string.hpp +38 -0
  1504. data/ext/couchbase/third_party/json/include/tao/json/events/from_value.hpp +205 -0
  1505. data/ext/couchbase/third_party/json/include/tao/json/events/hash.hpp +174 -0
  1506. data/ext/couchbase/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +50 -0
  1507. data/ext/couchbase/third_party/json/include/tao/json/events/invalid_string_to_exception.hpp +49 -0
  1508. data/ext/couchbase/third_party/json/include/tao/json/events/invalid_string_to_hex.hpp +48 -0
  1509. data/ext/couchbase/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +62 -0
  1510. data/ext/couchbase/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +57 -0
  1511. data/ext/couchbase/third_party/json/include/tao/json/events/limit_nesting_depth.hpp +82 -0
  1512. data/ext/couchbase/third_party/json/include/tao/json/events/limit_value_count.hpp +46 -0
  1513. data/ext/couchbase/third_party/json/include/tao/json/events/non_finite_to_exception.hpp +31 -0
  1514. data/ext/couchbase/third_party/json/include/tao/json/events/non_finite_to_null.hpp +32 -0
  1515. data/ext/couchbase/third_party/json/include/tao/json/events/non_finite_to_string.hpp +40 -0
  1516. data/ext/couchbase/third_party/json/include/tao/json/events/prefer_signed.hpp +32 -0
  1517. data/ext/couchbase/third_party/json/include/tao/json/events/prefer_unsigned.hpp +32 -0
  1518. data/ext/couchbase/third_party/json/include/tao/json/events/produce.hpp +120 -0
  1519. data/ext/couchbase/third_party/json/include/tao/json/events/ref.hpp +114 -0
  1520. data/ext/couchbase/third_party/json/include/tao/json/events/statistics.hpp +112 -0
  1521. data/ext/couchbase/third_party/json/include/tao/json/events/tee.hpp +386 -0
  1522. data/ext/couchbase/third_party/json/include/tao/json/events/to_pretty_stream.hpp +172 -0
  1523. data/ext/couchbase/third_party/json/include/tao/json/events/to_stream.hpp +142 -0
  1524. data/ext/couchbase/third_party/json/include/tao/json/events/to_string.hpp +39 -0
  1525. data/ext/couchbase/third_party/json/include/tao/json/events/to_value.hpp +137 -0
  1526. data/ext/couchbase/third_party/json/include/tao/json/events/transformer.hpp +70 -0
  1527. data/ext/couchbase/third_party/json/include/tao/json/events/validate_event_order.hpp +415 -0
  1528. data/ext/couchbase/third_party/json/include/tao/json/events/validate_keys.hpp +52 -0
  1529. data/ext/couchbase/third_party/json/include/tao/json/events/virtual_base.hpp +192 -0
  1530. data/ext/couchbase/third_party/json/include/tao/json/events/virtual_ref.hpp +179 -0
  1531. data/ext/couchbase/third_party/json/include/tao/json/events/virtual_wrap.hpp +166 -0
  1532. data/ext/couchbase/third_party/json/include/tao/json/events.hpp +52 -0
  1533. data/ext/couchbase/third_party/json/include/tao/json/external/double.hpp +1306 -0
  1534. data/ext/couchbase/third_party/json/include/tao/json/external/itoa.hpp +151 -0
  1535. data/ext/couchbase/third_party/json/include/tao/json/external/ryu.hpp +1216 -0
  1536. data/ext/couchbase/third_party/json/include/tao/json/forward.hpp +44 -0
  1537. data/ext/couchbase/third_party/json/include/tao/json/from_file.hpp +32 -0
  1538. data/ext/couchbase/third_party/json/include/tao/json/from_input.hpp +32 -0
  1539. data/ext/couchbase/third_party/json/include/tao/json/from_stream.hpp +45 -0
  1540. data/ext/couchbase/third_party/json/include/tao/json/from_string.hpp +41 -0
  1541. data/ext/couchbase/third_party/json/include/tao/json/internal/action.hpp +271 -0
  1542. data/ext/couchbase/third_party/json/include/tao/json/internal/base64.hpp +55 -0
  1543. data/ext/couchbase/third_party/json/include/tao/json/internal/base64url.hpp +53 -0
  1544. data/ext/couchbase/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
  1545. data/ext/couchbase/third_party/json/include/tao/json/internal/endian.hpp +60 -0
  1546. data/ext/couchbase/third_party/json/include/tao/json/internal/endian_gcc.hpp +198 -0
  1547. data/ext/couchbase/third_party/json/include/tao/json/internal/endian_win.hpp +103 -0
  1548. data/ext/couchbase/third_party/json/include/tao/json/internal/errors.hpp +86 -0
  1549. data/ext/couchbase/third_party/json/include/tao/json/internal/escape.hpp +69 -0
  1550. data/ext/couchbase/third_party/json/include/tao/json/internal/filesystem.hpp +15 -0
  1551. data/ext/couchbase/third_party/json/include/tao/json/internal/format.hpp +59 -0
  1552. data/ext/couchbase/third_party/json/include/tao/json/internal/grammar.hpp +231 -0
  1553. data/ext/couchbase/third_party/json/include/tao/json/internal/hexdump.hpp +33 -0
  1554. data/ext/couchbase/third_party/json/include/tao/json/internal/identity.hpp +22 -0
  1555. data/ext/couchbase/third_party/json/include/tao/json/internal/number_state.hpp +81 -0
  1556. data/ext/couchbase/third_party/json/include/tao/json/internal/number_traits.hpp +267 -0
  1557. data/ext/couchbase/third_party/json/include/tao/json/internal/pair.hpp +42 -0
  1558. data/ext/couchbase/third_party/json/include/tao/json/internal/parse_util.hpp +113 -0
  1559. data/ext/couchbase/third_party/json/include/tao/json/internal/sha256.hpp +218 -0
  1560. data/ext/couchbase/third_party/json/include/tao/json/internal/single.hpp +40 -0
  1561. data/ext/couchbase/third_party/json/include/tao/json/internal/string_t.hpp +35 -0
  1562. data/ext/couchbase/third_party/json/include/tao/json/internal/type_traits.hpp +97 -0
  1563. data/ext/couchbase/third_party/json/include/tao/json/internal/unescape_action.hpp +24 -0
  1564. data/ext/couchbase/third_party/json/include/tao/json/internal/uri_fragment.hpp +182 -0
  1565. data/ext/couchbase/third_party/json/include/tao/json/jaxn/consume_file.hpp +34 -0
  1566. data/ext/couchbase/third_party/json/include/tao/json/jaxn/consume_string.hpp +32 -0
  1567. data/ext/couchbase/third_party/json/include/tao/json/jaxn/events/from_file.hpp +29 -0
  1568. data/ext/couchbase/third_party/json/include/tao/json/jaxn/events/from_input.hpp +45 -0
  1569. data/ext/couchbase/third_party/json/include/tao/json/jaxn/events/from_stream.hpp +33 -0
  1570. data/ext/couchbase/third_party/json/include/tao/json/jaxn/events/from_string.hpp +39 -0
  1571. data/ext/couchbase/third_party/json/include/tao/json/jaxn/events/to_pretty_stream.hpp +69 -0
  1572. data/ext/couchbase/third_party/json/include/tao/json/jaxn/events/to_stream.hpp +67 -0
  1573. data/ext/couchbase/third_party/json/include/tao/json/jaxn/events/to_string.hpp +39 -0
  1574. data/ext/couchbase/third_party/json/include/tao/json/jaxn/from_file.hpp +33 -0
  1575. data/ext/couchbase/third_party/json/include/tao/json/jaxn/from_input.hpp +33 -0
  1576. data/ext/couchbase/third_party/json/include/tao/json/jaxn/from_stream.hpp +48 -0
  1577. data/ext/couchbase/third_party/json/include/tao/json/jaxn/from_string.hpp +42 -0
  1578. data/ext/couchbase/third_party/json/include/tao/json/jaxn/internal/action.hpp +380 -0
  1579. data/ext/couchbase/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +115 -0
  1580. data/ext/couchbase/third_party/json/include/tao/json/jaxn/internal/errors.hpp +110 -0
  1581. data/ext/couchbase/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +381 -0
  1582. data/ext/couchbase/third_party/json/include/tao/json/jaxn/internal/integer.hpp +255 -0
  1583. data/ext/couchbase/third_party/json/include/tao/json/jaxn/internal/unescape_action.hpp +28 -0
  1584. data/ext/couchbase/third_party/json/include/tao/json/jaxn/is_identifier.hpp +23 -0
  1585. data/ext/couchbase/third_party/json/include/tao/json/jaxn/parts_parser.hpp +261 -0
  1586. data/ext/couchbase/third_party/json/include/tao/json/jaxn/to_stream.hpp +36 -0
  1587. data/ext/couchbase/third_party/json/include/tao/json/jaxn/to_string.hpp +34 -0
  1588. data/ext/couchbase/third_party/json/include/tao/json/jaxn.hpp +19 -0
  1589. data/ext/couchbase/third_party/json/include/tao/json/message_extension.hpp +49 -0
  1590. data/ext/couchbase/third_party/json/include/tao/json/msgpack/consume_file.hpp +34 -0
  1591. data/ext/couchbase/third_party/json/include/tao/json/msgpack/consume_string.hpp +32 -0
  1592. data/ext/couchbase/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +44 -0
  1593. data/ext/couchbase/third_party/json/include/tao/json/msgpack/events/from_file.hpp +27 -0
  1594. data/ext/couchbase/third_party/json/include/tao/json/msgpack/events/from_input.hpp +43 -0
  1595. data/ext/couchbase/third_party/json/include/tao/json/msgpack/events/from_string.hpp +37 -0
  1596. data/ext/couchbase/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +214 -0
  1597. data/ext/couchbase/third_party/json/include/tao/json/msgpack/events/to_string.hpp +37 -0
  1598. data/ext/couchbase/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
  1599. data/ext/couchbase/third_party/json/include/tao/json/msgpack/from_file.hpp +33 -0
  1600. data/ext/couchbase/third_party/json/include/tao/json/msgpack/from_input.hpp +33 -0
  1601. data/ext/couchbase/third_party/json/include/tao/json/msgpack/from_string.hpp +32 -0
  1602. data/ext/couchbase/third_party/json/include/tao/json/msgpack/internal/format.hpp +57 -0
  1603. data/ext/couchbase/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +230 -0
  1604. data/ext/couchbase/third_party/json/include/tao/json/msgpack/parts_parser.hpp +315 -0
  1605. data/ext/couchbase/third_party/json/include/tao/json/msgpack/to_stream.hpp +27 -0
  1606. data/ext/couchbase/third_party/json/include/tao/json/msgpack/to_string.hpp +29 -0
  1607. data/ext/couchbase/third_party/json/include/tao/json/msgpack.hpp +19 -0
  1608. data/ext/couchbase/third_party/json/include/tao/json/operators.hpp +490 -0
  1609. data/ext/couchbase/third_party/json/include/tao/json/parts_parser.hpp +333 -0
  1610. data/ext/couchbase/third_party/json/include/tao/json/pointer.hpp +433 -0
  1611. data/ext/couchbase/third_party/json/include/tao/json/produce.hpp +61 -0
  1612. data/ext/couchbase/third_party/json/include/tao/json/self_contained.hpp +130 -0
  1613. data/ext/couchbase/third_party/json/include/tao/json/span.hpp +496 -0
  1614. data/ext/couchbase/third_party/json/include/tao/json/stream.hpp +38 -0
  1615. data/ext/couchbase/third_party/json/include/tao/json/to_stream.hpp +42 -0
  1616. data/ext/couchbase/third_party/json/include/tao/json/to_string.hpp +25 -0
  1617. data/ext/couchbase/third_party/json/include/tao/json/traits.hpp +975 -0
  1618. data/ext/couchbase/third_party/json/include/tao/json/type.hpp +112 -0
  1619. data/ext/couchbase/third_party/json/include/tao/json/ubjson/consume_file.hpp +34 -0
  1620. data/ext/couchbase/third_party/json/include/tao/json/ubjson/consume_string.hpp +32 -0
  1621. data/ext/couchbase/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +44 -0
  1622. data/ext/couchbase/third_party/json/include/tao/json/ubjson/events/from_file.hpp +27 -0
  1623. data/ext/couchbase/third_party/json/include/tao/json/ubjson/events/from_input.hpp +43 -0
  1624. data/ext/couchbase/third_party/json/include/tao/json/ubjson/events/from_string.hpp +37 -0
  1625. data/ext/couchbase/third_party/json/include/tao/json/ubjson/events/to_stream.hpp +174 -0
  1626. data/ext/couchbase/third_party/json/include/tao/json/ubjson/events/to_string.hpp +37 -0
  1627. data/ext/couchbase/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
  1628. data/ext/couchbase/third_party/json/include/tao/json/ubjson/from_file.hpp +33 -0
  1629. data/ext/couchbase/third_party/json/include/tao/json/ubjson/from_input.hpp +33 -0
  1630. data/ext/couchbase/third_party/json/include/tao/json/ubjson/from_string.hpp +32 -0
  1631. data/ext/couchbase/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +415 -0
  1632. data/ext/couchbase/third_party/json/include/tao/json/ubjson/internal/marker.hpp +46 -0
  1633. data/ext/couchbase/third_party/json/include/tao/json/ubjson/parts_parser.hpp +396 -0
  1634. data/ext/couchbase/third_party/json/include/tao/json/ubjson/to_stream.hpp +28 -0
  1635. data/ext/couchbase/third_party/json/include/tao/json/ubjson/to_string.hpp +30 -0
  1636. data/ext/couchbase/third_party/json/include/tao/json/ubjson.hpp +19 -0
  1637. data/ext/couchbase/third_party/json/include/tao/json/utf8.hpp +56 -0
  1638. data/ext/couchbase/third_party/json/include/tao/json/value.hpp +12 -0
  1639. data/ext/couchbase/third_party/json/include/tao/json.hpp +45 -0
  1640. data/ext/couchbase/third_party/jsonsl/LICENSE +20 -0
  1641. data/ext/couchbase/third_party/jsonsl/jsonsl.c +3059 -0
  1642. data/ext/couchbase/third_party/jsonsl/jsonsl.h +978 -0
  1643. data/ext/couchbase/third_party/snappy/CMakeLists.txt +297 -0
  1644. data/ext/couchbase/third_party/snappy/COPYING +54 -0
  1645. data/ext/couchbase/third_party/snappy/cmake/SnappyConfig.cmake.in +33 -0
  1646. data/ext/couchbase/third_party/snappy/cmake/config.h.in +62 -0
  1647. data/ext/couchbase/third_party/snappy/snappy-c.cc +90 -0
  1648. data/ext/couchbase/third_party/snappy/snappy-c.h +138 -0
  1649. data/ext/couchbase/third_party/snappy/snappy-internal.h +231 -0
  1650. data/ext/couchbase/third_party/snappy/snappy-sinksource.cc +104 -0
  1651. data/ext/couchbase/third_party/snappy/snappy-sinksource.h +182 -0
  1652. data/ext/couchbase/third_party/snappy/snappy-stubs-internal.cc +42 -0
  1653. data/ext/couchbase/third_party/snappy/snappy-stubs-internal.h +606 -0
  1654. data/ext/couchbase/third_party/snappy/snappy-stubs-public.h.in +74 -0
  1655. data/ext/couchbase/third_party/snappy/snappy.cc +1661 -0
  1656. data/ext/couchbase/third_party/snappy/snappy.h +207 -0
  1657. data/ext/couchbase/third_party/spdlog/CMakeLists.txt +320 -0
  1658. data/ext/couchbase/third_party/spdlog/LICENSE +26 -0
  1659. data/ext/couchbase/third_party/spdlog/cmake/ide.cmake +18 -0
  1660. data/ext/couchbase/third_party/spdlog/cmake/pch.h.in +258 -0
  1661. data/ext/couchbase/third_party/spdlog/cmake/spdlog.pc.in +13 -0
  1662. data/ext/couchbase/third_party/spdlog/cmake/spdlogCPack.cmake +60 -0
  1663. data/ext/couchbase/third_party/spdlog/cmake/spdlogConfig.cmake.in +19 -0
  1664. data/ext/couchbase/third_party/spdlog/cmake/utils.cmake +62 -0
  1665. data/ext/couchbase/third_party/spdlog/cmake/version.rc.in +42 -0
  1666. data/ext/couchbase/third_party/spdlog/include/spdlog/async.h +93 -0
  1667. data/ext/couchbase/third_party/spdlog/include/spdlog/async_logger-inl.h +92 -0
  1668. data/ext/couchbase/third_party/spdlog/include/spdlog/async_logger.h +68 -0
  1669. data/ext/couchbase/third_party/spdlog/include/spdlog/cfg/argv.h +44 -0
  1670. data/ext/couchbase/third_party/spdlog/include/spdlog/cfg/env.h +38 -0
  1671. data/ext/couchbase/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +120 -0
  1672. data/ext/couchbase/third_party/spdlog/include/spdlog/cfg/helpers.h +29 -0
  1673. data/ext/couchbase/third_party/spdlog/include/spdlog/common-inl.h +78 -0
  1674. data/ext/couchbase/third_party/spdlog/include/spdlog/common.h +276 -0
  1675. data/ext/couchbase/third_party/spdlog/include/spdlog/details/backtracer-inl.h +69 -0
  1676. data/ext/couchbase/third_party/spdlog/include/spdlog/details/backtracer.h +45 -0
  1677. data/ext/couchbase/third_party/spdlog/include/spdlog/details/circular_q.h +141 -0
  1678. data/ext/couchbase/third_party/spdlog/include/spdlog/details/console_globals.h +32 -0
  1679. data/ext/couchbase/third_party/spdlog/include/spdlog/details/file_helper-inl.h +147 -0
  1680. data/ext/couchbase/third_party/spdlog/include/spdlog/details/file_helper.h +59 -0
  1681. data/ext/couchbase/third_party/spdlog/include/spdlog/details/fmt_helper.h +117 -0
  1682. data/ext/couchbase/third_party/spdlog/include/spdlog/details/log_msg-inl.h +37 -0
  1683. data/ext/couchbase/third_party/spdlog/include/spdlog/details/log_msg.h +37 -0
  1684. data/ext/couchbase/third_party/spdlog/include/spdlog/details/log_msg_buffer-inl.h +58 -0
  1685. data/ext/couchbase/third_party/spdlog/include/spdlog/details/log_msg_buffer.h +33 -0
  1686. data/ext/couchbase/third_party/spdlog/include/spdlog/details/mpmc_blocking_q.h +126 -0
  1687. data/ext/couchbase/third_party/spdlog/include/spdlog/details/null_mutex.h +49 -0
  1688. data/ext/couchbase/third_party/spdlog/include/spdlog/details/os-inl.h +599 -0
  1689. data/ext/couchbase/third_party/spdlog/include/spdlog/details/os.h +118 -0
  1690. data/ext/couchbase/third_party/spdlog/include/spdlog/details/periodic_worker-inl.h +49 -0
  1691. data/ext/couchbase/third_party/spdlog/include/spdlog/details/periodic_worker.h +40 -0
  1692. data/ext/couchbase/third_party/spdlog/include/spdlog/details/registry-inl.h +313 -0
  1693. data/ext/couchbase/third_party/spdlog/include/spdlog/details/registry.h +115 -0
  1694. data/ext/couchbase/third_party/spdlog/include/spdlog/details/synchronous_factory.h +24 -0
  1695. data/ext/couchbase/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +175 -0
  1696. data/ext/couchbase/third_party/spdlog/include/spdlog/details/tcp_client.h +146 -0
  1697. data/ext/couchbase/third_party/spdlog/include/spdlog/details/thread_pool-inl.h +129 -0
  1698. data/ext/couchbase/third_party/spdlog/include/spdlog/details/thread_pool.h +120 -0
  1699. data/ext/couchbase/third_party/spdlog/include/spdlog/details/windows_include.h +11 -0
  1700. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +217 -0
  1701. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/args.h +232 -0
  1702. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +1308 -0
  1703. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/color.h +627 -0
  1704. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +639 -0
  1705. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/core.h +3002 -0
  1706. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +2620 -0
  1707. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/format.h +2830 -0
  1708. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +2 -0
  1709. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/os.h +515 -0
  1710. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +181 -0
  1711. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +652 -0
  1712. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +468 -0
  1713. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/bundled/xchar.h +236 -0
  1714. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
  1715. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/compile.h +20 -0
  1716. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/fmt.h +27 -0
  1717. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/ostr.h +20 -0
  1718. data/ext/couchbase/third_party/spdlog/include/spdlog/fmt/xchar.h +20 -0
  1719. data/ext/couchbase/third_party/spdlog/include/spdlog/formatter.h +18 -0
  1720. data/ext/couchbase/third_party/spdlog/include/spdlog/fwd.h +14 -0
  1721. data/ext/couchbase/third_party/spdlog/include/spdlog/logger-inl.h +257 -0
  1722. data/ext/couchbase/third_party/spdlog/include/spdlog/logger.h +403 -0
  1723. data/ext/couchbase/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +1395 -0
  1724. data/ext/couchbase/third_party/spdlog/include/spdlog/pattern_formatter.h +126 -0
  1725. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/android_sink.h +119 -0
  1726. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h +145 -0
  1727. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/ansicolor_sink.h +118 -0
  1728. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/base_sink-inl.h +63 -0
  1729. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/base_sink.h +52 -0
  1730. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/basic_file_sink-inl.h +43 -0
  1731. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/basic_file_sink.h +58 -0
  1732. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +242 -0
  1733. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/dist_sink.h +97 -0
  1734. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/dup_filter_sink.h +94 -0
  1735. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/hourly_file_sink.h +194 -0
  1736. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/mongo_sink.h +98 -0
  1737. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +48 -0
  1738. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/null_sink.h +44 -0
  1739. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/ostream_sink.h +50 -0
  1740. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/qt_sinks.h +93 -0
  1741. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +74 -0
  1742. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/rotating_file_sink-inl.h +131 -0
  1743. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/rotating_file_sink.h +78 -0
  1744. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/sink-inl.h +25 -0
  1745. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/sink.h +35 -0
  1746. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  1747. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/stdout_color_sinks.h +45 -0
  1748. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +139 -0
  1749. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +87 -0
  1750. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/syslog_sink.h +109 -0
  1751. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/systemd_sink.h +103 -0
  1752. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/tcp_sink.h +81 -0
  1753. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/win_eventlog_sink.h +276 -0
  1754. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +175 -0
  1755. data/ext/couchbase/third_party/spdlog/include/spdlog/sinks/wincolor_sink.h +85 -0
  1756. data/ext/couchbase/third_party/spdlog/include/spdlog/spdlog-inl.h +125 -0
  1757. data/ext/couchbase/third_party/spdlog/include/spdlog/spdlog.h +345 -0
  1758. data/ext/couchbase/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
  1759. data/ext/couchbase/third_party/spdlog/include/spdlog/tweakme.h +124 -0
  1760. data/ext/couchbase/third_party/spdlog/include/spdlog/version.h +10 -0
  1761. data/ext/couchbase/third_party/spdlog/src/async.cpp +13 -0
  1762. data/ext/couchbase/third_party/spdlog/src/cfg.cpp +8 -0
  1763. data/ext/couchbase/third_party/spdlog/src/color_sinks.cpp +51 -0
  1764. data/ext/couchbase/third_party/spdlog/src/file_sinks.cpp +20 -0
  1765. data/ext/couchbase/third_party/spdlog/src/fmt.cpp +68 -0
  1766. data/ext/couchbase/third_party/spdlog/src/spdlog.cpp +26 -0
  1767. data/ext/couchbase/third_party/spdlog/src/stdout_sinks.cpp +29 -0
  1768. data/ext/couchbase.cxx +7422 -0
  1769. data/ext/ext_build_version.hxx.in +20 -0
  1770. data/ext/extconf.rb +137 -0
  1771. data/ext/revisions.rb +2 -0
  1772. data/lib/active_support/cache/couchbase_store.rb +257 -348
  1773. data/lib/couchbase/analytics_options.rb +107 -0
  1774. data/lib/couchbase/authenticator.rb +65 -0
  1775. data/lib/couchbase/binary_collection.rb +128 -0
  1776. data/lib/couchbase/binary_collection_options.rb +24 -0
  1777. data/lib/couchbase/bucket.rb +104 -417
  1778. data/lib/couchbase/cluster.rb +415 -101
  1779. data/lib/couchbase/collection.rb +563 -0
  1780. data/lib/couchbase/collection_options.rb +344 -0
  1781. data/lib/couchbase/configuration.rb +57 -0
  1782. data/lib/couchbase/datastructures/couchbase_list.rb +160 -0
  1783. data/lib/couchbase/datastructures/couchbase_map.rb +194 -0
  1784. data/lib/couchbase/datastructures/couchbase_queue.rb +134 -0
  1785. data/lib/couchbase/datastructures/couchbase_set.rb +128 -0
  1786. data/lib/couchbase/datastructures.rb +24 -0
  1787. data/lib/couchbase/diagnostics.rb +181 -0
  1788. data/lib/couchbase/errors.rb +351 -0
  1789. data/lib/couchbase/json_transcoder.rb +32 -0
  1790. data/lib/couchbase/logger.rb +42 -0
  1791. data/lib/couchbase/management/analytics_index_manager.rb +1127 -0
  1792. data/lib/couchbase/management/bucket_manager.rb +436 -0
  1793. data/lib/couchbase/management/collection_manager.rb +321 -0
  1794. data/lib/couchbase/management/query_index_manager.rb +522 -0
  1795. data/lib/couchbase/management/search_index_manager.rb +408 -0
  1796. data/lib/couchbase/management/user_manager.rb +449 -0
  1797. data/lib/couchbase/management/view_index_manager.rb +237 -0
  1798. data/lib/couchbase/management.rb +27 -0
  1799. data/lib/couchbase/mutation_state.rb +63 -0
  1800. data/lib/couchbase/options.rb +2232 -0
  1801. data/lib/couchbase/query_options.rb +120 -0
  1802. data/lib/couchbase/railtie.rb +45 -0
  1803. data/lib/couchbase/scope.rb +232 -0
  1804. data/lib/couchbase/search_options.rb +1571 -0
  1805. data/lib/couchbase/subdoc.rb +290 -0
  1806. data/lib/couchbase/utils/time.rb +56 -0
  1807. data/lib/couchbase/utils.rb +14 -55
  1808. data/lib/couchbase/version.rb +31 -15
  1809. data/lib/couchbase/view_options.rb +65 -0
  1810. data/lib/couchbase.rb +17 -152
  1811. data/lib/rails/generators/couchbase/config/config_generator.rb +27 -0
  1812. metadata +1830 -291
  1813. data/.gitignore +0 -15
  1814. data/.travis.yml +0 -22
  1815. data/.yardopts +0 -5
  1816. data/CONTRIBUTING.markdown +0 -75
  1817. data/Gemfile +0 -4
  1818. data/LICENSE +0 -201
  1819. data/Makefile +0 -3
  1820. data/README.markdown +0 -592
  1821. data/RELEASE_NOTES.markdown +0 -909
  1822. data/Rakefile +0 -20
  1823. data/couchbase.gemspec +0 -50
  1824. data/examples/chat-em/Gemfile +0 -7
  1825. data/examples/chat-em/README.markdown +0 -45
  1826. data/examples/chat-em/server.rb +0 -82
  1827. data/examples/chat-goliath-grape/Gemfile +0 -5
  1828. data/examples/chat-goliath-grape/README.markdown +0 -50
  1829. data/examples/chat-goliath-grape/app.rb +0 -67
  1830. data/examples/chat-goliath-grape/config/app.rb +0 -20
  1831. data/examples/transcoders/Gemfile +0 -3
  1832. data/examples/transcoders/README.markdown +0 -59
  1833. data/examples/transcoders/cb-zcat +0 -40
  1834. data/examples/transcoders/cb-zcp +0 -45
  1835. data/examples/transcoders/gzip_transcoder.rb +0 -49
  1836. data/examples/transcoders/options.rb +0 -54
  1837. data/ext/couchbase_ext/.gitignore +0 -4
  1838. data/ext/couchbase_ext/arguments.c +0 -979
  1839. data/ext/couchbase_ext/arithmetic.c +0 -316
  1840. data/ext/couchbase_ext/bucket.c +0 -1436
  1841. data/ext/couchbase_ext/context.c +0 -65
  1842. data/ext/couchbase_ext/couchbase_ext.c +0 -1480
  1843. data/ext/couchbase_ext/couchbase_ext.h +0 -678
  1844. data/ext/couchbase_ext/delete.c +0 -163
  1845. data/ext/couchbase_ext/eventmachine_plugin.c +0 -466
  1846. data/ext/couchbase_ext/extconf.rb +0 -194
  1847. data/ext/couchbase_ext/get.c +0 -316
  1848. data/ext/couchbase_ext/gethrtime.c +0 -129
  1849. data/ext/couchbase_ext/http.c +0 -432
  1850. data/ext/couchbase_ext/multithread_plugin.c +0 -1085
  1851. data/ext/couchbase_ext/n1ql.c +0 -117
  1852. data/ext/couchbase_ext/observe.c +0 -171
  1853. data/ext/couchbase_ext/result.c +0 -129
  1854. data/ext/couchbase_ext/stats.c +0 -163
  1855. data/ext/couchbase_ext/store.c +0 -542
  1856. data/ext/couchbase_ext/timer.c +0 -192
  1857. data/ext/couchbase_ext/touch.c +0 -186
  1858. data/ext/couchbase_ext/unlock.c +0 -176
  1859. data/ext/couchbase_ext/utils.c +0 -558
  1860. data/ext/couchbase_ext/version.c +0 -142
  1861. data/lib/action_dispatch/middleware/session/couchbase_store.rb +0 -38
  1862. data/lib/couchbase/connection_pool.rb +0 -58
  1863. data/lib/couchbase/constants.rb +0 -12
  1864. data/lib/couchbase/dns.rb +0 -76
  1865. data/lib/couchbase/result.rb +0 -26
  1866. data/lib/couchbase/transcoder.rb +0 -120
  1867. data/lib/couchbase/view.rb +0 -506
  1868. data/lib/couchbase/view_row.rb +0 -272
  1869. data/lib/ext/multi_json_fix.rb +0 -56
  1870. data/lib/rack/session/couchbase.rb +0 -108
  1871. data/tasks/benchmark.rake +0 -6
  1872. data/tasks/compile.rake +0 -153
  1873. data/tasks/test.rake +0 -100
  1874. data/tasks/util.rake +0 -21
  1875. data/test/profile/.gitignore +0 -1
  1876. data/test/profile/Gemfile +0 -6
  1877. data/test/profile/benchmark.rb +0 -195
  1878. data/test/setup.rb +0 -178
  1879. data/test/test_arithmetic.rb +0 -185
  1880. data/test/test_async.rb +0 -316
  1881. data/test/test_bucket.rb +0 -299
  1882. data/test/test_cas.rb +0 -235
  1883. data/test/test_couchbase.rb +0 -77
  1884. data/test/test_couchbase_connection_pool.rb +0 -77
  1885. data/test/test_couchbase_rails_cache_store.rb +0 -358
  1886. data/test/test_delete.rb +0 -120
  1887. data/test/test_errors.rb +0 -82
  1888. data/test/test_eventmachine.rb +0 -78
  1889. data/test/test_format.rb +0 -164
  1890. data/test/test_get.rb +0 -407
  1891. data/test/test_stats.rb +0 -57
  1892. data/test/test_store.rb +0 -224
  1893. data/test/test_timer.rb +0 -42
  1894. data/test/test_touch.rb +0 -97
  1895. data/test/test_unlock.rb +0 -119
  1896. data/test/test_utils.rb +0 -58
  1897. data/test/test_version.rb +0 -52
@@ -0,0 +1,3031 @@
1
+ //
2
+ // read_until.hpp
3
+ // ~~~~~~~~~~~~~~
4
+ //
5
+ // Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
+ //
7
+ // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
+ // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
+ //
10
+
11
+ #ifndef ASIO_READ_UNTIL_HPP
12
+ #define ASIO_READ_UNTIL_HPP
13
+
14
+ #if defined(_MSC_VER) && (_MSC_VER >= 1200)
15
+ # pragma once
16
+ #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
+
18
+ #include "asio/detail/config.hpp"
19
+ #include <cstddef>
20
+ #include <string>
21
+ #include "asio/async_result.hpp"
22
+ #include "asio/buffer.hpp"
23
+ #include "asio/detail/regex_fwd.hpp"
24
+ #include "asio/detail/string_view.hpp"
25
+ #include "asio/detail/type_traits.hpp"
26
+ #include "asio/error.hpp"
27
+
28
+ #if !defined(ASIO_NO_EXTENSIONS)
29
+ # include "asio/basic_streambuf_fwd.hpp"
30
+ #endif // !defined(ASIO_NO_EXTENSIONS)
31
+
32
+ #include "asio/detail/push_options.hpp"
33
+
34
+ namespace asio {
35
+
36
+ namespace detail
37
+ {
38
+ char (&has_result_type_helper(...))[2];
39
+
40
+ template <typename T>
41
+ char has_result_type_helper(T*, typename T::result_type* = 0);
42
+
43
+ template <typename T>
44
+ struct has_result_type
45
+ {
46
+ enum { value = (sizeof((has_result_type_helper)((T*)(0))) == 1) };
47
+ };
48
+ } // namespace detail
49
+
50
+ /// Type trait used to determine whether a type can be used as a match condition
51
+ /// function with read_until and async_read_until.
52
+ template <typename T>
53
+ struct is_match_condition
54
+ {
55
+ #if defined(GENERATING_DOCUMENTATION)
56
+ /// The value member is true if the type may be used as a match condition.
57
+ static const bool value;
58
+ #else
59
+ enum
60
+ {
61
+ value = asio::is_function<
62
+ typename asio::remove_pointer<T>::type>::value
63
+ || detail::has_result_type<T>::value
64
+ };
65
+ #endif
66
+ };
67
+
68
+ /**
69
+ * @defgroup read_until asio::read_until
70
+ *
71
+ * @brief The @c read_until function is a composed operation that reads data
72
+ * into a dynamic buffer sequence, or into a streambuf, until it contains a
73
+ * delimiter, matches a regular expression, or a function object indicates a
74
+ * match.
75
+ */
76
+ /*@{*/
77
+
78
+ #if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
79
+
80
+ /// Read data into a dynamic buffer sequence until it contains a specified
81
+ /// delimiter.
82
+ /**
83
+ * This function is used to read data into the specified dynamic buffer
84
+ * sequence until the dynamic buffer sequence's get area contains the specified
85
+ * delimiter. The call will block until one of the following conditions is
86
+ * true:
87
+ *
88
+ * @li The get area of the dynamic buffer sequence contains the specified
89
+ * delimiter.
90
+ *
91
+ * @li An error occurred.
92
+ *
93
+ * This operation is implemented in terms of zero or more calls to the stream's
94
+ * read_some function. If the dynamic buffer sequence's get area already
95
+ * contains the delimiter, the function returns immediately.
96
+ *
97
+ * @param s The stream from which the data is to be read. The type must support
98
+ * the SyncReadStream concept.
99
+ *
100
+ * @param buffers The dynamic buffer sequence into which the data will be read.
101
+ *
102
+ * @param delim The delimiter character.
103
+ *
104
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
105
+ * and including the delimiter.
106
+ *
107
+ * @throws asio::system_error Thrown on failure.
108
+ *
109
+ * @note After a successful read_until operation, the dynamic buffer sequence
110
+ * may contain additional data beyond the delimiter. An application will
111
+ * typically leave that data in the dynamic buffer sequence for a subsequent
112
+ * read_until operation to examine.
113
+ *
114
+ * @par Example
115
+ * To read data into a @c std::string until a newline is encountered:
116
+ * @code std::string data;
117
+ * std::size_t n = asio::read_until(s,
118
+ * asio::dynamic_buffer(data), '\n');
119
+ * std::string line = data.substr(0, n);
120
+ * data.erase(0, n); @endcode
121
+ * After the @c read_until operation completes successfully, the string @c data
122
+ * contains the delimiter:
123
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
124
+ * The call to @c substr then extracts the data up to and including the
125
+ * delimiter, so that the string @c line contains:
126
+ * @code { 'a', 'b', ..., 'c', '\n' } @endcode
127
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
128
+ * follows:
129
+ * @code { 'd', 'e', ... } @endcode
130
+ * This data may be the start of a new line, to be extracted by a subsequent
131
+ * @c read_until operation.
132
+ */
133
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
134
+ std::size_t read_until(SyncReadStream& s,
135
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
136
+ typename constraint<
137
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
138
+ >::type = 0,
139
+ typename constraint<
140
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
141
+ >::type = 0);
142
+
143
+ /// Read data into a dynamic buffer sequence until it contains a specified
144
+ /// delimiter.
145
+ /**
146
+ * This function is used to read data into the specified dynamic buffer
147
+ * sequence until the dynamic buffer sequence's get area contains the specified
148
+ * delimiter. The call will block until one of the following conditions is
149
+ * true:
150
+ *
151
+ * @li The get area of the dynamic buffer sequence contains the specified
152
+ * delimiter.
153
+ *
154
+ * @li An error occurred.
155
+ *
156
+ * This operation is implemented in terms of zero or more calls to the stream's
157
+ * read_some function. If the dynamic buffer sequence's get area already
158
+ * contains the delimiter, the function returns immediately.
159
+ *
160
+ * @param s The stream from which the data is to be read. The type must support
161
+ * the SyncReadStream concept.
162
+ *
163
+ * @param buffers The dynamic buffer sequence into which the data will be read.
164
+ *
165
+ * @param delim The delimiter character.
166
+ *
167
+ * @param ec Set to indicate what error occurred, if any.
168
+ *
169
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
170
+ * and including the delimiter. Returns 0 if an error occurred.
171
+ *
172
+ * @note After a successful read_until operation, the dynamic buffer sequence
173
+ * may contain additional data beyond the delimiter. An application will
174
+ * typically leave that data in the dynamic buffer sequence for a subsequent
175
+ * read_until operation to examine.
176
+ */
177
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
178
+ std::size_t read_until(SyncReadStream& s,
179
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
180
+ char delim, asio::error_code& ec,
181
+ typename constraint<
182
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
183
+ >::type = 0,
184
+ typename constraint<
185
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
186
+ >::type = 0);
187
+
188
+ /// Read data into a dynamic buffer sequence until it contains a specified
189
+ /// delimiter.
190
+ /**
191
+ * This function is used to read data into the specified dynamic buffer
192
+ * sequence until the dynamic buffer sequence's get area contains the specified
193
+ * delimiter. The call will block until one of the following conditions is
194
+ * true:
195
+ *
196
+ * @li The get area of the dynamic buffer sequence contains the specified
197
+ * delimiter.
198
+ *
199
+ * @li An error occurred.
200
+ *
201
+ * This operation is implemented in terms of zero or more calls to the stream's
202
+ * read_some function. If the dynamic buffer sequence's get area already
203
+ * contains the delimiter, the function returns immediately.
204
+ *
205
+ * @param s The stream from which the data is to be read. The type must support
206
+ * the SyncReadStream concept.
207
+ *
208
+ * @param buffers The dynamic buffer sequence into which the data will be read.
209
+ *
210
+ * @param delim The delimiter string.
211
+ *
212
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
213
+ * and including the delimiter.
214
+ *
215
+ * @note After a successful read_until operation, the dynamic buffer sequence
216
+ * may contain additional data beyond the delimiter. An application will
217
+ * typically leave that data in the dynamic buffer sequence for a subsequent
218
+ * read_until operation to examine.
219
+ *
220
+ * @par Example
221
+ * To read data into a @c std::string until a CR-LF sequence is encountered:
222
+ * @code std::string data;
223
+ * std::size_t n = asio::read_until(s,
224
+ * asio::dynamic_buffer(data), "\r\n");
225
+ * std::string line = data.substr(0, n);
226
+ * data.erase(0, n); @endcode
227
+ * After the @c read_until operation completes successfully, the string @c data
228
+ * contains the delimiter:
229
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
230
+ * The call to @c substr then extracts the data up to and including the
231
+ * delimiter, so that the string @c line contains:
232
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
233
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
234
+ * follows:
235
+ * @code { 'd', 'e', ... } @endcode
236
+ * This data may be the start of a new line, to be extracted by a subsequent
237
+ * @c read_until operation.
238
+ */
239
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
240
+ std::size_t read_until(SyncReadStream& s,
241
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
242
+ ASIO_STRING_VIEW_PARAM delim,
243
+ typename constraint<
244
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
245
+ >::type = 0,
246
+ typename constraint<
247
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
248
+ >::type = 0);
249
+
250
+ /// Read data into a dynamic buffer sequence until it contains a specified
251
+ /// delimiter.
252
+ /**
253
+ * This function is used to read data into the specified dynamic buffer
254
+ * sequence until the dynamic buffer sequence's get area contains the specified
255
+ * delimiter. The call will block until one of the following conditions is
256
+ * true:
257
+ *
258
+ * @li The get area of the dynamic buffer sequence contains the specified
259
+ * delimiter.
260
+ *
261
+ * @li An error occurred.
262
+ *
263
+ * This operation is implemented in terms of zero or more calls to the stream's
264
+ * read_some function. If the dynamic buffer sequence's get area already
265
+ * contains the delimiter, the function returns immediately.
266
+ *
267
+ * @param s The stream from which the data is to be read. The type must support
268
+ * the SyncReadStream concept.
269
+ *
270
+ * @param buffers The dynamic buffer sequence into which the data will be read.
271
+ *
272
+ * @param delim The delimiter string.
273
+ *
274
+ * @param ec Set to indicate what error occurred, if any.
275
+ *
276
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
277
+ * and including the delimiter. Returns 0 if an error occurred.
278
+ *
279
+ * @note After a successful read_until operation, the dynamic buffer sequence
280
+ * may contain additional data beyond the delimiter. An application will
281
+ * typically leave that data in the dynamic buffer sequence for a subsequent
282
+ * read_until operation to examine.
283
+ */
284
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
285
+ std::size_t read_until(SyncReadStream& s,
286
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
287
+ ASIO_STRING_VIEW_PARAM delim,
288
+ asio::error_code& ec,
289
+ typename constraint<
290
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
291
+ >::type = 0,
292
+ typename constraint<
293
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
294
+ >::type = 0);
295
+
296
+ #if !defined(ASIO_NO_EXTENSIONS)
297
+ #if defined(ASIO_HAS_BOOST_REGEX) \
298
+ || defined(GENERATING_DOCUMENTATION)
299
+
300
+ /// Read data into a dynamic buffer sequence until some part of the data it
301
+ /// contains matches a regular expression.
302
+ /**
303
+ * This function is used to read data into the specified dynamic buffer
304
+ * sequence until the dynamic buffer sequence's get area contains some data
305
+ * that matches a regular expression. The call will block until one of the
306
+ * following conditions is true:
307
+ *
308
+ * @li A substring of the dynamic buffer sequence's get area matches the
309
+ * regular expression.
310
+ *
311
+ * @li An error occurred.
312
+ *
313
+ * This operation is implemented in terms of zero or more calls to the stream's
314
+ * read_some function. If the dynamic buffer sequence's get area already
315
+ * contains data that matches the regular expression, the function returns
316
+ * immediately.
317
+ *
318
+ * @param s The stream from which the data is to be read. The type must support
319
+ * the SyncReadStream concept.
320
+ *
321
+ * @param buffers A dynamic buffer sequence into which the data will be read.
322
+ *
323
+ * @param expr The regular expression.
324
+ *
325
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
326
+ * and including the substring that matches the regular expression.
327
+ *
328
+ * @throws asio::system_error Thrown on failure.
329
+ *
330
+ * @note After a successful read_until operation, the dynamic buffer sequence
331
+ * may contain additional data beyond that which matched the regular
332
+ * expression. An application will typically leave that data in the dynamic
333
+ * buffer sequence for a subsequent read_until operation to examine.
334
+ *
335
+ * @par Example
336
+ * To read data into a @c std::string until a CR-LF sequence is encountered:
337
+ * @code std::string data;
338
+ * std::size_t n = asio::read_until(s,
339
+ * asio::dynamic_buffer(data), boost::regex("\r\n"));
340
+ * std::string line = data.substr(0, n);
341
+ * data.erase(0, n); @endcode
342
+ * After the @c read_until operation completes successfully, the string @c data
343
+ * contains the delimiter:
344
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
345
+ * The call to @c substr then extracts the data up to and including the
346
+ * delimiter, so that the string @c line contains:
347
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
348
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
349
+ * follows:
350
+ * @code { 'd', 'e', ... } @endcode
351
+ * This data may be the start of a new line, to be extracted by a subsequent
352
+ * @c read_until operation.
353
+ */
354
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
355
+ std::size_t read_until(SyncReadStream& s,
356
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
357
+ const boost::regex& expr,
358
+ typename constraint<
359
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
360
+ >::type = 0,
361
+ typename constraint<
362
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
363
+ >::type = 0);
364
+
365
+ /// Read data into a dynamic buffer sequence until some part of the data it
366
+ /// contains matches a regular expression.
367
+ /**
368
+ * This function is used to read data into the specified dynamic buffer
369
+ * sequence until the dynamic buffer sequence's get area contains some data
370
+ * that matches a regular expression. The call will block until one of the
371
+ * following conditions is true:
372
+ *
373
+ * @li A substring of the dynamic buffer sequence's get area matches the
374
+ * regular expression.
375
+ *
376
+ * @li An error occurred.
377
+ *
378
+ * This operation is implemented in terms of zero or more calls to the stream's
379
+ * read_some function. If the dynamic buffer sequence's get area already
380
+ * contains data that matches the regular expression, the function returns
381
+ * immediately.
382
+ *
383
+ * @param s The stream from which the data is to be read. The type must support
384
+ * the SyncReadStream concept.
385
+ *
386
+ * @param buffers A dynamic buffer sequence into which the data will be read.
387
+ *
388
+ * @param expr The regular expression.
389
+ *
390
+ * @param ec Set to indicate what error occurred, if any.
391
+ *
392
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
393
+ * and including the substring that matches the regular expression. Returns 0
394
+ * if an error occurred.
395
+ *
396
+ * @note After a successful read_until operation, the dynamic buffer sequence
397
+ * may contain additional data beyond that which matched the regular
398
+ * expression. An application will typically leave that data in the dynamic
399
+ * buffer sequence for a subsequent read_until operation to examine.
400
+ */
401
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
402
+ std::size_t read_until(SyncReadStream& s,
403
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
404
+ const boost::regex& expr, asio::error_code& ec,
405
+ typename constraint<
406
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
407
+ >::type = 0,
408
+ typename constraint<
409
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
410
+ >::type = 0);
411
+
412
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
413
+ // || defined(GENERATING_DOCUMENTATION)
414
+
415
+ /// Read data into a dynamic buffer sequence until a function object indicates a
416
+ /// match.
417
+
418
+ /**
419
+ * This function is used to read data into the specified dynamic buffer
420
+ * sequence until a user-defined match condition function object, when applied
421
+ * to the data contained in the dynamic buffer sequence, indicates a successful
422
+ * match. The call will block until one of the following conditions is true:
423
+ *
424
+ * @li The match condition function object returns a std::pair where the second
425
+ * element evaluates to true.
426
+ *
427
+ * @li An error occurred.
428
+ *
429
+ * This operation is implemented in terms of zero or more calls to the stream's
430
+ * read_some function. If the match condition function object already indicates
431
+ * a match, the function returns immediately.
432
+ *
433
+ * @param s The stream from which the data is to be read. The type must support
434
+ * the SyncReadStream concept.
435
+ *
436
+ * @param buffers A dynamic buffer sequence into which the data will be read.
437
+ *
438
+ * @param match_condition The function object to be called to determine whether
439
+ * a match exists. The signature of the function object must be:
440
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
441
+ * @endcode
442
+ * where @c iterator represents the type:
443
+ * @code buffers_iterator<typename DynamicBuffer_v1::const_buffers_type>
444
+ * @endcode
445
+ * The iterator parameters @c begin and @c end define the range of bytes to be
446
+ * scanned to determine whether there is a match. The @c first member of the
447
+ * return value is an iterator marking one-past-the-end of the bytes that have
448
+ * been consumed by the match function. This iterator is used to calculate the
449
+ * @c begin parameter for any subsequent invocation of the match condition. The
450
+ * @c second member of the return value is true if a match has been found, false
451
+ * otherwise.
452
+ *
453
+ * @returns The number of bytes in the dynamic_buffer's get area that
454
+ * have been fully consumed by the match function.
455
+ *
456
+ * @throws asio::system_error Thrown on failure.
457
+ *
458
+ * @note After a successful read_until operation, the dynamic buffer sequence
459
+ * may contain additional data beyond that which matched the function object.
460
+ * An application will typically leave that data in the dynamic buffer sequence
461
+ * for a subsequent read_until operation to examine.
462
+
463
+ * @note The default implementation of the @c is_match_condition type trait
464
+ * evaluates to true for function pointers and function objects with a
465
+ * @c result_type typedef. It must be specialised for other user-defined
466
+ * function objects.
467
+ *
468
+ * @par Examples
469
+ * To read data into a dynamic buffer sequence until whitespace is encountered:
470
+ * @code typedef asio::buffers_iterator<
471
+ * asio::const_buffers_1> iterator;
472
+ *
473
+ * std::pair<iterator, bool>
474
+ * match_whitespace(iterator begin, iterator end)
475
+ * {
476
+ * iterator i = begin;
477
+ * while (i != end)
478
+ * if (std::isspace(*i++))
479
+ * return std::make_pair(i, true);
480
+ * return std::make_pair(i, false);
481
+ * }
482
+ * ...
483
+ * std::string data;
484
+ * asio::read_until(s, data, match_whitespace);
485
+ * @endcode
486
+ *
487
+ * To read data into a @c std::string until a matching character is found:
488
+ * @code class match_char
489
+ * {
490
+ * public:
491
+ * explicit match_char(char c) : c_(c) {}
492
+ *
493
+ * template <typename Iterator>
494
+ * std::pair<Iterator, bool> operator()(
495
+ * Iterator begin, Iterator end) const
496
+ * {
497
+ * Iterator i = begin;
498
+ * while (i != end)
499
+ * if (c_ == *i++)
500
+ * return std::make_pair(i, true);
501
+ * return std::make_pair(i, false);
502
+ * }
503
+ *
504
+ * private:
505
+ * char c_;
506
+ * };
507
+ *
508
+ * namespace asio {
509
+ * template <> struct is_match_condition<match_char>
510
+ * : public boost::true_type {};
511
+ * } // namespace asio
512
+ * ...
513
+ * std::string data;
514
+ * asio::read_until(s, data, match_char('a'));
515
+ * @endcode
516
+ */
517
+ template <typename SyncReadStream,
518
+ typename DynamicBuffer_v1, typename MatchCondition>
519
+ std::size_t read_until(SyncReadStream& s,
520
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
521
+ MatchCondition match_condition,
522
+ typename constraint<
523
+ is_match_condition<MatchCondition>::value
524
+ >::type = 0,
525
+ typename constraint<
526
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
527
+ >::type = 0,
528
+ typename constraint<
529
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
530
+ >::type = 0);
531
+
532
+ /// Read data into a dynamic buffer sequence until a function object indicates a
533
+ /// match.
534
+ /**
535
+ * This function is used to read data into the specified dynamic buffer
536
+ * sequence until a user-defined match condition function object, when applied
537
+ * to the data contained in the dynamic buffer sequence, indicates a successful
538
+ * match. The call will block until one of the following conditions is true:
539
+ *
540
+ * @li The match condition function object returns a std::pair where the second
541
+ * element evaluates to true.
542
+ *
543
+ * @li An error occurred.
544
+ *
545
+ * This operation is implemented in terms of zero or more calls to the stream's
546
+ * read_some function. If the match condition function object already indicates
547
+ * a match, the function returns immediately.
548
+ *
549
+ * @param s The stream from which the data is to be read. The type must support
550
+ * the SyncReadStream concept.
551
+ *
552
+ * @param buffers A dynamic buffer sequence into which the data will be read.
553
+ *
554
+ * @param match_condition The function object to be called to determine whether
555
+ * a match exists. The signature of the function object must be:
556
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
557
+ * @endcode
558
+ * where @c iterator represents the type:
559
+ * @code buffers_iterator<DynamicBuffer_v1::const_buffers_type>
560
+ * @endcode
561
+ * The iterator parameters @c begin and @c end define the range of bytes to be
562
+ * scanned to determine whether there is a match. The @c first member of the
563
+ * return value is an iterator marking one-past-the-end of the bytes that have
564
+ * been consumed by the match function. This iterator is used to calculate the
565
+ * @c begin parameter for any subsequent invocation of the match condition. The
566
+ * @c second member of the return value is true if a match has been found, false
567
+ * otherwise.
568
+ *
569
+ * @param ec Set to indicate what error occurred, if any.
570
+ *
571
+ * @returns The number of bytes in the dynamic buffer sequence's get area that
572
+ * have been fully consumed by the match function. Returns 0 if an error
573
+ * occurred.
574
+ *
575
+ * @note After a successful read_until operation, the dynamic buffer sequence
576
+ * may contain additional data beyond that which matched the function object.
577
+ * An application will typically leave that data in the dynamic buffer sequence
578
+ * for a subsequent read_until operation to examine.
579
+ *
580
+ * @note The default implementation of the @c is_match_condition type trait
581
+ * evaluates to true for function pointers and function objects with a
582
+ * @c result_type typedef. It must be specialised for other user-defined
583
+ * function objects.
584
+ */
585
+ template <typename SyncReadStream,
586
+ typename DynamicBuffer_v1, typename MatchCondition>
587
+ std::size_t read_until(SyncReadStream& s,
588
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
589
+ MatchCondition match_condition, asio::error_code& ec,
590
+ typename constraint<
591
+ is_match_condition<MatchCondition>::value
592
+ >::type = 0,
593
+ typename constraint<
594
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
595
+ >::type = 0,
596
+ typename constraint<
597
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
598
+ >::type = 0);
599
+
600
+ #if !defined(ASIO_NO_IOSTREAM)
601
+
602
+ /// Read data into a streambuf until it contains a specified delimiter.
603
+ /**
604
+ * This function is used to read data into the specified streambuf until the
605
+ * streambuf's get area contains the specified delimiter. The call will block
606
+ * until one of the following conditions is true:
607
+ *
608
+ * @li The get area of the streambuf contains the specified delimiter.
609
+ *
610
+ * @li An error occurred.
611
+ *
612
+ * This operation is implemented in terms of zero or more calls to the stream's
613
+ * read_some function. If the streambuf's get area already contains the
614
+ * delimiter, the function returns immediately.
615
+ *
616
+ * @param s The stream from which the data is to be read. The type must support
617
+ * the SyncReadStream concept.
618
+ *
619
+ * @param b A streambuf object into which the data will be read.
620
+ *
621
+ * @param delim The delimiter character.
622
+ *
623
+ * @returns The number of bytes in the streambuf's get area up to and including
624
+ * the delimiter.
625
+ *
626
+ * @throws asio::system_error Thrown on failure.
627
+ *
628
+ * @note After a successful read_until operation, the streambuf may contain
629
+ * additional data beyond the delimiter. An application will typically leave
630
+ * that data in the streambuf for a subsequent read_until operation to examine.
631
+ *
632
+ * @par Example
633
+ * To read data into a streambuf until a newline is encountered:
634
+ * @code asio::streambuf b;
635
+ * asio::read_until(s, b, '\n');
636
+ * std::istream is(&b);
637
+ * std::string line;
638
+ * std::getline(is, line); @endcode
639
+ * After the @c read_until operation completes successfully, the buffer @c b
640
+ * contains the delimiter:
641
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
642
+ * The call to @c std::getline then extracts the data up to and including the
643
+ * newline (which is discarded), so that the string @c line contains:
644
+ * @code { 'a', 'b', ..., 'c' } @endcode
645
+ * The remaining data is left in the buffer @c b as follows:
646
+ * @code { 'd', 'e', ... } @endcode
647
+ * This data may be the start of a new line, to be extracted by a subsequent
648
+ * @c read_until operation.
649
+ */
650
+ template <typename SyncReadStream, typename Allocator>
651
+ std::size_t read_until(SyncReadStream& s,
652
+ asio::basic_streambuf<Allocator>& b, char delim);
653
+
654
+ /// Read data into a streambuf until it contains a specified delimiter.
655
+ /**
656
+ * This function is used to read data into the specified streambuf until the
657
+ * streambuf's get area contains the specified delimiter. The call will block
658
+ * until one of the following conditions is true:
659
+ *
660
+ * @li The get area of the streambuf contains the specified delimiter.
661
+ *
662
+ * @li An error occurred.
663
+ *
664
+ * This operation is implemented in terms of zero or more calls to the stream's
665
+ * read_some function. If the streambuf's get area already contains the
666
+ * delimiter, the function returns immediately.
667
+ *
668
+ * @param s The stream from which the data is to be read. The type must support
669
+ * the SyncReadStream concept.
670
+ *
671
+ * @param b A streambuf object into which the data will be read.
672
+ *
673
+ * @param delim The delimiter character.
674
+ *
675
+ * @param ec Set to indicate what error occurred, if any.
676
+ *
677
+ * @returns The number of bytes in the streambuf's get area up to and including
678
+ * the delimiter. Returns 0 if an error occurred.
679
+ *
680
+ * @note After a successful read_until operation, the streambuf may contain
681
+ * additional data beyond the delimiter. An application will typically leave
682
+ * that data in the streambuf for a subsequent read_until operation to examine.
683
+ */
684
+ template <typename SyncReadStream, typename Allocator>
685
+ std::size_t read_until(SyncReadStream& s,
686
+ asio::basic_streambuf<Allocator>& b, char delim,
687
+ asio::error_code& ec);
688
+
689
+ /// Read data into a streambuf until it contains a specified delimiter.
690
+ /**
691
+ * This function is used to read data into the specified streambuf until the
692
+ * streambuf's get area contains the specified delimiter. The call will block
693
+ * until one of the following conditions is true:
694
+ *
695
+ * @li The get area of the streambuf contains the specified delimiter.
696
+ *
697
+ * @li An error occurred.
698
+ *
699
+ * This operation is implemented in terms of zero or more calls to the stream's
700
+ * read_some function. If the streambuf's get area already contains the
701
+ * delimiter, the function returns immediately.
702
+ *
703
+ * @param s The stream from which the data is to be read. The type must support
704
+ * the SyncReadStream concept.
705
+ *
706
+ * @param b A streambuf object into which the data will be read.
707
+ *
708
+ * @param delim The delimiter string.
709
+ *
710
+ * @returns The number of bytes in the streambuf's get area up to and including
711
+ * the delimiter.
712
+ *
713
+ * @throws asio::system_error Thrown on failure.
714
+ *
715
+ * @note After a successful read_until operation, the streambuf may contain
716
+ * additional data beyond the delimiter. An application will typically leave
717
+ * that data in the streambuf for a subsequent read_until operation to examine.
718
+ *
719
+ * @par Example
720
+ * To read data into a streambuf until a newline is encountered:
721
+ * @code asio::streambuf b;
722
+ * asio::read_until(s, b, "\r\n");
723
+ * std::istream is(&b);
724
+ * std::string line;
725
+ * std::getline(is, line); @endcode
726
+ * After the @c read_until operation completes successfully, the buffer @c b
727
+ * contains the delimiter:
728
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
729
+ * The call to @c std::getline then extracts the data up to and including the
730
+ * newline (which is discarded), so that the string @c line contains:
731
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
732
+ * The remaining data is left in the buffer @c b as follows:
733
+ * @code { 'd', 'e', ... } @endcode
734
+ * This data may be the start of a new line, to be extracted by a subsequent
735
+ * @c read_until operation.
736
+ */
737
+ template <typename SyncReadStream, typename Allocator>
738
+ std::size_t read_until(SyncReadStream& s,
739
+ asio::basic_streambuf<Allocator>& b,
740
+ ASIO_STRING_VIEW_PARAM delim);
741
+
742
+ /// Read data into a streambuf until it contains a specified delimiter.
743
+ /**
744
+ * This function is used to read data into the specified streambuf until the
745
+ * streambuf's get area contains the specified delimiter. The call will block
746
+ * until one of the following conditions is true:
747
+ *
748
+ * @li The get area of the streambuf contains the specified delimiter.
749
+ *
750
+ * @li An error occurred.
751
+ *
752
+ * This operation is implemented in terms of zero or more calls to the stream's
753
+ * read_some function. If the streambuf's get area already contains the
754
+ * delimiter, the function returns immediately.
755
+ *
756
+ * @param s The stream from which the data is to be read. The type must support
757
+ * the SyncReadStream concept.
758
+ *
759
+ * @param b A streambuf object into which the data will be read.
760
+ *
761
+ * @param delim The delimiter string.
762
+ *
763
+ * @param ec Set to indicate what error occurred, if any.
764
+ *
765
+ * @returns The number of bytes in the streambuf's get area up to and including
766
+ * the delimiter. Returns 0 if an error occurred.
767
+ *
768
+ * @note After a successful read_until operation, the streambuf may contain
769
+ * additional data beyond the delimiter. An application will typically leave
770
+ * that data in the streambuf for a subsequent read_until operation to examine.
771
+ */
772
+ template <typename SyncReadStream, typename Allocator>
773
+ std::size_t read_until(SyncReadStream& s,
774
+ asio::basic_streambuf<Allocator>& b,
775
+ ASIO_STRING_VIEW_PARAM delim, asio::error_code& ec);
776
+
777
+ #if defined(ASIO_HAS_BOOST_REGEX) \
778
+ || defined(GENERATING_DOCUMENTATION)
779
+
780
+ /// Read data into a streambuf until some part of the data it contains matches
781
+ /// a regular expression.
782
+ /**
783
+ * This function is used to read data into the specified streambuf until the
784
+ * streambuf's get area contains some data that matches a regular expression.
785
+ * The call will block until one of the following conditions is true:
786
+ *
787
+ * @li A substring of the streambuf's get area matches the regular expression.
788
+ *
789
+ * @li An error occurred.
790
+ *
791
+ * This operation is implemented in terms of zero or more calls to the stream's
792
+ * read_some function. If the streambuf's get area already contains data that
793
+ * matches the regular expression, the function returns immediately.
794
+ *
795
+ * @param s The stream from which the data is to be read. The type must support
796
+ * the SyncReadStream concept.
797
+ *
798
+ * @param b A streambuf object into which the data will be read.
799
+ *
800
+ * @param expr The regular expression.
801
+ *
802
+ * @returns The number of bytes in the streambuf's get area up to and including
803
+ * the substring that matches the regular expression.
804
+ *
805
+ * @throws asio::system_error Thrown on failure.
806
+ *
807
+ * @note After a successful read_until operation, the streambuf may contain
808
+ * additional data beyond that which matched the regular expression. An
809
+ * application will typically leave that data in the streambuf for a subsequent
810
+ * read_until operation to examine.
811
+ *
812
+ * @par Example
813
+ * To read data into a streambuf until a CR-LF sequence is encountered:
814
+ * @code asio::streambuf b;
815
+ * asio::read_until(s, b, boost::regex("\r\n"));
816
+ * std::istream is(&b);
817
+ * std::string line;
818
+ * std::getline(is, line); @endcode
819
+ * After the @c read_until operation completes successfully, the buffer @c b
820
+ * contains the data which matched the regular expression:
821
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
822
+ * The call to @c std::getline then extracts the data up to and including the
823
+ * newline (which is discarded), so that the string @c line contains:
824
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
825
+ * The remaining data is left in the buffer @c b as follows:
826
+ * @code { 'd', 'e', ... } @endcode
827
+ * This data may be the start of a new line, to be extracted by a subsequent
828
+ * @c read_until operation.
829
+ */
830
+ template <typename SyncReadStream, typename Allocator>
831
+ std::size_t read_until(SyncReadStream& s,
832
+ asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
833
+
834
+ /// Read data into a streambuf until some part of the data it contains matches
835
+ /// a regular expression.
836
+ /**
837
+ * This function is used to read data into the specified streambuf until the
838
+ * streambuf's get area contains some data that matches a regular expression.
839
+ * The call will block until one of the following conditions is true:
840
+ *
841
+ * @li A substring of the streambuf's get area matches the regular expression.
842
+ *
843
+ * @li An error occurred.
844
+ *
845
+ * This operation is implemented in terms of zero or more calls to the stream's
846
+ * read_some function. If the streambuf's get area already contains data that
847
+ * matches the regular expression, the function returns immediately.
848
+ *
849
+ * @param s The stream from which the data is to be read. The type must support
850
+ * the SyncReadStream concept.
851
+ *
852
+ * @param b A streambuf object into which the data will be read.
853
+ *
854
+ * @param expr The regular expression.
855
+ *
856
+ * @param ec Set to indicate what error occurred, if any.
857
+ *
858
+ * @returns The number of bytes in the streambuf's get area up to and including
859
+ * the substring that matches the regular expression. Returns 0 if an error
860
+ * occurred.
861
+ *
862
+ * @note After a successful read_until operation, the streambuf may contain
863
+ * additional data beyond that which matched the regular expression. An
864
+ * application will typically leave that data in the streambuf for a subsequent
865
+ * read_until operation to examine.
866
+ */
867
+ template <typename SyncReadStream, typename Allocator>
868
+ std::size_t read_until(SyncReadStream& s,
869
+ asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
870
+ asio::error_code& ec);
871
+
872
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
873
+ // || defined(GENERATING_DOCUMENTATION)
874
+
875
+ /// Read data into a streambuf until a function object indicates a match.
876
+ /**
877
+ * This function is used to read data into the specified streambuf until a
878
+ * user-defined match condition function object, when applied to the data
879
+ * contained in the streambuf, indicates a successful match. The call will
880
+ * block until one of the following conditions is true:
881
+ *
882
+ * @li The match condition function object returns a std::pair where the second
883
+ * element evaluates to true.
884
+ *
885
+ * @li An error occurred.
886
+ *
887
+ * This operation is implemented in terms of zero or more calls to the stream's
888
+ * read_some function. If the match condition function object already indicates
889
+ * a match, the function returns immediately.
890
+ *
891
+ * @param s The stream from which the data is to be read. The type must support
892
+ * the SyncReadStream concept.
893
+ *
894
+ * @param b A streambuf object into which the data will be read.
895
+ *
896
+ * @param match_condition The function object to be called to determine whether
897
+ * a match exists. The signature of the function object must be:
898
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
899
+ * @endcode
900
+ * where @c iterator represents the type:
901
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
902
+ * @endcode
903
+ * The iterator parameters @c begin and @c end define the range of bytes to be
904
+ * scanned to determine whether there is a match. The @c first member of the
905
+ * return value is an iterator marking one-past-the-end of the bytes that have
906
+ * been consumed by the match function. This iterator is used to calculate the
907
+ * @c begin parameter for any subsequent invocation of the match condition. The
908
+ * @c second member of the return value is true if a match has been found, false
909
+ * otherwise.
910
+ *
911
+ * @returns The number of bytes in the streambuf's get area that have been fully
912
+ * consumed by the match function.
913
+ *
914
+ * @throws asio::system_error Thrown on failure.
915
+ *
916
+ * @note After a successful read_until operation, the streambuf may contain
917
+ * additional data beyond that which matched the function object. An application
918
+ * will typically leave that data in the streambuf for a subsequent read_until
919
+ * operation to examine.
920
+ *
921
+ * @note The default implementation of the @c is_match_condition type trait
922
+ * evaluates to true for function pointers and function objects with a
923
+ * @c result_type typedef. It must be specialised for other user-defined
924
+ * function objects.
925
+ *
926
+ * @par Examples
927
+ * To read data into a streambuf until whitespace is encountered:
928
+ * @code typedef asio::buffers_iterator<
929
+ * asio::streambuf::const_buffers_type> iterator;
930
+ *
931
+ * std::pair<iterator, bool>
932
+ * match_whitespace(iterator begin, iterator end)
933
+ * {
934
+ * iterator i = begin;
935
+ * while (i != end)
936
+ * if (std::isspace(*i++))
937
+ * return std::make_pair(i, true);
938
+ * return std::make_pair(i, false);
939
+ * }
940
+ * ...
941
+ * asio::streambuf b;
942
+ * asio::read_until(s, b, match_whitespace);
943
+ * @endcode
944
+ *
945
+ * To read data into a streambuf until a matching character is found:
946
+ * @code class match_char
947
+ * {
948
+ * public:
949
+ * explicit match_char(char c) : c_(c) {}
950
+ *
951
+ * template <typename Iterator>
952
+ * std::pair<Iterator, bool> operator()(
953
+ * Iterator begin, Iterator end) const
954
+ * {
955
+ * Iterator i = begin;
956
+ * while (i != end)
957
+ * if (c_ == *i++)
958
+ * return std::make_pair(i, true);
959
+ * return std::make_pair(i, false);
960
+ * }
961
+ *
962
+ * private:
963
+ * char c_;
964
+ * };
965
+ *
966
+ * namespace asio {
967
+ * template <> struct is_match_condition<match_char>
968
+ * : public boost::true_type {};
969
+ * } // namespace asio
970
+ * ...
971
+ * asio::streambuf b;
972
+ * asio::read_until(s, b, match_char('a'));
973
+ * @endcode
974
+ */
975
+ template <typename SyncReadStream, typename Allocator, typename MatchCondition>
976
+ std::size_t read_until(SyncReadStream& s,
977
+ asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
978
+ typename constraint<is_match_condition<MatchCondition>::value>::type = 0);
979
+
980
+ /// Read data into a streambuf until a function object indicates a match.
981
+ /**
982
+ * This function is used to read data into the specified streambuf until a
983
+ * user-defined match condition function object, when applied to the data
984
+ * contained in the streambuf, indicates a successful match. The call will
985
+ * block until one of the following conditions is true:
986
+ *
987
+ * @li The match condition function object returns a std::pair where the second
988
+ * element evaluates to true.
989
+ *
990
+ * @li An error occurred.
991
+ *
992
+ * This operation is implemented in terms of zero or more calls to the stream's
993
+ * read_some function. If the match condition function object already indicates
994
+ * a match, the function returns immediately.
995
+ *
996
+ * @param s The stream from which the data is to be read. The type must support
997
+ * the SyncReadStream concept.
998
+ *
999
+ * @param b A streambuf object into which the data will be read.
1000
+ *
1001
+ * @param match_condition The function object to be called to determine whether
1002
+ * a match exists. The signature of the function object must be:
1003
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1004
+ * @endcode
1005
+ * where @c iterator represents the type:
1006
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
1007
+ * @endcode
1008
+ * The iterator parameters @c begin and @c end define the range of bytes to be
1009
+ * scanned to determine whether there is a match. The @c first member of the
1010
+ * return value is an iterator marking one-past-the-end of the bytes that have
1011
+ * been consumed by the match function. This iterator is used to calculate the
1012
+ * @c begin parameter for any subsequent invocation of the match condition. The
1013
+ * @c second member of the return value is true if a match has been found, false
1014
+ * otherwise.
1015
+ *
1016
+ * @param ec Set to indicate what error occurred, if any.
1017
+ *
1018
+ * @returns The number of bytes in the streambuf's get area that have been fully
1019
+ * consumed by the match function. Returns 0 if an error occurred.
1020
+ *
1021
+ * @note After a successful read_until operation, the streambuf may contain
1022
+ * additional data beyond that which matched the function object. An application
1023
+ * will typically leave that data in the streambuf for a subsequent read_until
1024
+ * operation to examine.
1025
+ *
1026
+ * @note The default implementation of the @c is_match_condition type trait
1027
+ * evaluates to true for function pointers and function objects with a
1028
+ * @c result_type typedef. It must be specialised for other user-defined
1029
+ * function objects.
1030
+ */
1031
+ template <typename SyncReadStream, typename Allocator, typename MatchCondition>
1032
+ std::size_t read_until(SyncReadStream& s,
1033
+ asio::basic_streambuf<Allocator>& b,
1034
+ MatchCondition match_condition, asio::error_code& ec,
1035
+ typename constraint<is_match_condition<MatchCondition>::value>::type = 0);
1036
+
1037
+ #endif // !defined(ASIO_NO_IOSTREAM)
1038
+ #endif // !defined(ASIO_NO_EXTENSIONS)
1039
+ #endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
1040
+
1041
+ /// Read data into a dynamic buffer sequence until it contains a specified
1042
+ /// delimiter.
1043
+ /**
1044
+ * This function is used to read data into the specified dynamic buffer
1045
+ * sequence until the dynamic buffer sequence's get area contains the specified
1046
+ * delimiter. The call will block until one of the following conditions is
1047
+ * true:
1048
+ *
1049
+ * @li The get area of the dynamic buffer sequence contains the specified
1050
+ * delimiter.
1051
+ *
1052
+ * @li An error occurred.
1053
+ *
1054
+ * This operation is implemented in terms of zero or more calls to the stream's
1055
+ * read_some function. If the dynamic buffer sequence's get area already
1056
+ * contains the delimiter, the function returns immediately.
1057
+ *
1058
+ * @param s The stream from which the data is to be read. The type must support
1059
+ * the SyncReadStream concept.
1060
+ *
1061
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1062
+ *
1063
+ * @param delim The delimiter character.
1064
+ *
1065
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1066
+ * and including the delimiter.
1067
+ *
1068
+ * @throws asio::system_error Thrown on failure.
1069
+ *
1070
+ * @note After a successful read_until operation, the dynamic buffer sequence
1071
+ * may contain additional data beyond the delimiter. An application will
1072
+ * typically leave that data in the dynamic buffer sequence for a subsequent
1073
+ * read_until operation to examine.
1074
+ *
1075
+ * @par Example
1076
+ * To read data into a @c std::string until a newline is encountered:
1077
+ * @code std::string data;
1078
+ * std::size_t n = asio::read_until(s,
1079
+ * asio::dynamic_buffer(data), '\n');
1080
+ * std::string line = data.substr(0, n);
1081
+ * data.erase(0, n); @endcode
1082
+ * After the @c read_until operation completes successfully, the string @c data
1083
+ * contains the delimiter:
1084
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
1085
+ * The call to @c substr then extracts the data up to and including the
1086
+ * delimiter, so that the string @c line contains:
1087
+ * @code { 'a', 'b', ..., 'c', '\n' } @endcode
1088
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
1089
+ * follows:
1090
+ * @code { 'd', 'e', ... } @endcode
1091
+ * This data may be the start of a new line, to be extracted by a subsequent
1092
+ * @c read_until operation.
1093
+ */
1094
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1095
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
1096
+ typename constraint<
1097
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1098
+ >::type = 0);
1099
+
1100
+ /// Read data into a dynamic buffer sequence until it contains a specified
1101
+ /// delimiter.
1102
+ /**
1103
+ * This function is used to read data into the specified dynamic buffer
1104
+ * sequence until the dynamic buffer sequence's get area contains the specified
1105
+ * delimiter. The call will block until one of the following conditions is
1106
+ * true:
1107
+ *
1108
+ * @li The get area of the dynamic buffer sequence contains the specified
1109
+ * delimiter.
1110
+ *
1111
+ * @li An error occurred.
1112
+ *
1113
+ * This operation is implemented in terms of zero or more calls to the stream's
1114
+ * read_some function. If the dynamic buffer sequence's get area already
1115
+ * contains the delimiter, the function returns immediately.
1116
+ *
1117
+ * @param s The stream from which the data is to be read. The type must support
1118
+ * the SyncReadStream concept.
1119
+ *
1120
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1121
+ *
1122
+ * @param delim The delimiter character.
1123
+ *
1124
+ * @param ec Set to indicate what error occurred, if any.
1125
+ *
1126
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1127
+ * and including the delimiter. Returns 0 if an error occurred.
1128
+ *
1129
+ * @note After a successful read_until operation, the dynamic buffer sequence
1130
+ * may contain additional data beyond the delimiter. An application will
1131
+ * typically leave that data in the dynamic buffer sequence for a subsequent
1132
+ * read_until operation to examine.
1133
+ */
1134
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1135
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1136
+ char delim, asio::error_code& ec,
1137
+ typename constraint<
1138
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1139
+ >::type = 0);
1140
+
1141
+ /// Read data into a dynamic buffer sequence until it contains a specified
1142
+ /// delimiter.
1143
+ /**
1144
+ * This function is used to read data into the specified dynamic buffer
1145
+ * sequence until the dynamic buffer sequence's get area contains the specified
1146
+ * delimiter. The call will block until one of the following conditions is
1147
+ * true:
1148
+ *
1149
+ * @li The get area of the dynamic buffer sequence contains the specified
1150
+ * delimiter.
1151
+ *
1152
+ * @li An error occurred.
1153
+ *
1154
+ * This operation is implemented in terms of zero or more calls to the stream's
1155
+ * read_some function. If the dynamic buffer sequence's get area already
1156
+ * contains the delimiter, the function returns immediately.
1157
+ *
1158
+ * @param s The stream from which the data is to be read. The type must support
1159
+ * the SyncReadStream concept.
1160
+ *
1161
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1162
+ *
1163
+ * @param delim The delimiter string.
1164
+ *
1165
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1166
+ * and including the delimiter.
1167
+ *
1168
+ * @note After a successful read_until operation, the dynamic buffer sequence
1169
+ * may contain additional data beyond the delimiter. An application will
1170
+ * typically leave that data in the dynamic buffer sequence for a subsequent
1171
+ * read_until operation to examine.
1172
+ *
1173
+ * @par Example
1174
+ * To read data into a @c std::string until a CR-LF sequence is encountered:
1175
+ * @code std::string data;
1176
+ * std::size_t n = asio::read_until(s,
1177
+ * asio::dynamic_buffer(data), "\r\n");
1178
+ * std::string line = data.substr(0, n);
1179
+ * data.erase(0, n); @endcode
1180
+ * After the @c read_until operation completes successfully, the string @c data
1181
+ * contains the delimiter:
1182
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1183
+ * The call to @c substr then extracts the data up to and including the
1184
+ * delimiter, so that the string @c line contains:
1185
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1186
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
1187
+ * follows:
1188
+ * @code { 'd', 'e', ... } @endcode
1189
+ * This data may be the start of a new line, to be extracted by a subsequent
1190
+ * @c read_until operation.
1191
+ */
1192
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1193
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1194
+ ASIO_STRING_VIEW_PARAM delim,
1195
+ typename constraint<
1196
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1197
+ >::type = 0);
1198
+
1199
+ /// Read data into a dynamic buffer sequence until it contains a specified
1200
+ /// delimiter.
1201
+ /**
1202
+ * This function is used to read data into the specified dynamic buffer
1203
+ * sequence until the dynamic buffer sequence's get area contains the specified
1204
+ * delimiter. The call will block until one of the following conditions is
1205
+ * true:
1206
+ *
1207
+ * @li The get area of the dynamic buffer sequence contains the specified
1208
+ * delimiter.
1209
+ *
1210
+ * @li An error occurred.
1211
+ *
1212
+ * This operation is implemented in terms of zero or more calls to the stream's
1213
+ * read_some function. If the dynamic buffer sequence's get area already
1214
+ * contains the delimiter, the function returns immediately.
1215
+ *
1216
+ * @param s The stream from which the data is to be read. The type must support
1217
+ * the SyncReadStream concept.
1218
+ *
1219
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1220
+ *
1221
+ * @param delim The delimiter string.
1222
+ *
1223
+ * @param ec Set to indicate what error occurred, if any.
1224
+ *
1225
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1226
+ * and including the delimiter. Returns 0 if an error occurred.
1227
+ *
1228
+ * @note After a successful read_until operation, the dynamic buffer sequence
1229
+ * may contain additional data beyond the delimiter. An application will
1230
+ * typically leave that data in the dynamic buffer sequence for a subsequent
1231
+ * read_until operation to examine.
1232
+ */
1233
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1234
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1235
+ ASIO_STRING_VIEW_PARAM delim, asio::error_code& ec,
1236
+ typename constraint<
1237
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1238
+ >::type = 0);
1239
+
1240
+ #if !defined(ASIO_NO_EXTENSIONS)
1241
+ #if defined(ASIO_HAS_BOOST_REGEX) \
1242
+ || defined(GENERATING_DOCUMENTATION)
1243
+
1244
+ /// Read data into a dynamic buffer sequence until some part of the data it
1245
+ /// contains matches a regular expression.
1246
+ /**
1247
+ * This function is used to read data into the specified dynamic buffer
1248
+ * sequence until the dynamic buffer sequence's get area contains some data
1249
+ * that matches a regular expression. The call will block until one of the
1250
+ * following conditions is true:
1251
+ *
1252
+ * @li A substring of the dynamic buffer sequence's get area matches the
1253
+ * regular expression.
1254
+ *
1255
+ * @li An error occurred.
1256
+ *
1257
+ * This operation is implemented in terms of zero or more calls to the stream's
1258
+ * read_some function. If the dynamic buffer sequence's get area already
1259
+ * contains data that matches the regular expression, the function returns
1260
+ * immediately.
1261
+ *
1262
+ * @param s The stream from which the data is to be read. The type must support
1263
+ * the SyncReadStream concept.
1264
+ *
1265
+ * @param buffers A dynamic buffer sequence into which the data will be read.
1266
+ *
1267
+ * @param expr The regular expression.
1268
+ *
1269
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1270
+ * and including the substring that matches the regular expression.
1271
+ *
1272
+ * @throws asio::system_error Thrown on failure.
1273
+ *
1274
+ * @note After a successful read_until operation, the dynamic buffer sequence
1275
+ * may contain additional data beyond that which matched the regular
1276
+ * expression. An application will typically leave that data in the dynamic
1277
+ * buffer sequence for a subsequent read_until operation to examine.
1278
+ *
1279
+ * @par Example
1280
+ * To read data into a @c std::string until a CR-LF sequence is encountered:
1281
+ * @code std::string data;
1282
+ * std::size_t n = asio::read_until(s,
1283
+ * asio::dynamic_buffer(data), boost::regex("\r\n"));
1284
+ * std::string line = data.substr(0, n);
1285
+ * data.erase(0, n); @endcode
1286
+ * After the @c read_until operation completes successfully, the string @c data
1287
+ * contains the delimiter:
1288
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1289
+ * The call to @c substr then extracts the data up to and including the
1290
+ * delimiter, so that the string @c line contains:
1291
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1292
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
1293
+ * follows:
1294
+ * @code { 'd', 'e', ... } @endcode
1295
+ * This data may be the start of a new line, to be extracted by a subsequent
1296
+ * @c read_until operation.
1297
+ */
1298
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1299
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1300
+ const boost::regex& expr,
1301
+ typename constraint<
1302
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1303
+ >::type = 0);
1304
+
1305
+ /// Read data into a dynamic buffer sequence until some part of the data it
1306
+ /// contains matches a regular expression.
1307
+ /**
1308
+ * This function is used to read data into the specified dynamic buffer
1309
+ * sequence until the dynamic buffer sequence's get area contains some data
1310
+ * that matches a regular expression. The call will block until one of the
1311
+ * following conditions is true:
1312
+ *
1313
+ * @li A substring of the dynamic buffer sequence's get area matches the
1314
+ * regular expression.
1315
+ *
1316
+ * @li An error occurred.
1317
+ *
1318
+ * This operation is implemented in terms of zero or more calls to the stream's
1319
+ * read_some function. If the dynamic buffer sequence's get area already
1320
+ * contains data that matches the regular expression, the function returns
1321
+ * immediately.
1322
+ *
1323
+ * @param s The stream from which the data is to be read. The type must support
1324
+ * the SyncReadStream concept.
1325
+ *
1326
+ * @param buffers A dynamic buffer sequence into which the data will be read.
1327
+ *
1328
+ * @param expr The regular expression.
1329
+ *
1330
+ * @param ec Set to indicate what error occurred, if any.
1331
+ *
1332
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1333
+ * and including the substring that matches the regular expression. Returns 0
1334
+ * if an error occurred.
1335
+ *
1336
+ * @note After a successful read_until operation, the dynamic buffer sequence
1337
+ * may contain additional data beyond that which matched the regular
1338
+ * expression. An application will typically leave that data in the dynamic
1339
+ * buffer sequence for a subsequent read_until operation to examine.
1340
+ */
1341
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1342
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1343
+ const boost::regex& expr, asio::error_code& ec,
1344
+ typename constraint<
1345
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1346
+ >::type = 0);
1347
+
1348
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
1349
+ // || defined(GENERATING_DOCUMENTATION)
1350
+
1351
+ /// Read data into a dynamic buffer sequence until a function object indicates a
1352
+ /// match.
1353
+
1354
+ /**
1355
+ * This function is used to read data into the specified dynamic buffer
1356
+ * sequence until a user-defined match condition function object, when applied
1357
+ * to the data contained in the dynamic buffer sequence, indicates a successful
1358
+ * match. The call will block until one of the following conditions is true:
1359
+ *
1360
+ * @li The match condition function object returns a std::pair where the second
1361
+ * element evaluates to true.
1362
+ *
1363
+ * @li An error occurred.
1364
+ *
1365
+ * This operation is implemented in terms of zero or more calls to the stream's
1366
+ * read_some function. If the match condition function object already indicates
1367
+ * a match, the function returns immediately.
1368
+ *
1369
+ * @param s The stream from which the data is to be read. The type must support
1370
+ * the SyncReadStream concept.
1371
+ *
1372
+ * @param buffers A dynamic buffer sequence into which the data will be read.
1373
+ *
1374
+ * @param match_condition The function object to be called to determine whether
1375
+ * a match exists. The signature of the function object must be:
1376
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1377
+ * @endcode
1378
+ * where @c iterator represents the type:
1379
+ * @code buffers_iterator<typename DynamicBuffer_v2::const_buffers_type>
1380
+ * @endcode
1381
+ * The iterator parameters @c begin and @c end define the range of bytes to be
1382
+ * scanned to determine whether there is a match. The @c first member of the
1383
+ * return value is an iterator marking one-past-the-end of the bytes that have
1384
+ * been consumed by the match function. This iterator is used to calculate the
1385
+ * @c begin parameter for any subsequent invocation of the match condition. The
1386
+ * @c second member of the return value is true if a match has been found, false
1387
+ * otherwise.
1388
+ *
1389
+ * @returns The number of bytes in the dynamic_buffer's get area that
1390
+ * have been fully consumed by the match function.
1391
+ *
1392
+ * @throws asio::system_error Thrown on failure.
1393
+ *
1394
+ * @note After a successful read_until operation, the dynamic buffer sequence
1395
+ * may contain additional data beyond that which matched the function object.
1396
+ * An application will typically leave that data in the dynamic buffer sequence
1397
+ * for a subsequent read_until operation to examine.
1398
+
1399
+ * @note The default implementation of the @c is_match_condition type trait
1400
+ * evaluates to true for function pointers and function objects with a
1401
+ * @c result_type typedef. It must be specialised for other user-defined
1402
+ * function objects.
1403
+ *
1404
+ * @par Examples
1405
+ * To read data into a dynamic buffer sequence until whitespace is encountered:
1406
+ * @code typedef asio::buffers_iterator<
1407
+ * asio::const_buffers_1> iterator;
1408
+ *
1409
+ * std::pair<iterator, bool>
1410
+ * match_whitespace(iterator begin, iterator end)
1411
+ * {
1412
+ * iterator i = begin;
1413
+ * while (i != end)
1414
+ * if (std::isspace(*i++))
1415
+ * return std::make_pair(i, true);
1416
+ * return std::make_pair(i, false);
1417
+ * }
1418
+ * ...
1419
+ * std::string data;
1420
+ * asio::read_until(s, data, match_whitespace);
1421
+ * @endcode
1422
+ *
1423
+ * To read data into a @c std::string until a matching character is found:
1424
+ * @code class match_char
1425
+ * {
1426
+ * public:
1427
+ * explicit match_char(char c) : c_(c) {}
1428
+ *
1429
+ * template <typename Iterator>
1430
+ * std::pair<Iterator, bool> operator()(
1431
+ * Iterator begin, Iterator end) const
1432
+ * {
1433
+ * Iterator i = begin;
1434
+ * while (i != end)
1435
+ * if (c_ == *i++)
1436
+ * return std::make_pair(i, true);
1437
+ * return std::make_pair(i, false);
1438
+ * }
1439
+ *
1440
+ * private:
1441
+ * char c_;
1442
+ * };
1443
+ *
1444
+ * namespace asio {
1445
+ * template <> struct is_match_condition<match_char>
1446
+ * : public boost::true_type {};
1447
+ * } // namespace asio
1448
+ * ...
1449
+ * std::string data;
1450
+ * asio::read_until(s, data, match_char('a'));
1451
+ * @endcode
1452
+ */
1453
+ template <typename SyncReadStream,
1454
+ typename DynamicBuffer_v2, typename MatchCondition>
1455
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1456
+ MatchCondition match_condition,
1457
+ typename constraint<
1458
+ is_match_condition<MatchCondition>::value
1459
+ >::type = 0,
1460
+ typename constraint<
1461
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1462
+ >::type = 0);
1463
+
1464
+ /// Read data into a dynamic buffer sequence until a function object indicates a
1465
+ /// match.
1466
+ /**
1467
+ * This function is used to read data into the specified dynamic buffer
1468
+ * sequence until a user-defined match condition function object, when applied
1469
+ * to the data contained in the dynamic buffer sequence, indicates a successful
1470
+ * match. The call will block until one of the following conditions is true:
1471
+ *
1472
+ * @li The match condition function object returns a std::pair where the second
1473
+ * element evaluates to true.
1474
+ *
1475
+ * @li An error occurred.
1476
+ *
1477
+ * This operation is implemented in terms of zero or more calls to the stream's
1478
+ * read_some function. If the match condition function object already indicates
1479
+ * a match, the function returns immediately.
1480
+ *
1481
+ * @param s The stream from which the data is to be read. The type must support
1482
+ * the SyncReadStream concept.
1483
+ *
1484
+ * @param buffers A dynamic buffer sequence into which the data will be read.
1485
+ *
1486
+ * @param match_condition The function object to be called to determine whether
1487
+ * a match exists. The signature of the function object must be:
1488
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1489
+ * @endcode
1490
+ * where @c iterator represents the type:
1491
+ * @code buffers_iterator<DynamicBuffer_v2::const_buffers_type>
1492
+ * @endcode
1493
+ * The iterator parameters @c begin and @c end define the range of bytes to be
1494
+ * scanned to determine whether there is a match. The @c first member of the
1495
+ * return value is an iterator marking one-past-the-end of the bytes that have
1496
+ * been consumed by the match function. This iterator is used to calculate the
1497
+ * @c begin parameter for any subsequent invocation of the match condition. The
1498
+ * @c second member of the return value is true if a match has been found, false
1499
+ * otherwise.
1500
+ *
1501
+ * @param ec Set to indicate what error occurred, if any.
1502
+ *
1503
+ * @returns The number of bytes in the dynamic buffer sequence's get area that
1504
+ * have been fully consumed by the match function. Returns 0 if an error
1505
+ * occurred.
1506
+ *
1507
+ * @note After a successful read_until operation, the dynamic buffer sequence
1508
+ * may contain additional data beyond that which matched the function object.
1509
+ * An application will typically leave that data in the dynamic buffer sequence
1510
+ * for a subsequent read_until operation to examine.
1511
+ *
1512
+ * @note The default implementation of the @c is_match_condition type trait
1513
+ * evaluates to true for function pointers and function objects with a
1514
+ * @c result_type typedef. It must be specialised for other user-defined
1515
+ * function objects.
1516
+ */
1517
+ template <typename SyncReadStream,
1518
+ typename DynamicBuffer_v2, typename MatchCondition>
1519
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1520
+ MatchCondition match_condition, asio::error_code& ec,
1521
+ typename constraint<
1522
+ is_match_condition<MatchCondition>::value
1523
+ >::type = 0,
1524
+ typename constraint<
1525
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1526
+ >::type = 0);
1527
+
1528
+ #endif // !defined(ASIO_NO_EXTENSIONS)
1529
+
1530
+ /*@}*/
1531
+ /**
1532
+ * @defgroup async_read_until asio::async_read_until
1533
+ *
1534
+ * @brief The @c async_read_until function is a composed asynchronous operation
1535
+ * that reads data into a dynamic buffer sequence, or into a streambuf, until
1536
+ * it contains a delimiter, matches a regular expression, or a function object
1537
+ * indicates a match.
1538
+ */
1539
+ /*@{*/
1540
+
1541
+ #if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
1542
+
1543
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1544
+ /// until it contains a specified delimiter.
1545
+ /**
1546
+ * This function is used to asynchronously read data into the specified dynamic
1547
+ * buffer sequence until the dynamic buffer sequence's get area contains the
1548
+ * specified delimiter. The function call always returns immediately. The
1549
+ * asynchronous operation will continue until one of the following conditions
1550
+ * is true:
1551
+ *
1552
+ * @li The get area of the dynamic buffer sequence contains the specified
1553
+ * delimiter.
1554
+ *
1555
+ * @li An error occurred.
1556
+ *
1557
+ * This operation is implemented in terms of zero or more calls to the stream's
1558
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1559
+ * the dynamic buffer sequence's get area already contains the delimiter, this
1560
+ * asynchronous operation completes immediately. The program must ensure that
1561
+ * the stream performs no other read operations (such as async_read,
1562
+ * async_read_until, the stream's async_read_some function, or any other
1563
+ * composed operations that perform reads) until this operation completes.
1564
+ *
1565
+ * @param s The stream from which the data is to be read. The type must support
1566
+ * the AsyncReadStream concept.
1567
+ *
1568
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1569
+ * Although the buffers object may be copied as necessary, ownership of the
1570
+ * underlying memory blocks is retained by the caller, which must guarantee
1571
+ * that they remain valid until the handler is called.
1572
+ *
1573
+ * @param delim The delimiter character.
1574
+ *
1575
+ * @param handler The handler to be called when the read operation completes.
1576
+ * Copies will be made of the handler as required. The function signature of the
1577
+ * handler must be:
1578
+ * @code void handler(
1579
+ * // Result of operation.
1580
+ * const asio::error_code& error,
1581
+ *
1582
+ * // The number of bytes in the dynamic buffer sequence's
1583
+ * // get area up to and including the delimiter.
1584
+ * // 0 if an error occurred.
1585
+ * std::size_t bytes_transferred
1586
+ * ); @endcode
1587
+ * Regardless of whether the asynchronous operation completes immediately or
1588
+ * not, the handler will not be invoked from within this function. On
1589
+ * immediate completion, invocation of the handler will be performed in a
1590
+ * manner equivalent to using asio::post().
1591
+ *
1592
+ * @note After a successful async_read_until operation, the dynamic buffer
1593
+ * sequence may contain additional data beyond the delimiter. An application
1594
+ * will typically leave that data in the dynamic buffer sequence for a
1595
+ * subsequent async_read_until operation to examine.
1596
+ *
1597
+ * @par Example
1598
+ * To asynchronously read data into a @c std::string until a newline is
1599
+ * encountered:
1600
+ * @code std::string data;
1601
+ * ...
1602
+ * void handler(const asio::error_code& e, std::size_t size)
1603
+ * {
1604
+ * if (!e)
1605
+ * {
1606
+ * std::string line = data.substr(0, n);
1607
+ * data.erase(0, n);
1608
+ * ...
1609
+ * }
1610
+ * }
1611
+ * ...
1612
+ * asio::async_read_until(s, data, '\n', handler); @endcode
1613
+ * After the @c async_read_until operation completes successfully, the buffer
1614
+ * @c data contains the delimiter:
1615
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
1616
+ * The call to @c substr then extracts the data up to and including the
1617
+ * delimiter, so that the string @c line contains:
1618
+ * @code { 'a', 'b', ..., 'c', '\n' } @endcode
1619
+ * After the call to @c erase, the remaining data is left in the buffer @c data
1620
+ * as follows:
1621
+ * @code { 'd', 'e', ... } @endcode
1622
+ * This data may be the start of a new line, to be extracted by a subsequent
1623
+ * @c async_read_until operation.
1624
+ *
1625
+ * @par Per-Operation Cancellation
1626
+ * This asynchronous operation supports cancellation for the following
1627
+ * asio::cancellation_type values:
1628
+ *
1629
+ * @li @c cancellation_type::terminal
1630
+ *
1631
+ * @li @c cancellation_type::partial
1632
+ *
1633
+ * if they are also supported by the @c AsyncReadStream type's
1634
+ * @c async_read_some operation.
1635
+ */
1636
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1637
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1638
+ std::size_t)) ReadHandler
1639
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1640
+ typename AsyncReadStream::executor_type)>
1641
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1642
+ void (asio::error_code, std::size_t))
1643
+ async_read_until(AsyncReadStream& s,
1644
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
1645
+ ASIO_MOVE_ARG(ReadHandler) handler
1646
+ ASIO_DEFAULT_COMPLETION_TOKEN(
1647
+ typename AsyncReadStream::executor_type),
1648
+ typename constraint<
1649
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1650
+ >::type = 0,
1651
+ typename constraint<
1652
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1653
+ >::type = 0);
1654
+
1655
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1656
+ /// until it contains a specified delimiter.
1657
+ /**
1658
+ * This function is used to asynchronously read data into the specified dynamic
1659
+ * buffer sequence until the dynamic buffer sequence's get area contains the
1660
+ * specified delimiter. The function call always returns immediately. The
1661
+ * asynchronous operation will continue until one of the following conditions
1662
+ * is true:
1663
+ *
1664
+ * @li The get area of the dynamic buffer sequence contains the specified
1665
+ * delimiter.
1666
+ *
1667
+ * @li An error occurred.
1668
+ *
1669
+ * This operation is implemented in terms of zero or more calls to the stream's
1670
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1671
+ * the dynamic buffer sequence's get area already contains the delimiter, this
1672
+ * asynchronous operation completes immediately. The program must ensure that
1673
+ * the stream performs no other read operations (such as async_read,
1674
+ * async_read_until, the stream's async_read_some function, or any other
1675
+ * composed operations that perform reads) until this operation completes.
1676
+ *
1677
+ * @param s The stream from which the data is to be read. The type must support
1678
+ * the AsyncReadStream concept.
1679
+ *
1680
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1681
+ * Although the buffers object may be copied as necessary, ownership of the
1682
+ * underlying memory blocks is retained by the caller, which must guarantee
1683
+ * that they remain valid until the handler is called.
1684
+ *
1685
+ * @param delim The delimiter string.
1686
+ *
1687
+ * @param handler The handler to be called when the read operation completes.
1688
+ * Copies will be made of the handler as required. The function signature of the
1689
+ * handler must be:
1690
+ * @code void handler(
1691
+ * // Result of operation.
1692
+ * const asio::error_code& error,
1693
+ *
1694
+ * // The number of bytes in the dynamic buffer sequence's
1695
+ * // get area up to and including the delimiter.
1696
+ * // 0 if an error occurred.
1697
+ * std::size_t bytes_transferred
1698
+ * ); @endcode
1699
+ * Regardless of whether the asynchronous operation completes immediately or
1700
+ * not, the handler will not be invoked from within this function. On
1701
+ * immediate completion, invocation of the handler will be performed in a
1702
+ * manner equivalent to using asio::post().
1703
+ *
1704
+ * @note After a successful async_read_until operation, the dynamic buffer
1705
+ * sequence may contain additional data beyond the delimiter. An application
1706
+ * will typically leave that data in the dynamic buffer sequence for a
1707
+ * subsequent async_read_until operation to examine.
1708
+ *
1709
+ * @par Example
1710
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
1711
+ * encountered:
1712
+ * @code std::string data;
1713
+ * ...
1714
+ * void handler(const asio::error_code& e, std::size_t size)
1715
+ * {
1716
+ * if (!e)
1717
+ * {
1718
+ * std::string line = data.substr(0, n);
1719
+ * data.erase(0, n);
1720
+ * ...
1721
+ * }
1722
+ * }
1723
+ * ...
1724
+ * asio::async_read_until(s, data, "\r\n", handler); @endcode
1725
+ * After the @c async_read_until operation completes successfully, the string
1726
+ * @c data contains the delimiter:
1727
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1728
+ * The call to @c substr then extracts the data up to and including the
1729
+ * delimiter, so that the string @c line contains:
1730
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1731
+ * After the call to @c erase, the remaining data is left in the string @c data
1732
+ * as follows:
1733
+ * @code { 'd', 'e', ... } @endcode
1734
+ * This data may be the start of a new line, to be extracted by a subsequent
1735
+ * @c async_read_until operation.
1736
+ *
1737
+ * @par Per-Operation Cancellation
1738
+ * This asynchronous operation supports cancellation for the following
1739
+ * asio::cancellation_type values:
1740
+ *
1741
+ * @li @c cancellation_type::terminal
1742
+ *
1743
+ * @li @c cancellation_type::partial
1744
+ *
1745
+ * if they are also supported by the @c AsyncReadStream type's
1746
+ * @c async_read_some operation.
1747
+ */
1748
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1749
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1750
+ std::size_t)) ReadHandler
1751
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1752
+ typename AsyncReadStream::executor_type)>
1753
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1754
+ void (asio::error_code, std::size_t))
1755
+ async_read_until(AsyncReadStream& s,
1756
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1757
+ ASIO_STRING_VIEW_PARAM delim,
1758
+ ASIO_MOVE_ARG(ReadHandler) handler
1759
+ ASIO_DEFAULT_COMPLETION_TOKEN(
1760
+ typename AsyncReadStream::executor_type),
1761
+ typename constraint<
1762
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1763
+ >::type = 0,
1764
+ typename constraint<
1765
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1766
+ >::type = 0);
1767
+
1768
+ #if !defined(ASIO_NO_EXTENSIONS)
1769
+ #if defined(ASIO_HAS_BOOST_REGEX) \
1770
+ || defined(GENERATING_DOCUMENTATION)
1771
+
1772
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1773
+ /// until some part of its data matches a regular expression.
1774
+ /**
1775
+ * This function is used to asynchronously read data into the specified dynamic
1776
+ * buffer sequence until the dynamic buffer sequence's get area contains some
1777
+ * data that matches a regular expression. The function call always returns
1778
+ * immediately. The asynchronous operation will continue until one of the
1779
+ * following conditions is true:
1780
+ *
1781
+ * @li A substring of the dynamic buffer sequence's get area matches the regular
1782
+ * expression.
1783
+ *
1784
+ * @li An error occurred.
1785
+ *
1786
+ * This operation is implemented in terms of zero or more calls to the stream's
1787
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1788
+ * the dynamic buffer sequence's get area already contains data that matches
1789
+ * the regular expression, this asynchronous operation completes immediately.
1790
+ * The program must ensure that the stream performs no other read operations
1791
+ * (such as async_read, async_read_until, the stream's async_read_some
1792
+ * function, or any other composed operations that perform reads) until this
1793
+ * operation completes.
1794
+ *
1795
+ * @param s The stream from which the data is to be read. The type must support
1796
+ * the AsyncReadStream concept.
1797
+ *
1798
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1799
+ * Although the buffers object may be copied as necessary, ownership of the
1800
+ * underlying memory blocks is retained by the caller, which must guarantee
1801
+ * that they remain valid until the handler is called.
1802
+ *
1803
+ * @param expr The regular expression.
1804
+ *
1805
+ * @param handler The handler to be called when the read operation completes.
1806
+ * Copies will be made of the handler as required. The function signature of the
1807
+ * handler must be:
1808
+ * @code void handler(
1809
+ * // Result of operation.
1810
+ * const asio::error_code& error,
1811
+ *
1812
+ * // The number of bytes in the dynamic buffer
1813
+ * // sequence's get area up to and including the
1814
+ * // substring that matches the regular expression.
1815
+ * // 0 if an error occurred.
1816
+ * std::size_t bytes_transferred
1817
+ * ); @endcode
1818
+ * Regardless of whether the asynchronous operation completes immediately or
1819
+ * not, the handler will not be invoked from within this function. On
1820
+ * immediate completion, invocation of the handler will be performed in a
1821
+ * manner equivalent to using asio::post().
1822
+ *
1823
+ * @note After a successful async_read_until operation, the dynamic buffer
1824
+ * sequence may contain additional data beyond that which matched the regular
1825
+ * expression. An application will typically leave that data in the dynamic
1826
+ * buffer sequence for a subsequent async_read_until operation to examine.
1827
+ *
1828
+ * @par Example
1829
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
1830
+ * encountered:
1831
+ * @code std::string data;
1832
+ * ...
1833
+ * void handler(const asio::error_code& e, std::size_t size)
1834
+ * {
1835
+ * if (!e)
1836
+ * {
1837
+ * std::string line = data.substr(0, n);
1838
+ * data.erase(0, n);
1839
+ * ...
1840
+ * }
1841
+ * }
1842
+ * ...
1843
+ * asio::async_read_until(s, data,
1844
+ * boost::regex("\r\n"), handler); @endcode
1845
+ * After the @c async_read_until operation completes successfully, the string
1846
+ * @c data contains the data which matched the regular expression:
1847
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1848
+ * The call to @c substr then extracts the data up to and including the match,
1849
+ * so that the string @c line contains:
1850
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1851
+ * After the call to @c erase, the remaining data is left in the string @c data
1852
+ * as follows:
1853
+ * @code { 'd', 'e', ... } @endcode
1854
+ * This data may be the start of a new line, to be extracted by a subsequent
1855
+ * @c async_read_until operation.
1856
+ *
1857
+ * @par Per-Operation Cancellation
1858
+ * This asynchronous operation supports cancellation for the following
1859
+ * asio::cancellation_type values:
1860
+ *
1861
+ * @li @c cancellation_type::terminal
1862
+ *
1863
+ * @li @c cancellation_type::partial
1864
+ *
1865
+ * if they are also supported by the @c AsyncReadStream type's
1866
+ * @c async_read_some operation.
1867
+ */
1868
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1869
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1870
+ std::size_t)) ReadHandler
1871
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1872
+ typename AsyncReadStream::executor_type)>
1873
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1874
+ void (asio::error_code, std::size_t))
1875
+ async_read_until(AsyncReadStream& s,
1876
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1877
+ const boost::regex& expr,
1878
+ ASIO_MOVE_ARG(ReadHandler) handler
1879
+ ASIO_DEFAULT_COMPLETION_TOKEN(
1880
+ typename AsyncReadStream::executor_type),
1881
+ typename constraint<
1882
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1883
+ >::type = 0,
1884
+ typename constraint<
1885
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1886
+ >::type = 0);
1887
+
1888
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
1889
+ // || defined(GENERATING_DOCUMENTATION)
1890
+
1891
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1892
+ /// until a function object indicates a match.
1893
+ /**
1894
+ * This function is used to asynchronously read data into the specified dynamic
1895
+ * buffer sequence until a user-defined match condition function object, when
1896
+ * applied to the data contained in the dynamic buffer sequence, indicates a
1897
+ * successful match. The function call always returns immediately. The
1898
+ * asynchronous operation will continue until one of the following conditions
1899
+ * is true:
1900
+ *
1901
+ * @li The match condition function object returns a std::pair where the second
1902
+ * element evaluates to true.
1903
+ *
1904
+ * @li An error occurred.
1905
+ *
1906
+ * This operation is implemented in terms of zero or more calls to the stream's
1907
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1908
+ * the match condition function object already indicates a match, this
1909
+ * asynchronous operation completes immediately. The program must ensure that
1910
+ * the stream performs no other read operations (such as async_read,
1911
+ * async_read_until, the stream's async_read_some function, or any other
1912
+ * composed operations that perform reads) until this operation completes.
1913
+ *
1914
+ * @param s The stream from which the data is to be read. The type must support
1915
+ * the AsyncReadStream concept.
1916
+ *
1917
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1918
+ * Although the buffers object may be copied as necessary, ownership of the
1919
+ * underlying memory blocks is retained by the caller, which must guarantee
1920
+ * that they remain valid until the handler is called.
1921
+ *
1922
+ * @param match_condition The function object to be called to determine whether
1923
+ * a match exists. The signature of the function object must be:
1924
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1925
+ * @endcode
1926
+ * where @c iterator represents the type:
1927
+ * @code buffers_iterator<typename DynamicBuffer_v1::const_buffers_type>
1928
+ * @endcode
1929
+ * The iterator parameters @c begin and @c end define the range of bytes to be
1930
+ * scanned to determine whether there is a match. The @c first member of the
1931
+ * return value is an iterator marking one-past-the-end of the bytes that have
1932
+ * been consumed by the match function. This iterator is used to calculate the
1933
+ * @c begin parameter for any subsequent invocation of the match condition. The
1934
+ * @c second member of the return value is true if a match has been found, false
1935
+ * otherwise.
1936
+ *
1937
+ * @param handler The handler to be called when the read operation completes.
1938
+ * Copies will be made of the handler as required. The function signature of the
1939
+ * handler must be:
1940
+ * @code void handler(
1941
+ * // Result of operation.
1942
+ * const asio::error_code& error,
1943
+ *
1944
+ * // The number of bytes in the dynamic buffer sequence's
1945
+ * // get area that have been fully consumed by the match
1946
+ * // function. O if an error occurred.
1947
+ * std::size_t bytes_transferred
1948
+ * ); @endcode
1949
+ * Regardless of whether the asynchronous operation completes immediately or
1950
+ * not, the handler will not be invoked from within this function. On
1951
+ * immediate completion, invocation of the handler will be performed in a
1952
+ * manner equivalent to using asio::post().
1953
+ *
1954
+ * @note After a successful async_read_until operation, the dynamic buffer
1955
+ * sequence may contain additional data beyond that which matched the function
1956
+ * object. An application will typically leave that data in the dynamic buffer
1957
+ * sequence for a subsequent async_read_until operation to examine.
1958
+ *
1959
+ * @note The default implementation of the @c is_match_condition type trait
1960
+ * evaluates to true for function pointers and function objects with a
1961
+ * @c result_type typedef. It must be specialised for other user-defined
1962
+ * function objects.
1963
+ *
1964
+ * @par Examples
1965
+ * To asynchronously read data into a @c std::string until whitespace is
1966
+ * encountered:
1967
+ * @code typedef asio::buffers_iterator<
1968
+ * asio::const_buffers_1> iterator;
1969
+ *
1970
+ * std::pair<iterator, bool>
1971
+ * match_whitespace(iterator begin, iterator end)
1972
+ * {
1973
+ * iterator i = begin;
1974
+ * while (i != end)
1975
+ * if (std::isspace(*i++))
1976
+ * return std::make_pair(i, true);
1977
+ * return std::make_pair(i, false);
1978
+ * }
1979
+ * ...
1980
+ * void handler(const asio::error_code& e, std::size_t size);
1981
+ * ...
1982
+ * std::string data;
1983
+ * asio::async_read_until(s, data, match_whitespace, handler);
1984
+ * @endcode
1985
+ *
1986
+ * To asynchronously read data into a @c std::string until a matching character
1987
+ * is found:
1988
+ * @code class match_char
1989
+ * {
1990
+ * public:
1991
+ * explicit match_char(char c) : c_(c) {}
1992
+ *
1993
+ * template <typename Iterator>
1994
+ * std::pair<Iterator, bool> operator()(
1995
+ * Iterator begin, Iterator end) const
1996
+ * {
1997
+ * Iterator i = begin;
1998
+ * while (i != end)
1999
+ * if (c_ == *i++)
2000
+ * return std::make_pair(i, true);
2001
+ * return std::make_pair(i, false);
2002
+ * }
2003
+ *
2004
+ * private:
2005
+ * char c_;
2006
+ * };
2007
+ *
2008
+ * namespace asio {
2009
+ * template <> struct is_match_condition<match_char>
2010
+ * : public boost::true_type {};
2011
+ * } // namespace asio
2012
+ * ...
2013
+ * void handler(const asio::error_code& e, std::size_t size);
2014
+ * ...
2015
+ * std::string data;
2016
+ * asio::async_read_until(s, data, match_char('a'), handler);
2017
+ * @endcode
2018
+ *
2019
+ * @par Per-Operation Cancellation
2020
+ * This asynchronous operation supports cancellation for the following
2021
+ * asio::cancellation_type values:
2022
+ *
2023
+ * @li @c cancellation_type::terminal
2024
+ *
2025
+ * @li @c cancellation_type::partial
2026
+ *
2027
+ * if they are also supported by the @c AsyncReadStream type's
2028
+ * @c async_read_some operation.
2029
+ */
2030
+ template <typename AsyncReadStream,
2031
+ typename DynamicBuffer_v1, typename MatchCondition,
2032
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2033
+ std::size_t)) ReadHandler
2034
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2035
+ typename AsyncReadStream::executor_type)>
2036
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2037
+ void (asio::error_code, std::size_t))
2038
+ async_read_until(AsyncReadStream& s,
2039
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
2040
+ MatchCondition match_condition,
2041
+ ASIO_MOVE_ARG(ReadHandler) handler
2042
+ ASIO_DEFAULT_COMPLETION_TOKEN(
2043
+ typename AsyncReadStream::executor_type),
2044
+ typename constraint<
2045
+ is_match_condition<MatchCondition>::value
2046
+ >::type = 0,
2047
+ typename constraint<
2048
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
2049
+ >::type = 0,
2050
+ typename constraint<
2051
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
2052
+ >::type = 0);
2053
+
2054
+ #if !defined(ASIO_NO_IOSTREAM)
2055
+
2056
+ /// Start an asynchronous operation to read data into a streambuf until it
2057
+ /// contains a specified delimiter.
2058
+ /**
2059
+ * This function is used to asynchronously read data into the specified
2060
+ * streambuf until the streambuf's get area contains the specified delimiter.
2061
+ * The function call always returns immediately. The asynchronous operation
2062
+ * will continue until one of the following conditions is true:
2063
+ *
2064
+ * @li The get area of the streambuf contains the specified delimiter.
2065
+ *
2066
+ * @li An error occurred.
2067
+ *
2068
+ * This operation is implemented in terms of zero or more calls to the stream's
2069
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2070
+ * the streambuf's get area already contains the delimiter, this asynchronous
2071
+ * operation completes immediately. The program must ensure that the stream
2072
+ * performs no other read operations (such as async_read, async_read_until, the
2073
+ * stream's async_read_some function, or any other composed operations that
2074
+ * perform reads) until this operation completes.
2075
+ *
2076
+ * @param s The stream from which the data is to be read. The type must support
2077
+ * the AsyncReadStream concept.
2078
+ *
2079
+ * @param b A streambuf object into which the data will be read. Ownership of
2080
+ * the streambuf is retained by the caller, which must guarantee that it remains
2081
+ * valid until the handler is called.
2082
+ *
2083
+ * @param delim The delimiter character.
2084
+ *
2085
+ * @param handler The handler to be called when the read operation completes.
2086
+ * Copies will be made of the handler as required. The function signature of the
2087
+ * handler must be:
2088
+ * @code void handler(
2089
+ * // Result of operation.
2090
+ * const asio::error_code& error,
2091
+ *
2092
+ * // The number of bytes in the streambuf's get
2093
+ * // area up to and including the delimiter.
2094
+ * // 0 if an error occurred.
2095
+ * std::size_t bytes_transferred
2096
+ * ); @endcode
2097
+ * Regardless of whether the asynchronous operation completes immediately or
2098
+ * not, the handler will not be invoked from within this function. On
2099
+ * immediate completion, invocation of the handler will be performed in a
2100
+ * manner equivalent to using asio::post().
2101
+ *
2102
+ * @note After a successful async_read_until operation, the streambuf may
2103
+ * contain additional data beyond the delimiter. An application will typically
2104
+ * leave that data in the streambuf for a subsequent async_read_until operation
2105
+ * to examine.
2106
+ *
2107
+ * @par Example
2108
+ * To asynchronously read data into a streambuf until a newline is encountered:
2109
+ * @code asio::streambuf b;
2110
+ * ...
2111
+ * void handler(const asio::error_code& e, std::size_t size)
2112
+ * {
2113
+ * if (!e)
2114
+ * {
2115
+ * std::istream is(&b);
2116
+ * std::string line;
2117
+ * std::getline(is, line);
2118
+ * ...
2119
+ * }
2120
+ * }
2121
+ * ...
2122
+ * asio::async_read_until(s, b, '\n', handler); @endcode
2123
+ * After the @c async_read_until operation completes successfully, the buffer
2124
+ * @c b contains the delimiter:
2125
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
2126
+ * The call to @c std::getline then extracts the data up to and including the
2127
+ * newline (which is discarded), so that the string @c line contains:
2128
+ * @code { 'a', 'b', ..., 'c' } @endcode
2129
+ * The remaining data is left in the buffer @c b as follows:
2130
+ * @code { 'd', 'e', ... } @endcode
2131
+ * This data may be the start of a new line, to be extracted by a subsequent
2132
+ * @c async_read_until operation.
2133
+ *
2134
+ * @par Per-Operation Cancellation
2135
+ * This asynchronous operation supports cancellation for the following
2136
+ * asio::cancellation_type values:
2137
+ *
2138
+ * @li @c cancellation_type::terminal
2139
+ *
2140
+ * @li @c cancellation_type::partial
2141
+ *
2142
+ * if they are also supported by the @c AsyncReadStream type's
2143
+ * @c async_read_some operation.
2144
+ */
2145
+ template <typename AsyncReadStream, typename Allocator,
2146
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2147
+ std::size_t)) ReadHandler
2148
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2149
+ typename AsyncReadStream::executor_type)>
2150
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2151
+ void (asio::error_code, std::size_t))
2152
+ async_read_until(AsyncReadStream& s,
2153
+ asio::basic_streambuf<Allocator>& b, char delim,
2154
+ ASIO_MOVE_ARG(ReadHandler) handler
2155
+ ASIO_DEFAULT_COMPLETION_TOKEN(
2156
+ typename AsyncReadStream::executor_type));
2157
+
2158
+ /// Start an asynchronous operation to read data into a streambuf until it
2159
+ /// contains a specified delimiter.
2160
+ /**
2161
+ * This function is used to asynchronously read data into the specified
2162
+ * streambuf until the streambuf's get area contains the specified delimiter.
2163
+ * The function call always returns immediately. The asynchronous operation
2164
+ * will continue until one of the following conditions is true:
2165
+ *
2166
+ * @li The get area of the streambuf contains the specified delimiter.
2167
+ *
2168
+ * @li An error occurred.
2169
+ *
2170
+ * This operation is implemented in terms of zero or more calls to the stream's
2171
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2172
+ * the streambuf's get area already contains the delimiter, this asynchronous
2173
+ * operation completes immediately. The program must ensure that the stream
2174
+ * performs no other read operations (such as async_read, async_read_until, the
2175
+ * stream's async_read_some function, or any other composed operations that
2176
+ * perform reads) until this operation completes.
2177
+ *
2178
+ * @param s The stream from which the data is to be read. The type must support
2179
+ * the AsyncReadStream concept.
2180
+ *
2181
+ * @param b A streambuf object into which the data will be read. Ownership of
2182
+ * the streambuf is retained by the caller, which must guarantee that it remains
2183
+ * valid until the handler is called.
2184
+ *
2185
+ * @param delim The delimiter string.
2186
+ *
2187
+ * @param handler The handler to be called when the read operation completes.
2188
+ * Copies will be made of the handler as required. The function signature of the
2189
+ * handler must be:
2190
+ * @code void handler(
2191
+ * // Result of operation.
2192
+ * const asio::error_code& error,
2193
+ *
2194
+ * // The number of bytes in the streambuf's get
2195
+ * // area up to and including the delimiter.
2196
+ * // 0 if an error occurred.
2197
+ * std::size_t bytes_transferred
2198
+ * ); @endcode
2199
+ * Regardless of whether the asynchronous operation completes immediately or
2200
+ * not, the handler will not be invoked from within this function. On
2201
+ * immediate completion, invocation of the handler will be performed in a
2202
+ * manner equivalent to using asio::post().
2203
+ *
2204
+ * @note After a successful async_read_until operation, the streambuf may
2205
+ * contain additional data beyond the delimiter. An application will typically
2206
+ * leave that data in the streambuf for a subsequent async_read_until operation
2207
+ * to examine.
2208
+ *
2209
+ * @par Example
2210
+ * To asynchronously read data into a streambuf until a newline is encountered:
2211
+ * @code asio::streambuf b;
2212
+ * ...
2213
+ * void handler(const asio::error_code& e, std::size_t size)
2214
+ * {
2215
+ * if (!e)
2216
+ * {
2217
+ * std::istream is(&b);
2218
+ * std::string line;
2219
+ * std::getline(is, line);
2220
+ * ...
2221
+ * }
2222
+ * }
2223
+ * ...
2224
+ * asio::async_read_until(s, b, "\r\n", handler); @endcode
2225
+ * After the @c async_read_until operation completes successfully, the buffer
2226
+ * @c b contains the delimiter:
2227
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2228
+ * The call to @c std::getline then extracts the data up to and including the
2229
+ * newline (which is discarded), so that the string @c line contains:
2230
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
2231
+ * The remaining data is left in the buffer @c b as follows:
2232
+ * @code { 'd', 'e', ... } @endcode
2233
+ * This data may be the start of a new line, to be extracted by a subsequent
2234
+ * @c async_read_until operation.
2235
+ *
2236
+ * @par Per-Operation Cancellation
2237
+ * This asynchronous operation supports cancellation for the following
2238
+ * asio::cancellation_type values:
2239
+ *
2240
+ * @li @c cancellation_type::terminal
2241
+ *
2242
+ * @li @c cancellation_type::partial
2243
+ *
2244
+ * if they are also supported by the @c AsyncReadStream type's
2245
+ * @c async_read_some operation.
2246
+ */
2247
+ template <typename AsyncReadStream, typename Allocator,
2248
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2249
+ std::size_t)) ReadHandler
2250
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2251
+ typename AsyncReadStream::executor_type)>
2252
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2253
+ void (asio::error_code, std::size_t))
2254
+ async_read_until(AsyncReadStream& s,
2255
+ asio::basic_streambuf<Allocator>& b,
2256
+ ASIO_STRING_VIEW_PARAM delim,
2257
+ ASIO_MOVE_ARG(ReadHandler) handler
2258
+ ASIO_DEFAULT_COMPLETION_TOKEN(
2259
+ typename AsyncReadStream::executor_type));
2260
+
2261
+ #if defined(ASIO_HAS_BOOST_REGEX) \
2262
+ || defined(GENERATING_DOCUMENTATION)
2263
+
2264
+ /// Start an asynchronous operation to read data into a streambuf until some
2265
+ /// part of its data matches a regular expression.
2266
+ /**
2267
+ * This function is used to asynchronously read data into the specified
2268
+ * streambuf until the streambuf's get area contains some data that matches a
2269
+ * regular expression. The function call always returns immediately. The
2270
+ * asynchronous operation will continue until one of the following conditions
2271
+ * is true:
2272
+ *
2273
+ * @li A substring of the streambuf's get area matches the regular expression.
2274
+ *
2275
+ * @li An error occurred.
2276
+ *
2277
+ * This operation is implemented in terms of zero or more calls to the stream's
2278
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2279
+ * the streambuf's get area already contains data that matches the regular
2280
+ * expression, this asynchronous operation completes immediately. The program
2281
+ * must ensure that the stream performs no other read operations (such as
2282
+ * async_read, async_read_until, the stream's async_read_some function, or any
2283
+ * other composed operations that perform reads) until this operation
2284
+ * completes.
2285
+ *
2286
+ * @param s The stream from which the data is to be read. The type must support
2287
+ * the AsyncReadStream concept.
2288
+ *
2289
+ * @param b A streambuf object into which the data will be read. Ownership of
2290
+ * the streambuf is retained by the caller, which must guarantee that it remains
2291
+ * valid until the handler is called.
2292
+ *
2293
+ * @param expr The regular expression.
2294
+ *
2295
+ * @param handler The handler to be called when the read operation completes.
2296
+ * Copies will be made of the handler as required. The function signature of the
2297
+ * handler must be:
2298
+ * @code void handler(
2299
+ * // Result of operation.
2300
+ * const asio::error_code& error,
2301
+ *
2302
+ * // The number of bytes in the streambuf's get
2303
+ * // area up to and including the substring
2304
+ * // that matches the regular. expression.
2305
+ * // 0 if an error occurred.
2306
+ * std::size_t bytes_transferred
2307
+ * ); @endcode
2308
+ * Regardless of whether the asynchronous operation completes immediately or
2309
+ * not, the handler will not be invoked from within this function. On
2310
+ * immediate completion, invocation of the handler will be performed in a
2311
+ * manner equivalent to using asio::post().
2312
+ *
2313
+ * @note After a successful async_read_until operation, the streambuf may
2314
+ * contain additional data beyond that which matched the regular expression. An
2315
+ * application will typically leave that data in the streambuf for a subsequent
2316
+ * async_read_until operation to examine.
2317
+ *
2318
+ * @par Example
2319
+ * To asynchronously read data into a streambuf until a CR-LF sequence is
2320
+ * encountered:
2321
+ * @code asio::streambuf b;
2322
+ * ...
2323
+ * void handler(const asio::error_code& e, std::size_t size)
2324
+ * {
2325
+ * if (!e)
2326
+ * {
2327
+ * std::istream is(&b);
2328
+ * std::string line;
2329
+ * std::getline(is, line);
2330
+ * ...
2331
+ * }
2332
+ * }
2333
+ * ...
2334
+ * asio::async_read_until(s, b, boost::regex("\r\n"), handler); @endcode
2335
+ * After the @c async_read_until operation completes successfully, the buffer
2336
+ * @c b contains the data which matched the regular expression:
2337
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2338
+ * The call to @c std::getline then extracts the data up to and including the
2339
+ * newline (which is discarded), so that the string @c line contains:
2340
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
2341
+ * The remaining data is left in the buffer @c b as follows:
2342
+ * @code { 'd', 'e', ... } @endcode
2343
+ * This data may be the start of a new line, to be extracted by a subsequent
2344
+ * @c async_read_until operation.
2345
+ *
2346
+ * @par Per-Operation Cancellation
2347
+ * This asynchronous operation supports cancellation for the following
2348
+ * asio::cancellation_type values:
2349
+ *
2350
+ * @li @c cancellation_type::terminal
2351
+ *
2352
+ * @li @c cancellation_type::partial
2353
+ *
2354
+ * if they are also supported by the @c AsyncReadStream type's
2355
+ * @c async_read_some operation.
2356
+ */
2357
+ template <typename AsyncReadStream, typename Allocator,
2358
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2359
+ std::size_t)) ReadHandler
2360
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2361
+ typename AsyncReadStream::executor_type)>
2362
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2363
+ void (asio::error_code, std::size_t))
2364
+ async_read_until(AsyncReadStream& s,
2365
+ asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
2366
+ ASIO_MOVE_ARG(ReadHandler) handler
2367
+ ASIO_DEFAULT_COMPLETION_TOKEN(
2368
+ typename AsyncReadStream::executor_type));
2369
+
2370
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
2371
+ // || defined(GENERATING_DOCUMENTATION)
2372
+
2373
+ /// Start an asynchronous operation to read data into a streambuf until a
2374
+ /// function object indicates a match.
2375
+ /**
2376
+ * This function is used to asynchronously read data into the specified
2377
+ * streambuf until a user-defined match condition function object, when applied
2378
+ * to the data contained in the streambuf, indicates a successful match. The
2379
+ * function call always returns immediately. The asynchronous operation will
2380
+ * continue until one of the following conditions is true:
2381
+ *
2382
+ * @li The match condition function object returns a std::pair where the second
2383
+ * element evaluates to true.
2384
+ *
2385
+ * @li An error occurred.
2386
+ *
2387
+ * This operation is implemented in terms of zero or more calls to the stream's
2388
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2389
+ * the match condition function object already indicates a match, this
2390
+ * asynchronous operation completes immediately. The program must ensure that
2391
+ * the stream performs no other read operations (such as async_read,
2392
+ * async_read_until, the stream's async_read_some function, or any other
2393
+ * composed operations that perform reads) until this operation completes.
2394
+ *
2395
+ * @param s The stream from which the data is to be read. The type must support
2396
+ * the AsyncReadStream concept.
2397
+ *
2398
+ * @param b A streambuf object into which the data will be read.
2399
+ *
2400
+ * @param match_condition The function object to be called to determine whether
2401
+ * a match exists. The signature of the function object must be:
2402
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
2403
+ * @endcode
2404
+ * where @c iterator represents the type:
2405
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
2406
+ * @endcode
2407
+ * The iterator parameters @c begin and @c end define the range of bytes to be
2408
+ * scanned to determine whether there is a match. The @c first member of the
2409
+ * return value is an iterator marking one-past-the-end of the bytes that have
2410
+ * been consumed by the match function. This iterator is used to calculate the
2411
+ * @c begin parameter for any subsequent invocation of the match condition. The
2412
+ * @c second member of the return value is true if a match has been found, false
2413
+ * otherwise.
2414
+ *
2415
+ * @param handler The handler to be called when the read operation completes.
2416
+ * Copies will be made of the handler as required. The function signature of the
2417
+ * handler must be:
2418
+ * @code void handler(
2419
+ * // Result of operation.
2420
+ * const asio::error_code& error,
2421
+ *
2422
+ * // The number of bytes in the streambuf's get
2423
+ * // area that have been fully consumed by the
2424
+ * // match function. O if an error occurred.
2425
+ * std::size_t bytes_transferred
2426
+ * ); @endcode
2427
+ * Regardless of whether the asynchronous operation completes immediately or
2428
+ * not, the handler will not be invoked from within this function. On
2429
+ * immediate completion, invocation of the handler will be performed in a
2430
+ * manner equivalent to using asio::post().
2431
+ *
2432
+ * @note After a successful async_read_until operation, the streambuf may
2433
+ * contain additional data beyond that which matched the function object. An
2434
+ * application will typically leave that data in the streambuf for a subsequent
2435
+ * async_read_until operation to examine.
2436
+ *
2437
+ * @note The default implementation of the @c is_match_condition type trait
2438
+ * evaluates to true for function pointers and function objects with a
2439
+ * @c result_type typedef. It must be specialised for other user-defined
2440
+ * function objects.
2441
+ *
2442
+ * @par Examples
2443
+ * To asynchronously read data into a streambuf until whitespace is encountered:
2444
+ * @code typedef asio::buffers_iterator<
2445
+ * asio::streambuf::const_buffers_type> iterator;
2446
+ *
2447
+ * std::pair<iterator, bool>
2448
+ * match_whitespace(iterator begin, iterator end)
2449
+ * {
2450
+ * iterator i = begin;
2451
+ * while (i != end)
2452
+ * if (std::isspace(*i++))
2453
+ * return std::make_pair(i, true);
2454
+ * return std::make_pair(i, false);
2455
+ * }
2456
+ * ...
2457
+ * void handler(const asio::error_code& e, std::size_t size);
2458
+ * ...
2459
+ * asio::streambuf b;
2460
+ * asio::async_read_until(s, b, match_whitespace, handler);
2461
+ * @endcode
2462
+ *
2463
+ * To asynchronously read data into a streambuf until a matching character is
2464
+ * found:
2465
+ * @code class match_char
2466
+ * {
2467
+ * public:
2468
+ * explicit match_char(char c) : c_(c) {}
2469
+ *
2470
+ * template <typename Iterator>
2471
+ * std::pair<Iterator, bool> operator()(
2472
+ * Iterator begin, Iterator end) const
2473
+ * {
2474
+ * Iterator i = begin;
2475
+ * while (i != end)
2476
+ * if (c_ == *i++)
2477
+ * return std::make_pair(i, true);
2478
+ * return std::make_pair(i, false);
2479
+ * }
2480
+ *
2481
+ * private:
2482
+ * char c_;
2483
+ * };
2484
+ *
2485
+ * namespace asio {
2486
+ * template <> struct is_match_condition<match_char>
2487
+ * : public boost::true_type {};
2488
+ * } // namespace asio
2489
+ * ...
2490
+ * void handler(const asio::error_code& e, std::size_t size);
2491
+ * ...
2492
+ * asio::streambuf b;
2493
+ * asio::async_read_until(s, b, match_char('a'), handler);
2494
+ * @endcode
2495
+ *
2496
+ * @par Per-Operation Cancellation
2497
+ * This asynchronous operation supports cancellation for the following
2498
+ * asio::cancellation_type values:
2499
+ *
2500
+ * @li @c cancellation_type::terminal
2501
+ *
2502
+ * @li @c cancellation_type::partial
2503
+ *
2504
+ * if they are also supported by the @c AsyncReadStream type's
2505
+ * @c async_read_some operation.
2506
+ */
2507
+ template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
2508
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2509
+ std::size_t)) ReadHandler
2510
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2511
+ typename AsyncReadStream::executor_type)>
2512
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2513
+ void (asio::error_code, std::size_t))
2514
+ async_read_until(AsyncReadStream& s,
2515
+ asio::basic_streambuf<Allocator>& b,
2516
+ MatchCondition match_condition,
2517
+ ASIO_MOVE_ARG(ReadHandler) handler
2518
+ ASIO_DEFAULT_COMPLETION_TOKEN(
2519
+ typename AsyncReadStream::executor_type),
2520
+ typename constraint<is_match_condition<MatchCondition>::value>::type = 0);
2521
+
2522
+ #endif // !defined(ASIO_NO_IOSTREAM)
2523
+ #endif // !defined(ASIO_NO_EXTENSIONS)
2524
+ #endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
2525
+
2526
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
2527
+ /// until it contains a specified delimiter.
2528
+ /**
2529
+ * This function is used to asynchronously read data into the specified dynamic
2530
+ * buffer sequence until the dynamic buffer sequence's get area contains the
2531
+ * specified delimiter. The function call always returns immediately. The
2532
+ * asynchronous operation will continue until one of the following conditions
2533
+ * is true:
2534
+ *
2535
+ * @li The get area of the dynamic buffer sequence contains the specified
2536
+ * delimiter.
2537
+ *
2538
+ * @li An error occurred.
2539
+ *
2540
+ * This operation is implemented in terms of zero or more calls to the stream's
2541
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2542
+ * the dynamic buffer sequence's get area already contains the delimiter, this
2543
+ * asynchronous operation completes immediately. The program must ensure that
2544
+ * the stream performs no other read operations (such as async_read,
2545
+ * async_read_until, the stream's async_read_some function, or any other
2546
+ * composed operations that perform reads) until this operation completes.
2547
+ *
2548
+ * @param s The stream from which the data is to be read. The type must support
2549
+ * the AsyncReadStream concept.
2550
+ *
2551
+ * @param buffers The dynamic buffer sequence into which the data will be read.
2552
+ * Although the buffers object may be copied as necessary, ownership of the
2553
+ * underlying memory blocks is retained by the caller, which must guarantee
2554
+ * that they remain valid until the handler is called.
2555
+ *
2556
+ * @param delim The delimiter character.
2557
+ *
2558
+ * @param handler The handler to be called when the read operation completes.
2559
+ * Copies will be made of the handler as required. The function signature of the
2560
+ * handler must be:
2561
+ * @code void handler(
2562
+ * // Result of operation.
2563
+ * const asio::error_code& error,
2564
+ *
2565
+ * // The number of bytes in the dynamic buffer sequence's
2566
+ * // get area up to and including the delimiter.
2567
+ * // 0 if an error occurred.
2568
+ * std::size_t bytes_transferred
2569
+ * ); @endcode
2570
+ * Regardless of whether the asynchronous operation completes immediately or
2571
+ * not, the handler will not be invoked from within this function. On
2572
+ * immediate completion, invocation of the handler will be performed in a
2573
+ * manner equivalent to using asio::post().
2574
+ *
2575
+ * @note After a successful async_read_until operation, the dynamic buffer
2576
+ * sequence may contain additional data beyond the delimiter. An application
2577
+ * will typically leave that data in the dynamic buffer sequence for a
2578
+ * subsequent async_read_until operation to examine.
2579
+ *
2580
+ * @par Example
2581
+ * To asynchronously read data into a @c std::string until a newline is
2582
+ * encountered:
2583
+ * @code std::string data;
2584
+ * ...
2585
+ * void handler(const asio::error_code& e, std::size_t size)
2586
+ * {
2587
+ * if (!e)
2588
+ * {
2589
+ * std::string line = data.substr(0, n);
2590
+ * data.erase(0, n);
2591
+ * ...
2592
+ * }
2593
+ * }
2594
+ * ...
2595
+ * asio::async_read_until(s, data, '\n', handler); @endcode
2596
+ * After the @c async_read_until operation completes successfully, the buffer
2597
+ * @c data contains the delimiter:
2598
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
2599
+ * The call to @c substr then extracts the data up to and including the
2600
+ * delimiter, so that the string @c line contains:
2601
+ * @code { 'a', 'b', ..., 'c', '\n' } @endcode
2602
+ * After the call to @c erase, the remaining data is left in the buffer @c data
2603
+ * as follows:
2604
+ * @code { 'd', 'e', ... } @endcode
2605
+ * This data may be the start of a new line, to be extracted by a subsequent
2606
+ * @c async_read_until operation.
2607
+ *
2608
+ * @par Per-Operation Cancellation
2609
+ * This asynchronous operation supports cancellation for the following
2610
+ * asio::cancellation_type values:
2611
+ *
2612
+ * @li @c cancellation_type::terminal
2613
+ *
2614
+ * @li @c cancellation_type::partial
2615
+ *
2616
+ * if they are also supported by the @c AsyncReadStream type's
2617
+ * @c async_read_some operation.
2618
+ */
2619
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2620
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2621
+ std::size_t)) ReadHandler
2622
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2623
+ typename AsyncReadStream::executor_type)>
2624
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2625
+ void (asio::error_code, std::size_t))
2626
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
2627
+ ASIO_MOVE_ARG(ReadHandler) handler
2628
+ ASIO_DEFAULT_COMPLETION_TOKEN(
2629
+ typename AsyncReadStream::executor_type),
2630
+ typename constraint<
2631
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2632
+ >::type = 0);
2633
+
2634
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
2635
+ /// until it contains a specified delimiter.
2636
+ /**
2637
+ * This function is used to asynchronously read data into the specified dynamic
2638
+ * buffer sequence until the dynamic buffer sequence's get area contains the
2639
+ * specified delimiter. The function call always returns immediately. The
2640
+ * asynchronous operation will continue until one of the following conditions
2641
+ * is true:
2642
+ *
2643
+ * @li The get area of the dynamic buffer sequence contains the specified
2644
+ * delimiter.
2645
+ *
2646
+ * @li An error occurred.
2647
+ *
2648
+ * This operation is implemented in terms of zero or more calls to the stream's
2649
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2650
+ * the dynamic buffer sequence's get area already contains the delimiter, this
2651
+ * asynchronous operation completes immediately. The program must ensure that
2652
+ * the stream performs no other read operations (such as async_read,
2653
+ * async_read_until, the stream's async_read_some function, or any other
2654
+ * composed operations that perform reads) until this operation completes.
2655
+ *
2656
+ * @param s The stream from which the data is to be read. The type must support
2657
+ * the AsyncReadStream concept.
2658
+ *
2659
+ * @param buffers The dynamic buffer sequence into which the data will be read.
2660
+ * Although the buffers object may be copied as necessary, ownership of the
2661
+ * underlying memory blocks is retained by the caller, which must guarantee
2662
+ * that they remain valid until the handler is called.
2663
+ *
2664
+ * @param delim The delimiter string.
2665
+ *
2666
+ * @param handler The handler to be called when the read operation completes.
2667
+ * Copies will be made of the handler as required. The function signature of the
2668
+ * handler must be:
2669
+ * @code void handler(
2670
+ * // Result of operation.
2671
+ * const asio::error_code& error,
2672
+ *
2673
+ * // The number of bytes in the dynamic buffer sequence's
2674
+ * // get area up to and including the delimiter.
2675
+ * // 0 if an error occurred.
2676
+ * std::size_t bytes_transferred
2677
+ * ); @endcode
2678
+ * Regardless of whether the asynchronous operation completes immediately or
2679
+ * not, the handler will not be invoked from within this function. On
2680
+ * immediate completion, invocation of the handler will be performed in a
2681
+ * manner equivalent to using asio::post().
2682
+ *
2683
+ * @note After a successful async_read_until operation, the dynamic buffer
2684
+ * sequence may contain additional data beyond the delimiter. An application
2685
+ * will typically leave that data in the dynamic buffer sequence for a
2686
+ * subsequent async_read_until operation to examine.
2687
+ *
2688
+ * @par Example
2689
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
2690
+ * encountered:
2691
+ * @code std::string data;
2692
+ * ...
2693
+ * void handler(const asio::error_code& e, std::size_t size)
2694
+ * {
2695
+ * if (!e)
2696
+ * {
2697
+ * std::string line = data.substr(0, n);
2698
+ * data.erase(0, n);
2699
+ * ...
2700
+ * }
2701
+ * }
2702
+ * ...
2703
+ * asio::async_read_until(s, data, "\r\n", handler); @endcode
2704
+ * After the @c async_read_until operation completes successfully, the string
2705
+ * @c data contains the delimiter:
2706
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2707
+ * The call to @c substr then extracts the data up to and including the
2708
+ * delimiter, so that the string @c line contains:
2709
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
2710
+ * After the call to @c erase, the remaining data is left in the string @c data
2711
+ * as follows:
2712
+ * @code { 'd', 'e', ... } @endcode
2713
+ * This data may be the start of a new line, to be extracted by a subsequent
2714
+ * @c async_read_until operation.
2715
+ *
2716
+ * @par Per-Operation Cancellation
2717
+ * This asynchronous operation supports cancellation for the following
2718
+ * asio::cancellation_type values:
2719
+ *
2720
+ * @li @c cancellation_type::terminal
2721
+ *
2722
+ * @li @c cancellation_type::partial
2723
+ *
2724
+ * if they are also supported by the @c AsyncReadStream type's
2725
+ * @c async_read_some operation.
2726
+ */
2727
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2728
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2729
+ std::size_t)) ReadHandler
2730
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2731
+ typename AsyncReadStream::executor_type)>
2732
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2733
+ void (asio::error_code, std::size_t))
2734
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2735
+ ASIO_STRING_VIEW_PARAM delim,
2736
+ ASIO_MOVE_ARG(ReadHandler) handler
2737
+ ASIO_DEFAULT_COMPLETION_TOKEN(
2738
+ typename AsyncReadStream::executor_type),
2739
+ typename constraint<
2740
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2741
+ >::type = 0);
2742
+
2743
+ #if !defined(ASIO_NO_EXTENSIONS)
2744
+ #if defined(ASIO_HAS_BOOST_REGEX) \
2745
+ || defined(GENERATING_DOCUMENTATION)
2746
+
2747
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
2748
+ /// until some part of its data matches a regular expression.
2749
+ /**
2750
+ * This function is used to asynchronously read data into the specified dynamic
2751
+ * buffer sequence until the dynamic buffer sequence's get area contains some
2752
+ * data that matches a regular expression. The function call always returns
2753
+ * immediately. The asynchronous operation will continue until one of the
2754
+ * following conditions is true:
2755
+ *
2756
+ * @li A substring of the dynamic buffer sequence's get area matches the regular
2757
+ * expression.
2758
+ *
2759
+ * @li An error occurred.
2760
+ *
2761
+ * This operation is implemented in terms of zero or more calls to the stream's
2762
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2763
+ * the dynamic buffer sequence's get area already contains data that matches
2764
+ * the regular expression, this asynchronous operation completes immediately.
2765
+ * The program must ensure that the stream performs no other read operations
2766
+ * (such as async_read, async_read_until, the stream's async_read_some
2767
+ * function, or any other composed operations that perform reads) until this
2768
+ * operation completes.
2769
+ *
2770
+ * @param s The stream from which the data is to be read. The type must support
2771
+ * the AsyncReadStream concept.
2772
+ *
2773
+ * @param buffers The dynamic buffer sequence into which the data will be read.
2774
+ * Although the buffers object may be copied as necessary, ownership of the
2775
+ * underlying memory blocks is retained by the caller, which must guarantee
2776
+ * that they remain valid until the handler is called.
2777
+ *
2778
+ * @param expr The regular expression.
2779
+ *
2780
+ * @param handler The handler to be called when the read operation completes.
2781
+ * Copies will be made of the handler as required. The function signature of the
2782
+ * handler must be:
2783
+ * @code void handler(
2784
+ * // Result of operation.
2785
+ * const asio::error_code& error,
2786
+ *
2787
+ * // The number of bytes in the dynamic buffer
2788
+ * // sequence's get area up to and including the
2789
+ * // substring that matches the regular expression.
2790
+ * // 0 if an error occurred.
2791
+ * std::size_t bytes_transferred
2792
+ * ); @endcode
2793
+ * Regardless of whether the asynchronous operation completes immediately or
2794
+ * not, the handler will not be invoked from within this function. On
2795
+ * immediate completion, invocation of the handler will be performed in a
2796
+ * manner equivalent to using asio::post().
2797
+ *
2798
+ * @note After a successful async_read_until operation, the dynamic buffer
2799
+ * sequence may contain additional data beyond that which matched the regular
2800
+ * expression. An application will typically leave that data in the dynamic
2801
+ * buffer sequence for a subsequent async_read_until operation to examine.
2802
+ *
2803
+ * @par Example
2804
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
2805
+ * encountered:
2806
+ * @code std::string data;
2807
+ * ...
2808
+ * void handler(const asio::error_code& e, std::size_t size)
2809
+ * {
2810
+ * if (!e)
2811
+ * {
2812
+ * std::string line = data.substr(0, n);
2813
+ * data.erase(0, n);
2814
+ * ...
2815
+ * }
2816
+ * }
2817
+ * ...
2818
+ * asio::async_read_until(s, data,
2819
+ * boost::regex("\r\n"), handler); @endcode
2820
+ * After the @c async_read_until operation completes successfully, the string
2821
+ * @c data contains the data which matched the regular expression:
2822
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2823
+ * The call to @c substr then extracts the data up to and including the match,
2824
+ * so that the string @c line contains:
2825
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
2826
+ * After the call to @c erase, the remaining data is left in the string @c data
2827
+ * as follows:
2828
+ * @code { 'd', 'e', ... } @endcode
2829
+ * This data may be the start of a new line, to be extracted by a subsequent
2830
+ * @c async_read_until operation.
2831
+ *
2832
+ * @par Per-Operation Cancellation
2833
+ * This asynchronous operation supports cancellation for the following
2834
+ * asio::cancellation_type values:
2835
+ *
2836
+ * @li @c cancellation_type::terminal
2837
+ *
2838
+ * @li @c cancellation_type::partial
2839
+ *
2840
+ * if they are also supported by the @c AsyncReadStream type's
2841
+ * @c async_read_some operation.
2842
+ */
2843
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2844
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2845
+ std::size_t)) ReadHandler
2846
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2847
+ typename AsyncReadStream::executor_type)>
2848
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2849
+ void (asio::error_code, std::size_t))
2850
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2851
+ const boost::regex& expr,
2852
+ ASIO_MOVE_ARG(ReadHandler) handler
2853
+ ASIO_DEFAULT_COMPLETION_TOKEN(
2854
+ typename AsyncReadStream::executor_type),
2855
+ typename constraint<
2856
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2857
+ >::type = 0);
2858
+
2859
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
2860
+ // || defined(GENERATING_DOCUMENTATION)
2861
+
2862
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
2863
+ /// until a function object indicates a match.
2864
+ /**
2865
+ * This function is used to asynchronously read data into the specified dynamic
2866
+ * buffer sequence until a user-defined match condition function object, when
2867
+ * applied to the data contained in the dynamic buffer sequence, indicates a
2868
+ * successful match. The function call always returns immediately. The
2869
+ * asynchronous operation will continue until one of the following conditions
2870
+ * is true:
2871
+ *
2872
+ * @li The match condition function object returns a std::pair where the second
2873
+ * element evaluates to true.
2874
+ *
2875
+ * @li An error occurred.
2876
+ *
2877
+ * This operation is implemented in terms of zero or more calls to the stream's
2878
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2879
+ * the match condition function object already indicates a match, this
2880
+ * asynchronous operation completes immediately. The program must ensure that
2881
+ * the stream performs no other read operations (such as async_read,
2882
+ * async_read_until, the stream's async_read_some function, or any other
2883
+ * composed operations that perform reads) until this operation completes.
2884
+ *
2885
+ * @param s The stream from which the data is to be read. The type must support
2886
+ * the AsyncReadStream concept.
2887
+ *
2888
+ * @param buffers The dynamic buffer sequence into which the data will be read.
2889
+ * Although the buffers object may be copied as necessary, ownership of the
2890
+ * underlying memory blocks is retained by the caller, which must guarantee
2891
+ * that they remain valid until the handler is called.
2892
+ *
2893
+ * @param match_condition The function object to be called to determine whether
2894
+ * a match exists. The signature of the function object must be:
2895
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
2896
+ * @endcode
2897
+ * where @c iterator represents the type:
2898
+ * @code buffers_iterator<typename DynamicBuffer_v2::const_buffers_type>
2899
+ * @endcode
2900
+ * The iterator parameters @c begin and @c end define the range of bytes to be
2901
+ * scanned to determine whether there is a match. The @c first member of the
2902
+ * return value is an iterator marking one-past-the-end of the bytes that have
2903
+ * been consumed by the match function. This iterator is used to calculate the
2904
+ * @c begin parameter for any subsequent invocation of the match condition. The
2905
+ * @c second member of the return value is true if a match has been found, false
2906
+ * otherwise.
2907
+ *
2908
+ * @param handler The handler to be called when the read operation completes.
2909
+ * Copies will be made of the handler as required. The function signature of the
2910
+ * handler must be:
2911
+ * @code void handler(
2912
+ * // Result of operation.
2913
+ * const asio::error_code& error,
2914
+ *
2915
+ * // The number of bytes in the dynamic buffer sequence's
2916
+ * // get area that have been fully consumed by the match
2917
+ * // function. O if an error occurred.
2918
+ * std::size_t bytes_transferred
2919
+ * ); @endcode
2920
+ * Regardless of whether the asynchronous operation completes immediately or
2921
+ * not, the handler will not be invoked from within this function. On
2922
+ * immediate completion, invocation of the handler will be performed in a
2923
+ * manner equivalent to using asio::post().
2924
+ *
2925
+ * @note After a successful async_read_until operation, the dynamic buffer
2926
+ * sequence may contain additional data beyond that which matched the function
2927
+ * object. An application will typically leave that data in the dynamic buffer
2928
+ * sequence for a subsequent async_read_until operation to examine.
2929
+ *
2930
+ * @note The default implementation of the @c is_match_condition type trait
2931
+ * evaluates to true for function pointers and function objects with a
2932
+ * @c result_type typedef. It must be specialised for other user-defined
2933
+ * function objects.
2934
+ *
2935
+ * @par Examples
2936
+ * To asynchronously read data into a @c std::string until whitespace is
2937
+ * encountered:
2938
+ * @code typedef asio::buffers_iterator<
2939
+ * asio::const_buffers_1> iterator;
2940
+ *
2941
+ * std::pair<iterator, bool>
2942
+ * match_whitespace(iterator begin, iterator end)
2943
+ * {
2944
+ * iterator i = begin;
2945
+ * while (i != end)
2946
+ * if (std::isspace(*i++))
2947
+ * return std::make_pair(i, true);
2948
+ * return std::make_pair(i, false);
2949
+ * }
2950
+ * ...
2951
+ * void handler(const asio::error_code& e, std::size_t size);
2952
+ * ...
2953
+ * std::string data;
2954
+ * asio::async_read_until(s, data, match_whitespace, handler);
2955
+ * @endcode
2956
+ *
2957
+ * To asynchronously read data into a @c std::string until a matching character
2958
+ * is found:
2959
+ * @code class match_char
2960
+ * {
2961
+ * public:
2962
+ * explicit match_char(char c) : c_(c) {}
2963
+ *
2964
+ * template <typename Iterator>
2965
+ * std::pair<Iterator, bool> operator()(
2966
+ * Iterator begin, Iterator end) const
2967
+ * {
2968
+ * Iterator i = begin;
2969
+ * while (i != end)
2970
+ * if (c_ == *i++)
2971
+ * return std::make_pair(i, true);
2972
+ * return std::make_pair(i, false);
2973
+ * }
2974
+ *
2975
+ * private:
2976
+ * char c_;
2977
+ * };
2978
+ *
2979
+ * namespace asio {
2980
+ * template <> struct is_match_condition<match_char>
2981
+ * : public boost::true_type {};
2982
+ * } // namespace asio
2983
+ * ...
2984
+ * void handler(const asio::error_code& e, std::size_t size);
2985
+ * ...
2986
+ * std::string data;
2987
+ * asio::async_read_until(s, data, match_char('a'), handler);
2988
+ * @endcode
2989
+ *
2990
+ * @par Per-Operation Cancellation
2991
+ * This asynchronous operation supports cancellation for the following
2992
+ * asio::cancellation_type values:
2993
+ *
2994
+ * @li @c cancellation_type::terminal
2995
+ *
2996
+ * @li @c cancellation_type::partial
2997
+ *
2998
+ * if they are also supported by the @c AsyncReadStream type's
2999
+ * @c async_read_some operation.
3000
+ */
3001
+ template <typename AsyncReadStream,
3002
+ typename DynamicBuffer_v2, typename MatchCondition,
3003
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
3004
+ std::size_t)) ReadHandler
3005
+ ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
3006
+ typename AsyncReadStream::executor_type)>
3007
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
3008
+ void (asio::error_code, std::size_t))
3009
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
3010
+ MatchCondition match_condition,
3011
+ ASIO_MOVE_ARG(ReadHandler) handler
3012
+ ASIO_DEFAULT_COMPLETION_TOKEN(
3013
+ typename AsyncReadStream::executor_type),
3014
+ typename constraint<
3015
+ is_match_condition<MatchCondition>::value
3016
+ >::type = 0,
3017
+ typename constraint<
3018
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
3019
+ >::type = 0);
3020
+
3021
+ #endif // !defined(ASIO_NO_EXTENSIONS)
3022
+
3023
+ /*@}*/
3024
+
3025
+ } // namespace asio
3026
+
3027
+ #include "asio/detail/pop_options.hpp"
3028
+
3029
+ #include "asio/impl/read_until.hpp"
3030
+
3031
+ #endif // ASIO_READ_UNTIL_HPP