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,3315 @@
1
+ //
2
+ // impl/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_IMPL_READ_UNTIL_HPP
12
+ #define ASIO_IMPL_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 <algorithm>
19
+ #include <string>
20
+ #include <vector>
21
+ #include <utility>
22
+ #include "asio/associator.hpp"
23
+ #include "asio/buffer.hpp"
24
+ #include "asio/buffers_iterator.hpp"
25
+ #include "asio/detail/base_from_cancellation_state.hpp"
26
+ #include "asio/detail/bind_handler.hpp"
27
+ #include "asio/detail/handler_alloc_helpers.hpp"
28
+ #include "asio/detail/handler_cont_helpers.hpp"
29
+ #include "asio/detail/handler_invoke_helpers.hpp"
30
+ #include "asio/detail/handler_tracking.hpp"
31
+ #include "asio/detail/handler_type_requirements.hpp"
32
+ #include "asio/detail/limits.hpp"
33
+ #include "asio/detail/non_const_lvalue.hpp"
34
+ #include "asio/detail/throw_error.hpp"
35
+
36
+ #include "asio/detail/push_options.hpp"
37
+
38
+ namespace asio {
39
+
40
+ namespace detail
41
+ {
42
+ // Algorithm that finds a subsequence of equal values in a sequence. Returns
43
+ // (iterator,true) if a full match was found, in which case the iterator
44
+ // points to the beginning of the match. Returns (iterator,false) if a
45
+ // partial match was found at the end of the first sequence, in which case
46
+ // the iterator points to the beginning of the partial match. Returns
47
+ // (last1,false) if no full or partial match was found.
48
+ template <typename Iterator1, typename Iterator2>
49
+ std::pair<Iterator1, bool> partial_search(
50
+ Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2)
51
+ {
52
+ for (Iterator1 iter1 = first1; iter1 != last1; ++iter1)
53
+ {
54
+ Iterator1 test_iter1 = iter1;
55
+ Iterator2 test_iter2 = first2;
56
+ for (;; ++test_iter1, ++test_iter2)
57
+ {
58
+ if (test_iter2 == last2)
59
+ return std::make_pair(iter1, true);
60
+ if (test_iter1 == last1)
61
+ {
62
+ if (test_iter2 != first2)
63
+ return std::make_pair(iter1, false);
64
+ else
65
+ break;
66
+ }
67
+ if (*test_iter1 != *test_iter2)
68
+ break;
69
+ }
70
+ }
71
+ return std::make_pair(last1, false);
72
+ }
73
+ } // namespace detail
74
+
75
+ #if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
76
+
77
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
78
+ inline std::size_t read_until(SyncReadStream& s,
79
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
80
+ typename constraint<
81
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
82
+ >::type,
83
+ typename constraint<
84
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
85
+ >::type)
86
+ {
87
+ asio::error_code ec;
88
+ std::size_t bytes_transferred = read_until(s,
89
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), delim, ec);
90
+ asio::detail::throw_error(ec, "read_until");
91
+ return bytes_transferred;
92
+ }
93
+
94
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
95
+ std::size_t read_until(SyncReadStream& s,
96
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
97
+ char delim, asio::error_code& ec,
98
+ typename constraint<
99
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
100
+ >::type,
101
+ typename constraint<
102
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
103
+ >::type)
104
+ {
105
+ typename decay<DynamicBuffer_v1>::type b(
106
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers));
107
+
108
+ std::size_t search_position = 0;
109
+ for (;;)
110
+ {
111
+ // Determine the range of the data to be searched.
112
+ typedef typename DynamicBuffer_v1::const_buffers_type buffers_type;
113
+ typedef buffers_iterator<buffers_type> iterator;
114
+ buffers_type data_buffers = b.data();
115
+ iterator begin = iterator::begin(data_buffers);
116
+ iterator start_pos = begin + search_position;
117
+ iterator end = iterator::end(data_buffers);
118
+
119
+ // Look for a match.
120
+ iterator iter = std::find(start_pos, end, delim);
121
+ if (iter != end)
122
+ {
123
+ // Found a match. We're done.
124
+ ec = asio::error_code();
125
+ return iter - begin + 1;
126
+ }
127
+ else
128
+ {
129
+ // No match. Next search can start with the new data.
130
+ search_position = end - begin;
131
+ }
132
+
133
+ // Check if buffer is full.
134
+ if (b.size() == b.max_size())
135
+ {
136
+ ec = error::not_found;
137
+ return 0;
138
+ }
139
+
140
+ // Need more data.
141
+ std::size_t bytes_to_read = std::min<std::size_t>(
142
+ std::max<std::size_t>(512, b.capacity() - b.size()),
143
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
144
+ b.commit(s.read_some(b.prepare(bytes_to_read), ec));
145
+ if (ec)
146
+ return 0;
147
+ }
148
+ }
149
+
150
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
151
+ inline std::size_t read_until(SyncReadStream& s,
152
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
153
+ ASIO_STRING_VIEW_PARAM delim,
154
+ typename constraint<
155
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
156
+ >::type,
157
+ typename constraint<
158
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
159
+ >::type)
160
+ {
161
+ asio::error_code ec;
162
+ std::size_t bytes_transferred = read_until(s,
163
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), delim, ec);
164
+ asio::detail::throw_error(ec, "read_until");
165
+ return bytes_transferred;
166
+ }
167
+
168
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
169
+ std::size_t read_until(SyncReadStream& s,
170
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
171
+ ASIO_STRING_VIEW_PARAM delim, asio::error_code& ec,
172
+ typename constraint<
173
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
174
+ >::type,
175
+ typename constraint<
176
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
177
+ >::type)
178
+ {
179
+ typename decay<DynamicBuffer_v1>::type b(
180
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers));
181
+
182
+ std::size_t search_position = 0;
183
+ for (;;)
184
+ {
185
+ // Determine the range of the data to be searched.
186
+ typedef typename DynamicBuffer_v1::const_buffers_type buffers_type;
187
+ typedef buffers_iterator<buffers_type> iterator;
188
+ buffers_type data_buffers = b.data();
189
+ iterator begin = iterator::begin(data_buffers);
190
+ iterator start_pos = begin + search_position;
191
+ iterator end = iterator::end(data_buffers);
192
+
193
+ // Look for a match.
194
+ std::pair<iterator, bool> result = detail::partial_search(
195
+ start_pos, end, delim.begin(), delim.end());
196
+ if (result.first != end)
197
+ {
198
+ if (result.second)
199
+ {
200
+ // Full match. We're done.
201
+ ec = asio::error_code();
202
+ return result.first - begin + delim.length();
203
+ }
204
+ else
205
+ {
206
+ // Partial match. Next search needs to start from beginning of match.
207
+ search_position = result.first - begin;
208
+ }
209
+ }
210
+ else
211
+ {
212
+ // No match. Next search can start with the new data.
213
+ search_position = end - begin;
214
+ }
215
+
216
+ // Check if buffer is full.
217
+ if (b.size() == b.max_size())
218
+ {
219
+ ec = error::not_found;
220
+ return 0;
221
+ }
222
+
223
+ // Need more data.
224
+ std::size_t bytes_to_read = std::min<std::size_t>(
225
+ std::max<std::size_t>(512, b.capacity() - b.size()),
226
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
227
+ b.commit(s.read_some(b.prepare(bytes_to_read), ec));
228
+ if (ec)
229
+ return 0;
230
+ }
231
+ }
232
+
233
+ #if !defined(ASIO_NO_EXTENSIONS)
234
+ #if defined(ASIO_HAS_BOOST_REGEX)
235
+
236
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
237
+ inline std::size_t read_until(SyncReadStream& s,
238
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
239
+ const boost::regex& expr,
240
+ typename constraint<
241
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
242
+ >::type,
243
+ typename constraint<
244
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
245
+ >::type)
246
+ {
247
+ asio::error_code ec;
248
+ std::size_t bytes_transferred = read_until(s,
249
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), expr, ec);
250
+ asio::detail::throw_error(ec, "read_until");
251
+ return bytes_transferred;
252
+ }
253
+
254
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
255
+ std::size_t read_until(SyncReadStream& s,
256
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
257
+ const boost::regex& expr, asio::error_code& ec,
258
+ typename constraint<
259
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
260
+ >::type,
261
+ typename constraint<
262
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
263
+ >::type)
264
+ {
265
+ typename decay<DynamicBuffer_v1>::type b(
266
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers));
267
+
268
+ std::size_t search_position = 0;
269
+ for (;;)
270
+ {
271
+ // Determine the range of the data to be searched.
272
+ typedef typename DynamicBuffer_v1::const_buffers_type buffers_type;
273
+ typedef buffers_iterator<buffers_type> iterator;
274
+ buffers_type data_buffers = b.data();
275
+ iterator begin = iterator::begin(data_buffers);
276
+ iterator start_pos = begin + search_position;
277
+ iterator end = iterator::end(data_buffers);
278
+
279
+ // Look for a match.
280
+ boost::match_results<iterator,
281
+ typename std::vector<boost::sub_match<iterator> >::allocator_type>
282
+ match_results;
283
+ if (regex_search(start_pos, end, match_results, expr,
284
+ boost::match_default | boost::match_partial))
285
+ {
286
+ if (match_results[0].matched)
287
+ {
288
+ // Full match. We're done.
289
+ ec = asio::error_code();
290
+ return match_results[0].second - begin;
291
+ }
292
+ else
293
+ {
294
+ // Partial match. Next search needs to start from beginning of match.
295
+ search_position = match_results[0].first - begin;
296
+ }
297
+ }
298
+ else
299
+ {
300
+ // No match. Next search can start with the new data.
301
+ search_position = end - begin;
302
+ }
303
+
304
+ // Check if buffer is full.
305
+ if (b.size() == b.max_size())
306
+ {
307
+ ec = error::not_found;
308
+ return 0;
309
+ }
310
+
311
+ // Need more data.
312
+ std::size_t bytes_to_read = std::min<std::size_t>(
313
+ std::max<std::size_t>(512, b.capacity() - b.size()),
314
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
315
+ b.commit(s.read_some(b.prepare(bytes_to_read), ec));
316
+ if (ec)
317
+ return 0;
318
+ }
319
+ }
320
+
321
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
322
+
323
+ template <typename SyncReadStream,
324
+ typename DynamicBuffer_v1, typename MatchCondition>
325
+ inline std::size_t read_until(SyncReadStream& s,
326
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
327
+ MatchCondition match_condition,
328
+ typename constraint<
329
+ is_match_condition<MatchCondition>::value
330
+ >::type,
331
+ typename constraint<
332
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
333
+ >::type,
334
+ typename constraint<
335
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
336
+ >::type)
337
+ {
338
+ asio::error_code ec;
339
+ std::size_t bytes_transferred = read_until(s,
340
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers),
341
+ match_condition, ec);
342
+ asio::detail::throw_error(ec, "read_until");
343
+ return bytes_transferred;
344
+ }
345
+
346
+ template <typename SyncReadStream,
347
+ typename DynamicBuffer_v1, typename MatchCondition>
348
+ std::size_t read_until(SyncReadStream& s,
349
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
350
+ MatchCondition match_condition, asio::error_code& ec,
351
+ typename constraint<
352
+ is_match_condition<MatchCondition>::value
353
+ >::type,
354
+ typename constraint<
355
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
356
+ >::type,
357
+ typename constraint<
358
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
359
+ >::type)
360
+ {
361
+ typename decay<DynamicBuffer_v1>::type b(
362
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers));
363
+
364
+ std::size_t search_position = 0;
365
+ for (;;)
366
+ {
367
+ // Determine the range of the data to be searched.
368
+ typedef typename DynamicBuffer_v1::const_buffers_type buffers_type;
369
+ typedef buffers_iterator<buffers_type> iterator;
370
+ buffers_type data_buffers = b.data();
371
+ iterator begin = iterator::begin(data_buffers);
372
+ iterator start_pos = begin + search_position;
373
+ iterator end = iterator::end(data_buffers);
374
+
375
+ // Look for a match.
376
+ std::pair<iterator, bool> result = match_condition(start_pos, end);
377
+ if (result.second)
378
+ {
379
+ // Full match. We're done.
380
+ ec = asio::error_code();
381
+ return result.first - begin;
382
+ }
383
+ else if (result.first != end)
384
+ {
385
+ // Partial match. Next search needs to start from beginning of match.
386
+ search_position = result.first - begin;
387
+ }
388
+ else
389
+ {
390
+ // No match. Next search can start with the new data.
391
+ search_position = end - begin;
392
+ }
393
+
394
+ // Check if buffer is full.
395
+ if (b.size() == b.max_size())
396
+ {
397
+ ec = error::not_found;
398
+ return 0;
399
+ }
400
+
401
+ // Need more data.
402
+ std::size_t bytes_to_read = std::min<std::size_t>(
403
+ std::max<std::size_t>(512, b.capacity() - b.size()),
404
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
405
+ b.commit(s.read_some(b.prepare(bytes_to_read), ec));
406
+ if (ec)
407
+ return 0;
408
+ }
409
+ }
410
+
411
+ #if !defined(ASIO_NO_IOSTREAM)
412
+
413
+ template <typename SyncReadStream, typename Allocator>
414
+ inline std::size_t read_until(SyncReadStream& s,
415
+ asio::basic_streambuf<Allocator>& b, char delim)
416
+ {
417
+ return read_until(s, basic_streambuf_ref<Allocator>(b), delim);
418
+ }
419
+
420
+ template <typename SyncReadStream, typename Allocator>
421
+ inline std::size_t read_until(SyncReadStream& s,
422
+ asio::basic_streambuf<Allocator>& b, char delim,
423
+ asio::error_code& ec)
424
+ {
425
+ return read_until(s, basic_streambuf_ref<Allocator>(b), delim, ec);
426
+ }
427
+
428
+ template <typename SyncReadStream, typename Allocator>
429
+ inline std::size_t read_until(SyncReadStream& s,
430
+ asio::basic_streambuf<Allocator>& b,
431
+ ASIO_STRING_VIEW_PARAM delim)
432
+ {
433
+ return read_until(s, basic_streambuf_ref<Allocator>(b), delim);
434
+ }
435
+
436
+ template <typename SyncReadStream, typename Allocator>
437
+ inline std::size_t read_until(SyncReadStream& s,
438
+ asio::basic_streambuf<Allocator>& b,
439
+ ASIO_STRING_VIEW_PARAM delim, asio::error_code& ec)
440
+ {
441
+ return read_until(s, basic_streambuf_ref<Allocator>(b), delim, ec);
442
+ }
443
+
444
+ #if defined(ASIO_HAS_BOOST_REGEX)
445
+
446
+ template <typename SyncReadStream, typename Allocator>
447
+ inline std::size_t read_until(SyncReadStream& s,
448
+ asio::basic_streambuf<Allocator>& b, const boost::regex& expr)
449
+ {
450
+ return read_until(s, basic_streambuf_ref<Allocator>(b), expr);
451
+ }
452
+
453
+ template <typename SyncReadStream, typename Allocator>
454
+ inline std::size_t read_until(SyncReadStream& s,
455
+ asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
456
+ asio::error_code& ec)
457
+ {
458
+ return read_until(s, basic_streambuf_ref<Allocator>(b), expr, ec);
459
+ }
460
+
461
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
462
+
463
+ template <typename SyncReadStream, typename Allocator, typename MatchCondition>
464
+ inline std::size_t read_until(SyncReadStream& s,
465
+ asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
466
+ typename constraint<is_match_condition<MatchCondition>::value>::type)
467
+ {
468
+ return read_until(s, basic_streambuf_ref<Allocator>(b), match_condition);
469
+ }
470
+
471
+ template <typename SyncReadStream, typename Allocator, typename MatchCondition>
472
+ inline std::size_t read_until(SyncReadStream& s,
473
+ asio::basic_streambuf<Allocator>& b,
474
+ MatchCondition match_condition, asio::error_code& ec,
475
+ typename constraint<is_match_condition<MatchCondition>::value>::type)
476
+ {
477
+ return read_until(s, basic_streambuf_ref<Allocator>(b), match_condition, ec);
478
+ }
479
+
480
+ #endif // !defined(ASIO_NO_IOSTREAM)
481
+ #endif // !defined(ASIO_NO_EXTENSIONS)
482
+ #endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
483
+
484
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
485
+ inline std::size_t read_until(SyncReadStream& s,
486
+ DynamicBuffer_v2 buffers, char delim,
487
+ typename constraint<
488
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
489
+ >::type)
490
+ {
491
+ asio::error_code ec;
492
+ std::size_t bytes_transferred = read_until(s,
493
+ ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), delim, ec);
494
+ asio::detail::throw_error(ec, "read_until");
495
+ return bytes_transferred;
496
+ }
497
+
498
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
499
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
500
+ char delim, asio::error_code& ec,
501
+ typename constraint<
502
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
503
+ >::type)
504
+ {
505
+ DynamicBuffer_v2& b = buffers;
506
+
507
+ std::size_t search_position = 0;
508
+ for (;;)
509
+ {
510
+ // Determine the range of the data to be searched.
511
+ typedef typename DynamicBuffer_v2::const_buffers_type buffers_type;
512
+ typedef buffers_iterator<buffers_type> iterator;
513
+ buffers_type data_buffers =
514
+ const_cast<const DynamicBuffer_v2&>(b).data(0, b.size());
515
+ iterator begin = iterator::begin(data_buffers);
516
+ iterator start_pos = begin + search_position;
517
+ iterator end = iterator::end(data_buffers);
518
+
519
+ // Look for a match.
520
+ iterator iter = std::find(start_pos, end, delim);
521
+ if (iter != end)
522
+ {
523
+ // Found a match. We're done.
524
+ ec = asio::error_code();
525
+ return iter - begin + 1;
526
+ }
527
+ else
528
+ {
529
+ // No match. Next search can start with the new data.
530
+ search_position = end - begin;
531
+ }
532
+
533
+ // Check if buffer is full.
534
+ if (b.size() == b.max_size())
535
+ {
536
+ ec = error::not_found;
537
+ return 0;
538
+ }
539
+
540
+ // Need more data.
541
+ std::size_t bytes_to_read = std::min<std::size_t>(
542
+ std::max<std::size_t>(512, b.capacity() - b.size()),
543
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
544
+ std::size_t pos = b.size();
545
+ b.grow(bytes_to_read);
546
+ std::size_t bytes_transferred = s.read_some(b.data(pos, bytes_to_read), ec);
547
+ b.shrink(bytes_to_read - bytes_transferred);
548
+ if (ec)
549
+ return 0;
550
+ }
551
+ }
552
+
553
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
554
+ inline std::size_t read_until(SyncReadStream& s,
555
+ DynamicBuffer_v2 buffers, ASIO_STRING_VIEW_PARAM delim,
556
+ typename constraint<
557
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
558
+ >::type)
559
+ {
560
+ asio::error_code ec;
561
+ std::size_t bytes_transferred = read_until(s,
562
+ ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), delim, ec);
563
+ asio::detail::throw_error(ec, "read_until");
564
+ return bytes_transferred;
565
+ }
566
+
567
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
568
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
569
+ ASIO_STRING_VIEW_PARAM delim, asio::error_code& ec,
570
+ typename constraint<
571
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
572
+ >::type)
573
+ {
574
+ DynamicBuffer_v2& b = buffers;
575
+
576
+ std::size_t search_position = 0;
577
+ for (;;)
578
+ {
579
+ // Determine the range of the data to be searched.
580
+ typedef typename DynamicBuffer_v2::const_buffers_type buffers_type;
581
+ typedef buffers_iterator<buffers_type> iterator;
582
+ buffers_type data_buffers =
583
+ const_cast<const DynamicBuffer_v2&>(b).data(0, b.size());
584
+ iterator begin = iterator::begin(data_buffers);
585
+ iterator start_pos = begin + search_position;
586
+ iterator end = iterator::end(data_buffers);
587
+
588
+ // Look for a match.
589
+ std::pair<iterator, bool> result = detail::partial_search(
590
+ start_pos, end, delim.begin(), delim.end());
591
+ if (result.first != end)
592
+ {
593
+ if (result.second)
594
+ {
595
+ // Full match. We're done.
596
+ ec = asio::error_code();
597
+ return result.first - begin + delim.length();
598
+ }
599
+ else
600
+ {
601
+ // Partial match. Next search needs to start from beginning of match.
602
+ search_position = result.first - begin;
603
+ }
604
+ }
605
+ else
606
+ {
607
+ // No match. Next search can start with the new data.
608
+ search_position = end - begin;
609
+ }
610
+
611
+ // Check if buffer is full.
612
+ if (b.size() == b.max_size())
613
+ {
614
+ ec = error::not_found;
615
+ return 0;
616
+ }
617
+
618
+ // Need more data.
619
+ std::size_t bytes_to_read = std::min<std::size_t>(
620
+ std::max<std::size_t>(512, b.capacity() - b.size()),
621
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
622
+ std::size_t pos = b.size();
623
+ b.grow(bytes_to_read);
624
+ std::size_t bytes_transferred = s.read_some(b.data(pos, bytes_to_read), ec);
625
+ b.shrink(bytes_to_read - bytes_transferred);
626
+ if (ec)
627
+ return 0;
628
+ }
629
+ }
630
+
631
+ #if !defined(ASIO_NO_EXTENSIONS)
632
+ #if defined(ASIO_HAS_BOOST_REGEX)
633
+
634
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
635
+ inline std::size_t read_until(SyncReadStream& s,
636
+ DynamicBuffer_v2 buffers, const boost::regex& expr,
637
+ typename constraint<
638
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
639
+ >::type)
640
+ {
641
+ asio::error_code ec;
642
+ std::size_t bytes_transferred = read_until(s,
643
+ ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), expr, ec);
644
+ asio::detail::throw_error(ec, "read_until");
645
+ return bytes_transferred;
646
+ }
647
+
648
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
649
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
650
+ const boost::regex& expr, asio::error_code& ec,
651
+ typename constraint<
652
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
653
+ >::type)
654
+ {
655
+ DynamicBuffer_v2& b = buffers;
656
+
657
+ std::size_t search_position = 0;
658
+ for (;;)
659
+ {
660
+ // Determine the range of the data to be searched.
661
+ typedef typename DynamicBuffer_v2::const_buffers_type buffers_type;
662
+ typedef buffers_iterator<buffers_type> iterator;
663
+ buffers_type data_buffers =
664
+ const_cast<const DynamicBuffer_v2&>(b).data(0, b.size());
665
+ iterator begin = iterator::begin(data_buffers);
666
+ iterator start_pos = begin + search_position;
667
+ iterator end = iterator::end(data_buffers);
668
+
669
+ // Look for a match.
670
+ boost::match_results<iterator,
671
+ typename std::vector<boost::sub_match<iterator> >::allocator_type>
672
+ match_results;
673
+ if (regex_search(start_pos, end, match_results, expr,
674
+ boost::match_default | boost::match_partial))
675
+ {
676
+ if (match_results[0].matched)
677
+ {
678
+ // Full match. We're done.
679
+ ec = asio::error_code();
680
+ return match_results[0].second - begin;
681
+ }
682
+ else
683
+ {
684
+ // Partial match. Next search needs to start from beginning of match.
685
+ search_position = match_results[0].first - begin;
686
+ }
687
+ }
688
+ else
689
+ {
690
+ // No match. Next search can start with the new data.
691
+ search_position = end - begin;
692
+ }
693
+
694
+ // Check if buffer is full.
695
+ if (b.size() == b.max_size())
696
+ {
697
+ ec = error::not_found;
698
+ return 0;
699
+ }
700
+
701
+ // Need more data.
702
+ std::size_t bytes_to_read = std::min<std::size_t>(
703
+ std::max<std::size_t>(512, b.capacity() - b.size()),
704
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
705
+ std::size_t pos = b.size();
706
+ b.grow(bytes_to_read);
707
+ std::size_t bytes_transferred = s.read_some(b.data(pos, bytes_to_read), ec);
708
+ b.shrink(bytes_to_read - bytes_transferred);
709
+ if (ec)
710
+ return 0;
711
+ }
712
+ }
713
+
714
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
715
+
716
+ template <typename SyncReadStream,
717
+ typename DynamicBuffer_v2, typename MatchCondition>
718
+ inline std::size_t read_until(SyncReadStream& s,
719
+ DynamicBuffer_v2 buffers, MatchCondition match_condition,
720
+ typename constraint<
721
+ is_match_condition<MatchCondition>::value
722
+ >::type,
723
+ typename constraint<
724
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
725
+ >::type)
726
+ {
727
+ asio::error_code ec;
728
+ std::size_t bytes_transferred = read_until(s,
729
+ ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers),
730
+ match_condition, ec);
731
+ asio::detail::throw_error(ec, "read_until");
732
+ return bytes_transferred;
733
+ }
734
+
735
+ template <typename SyncReadStream,
736
+ typename DynamicBuffer_v2, typename MatchCondition>
737
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
738
+ MatchCondition match_condition, asio::error_code& ec,
739
+ typename constraint<
740
+ is_match_condition<MatchCondition>::value
741
+ >::type,
742
+ typename constraint<
743
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
744
+ >::type)
745
+ {
746
+ DynamicBuffer_v2& b = buffers;
747
+
748
+ std::size_t search_position = 0;
749
+ for (;;)
750
+ {
751
+ // Determine the range of the data to be searched.
752
+ typedef typename DynamicBuffer_v2::const_buffers_type buffers_type;
753
+ typedef buffers_iterator<buffers_type> iterator;
754
+ buffers_type data_buffers =
755
+ const_cast<const DynamicBuffer_v2&>(b).data(0, b.size());
756
+ iterator begin = iterator::begin(data_buffers);
757
+ iterator start_pos = begin + search_position;
758
+ iterator end = iterator::end(data_buffers);
759
+
760
+ // Look for a match.
761
+ std::pair<iterator, bool> result = match_condition(start_pos, end);
762
+ if (result.second)
763
+ {
764
+ // Full match. We're done.
765
+ ec = asio::error_code();
766
+ return result.first - begin;
767
+ }
768
+ else if (result.first != end)
769
+ {
770
+ // Partial match. Next search needs to start from beginning of match.
771
+ search_position = result.first - begin;
772
+ }
773
+ else
774
+ {
775
+ // No match. Next search can start with the new data.
776
+ search_position = end - begin;
777
+ }
778
+
779
+ // Check if buffer is full.
780
+ if (b.size() == b.max_size())
781
+ {
782
+ ec = error::not_found;
783
+ return 0;
784
+ }
785
+
786
+ // Need more data.
787
+ std::size_t bytes_to_read = std::min<std::size_t>(
788
+ std::max<std::size_t>(512, b.capacity() - b.size()),
789
+ std::min<std::size_t>(65536, b.max_size() - b.size()));
790
+ std::size_t pos = b.size();
791
+ b.grow(bytes_to_read);
792
+ std::size_t bytes_transferred = s.read_some(b.data(pos, bytes_to_read), ec);
793
+ b.shrink(bytes_to_read - bytes_transferred);
794
+ if (ec)
795
+ return 0;
796
+ }
797
+ }
798
+
799
+ #endif // !defined(ASIO_NO_EXTENSIONS)
800
+
801
+ #if !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
802
+
803
+ namespace detail
804
+ {
805
+ template <typename AsyncReadStream,
806
+ typename DynamicBuffer_v1, typename ReadHandler>
807
+ class read_until_delim_op_v1
808
+ : public base_from_cancellation_state<ReadHandler>
809
+ {
810
+ public:
811
+ template <typename BufferSequence>
812
+ read_until_delim_op_v1(AsyncReadStream& stream,
813
+ ASIO_MOVE_ARG(BufferSequence) buffers,
814
+ char delim, ReadHandler& handler)
815
+ : base_from_cancellation_state<ReadHandler>(
816
+ handler, enable_partial_cancellation()),
817
+ stream_(stream),
818
+ buffers_(ASIO_MOVE_CAST(BufferSequence)(buffers)),
819
+ delim_(delim),
820
+ start_(0),
821
+ search_position_(0),
822
+ handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
823
+ {
824
+ }
825
+
826
+ #if defined(ASIO_HAS_MOVE)
827
+ read_until_delim_op_v1(const read_until_delim_op_v1& other)
828
+ : base_from_cancellation_state<ReadHandler>(other),
829
+ stream_(other.stream_),
830
+ buffers_(other.buffers_),
831
+ delim_(other.delim_),
832
+ start_(other.start_),
833
+ search_position_(other.search_position_),
834
+ handler_(other.handler_)
835
+ {
836
+ }
837
+
838
+ read_until_delim_op_v1(read_until_delim_op_v1&& other)
839
+ : base_from_cancellation_state<ReadHandler>(
840
+ ASIO_MOVE_CAST(base_from_cancellation_state<
841
+ ReadHandler>)(other)),
842
+ stream_(other.stream_),
843
+ buffers_(ASIO_MOVE_CAST(DynamicBuffer_v1)(other.buffers_)),
844
+ delim_(other.delim_),
845
+ start_(other.start_),
846
+ search_position_(other.search_position_),
847
+ handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
848
+ {
849
+ }
850
+ #endif // defined(ASIO_HAS_MOVE)
851
+
852
+ void operator()(asio::error_code ec,
853
+ std::size_t bytes_transferred, int start = 0)
854
+ {
855
+ const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
856
+ std::size_t bytes_to_read;
857
+ switch (start_ = start)
858
+ {
859
+ case 1:
860
+ for (;;)
861
+ {
862
+ {
863
+ // Determine the range of the data to be searched.
864
+ typedef typename DynamicBuffer_v1::const_buffers_type
865
+ buffers_type;
866
+ typedef buffers_iterator<buffers_type> iterator;
867
+ buffers_type data_buffers = buffers_.data();
868
+ iterator begin = iterator::begin(data_buffers);
869
+ iterator start_pos = begin + search_position_;
870
+ iterator end = iterator::end(data_buffers);
871
+
872
+ // Look for a match.
873
+ iterator iter = std::find(start_pos, end, delim_);
874
+ if (iter != end)
875
+ {
876
+ // Found a match. We're done.
877
+ search_position_ = iter - begin + 1;
878
+ bytes_to_read = 0;
879
+ }
880
+
881
+ // No match yet. Check if buffer is full.
882
+ else if (buffers_.size() == buffers_.max_size())
883
+ {
884
+ search_position_ = not_found;
885
+ bytes_to_read = 0;
886
+ }
887
+
888
+ // Need to read some more data.
889
+ else
890
+ {
891
+ // Next search can start with the new data.
892
+ search_position_ = end - begin;
893
+ bytes_to_read = std::min<std::size_t>(
894
+ std::max<std::size_t>(512,
895
+ buffers_.capacity() - buffers_.size()),
896
+ std::min<std::size_t>(65536,
897
+ buffers_.max_size() - buffers_.size()));
898
+ }
899
+ }
900
+
901
+ // Check if we're done.
902
+ if (!start && bytes_to_read == 0)
903
+ break;
904
+
905
+ // Start a new asynchronous read operation to obtain more data.
906
+ {
907
+ ASIO_HANDLER_LOCATION((
908
+ __FILE__, __LINE__, "async_read_until"));
909
+ stream_.async_read_some(buffers_.prepare(bytes_to_read),
910
+ ASIO_MOVE_CAST(read_until_delim_op_v1)(*this));
911
+ }
912
+ return; default:
913
+ buffers_.commit(bytes_transferred);
914
+ if (ec || bytes_transferred == 0)
915
+ break;
916
+ if (this->cancelled() != cancellation_type::none)
917
+ {
918
+ ec = error::operation_aborted;
919
+ break;
920
+ }
921
+ }
922
+
923
+ const asio::error_code result_ec =
924
+ (search_position_ == not_found)
925
+ ? error::not_found : ec;
926
+
927
+ const std::size_t result_n =
928
+ (ec || search_position_ == not_found)
929
+ ? 0 : search_position_;
930
+
931
+ ASIO_MOVE_OR_LVALUE(ReadHandler)(handler_)(result_ec, result_n);
932
+ }
933
+ }
934
+
935
+ //private:
936
+ AsyncReadStream& stream_;
937
+ DynamicBuffer_v1 buffers_;
938
+ char delim_;
939
+ int start_;
940
+ std::size_t search_position_;
941
+ ReadHandler handler_;
942
+ };
943
+
944
+ template <typename AsyncReadStream,
945
+ typename DynamicBuffer_v1, typename ReadHandler>
946
+ inline asio_handler_allocate_is_deprecated
947
+ asio_handler_allocate(std::size_t size,
948
+ read_until_delim_op_v1<AsyncReadStream,
949
+ DynamicBuffer_v1, ReadHandler>* this_handler)
950
+ {
951
+ #if defined(ASIO_NO_DEPRECATED)
952
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
953
+ return asio_handler_allocate_is_no_longer_used();
954
+ #else // defined(ASIO_NO_DEPRECATED)
955
+ return asio_handler_alloc_helpers::allocate(
956
+ size, this_handler->handler_);
957
+ #endif // defined(ASIO_NO_DEPRECATED)
958
+ }
959
+
960
+ template <typename AsyncReadStream,
961
+ typename DynamicBuffer_v1, typename ReadHandler>
962
+ inline asio_handler_deallocate_is_deprecated
963
+ asio_handler_deallocate(void* pointer, std::size_t size,
964
+ read_until_delim_op_v1<AsyncReadStream,
965
+ DynamicBuffer_v1, ReadHandler>* this_handler)
966
+ {
967
+ asio_handler_alloc_helpers::deallocate(
968
+ pointer, size, this_handler->handler_);
969
+ #if defined(ASIO_NO_DEPRECATED)
970
+ return asio_handler_deallocate_is_no_longer_used();
971
+ #endif // defined(ASIO_NO_DEPRECATED)
972
+ }
973
+
974
+ template <typename AsyncReadStream,
975
+ typename DynamicBuffer_v1, typename ReadHandler>
976
+ inline bool asio_handler_is_continuation(
977
+ read_until_delim_op_v1<AsyncReadStream,
978
+ DynamicBuffer_v1, ReadHandler>* this_handler)
979
+ {
980
+ return this_handler->start_ == 0 ? true
981
+ : asio_handler_cont_helpers::is_continuation(
982
+ this_handler->handler_);
983
+ }
984
+
985
+ template <typename Function, typename AsyncReadStream,
986
+ typename DynamicBuffer_v1, typename ReadHandler>
987
+ inline asio_handler_invoke_is_deprecated
988
+ asio_handler_invoke(Function& function,
989
+ read_until_delim_op_v1<AsyncReadStream,
990
+ DynamicBuffer_v1, ReadHandler>* this_handler)
991
+ {
992
+ asio_handler_invoke_helpers::invoke(
993
+ function, this_handler->handler_);
994
+ #if defined(ASIO_NO_DEPRECATED)
995
+ return asio_handler_invoke_is_no_longer_used();
996
+ #endif // defined(ASIO_NO_DEPRECATED)
997
+ }
998
+
999
+ template <typename Function, typename AsyncReadStream,
1000
+ typename DynamicBuffer_v1, typename ReadHandler>
1001
+ inline asio_handler_invoke_is_deprecated
1002
+ asio_handler_invoke(const Function& function,
1003
+ read_until_delim_op_v1<AsyncReadStream,
1004
+ DynamicBuffer_v1, ReadHandler>* this_handler)
1005
+ {
1006
+ asio_handler_invoke_helpers::invoke(
1007
+ function, this_handler->handler_);
1008
+ #if defined(ASIO_NO_DEPRECATED)
1009
+ return asio_handler_invoke_is_no_longer_used();
1010
+ #endif // defined(ASIO_NO_DEPRECATED)
1011
+ }
1012
+
1013
+ template <typename AsyncReadStream>
1014
+ class initiate_async_read_until_delim_v1
1015
+ {
1016
+ public:
1017
+ typedef typename AsyncReadStream::executor_type executor_type;
1018
+
1019
+ explicit initiate_async_read_until_delim_v1(AsyncReadStream& stream)
1020
+ : stream_(stream)
1021
+ {
1022
+ }
1023
+
1024
+ executor_type get_executor() const ASIO_NOEXCEPT
1025
+ {
1026
+ return stream_.get_executor();
1027
+ }
1028
+
1029
+ template <typename ReadHandler, typename DynamicBuffer_v1>
1030
+ void operator()(ASIO_MOVE_ARG(ReadHandler) handler,
1031
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1032
+ char delim) const
1033
+ {
1034
+ // If you get an error on the following line it means that your handler
1035
+ // does not meet the documented type requirements for a ReadHandler.
1036
+ ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
1037
+
1038
+ non_const_lvalue<ReadHandler> handler2(handler);
1039
+ read_until_delim_op_v1<AsyncReadStream,
1040
+ typename decay<DynamicBuffer_v1>::type,
1041
+ typename decay<ReadHandler>::type>(
1042
+ stream_, ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers),
1043
+ delim, handler2.value)(asio::error_code(), 0, 1);
1044
+ }
1045
+
1046
+ private:
1047
+ AsyncReadStream& stream_;
1048
+ };
1049
+ } // namespace detail
1050
+
1051
+ #if !defined(GENERATING_DOCUMENTATION)
1052
+
1053
+ template <template <typename, typename> class Associator,
1054
+ typename AsyncReadStream, typename DynamicBuffer_v1,
1055
+ typename ReadHandler, typename DefaultCandidate>
1056
+ struct associator<Associator,
1057
+ detail::read_until_delim_op_v1<AsyncReadStream,
1058
+ DynamicBuffer_v1, ReadHandler>,
1059
+ DefaultCandidate>
1060
+ : Associator<ReadHandler, DefaultCandidate>
1061
+ {
1062
+ static typename Associator<ReadHandler, DefaultCandidate>::type get(
1063
+ const detail::read_until_delim_op_v1<AsyncReadStream,
1064
+ DynamicBuffer_v1, ReadHandler>& h,
1065
+ const DefaultCandidate& c = DefaultCandidate()) ASIO_NOEXCEPT
1066
+ {
1067
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
1068
+ }
1069
+ };
1070
+
1071
+ #endif // !defined(GENERATING_DOCUMENTATION)
1072
+
1073
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1074
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1075
+ std::size_t)) ReadHandler>
1076
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1077
+ void (asio::error_code, std::size_t))
1078
+ async_read_until(AsyncReadStream& s,
1079
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1080
+ char delim, ASIO_MOVE_ARG(ReadHandler) handler,
1081
+ typename constraint<
1082
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1083
+ >::type,
1084
+ typename constraint<
1085
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1086
+ >::type)
1087
+ {
1088
+ return async_initiate<ReadHandler,
1089
+ void (asio::error_code, std::size_t)>(
1090
+ detail::initiate_async_read_until_delim_v1<AsyncReadStream>(s),
1091
+ handler, ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), delim);
1092
+ }
1093
+
1094
+ namespace detail
1095
+ {
1096
+ template <typename AsyncReadStream,
1097
+ typename DynamicBuffer_v1, typename ReadHandler>
1098
+ class read_until_delim_string_op_v1
1099
+ : public base_from_cancellation_state<ReadHandler>
1100
+ {
1101
+ public:
1102
+ template <typename BufferSequence>
1103
+ read_until_delim_string_op_v1(AsyncReadStream& stream,
1104
+ ASIO_MOVE_ARG(BufferSequence) buffers,
1105
+ const std::string& delim, ReadHandler& handler)
1106
+ : base_from_cancellation_state<ReadHandler>(
1107
+ handler, enable_partial_cancellation()),
1108
+ stream_(stream),
1109
+ buffers_(ASIO_MOVE_CAST(BufferSequence)(buffers)),
1110
+ delim_(delim),
1111
+ start_(0),
1112
+ search_position_(0),
1113
+ handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
1114
+ {
1115
+ }
1116
+
1117
+ #if defined(ASIO_HAS_MOVE)
1118
+ read_until_delim_string_op_v1(const read_until_delim_string_op_v1& other)
1119
+ : base_from_cancellation_state<ReadHandler>(other),
1120
+ stream_(other.stream_),
1121
+ buffers_(other.buffers_),
1122
+ delim_(other.delim_),
1123
+ start_(other.start_),
1124
+ search_position_(other.search_position_),
1125
+ handler_(other.handler_)
1126
+ {
1127
+ }
1128
+
1129
+ read_until_delim_string_op_v1(read_until_delim_string_op_v1&& other)
1130
+ : base_from_cancellation_state<ReadHandler>(
1131
+ ASIO_MOVE_CAST(base_from_cancellation_state<
1132
+ ReadHandler>)(other)),
1133
+ stream_(other.stream_),
1134
+ buffers_(ASIO_MOVE_CAST(DynamicBuffer_v1)(other.buffers_)),
1135
+ delim_(ASIO_MOVE_CAST(std::string)(other.delim_)),
1136
+ start_(other.start_),
1137
+ search_position_(other.search_position_),
1138
+ handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
1139
+ {
1140
+ }
1141
+ #endif // defined(ASIO_HAS_MOVE)
1142
+
1143
+ void operator()(asio::error_code ec,
1144
+ std::size_t bytes_transferred, int start = 0)
1145
+ {
1146
+ const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
1147
+ std::size_t bytes_to_read;
1148
+ switch (start_ = start)
1149
+ {
1150
+ case 1:
1151
+ for (;;)
1152
+ {
1153
+ {
1154
+ // Determine the range of the data to be searched.
1155
+ typedef typename DynamicBuffer_v1::const_buffers_type
1156
+ buffers_type;
1157
+ typedef buffers_iterator<buffers_type> iterator;
1158
+ buffers_type data_buffers = buffers_.data();
1159
+ iterator begin = iterator::begin(data_buffers);
1160
+ iterator start_pos = begin + search_position_;
1161
+ iterator end = iterator::end(data_buffers);
1162
+
1163
+ // Look for a match.
1164
+ std::pair<iterator, bool> result = detail::partial_search(
1165
+ start_pos, end, delim_.begin(), delim_.end());
1166
+ if (result.first != end && result.second)
1167
+ {
1168
+ // Full match. We're done.
1169
+ search_position_ = result.first - begin + delim_.length();
1170
+ bytes_to_read = 0;
1171
+ }
1172
+
1173
+ // No match yet. Check if buffer is full.
1174
+ else if (buffers_.size() == buffers_.max_size())
1175
+ {
1176
+ search_position_ = not_found;
1177
+ bytes_to_read = 0;
1178
+ }
1179
+
1180
+ // Need to read some more data.
1181
+ else
1182
+ {
1183
+ if (result.first != end)
1184
+ {
1185
+ // Partial match. Next search needs to start from beginning of
1186
+ // match.
1187
+ search_position_ = result.first - begin;
1188
+ }
1189
+ else
1190
+ {
1191
+ // Next search can start with the new data.
1192
+ search_position_ = end - begin;
1193
+ }
1194
+
1195
+ bytes_to_read = std::min<std::size_t>(
1196
+ std::max<std::size_t>(512,
1197
+ buffers_.capacity() - buffers_.size()),
1198
+ std::min<std::size_t>(65536,
1199
+ buffers_.max_size() - buffers_.size()));
1200
+ }
1201
+ }
1202
+
1203
+ // Check if we're done.
1204
+ if (!start && bytes_to_read == 0)
1205
+ break;
1206
+
1207
+ // Start a new asynchronous read operation to obtain more data.
1208
+ {
1209
+ ASIO_HANDLER_LOCATION((
1210
+ __FILE__, __LINE__, "async_read_until"));
1211
+ stream_.async_read_some(buffers_.prepare(bytes_to_read),
1212
+ ASIO_MOVE_CAST(read_until_delim_string_op_v1)(*this));
1213
+ }
1214
+ return; default:
1215
+ buffers_.commit(bytes_transferred);
1216
+ if (ec || bytes_transferred == 0)
1217
+ break;
1218
+ if (this->cancelled() != cancellation_type::none)
1219
+ {
1220
+ ec = error::operation_aborted;
1221
+ break;
1222
+ }
1223
+ }
1224
+
1225
+ const asio::error_code result_ec =
1226
+ (search_position_ == not_found)
1227
+ ? error::not_found : ec;
1228
+
1229
+ const std::size_t result_n =
1230
+ (ec || search_position_ == not_found)
1231
+ ? 0 : search_position_;
1232
+
1233
+ ASIO_MOVE_OR_LVALUE(ReadHandler)(handler_)(result_ec, result_n);
1234
+ }
1235
+ }
1236
+
1237
+ //private:
1238
+ AsyncReadStream& stream_;
1239
+ DynamicBuffer_v1 buffers_;
1240
+ std::string delim_;
1241
+ int start_;
1242
+ std::size_t search_position_;
1243
+ ReadHandler handler_;
1244
+ };
1245
+
1246
+ template <typename AsyncReadStream,
1247
+ typename DynamicBuffer_v1, typename ReadHandler>
1248
+ inline asio_handler_allocate_is_deprecated
1249
+ asio_handler_allocate(std::size_t size,
1250
+ read_until_delim_string_op_v1<AsyncReadStream,
1251
+ DynamicBuffer_v1, ReadHandler>* this_handler)
1252
+ {
1253
+ #if defined(ASIO_NO_DEPRECATED)
1254
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
1255
+ return asio_handler_allocate_is_no_longer_used();
1256
+ #else // defined(ASIO_NO_DEPRECATED)
1257
+ return asio_handler_alloc_helpers::allocate(
1258
+ size, this_handler->handler_);
1259
+ #endif // defined(ASIO_NO_DEPRECATED)
1260
+ }
1261
+
1262
+ template <typename AsyncReadStream,
1263
+ typename DynamicBuffer_v1, typename ReadHandler>
1264
+ inline asio_handler_deallocate_is_deprecated
1265
+ asio_handler_deallocate(void* pointer, std::size_t size,
1266
+ read_until_delim_string_op_v1<AsyncReadStream,
1267
+ DynamicBuffer_v1, ReadHandler>* this_handler)
1268
+ {
1269
+ asio_handler_alloc_helpers::deallocate(
1270
+ pointer, size, this_handler->handler_);
1271
+ #if defined(ASIO_NO_DEPRECATED)
1272
+ return asio_handler_deallocate_is_no_longer_used();
1273
+ #endif // defined(ASIO_NO_DEPRECATED)
1274
+ }
1275
+
1276
+ template <typename AsyncReadStream,
1277
+ typename DynamicBuffer_v1, typename ReadHandler>
1278
+ inline bool asio_handler_is_continuation(
1279
+ read_until_delim_string_op_v1<AsyncReadStream,
1280
+ DynamicBuffer_v1, ReadHandler>* this_handler)
1281
+ {
1282
+ return this_handler->start_ == 0 ? true
1283
+ : asio_handler_cont_helpers::is_continuation(
1284
+ this_handler->handler_);
1285
+ }
1286
+
1287
+ template <typename Function, typename AsyncReadStream,
1288
+ typename DynamicBuffer_v1, typename ReadHandler>
1289
+ inline asio_handler_invoke_is_deprecated
1290
+ asio_handler_invoke(Function& function,
1291
+ read_until_delim_string_op_v1<AsyncReadStream,
1292
+ DynamicBuffer_v1, ReadHandler>* this_handler)
1293
+ {
1294
+ asio_handler_invoke_helpers::invoke(
1295
+ function, this_handler->handler_);
1296
+ #if defined(ASIO_NO_DEPRECATED)
1297
+ return asio_handler_invoke_is_no_longer_used();
1298
+ #endif // defined(ASIO_NO_DEPRECATED)
1299
+ }
1300
+
1301
+ template <typename Function, typename AsyncReadStream,
1302
+ typename DynamicBuffer_v1, typename ReadHandler>
1303
+ inline asio_handler_invoke_is_deprecated
1304
+ asio_handler_invoke(const Function& function,
1305
+ read_until_delim_string_op_v1<AsyncReadStream,
1306
+ DynamicBuffer_v1, ReadHandler>* this_handler)
1307
+ {
1308
+ asio_handler_invoke_helpers::invoke(
1309
+ function, this_handler->handler_);
1310
+ #if defined(ASIO_NO_DEPRECATED)
1311
+ return asio_handler_invoke_is_no_longer_used();
1312
+ #endif // defined(ASIO_NO_DEPRECATED)
1313
+ }
1314
+
1315
+ template <typename AsyncReadStream>
1316
+ class initiate_async_read_until_delim_string_v1
1317
+ {
1318
+ public:
1319
+ typedef typename AsyncReadStream::executor_type executor_type;
1320
+
1321
+ explicit initiate_async_read_until_delim_string_v1(AsyncReadStream& stream)
1322
+ : stream_(stream)
1323
+ {
1324
+ }
1325
+
1326
+ executor_type get_executor() const ASIO_NOEXCEPT
1327
+ {
1328
+ return stream_.get_executor();
1329
+ }
1330
+
1331
+ template <typename ReadHandler, typename DynamicBuffer_v1>
1332
+ void operator()(ASIO_MOVE_ARG(ReadHandler) handler,
1333
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1334
+ const std::string& delim) const
1335
+ {
1336
+ // If you get an error on the following line it means that your handler
1337
+ // does not meet the documented type requirements for a ReadHandler.
1338
+ ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
1339
+
1340
+ non_const_lvalue<ReadHandler> handler2(handler);
1341
+ read_until_delim_string_op_v1<AsyncReadStream,
1342
+ typename decay<DynamicBuffer_v1>::type,
1343
+ typename decay<ReadHandler>::type>(
1344
+ stream_, ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers),
1345
+ delim, handler2.value)(asio::error_code(), 0, 1);
1346
+ }
1347
+
1348
+ private:
1349
+ AsyncReadStream& stream_;
1350
+ };
1351
+ } // namespace detail
1352
+
1353
+ #if !defined(GENERATING_DOCUMENTATION)
1354
+
1355
+ template <template <typename, typename> class Associator,
1356
+ typename AsyncReadStream, typename DynamicBuffer_v1,
1357
+ typename ReadHandler, typename DefaultCandidate>
1358
+ struct associator<Associator,
1359
+ detail::read_until_delim_string_op_v1<AsyncReadStream,
1360
+ DynamicBuffer_v1, ReadHandler>,
1361
+ DefaultCandidate>
1362
+ : Associator<ReadHandler, DefaultCandidate>
1363
+ {
1364
+ static typename Associator<ReadHandler, DefaultCandidate>::type get(
1365
+ const detail::read_until_delim_string_op_v1<AsyncReadStream,
1366
+ DynamicBuffer_v1, ReadHandler>& h,
1367
+ const DefaultCandidate& c = DefaultCandidate()) ASIO_NOEXCEPT
1368
+ {
1369
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
1370
+ }
1371
+ };
1372
+
1373
+ #endif // !defined(GENERATING_DOCUMENTATION)
1374
+
1375
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1376
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1377
+ std::size_t)) ReadHandler>
1378
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1379
+ void (asio::error_code, std::size_t))
1380
+ async_read_until(AsyncReadStream& s,
1381
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1382
+ ASIO_STRING_VIEW_PARAM delim,
1383
+ ASIO_MOVE_ARG(ReadHandler) handler,
1384
+ typename constraint<
1385
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1386
+ >::type,
1387
+ typename constraint<
1388
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1389
+ >::type)
1390
+ {
1391
+ return async_initiate<ReadHandler,
1392
+ void (asio::error_code, std::size_t)>(
1393
+ detail::initiate_async_read_until_delim_string_v1<AsyncReadStream>(s),
1394
+ handler, ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers),
1395
+ static_cast<std::string>(delim));
1396
+ }
1397
+
1398
+ #if !defined(ASIO_NO_EXTENSIONS)
1399
+ #if defined(ASIO_HAS_BOOST_REGEX)
1400
+
1401
+ namespace detail
1402
+ {
1403
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1404
+ typename RegEx, typename ReadHandler>
1405
+ class read_until_expr_op_v1
1406
+ : public base_from_cancellation_state<ReadHandler>
1407
+ {
1408
+ public:
1409
+ template <typename BufferSequence>
1410
+ read_until_expr_op_v1(AsyncReadStream& stream,
1411
+ ASIO_MOVE_ARG(BufferSequence) buffers,
1412
+ const boost::regex& expr, ReadHandler& handler)
1413
+ : base_from_cancellation_state<ReadHandler>(
1414
+ handler, enable_partial_cancellation()),
1415
+ stream_(stream),
1416
+ buffers_(ASIO_MOVE_CAST(BufferSequence)(buffers)),
1417
+ expr_(expr),
1418
+ start_(0),
1419
+ search_position_(0),
1420
+ handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
1421
+ {
1422
+ }
1423
+
1424
+ #if defined(ASIO_HAS_MOVE)
1425
+ read_until_expr_op_v1(const read_until_expr_op_v1& other)
1426
+ : base_from_cancellation_state<ReadHandler>(other),
1427
+ stream_(other.stream_),
1428
+ buffers_(other.buffers_),
1429
+ expr_(other.expr_),
1430
+ start_(other.start_),
1431
+ search_position_(other.search_position_),
1432
+ handler_(other.handler_)
1433
+ {
1434
+ }
1435
+
1436
+ read_until_expr_op_v1(read_until_expr_op_v1&& other)
1437
+ : base_from_cancellation_state<ReadHandler>(
1438
+ ASIO_MOVE_CAST(base_from_cancellation_state<
1439
+ ReadHandler>)(other)),
1440
+ stream_(other.stream_),
1441
+ buffers_(ASIO_MOVE_CAST(DynamicBuffer_v1)(other.buffers_)),
1442
+ expr_(other.expr_),
1443
+ start_(other.start_),
1444
+ search_position_(other.search_position_),
1445
+ handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
1446
+ {
1447
+ }
1448
+ #endif // defined(ASIO_HAS_MOVE)
1449
+
1450
+ void operator()(asio::error_code ec,
1451
+ std::size_t bytes_transferred, int start = 0)
1452
+ {
1453
+ const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
1454
+ std::size_t bytes_to_read;
1455
+ switch (start_ = start)
1456
+ {
1457
+ case 1:
1458
+ for (;;)
1459
+ {
1460
+ {
1461
+ // Determine the range of the data to be searched.
1462
+ typedef typename DynamicBuffer_v1::const_buffers_type
1463
+ buffers_type;
1464
+ typedef buffers_iterator<buffers_type> iterator;
1465
+ buffers_type data_buffers = buffers_.data();
1466
+ iterator begin = iterator::begin(data_buffers);
1467
+ iterator start_pos = begin + search_position_;
1468
+ iterator end = iterator::end(data_buffers);
1469
+
1470
+ // Look for a match.
1471
+ boost::match_results<iterator,
1472
+ typename std::vector<boost::sub_match<iterator> >::allocator_type>
1473
+ match_results;
1474
+ bool match = regex_search(start_pos, end, match_results, expr_,
1475
+ boost::match_default | boost::match_partial);
1476
+ if (match && match_results[0].matched)
1477
+ {
1478
+ // Full match. We're done.
1479
+ search_position_ = match_results[0].second - begin;
1480
+ bytes_to_read = 0;
1481
+ }
1482
+
1483
+ // No match yet. Check if buffer is full.
1484
+ else if (buffers_.size() == buffers_.max_size())
1485
+ {
1486
+ search_position_ = not_found;
1487
+ bytes_to_read = 0;
1488
+ }
1489
+
1490
+ // Need to read some more data.
1491
+ else
1492
+ {
1493
+ if (match)
1494
+ {
1495
+ // Partial match. Next search needs to start from beginning of
1496
+ // match.
1497
+ search_position_ = match_results[0].first - begin;
1498
+ }
1499
+ else
1500
+ {
1501
+ // Next search can start with the new data.
1502
+ search_position_ = end - begin;
1503
+ }
1504
+
1505
+ bytes_to_read = std::min<std::size_t>(
1506
+ std::max<std::size_t>(512,
1507
+ buffers_.capacity() - buffers_.size()),
1508
+ std::min<std::size_t>(65536,
1509
+ buffers_.max_size() - buffers_.size()));
1510
+ }
1511
+ }
1512
+
1513
+ // Check if we're done.
1514
+ if (!start && bytes_to_read == 0)
1515
+ break;
1516
+
1517
+ // Start a new asynchronous read operation to obtain more data.
1518
+ {
1519
+ ASIO_HANDLER_LOCATION((
1520
+ __FILE__, __LINE__, "async_read_until"));
1521
+ stream_.async_read_some(buffers_.prepare(bytes_to_read),
1522
+ ASIO_MOVE_CAST(read_until_expr_op_v1)(*this));
1523
+ }
1524
+ return; default:
1525
+ buffers_.commit(bytes_transferred);
1526
+ if (ec || bytes_transferred == 0)
1527
+ break;
1528
+ if (this->cancelled() != cancellation_type::none)
1529
+ {
1530
+ ec = error::operation_aborted;
1531
+ break;
1532
+ }
1533
+ }
1534
+
1535
+ const asio::error_code result_ec =
1536
+ (search_position_ == not_found)
1537
+ ? error::not_found : ec;
1538
+
1539
+ const std::size_t result_n =
1540
+ (ec || search_position_ == not_found)
1541
+ ? 0 : search_position_;
1542
+
1543
+ ASIO_MOVE_OR_LVALUE(ReadHandler)(handler_)(result_ec, result_n);
1544
+ }
1545
+ }
1546
+
1547
+ //private:
1548
+ AsyncReadStream& stream_;
1549
+ DynamicBuffer_v1 buffers_;
1550
+ RegEx expr_;
1551
+ int start_;
1552
+ std::size_t search_position_;
1553
+ ReadHandler handler_;
1554
+ };
1555
+
1556
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1557
+ typename RegEx, typename ReadHandler>
1558
+ inline asio_handler_allocate_is_deprecated
1559
+ asio_handler_allocate(std::size_t size,
1560
+ read_until_expr_op_v1<AsyncReadStream,
1561
+ DynamicBuffer_v1, RegEx, ReadHandler>* this_handler)
1562
+ {
1563
+ #if defined(ASIO_NO_DEPRECATED)
1564
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
1565
+ return asio_handler_allocate_is_no_longer_used();
1566
+ #else // defined(ASIO_NO_DEPRECATED)
1567
+ return asio_handler_alloc_helpers::allocate(
1568
+ size, this_handler->handler_);
1569
+ #endif // defined(ASIO_NO_DEPRECATED)
1570
+ }
1571
+
1572
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1573
+ typename RegEx, typename ReadHandler>
1574
+ inline asio_handler_deallocate_is_deprecated
1575
+ asio_handler_deallocate(void* pointer, std::size_t size,
1576
+ read_until_expr_op_v1<AsyncReadStream,
1577
+ DynamicBuffer_v1, RegEx, ReadHandler>* this_handler)
1578
+ {
1579
+ asio_handler_alloc_helpers::deallocate(
1580
+ pointer, size, this_handler->handler_);
1581
+ #if defined(ASIO_NO_DEPRECATED)
1582
+ return asio_handler_deallocate_is_no_longer_used();
1583
+ #endif // defined(ASIO_NO_DEPRECATED)
1584
+ }
1585
+
1586
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1587
+ typename RegEx, typename ReadHandler>
1588
+ inline bool asio_handler_is_continuation(
1589
+ read_until_expr_op_v1<AsyncReadStream,
1590
+ DynamicBuffer_v1, RegEx, ReadHandler>* this_handler)
1591
+ {
1592
+ return this_handler->start_ == 0 ? true
1593
+ : asio_handler_cont_helpers::is_continuation(
1594
+ this_handler->handler_);
1595
+ }
1596
+
1597
+ template <typename Function, typename AsyncReadStream,
1598
+ typename DynamicBuffer_v1, typename RegEx, typename ReadHandler>
1599
+ inline asio_handler_invoke_is_deprecated
1600
+ asio_handler_invoke(Function& function,
1601
+ read_until_expr_op_v1<AsyncReadStream,
1602
+ DynamicBuffer_v1, RegEx, ReadHandler>* this_handler)
1603
+ {
1604
+ asio_handler_invoke_helpers::invoke(
1605
+ function, this_handler->handler_);
1606
+ #if defined(ASIO_NO_DEPRECATED)
1607
+ return asio_handler_invoke_is_no_longer_used();
1608
+ #endif // defined(ASIO_NO_DEPRECATED)
1609
+ }
1610
+
1611
+ template <typename Function, typename AsyncReadStream,
1612
+ typename DynamicBuffer_v1, typename RegEx, typename ReadHandler>
1613
+ inline asio_handler_invoke_is_deprecated
1614
+ asio_handler_invoke(const Function& function,
1615
+ read_until_expr_op_v1<AsyncReadStream,
1616
+ DynamicBuffer_v1, RegEx, ReadHandler>* this_handler)
1617
+ {
1618
+ asio_handler_invoke_helpers::invoke(
1619
+ function, this_handler->handler_);
1620
+ #if defined(ASIO_NO_DEPRECATED)
1621
+ return asio_handler_invoke_is_no_longer_used();
1622
+ #endif // defined(ASIO_NO_DEPRECATED)
1623
+ }
1624
+
1625
+ template <typename AsyncReadStream>
1626
+ class initiate_async_read_until_expr_v1
1627
+ {
1628
+ public:
1629
+ typedef typename AsyncReadStream::executor_type executor_type;
1630
+
1631
+ explicit initiate_async_read_until_expr_v1(AsyncReadStream& stream)
1632
+ : stream_(stream)
1633
+ {
1634
+ }
1635
+
1636
+ executor_type get_executor() const ASIO_NOEXCEPT
1637
+ {
1638
+ return stream_.get_executor();
1639
+ }
1640
+
1641
+ template <typename ReadHandler, typename DynamicBuffer_v1, typename RegEx>
1642
+ void operator()(ASIO_MOVE_ARG(ReadHandler) handler,
1643
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, const RegEx& expr) const
1644
+ {
1645
+ // If you get an error on the following line it means that your handler
1646
+ // does not meet the documented type requirements for a ReadHandler.
1647
+ ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
1648
+
1649
+ non_const_lvalue<ReadHandler> handler2(handler);
1650
+ read_until_expr_op_v1<AsyncReadStream,
1651
+ typename decay<DynamicBuffer_v1>::type,
1652
+ RegEx, typename decay<ReadHandler>::type>(
1653
+ stream_, ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers),
1654
+ expr, handler2.value)(asio::error_code(), 0, 1);
1655
+ }
1656
+
1657
+ private:
1658
+ AsyncReadStream& stream_;
1659
+ };
1660
+ } // namespace detail
1661
+
1662
+ #if !defined(GENERATING_DOCUMENTATION)
1663
+
1664
+ template <template <typename, typename> class Associator,
1665
+ typename AsyncReadStream, typename DynamicBuffer_v1,
1666
+ typename RegEx, typename ReadHandler, typename DefaultCandidate>
1667
+ struct associator<Associator,
1668
+ detail::read_until_expr_op_v1<AsyncReadStream,
1669
+ DynamicBuffer_v1, RegEx, ReadHandler>,
1670
+ DefaultCandidate>
1671
+ : Associator<ReadHandler, DefaultCandidate>
1672
+ {
1673
+ static typename Associator<ReadHandler, DefaultCandidate>::type get(
1674
+ const detail::read_until_expr_op_v1<AsyncReadStream,
1675
+ DynamicBuffer_v1, RegEx, ReadHandler>& h,
1676
+ const DefaultCandidate& c = DefaultCandidate()) ASIO_NOEXCEPT
1677
+ {
1678
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
1679
+ }
1680
+ };
1681
+
1682
+ #endif // !defined(GENERATING_DOCUMENTATION)
1683
+
1684
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1685
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1686
+ std::size_t)) ReadHandler>
1687
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1688
+ void (asio::error_code, std::size_t))
1689
+ async_read_until(AsyncReadStream& s,
1690
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1691
+ const boost::regex& expr,
1692
+ ASIO_MOVE_ARG(ReadHandler) handler,
1693
+ typename constraint<
1694
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1695
+ >::type,
1696
+ typename constraint<
1697
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1698
+ >::type)
1699
+ {
1700
+ return async_initiate<ReadHandler,
1701
+ void (asio::error_code, std::size_t)>(
1702
+ detail::initiate_async_read_until_expr_v1<AsyncReadStream>(s),
1703
+ handler, ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), expr);
1704
+ }
1705
+
1706
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
1707
+
1708
+ namespace detail
1709
+ {
1710
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1711
+ typename MatchCondition, typename ReadHandler>
1712
+ class read_until_match_op_v1
1713
+ : public base_from_cancellation_state<ReadHandler>
1714
+ {
1715
+ public:
1716
+ template <typename BufferSequence>
1717
+ read_until_match_op_v1(AsyncReadStream& stream,
1718
+ ASIO_MOVE_ARG(BufferSequence) buffers,
1719
+ MatchCondition match_condition, ReadHandler& handler)
1720
+ : base_from_cancellation_state<ReadHandler>(
1721
+ handler, enable_partial_cancellation()),
1722
+ stream_(stream),
1723
+ buffers_(ASIO_MOVE_CAST(BufferSequence)(buffers)),
1724
+ match_condition_(match_condition),
1725
+ start_(0),
1726
+ search_position_(0),
1727
+ handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
1728
+ {
1729
+ }
1730
+
1731
+ #if defined(ASIO_HAS_MOVE)
1732
+ read_until_match_op_v1(const read_until_match_op_v1& other)
1733
+ : base_from_cancellation_state<ReadHandler>(other),
1734
+ stream_(other.stream_),
1735
+ buffers_(other.buffers_),
1736
+ match_condition_(other.match_condition_),
1737
+ start_(other.start_),
1738
+ search_position_(other.search_position_),
1739
+ handler_(other.handler_)
1740
+ {
1741
+ }
1742
+
1743
+ read_until_match_op_v1(read_until_match_op_v1&& other)
1744
+ : base_from_cancellation_state<ReadHandler>(
1745
+ ASIO_MOVE_CAST(base_from_cancellation_state<
1746
+ ReadHandler>)(other)),
1747
+ stream_(other.stream_),
1748
+ buffers_(ASIO_MOVE_CAST(DynamicBuffer_v1)(other.buffers_)),
1749
+ match_condition_(other.match_condition_),
1750
+ start_(other.start_),
1751
+ search_position_(other.search_position_),
1752
+ handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
1753
+ {
1754
+ }
1755
+ #endif // defined(ASIO_HAS_MOVE)
1756
+
1757
+ void operator()(asio::error_code ec,
1758
+ std::size_t bytes_transferred, int start = 0)
1759
+ {
1760
+ const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
1761
+ std::size_t bytes_to_read;
1762
+ switch (start_ = start)
1763
+ {
1764
+ case 1:
1765
+ for (;;)
1766
+ {
1767
+ {
1768
+ // Determine the range of the data to be searched.
1769
+ typedef typename DynamicBuffer_v1::const_buffers_type
1770
+ buffers_type;
1771
+ typedef buffers_iterator<buffers_type> iterator;
1772
+ buffers_type data_buffers = buffers_.data();
1773
+ iterator begin = iterator::begin(data_buffers);
1774
+ iterator start_pos = begin + search_position_;
1775
+ iterator end = iterator::end(data_buffers);
1776
+
1777
+ // Look for a match.
1778
+ std::pair<iterator, bool> result = match_condition_(start_pos, end);
1779
+ if (result.second)
1780
+ {
1781
+ // Full match. We're done.
1782
+ search_position_ = result.first - begin;
1783
+ bytes_to_read = 0;
1784
+ }
1785
+
1786
+ // No match yet. Check if buffer is full.
1787
+ else if (buffers_.size() == buffers_.max_size())
1788
+ {
1789
+ search_position_ = not_found;
1790
+ bytes_to_read = 0;
1791
+ }
1792
+
1793
+ // Need to read some more data.
1794
+ else
1795
+ {
1796
+ if (result.first != end)
1797
+ {
1798
+ // Partial match. Next search needs to start from beginning of
1799
+ // match.
1800
+ search_position_ = result.first - begin;
1801
+ }
1802
+ else
1803
+ {
1804
+ // Next search can start with the new data.
1805
+ search_position_ = end - begin;
1806
+ }
1807
+
1808
+ bytes_to_read = std::min<std::size_t>(
1809
+ std::max<std::size_t>(512,
1810
+ buffers_.capacity() - buffers_.size()),
1811
+ std::min<std::size_t>(65536,
1812
+ buffers_.max_size() - buffers_.size()));
1813
+ }
1814
+ }
1815
+
1816
+ // Check if we're done.
1817
+ if (!start && bytes_to_read == 0)
1818
+ break;
1819
+
1820
+ // Start a new asynchronous read operation to obtain more data.
1821
+ {
1822
+ ASIO_HANDLER_LOCATION((
1823
+ __FILE__, __LINE__, "async_read_until"));
1824
+ stream_.async_read_some(buffers_.prepare(bytes_to_read),
1825
+ ASIO_MOVE_CAST(read_until_match_op_v1)(*this));
1826
+ }
1827
+ return; default:
1828
+ buffers_.commit(bytes_transferred);
1829
+ if (ec || bytes_transferred == 0)
1830
+ break;
1831
+ if (this->cancelled() != cancellation_type::none)
1832
+ {
1833
+ ec = error::operation_aborted;
1834
+ break;
1835
+ }
1836
+ }
1837
+
1838
+ const asio::error_code result_ec =
1839
+ (search_position_ == not_found)
1840
+ ? error::not_found : ec;
1841
+
1842
+ const std::size_t result_n =
1843
+ (ec || search_position_ == not_found)
1844
+ ? 0 : search_position_;
1845
+
1846
+ ASIO_MOVE_OR_LVALUE(ReadHandler)(handler_)(result_ec, result_n);
1847
+ }
1848
+ }
1849
+
1850
+ //private:
1851
+ AsyncReadStream& stream_;
1852
+ DynamicBuffer_v1 buffers_;
1853
+ MatchCondition match_condition_;
1854
+ int start_;
1855
+ std::size_t search_position_;
1856
+ ReadHandler handler_;
1857
+ };
1858
+
1859
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1860
+ typename MatchCondition, typename ReadHandler>
1861
+ inline asio_handler_allocate_is_deprecated
1862
+ asio_handler_allocate(std::size_t size,
1863
+ read_until_match_op_v1<AsyncReadStream, DynamicBuffer_v1,
1864
+ MatchCondition, ReadHandler>* this_handler)
1865
+ {
1866
+ #if defined(ASIO_NO_DEPRECATED)
1867
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
1868
+ return asio_handler_allocate_is_no_longer_used();
1869
+ #else // defined(ASIO_NO_DEPRECATED)
1870
+ return asio_handler_alloc_helpers::allocate(
1871
+ size, this_handler->handler_);
1872
+ #endif // defined(ASIO_NO_DEPRECATED)
1873
+ }
1874
+
1875
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1876
+ typename MatchCondition, typename ReadHandler>
1877
+ inline asio_handler_deallocate_is_deprecated
1878
+ asio_handler_deallocate(void* pointer, std::size_t size,
1879
+ read_until_match_op_v1<AsyncReadStream, DynamicBuffer_v1,
1880
+ MatchCondition, ReadHandler>* this_handler)
1881
+ {
1882
+ asio_handler_alloc_helpers::deallocate(
1883
+ pointer, size, this_handler->handler_);
1884
+ #if defined(ASIO_NO_DEPRECATED)
1885
+ return asio_handler_deallocate_is_no_longer_used();
1886
+ #endif // defined(ASIO_NO_DEPRECATED)
1887
+ }
1888
+
1889
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1890
+ typename MatchCondition, typename ReadHandler>
1891
+ inline bool asio_handler_is_continuation(
1892
+ read_until_match_op_v1<AsyncReadStream, DynamicBuffer_v1,
1893
+ MatchCondition, ReadHandler>* this_handler)
1894
+ {
1895
+ return this_handler->start_ == 0 ? true
1896
+ : asio_handler_cont_helpers::is_continuation(
1897
+ this_handler->handler_);
1898
+ }
1899
+
1900
+ template <typename Function, typename AsyncReadStream,
1901
+ typename DynamicBuffer_v1, typename MatchCondition,
1902
+ typename ReadHandler>
1903
+ inline asio_handler_invoke_is_deprecated
1904
+ asio_handler_invoke(Function& function,
1905
+ read_until_match_op_v1<AsyncReadStream, DynamicBuffer_v1,
1906
+ MatchCondition, ReadHandler>* this_handler)
1907
+ {
1908
+ asio_handler_invoke_helpers::invoke(
1909
+ function, this_handler->handler_);
1910
+ #if defined(ASIO_NO_DEPRECATED)
1911
+ return asio_handler_invoke_is_no_longer_used();
1912
+ #endif // defined(ASIO_NO_DEPRECATED)
1913
+ }
1914
+
1915
+ template <typename Function, typename AsyncReadStream,
1916
+ typename DynamicBuffer_v1, typename MatchCondition,
1917
+ typename ReadHandler>
1918
+ inline asio_handler_invoke_is_deprecated
1919
+ asio_handler_invoke(const Function& function,
1920
+ read_until_match_op_v1<AsyncReadStream, DynamicBuffer_v1,
1921
+ MatchCondition, ReadHandler>* this_handler)
1922
+ {
1923
+ asio_handler_invoke_helpers::invoke(
1924
+ function, this_handler->handler_);
1925
+ #if defined(ASIO_NO_DEPRECATED)
1926
+ return asio_handler_invoke_is_no_longer_used();
1927
+ #endif // defined(ASIO_NO_DEPRECATED)
1928
+ }
1929
+
1930
+ template <typename AsyncReadStream>
1931
+ class initiate_async_read_until_match_v1
1932
+ {
1933
+ public:
1934
+ typedef typename AsyncReadStream::executor_type executor_type;
1935
+
1936
+ explicit initiate_async_read_until_match_v1(AsyncReadStream& stream)
1937
+ : stream_(stream)
1938
+ {
1939
+ }
1940
+
1941
+ executor_type get_executor() const ASIO_NOEXCEPT
1942
+ {
1943
+ return stream_.get_executor();
1944
+ }
1945
+
1946
+ template <typename ReadHandler,
1947
+ typename DynamicBuffer_v1, typename MatchCondition>
1948
+ void operator()(ASIO_MOVE_ARG(ReadHandler) handler,
1949
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1950
+ MatchCondition match_condition) const
1951
+ {
1952
+ // If you get an error on the following line it means that your handler
1953
+ // does not meet the documented type requirements for a ReadHandler.
1954
+ ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
1955
+
1956
+ non_const_lvalue<ReadHandler> handler2(handler);
1957
+ read_until_match_op_v1<AsyncReadStream,
1958
+ typename decay<DynamicBuffer_v1>::type,
1959
+ MatchCondition, typename decay<ReadHandler>::type>(
1960
+ stream_, ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers),
1961
+ match_condition, handler2.value)(asio::error_code(), 0, 1);
1962
+ }
1963
+
1964
+ private:
1965
+ AsyncReadStream& stream_;
1966
+ };
1967
+ } // namespace detail
1968
+
1969
+ #if !defined(GENERATING_DOCUMENTATION)
1970
+
1971
+ template <template <typename, typename> class Associator,
1972
+ typename AsyncReadStream, typename DynamicBuffer_v1,
1973
+ typename MatchCondition, typename ReadHandler, typename DefaultCandidate>
1974
+ struct associator<Associator,
1975
+ detail::read_until_match_op_v1<AsyncReadStream,
1976
+ DynamicBuffer_v1, MatchCondition, ReadHandler>,
1977
+ DefaultCandidate>
1978
+ : Associator<ReadHandler, DefaultCandidate>
1979
+ {
1980
+ static typename Associator<ReadHandler, DefaultCandidate>::type get(
1981
+ const detail::read_until_match_op_v1<AsyncReadStream,
1982
+ DynamicBuffer_v1, MatchCondition, ReadHandler>& h,
1983
+ const DefaultCandidate& c = DefaultCandidate()) ASIO_NOEXCEPT
1984
+ {
1985
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
1986
+ }
1987
+ };
1988
+
1989
+ #endif // !defined(GENERATING_DOCUMENTATION)
1990
+
1991
+ template <typename AsyncReadStream,
1992
+ typename DynamicBuffer_v1, typename MatchCondition,
1993
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
1994
+ std::size_t)) ReadHandler>
1995
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1996
+ void (asio::error_code, std::size_t))
1997
+ async_read_until(AsyncReadStream& s,
1998
+ ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1999
+ MatchCondition match_condition, ASIO_MOVE_ARG(ReadHandler) handler,
2000
+ typename constraint<
2001
+ is_match_condition<MatchCondition>::value
2002
+ >::type,
2003
+ typename constraint<
2004
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
2005
+ >::type,
2006
+ typename constraint<
2007
+ !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
2008
+ >::type)
2009
+ {
2010
+ return async_initiate<ReadHandler,
2011
+ void (asio::error_code, std::size_t)>(
2012
+ detail::initiate_async_read_until_match_v1<AsyncReadStream>(s), handler,
2013
+ ASIO_MOVE_CAST(DynamicBuffer_v1)(buffers), match_condition);
2014
+ }
2015
+
2016
+ #if !defined(ASIO_NO_IOSTREAM)
2017
+
2018
+ template <typename AsyncReadStream, typename Allocator,
2019
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2020
+ std::size_t)) ReadHandler>
2021
+ inline ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2022
+ void (asio::error_code, std::size_t))
2023
+ async_read_until(AsyncReadStream& s,
2024
+ asio::basic_streambuf<Allocator>& b,
2025
+ char delim, ASIO_MOVE_ARG(ReadHandler) handler)
2026
+ {
2027
+ return async_read_until(s, basic_streambuf_ref<Allocator>(b),
2028
+ delim, ASIO_MOVE_CAST(ReadHandler)(handler));
2029
+ }
2030
+
2031
+ template <typename AsyncReadStream, typename Allocator,
2032
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2033
+ std::size_t)) ReadHandler>
2034
+ inline ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2035
+ void (asio::error_code, std::size_t))
2036
+ async_read_until(AsyncReadStream& s,
2037
+ asio::basic_streambuf<Allocator>& b,
2038
+ ASIO_STRING_VIEW_PARAM delim,
2039
+ ASIO_MOVE_ARG(ReadHandler) handler)
2040
+ {
2041
+ return async_read_until(s, basic_streambuf_ref<Allocator>(b),
2042
+ delim, ASIO_MOVE_CAST(ReadHandler)(handler));
2043
+ }
2044
+
2045
+ #if defined(ASIO_HAS_BOOST_REGEX)
2046
+
2047
+ template <typename AsyncReadStream, typename Allocator,
2048
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2049
+ std::size_t)) ReadHandler>
2050
+ inline ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2051
+ void (asio::error_code, std::size_t))
2052
+ async_read_until(AsyncReadStream& s,
2053
+ asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
2054
+ ASIO_MOVE_ARG(ReadHandler) handler)
2055
+ {
2056
+ return async_read_until(s, basic_streambuf_ref<Allocator>(b),
2057
+ expr, ASIO_MOVE_CAST(ReadHandler)(handler));
2058
+ }
2059
+
2060
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
2061
+
2062
+ template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
2063
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2064
+ std::size_t)) ReadHandler>
2065
+ inline ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2066
+ void (asio::error_code, std::size_t))
2067
+ async_read_until(AsyncReadStream& s,
2068
+ asio::basic_streambuf<Allocator>& b,
2069
+ MatchCondition match_condition, ASIO_MOVE_ARG(ReadHandler) handler,
2070
+ typename constraint<is_match_condition<MatchCondition>::value>::type)
2071
+ {
2072
+ return async_read_until(s, basic_streambuf_ref<Allocator>(b),
2073
+ match_condition, ASIO_MOVE_CAST(ReadHandler)(handler));
2074
+ }
2075
+
2076
+ #endif // !defined(ASIO_NO_IOSTREAM)
2077
+ #endif // !defined(ASIO_NO_EXTENSIONS)
2078
+ #endif // !defined(ASIO_NO_DYNAMIC_BUFFER_V1)
2079
+
2080
+ namespace detail
2081
+ {
2082
+ template <typename AsyncReadStream,
2083
+ typename DynamicBuffer_v2, typename ReadHandler>
2084
+ class read_until_delim_op_v2
2085
+ : public base_from_cancellation_state<ReadHandler>
2086
+ {
2087
+ public:
2088
+ template <typename BufferSequence>
2089
+ read_until_delim_op_v2(AsyncReadStream& stream,
2090
+ ASIO_MOVE_ARG(BufferSequence) buffers,
2091
+ char delim, ReadHandler& handler)
2092
+ : base_from_cancellation_state<ReadHandler>(
2093
+ handler, enable_partial_cancellation()),
2094
+ stream_(stream),
2095
+ buffers_(ASIO_MOVE_CAST(BufferSequence)(buffers)),
2096
+ delim_(delim),
2097
+ start_(0),
2098
+ search_position_(0),
2099
+ bytes_to_read_(0),
2100
+ handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
2101
+ {
2102
+ }
2103
+
2104
+ #if defined(ASIO_HAS_MOVE)
2105
+ read_until_delim_op_v2(const read_until_delim_op_v2& other)
2106
+ : base_from_cancellation_state<ReadHandler>(other),
2107
+ stream_(other.stream_),
2108
+ buffers_(other.buffers_),
2109
+ delim_(other.delim_),
2110
+ start_(other.start_),
2111
+ search_position_(other.search_position_),
2112
+ bytes_to_read_(other.bytes_to_read_),
2113
+ handler_(other.handler_)
2114
+ {
2115
+ }
2116
+
2117
+ read_until_delim_op_v2(read_until_delim_op_v2&& other)
2118
+ : base_from_cancellation_state<ReadHandler>(
2119
+ ASIO_MOVE_CAST(base_from_cancellation_state<
2120
+ ReadHandler>)(other)),
2121
+ stream_(other.stream_),
2122
+ buffers_(ASIO_MOVE_CAST(DynamicBuffer_v2)(other.buffers_)),
2123
+ delim_(other.delim_),
2124
+ start_(other.start_),
2125
+ search_position_(other.search_position_),
2126
+ bytes_to_read_(other.bytes_to_read_),
2127
+ handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
2128
+ {
2129
+ }
2130
+ #endif // defined(ASIO_HAS_MOVE)
2131
+
2132
+ void operator()(asio::error_code ec,
2133
+ std::size_t bytes_transferred, int start = 0)
2134
+ {
2135
+ const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
2136
+ std::size_t pos;
2137
+ switch (start_ = start)
2138
+ {
2139
+ case 1:
2140
+ for (;;)
2141
+ {
2142
+ {
2143
+ // Determine the range of the data to be searched.
2144
+ typedef typename DynamicBuffer_v2::const_buffers_type
2145
+ buffers_type;
2146
+ typedef buffers_iterator<buffers_type> iterator;
2147
+ buffers_type data_buffers =
2148
+ const_cast<const DynamicBuffer_v2&>(buffers_).data(
2149
+ 0, buffers_.size());
2150
+ iterator begin = iterator::begin(data_buffers);
2151
+ iterator start_pos = begin + search_position_;
2152
+ iterator end = iterator::end(data_buffers);
2153
+
2154
+ // Look for a match.
2155
+ iterator iter = std::find(start_pos, end, delim_);
2156
+ if (iter != end)
2157
+ {
2158
+ // Found a match. We're done.
2159
+ search_position_ = iter - begin + 1;
2160
+ bytes_to_read_ = 0;
2161
+ }
2162
+
2163
+ // No match yet. Check if buffer is full.
2164
+ else if (buffers_.size() == buffers_.max_size())
2165
+ {
2166
+ search_position_ = not_found;
2167
+ bytes_to_read_ = 0;
2168
+ }
2169
+
2170
+ // Need to read some more data.
2171
+ else
2172
+ {
2173
+ // Next search can start with the new data.
2174
+ search_position_ = end - begin;
2175
+ bytes_to_read_ = std::min<std::size_t>(
2176
+ std::max<std::size_t>(512,
2177
+ buffers_.capacity() - buffers_.size()),
2178
+ std::min<std::size_t>(65536,
2179
+ buffers_.max_size() - buffers_.size()));
2180
+ }
2181
+ }
2182
+
2183
+ // Check if we're done.
2184
+ if (!start && bytes_to_read_ == 0)
2185
+ break;
2186
+
2187
+ // Start a new asynchronous read operation to obtain more data.
2188
+ pos = buffers_.size();
2189
+ buffers_.grow(bytes_to_read_);
2190
+ {
2191
+ ASIO_HANDLER_LOCATION((
2192
+ __FILE__, __LINE__, "async_read_until"));
2193
+ stream_.async_read_some(buffers_.data(pos, bytes_to_read_),
2194
+ ASIO_MOVE_CAST(read_until_delim_op_v2)(*this));
2195
+ }
2196
+ return; default:
2197
+ buffers_.shrink(bytes_to_read_ - bytes_transferred);
2198
+ if (ec || bytes_transferred == 0)
2199
+ break;
2200
+ if (this->cancelled() != cancellation_type::none)
2201
+ {
2202
+ ec = error::operation_aborted;
2203
+ break;
2204
+ }
2205
+ }
2206
+
2207
+ const asio::error_code result_ec =
2208
+ (search_position_ == not_found)
2209
+ ? error::not_found : ec;
2210
+
2211
+ const std::size_t result_n =
2212
+ (ec || search_position_ == not_found)
2213
+ ? 0 : search_position_;
2214
+
2215
+ ASIO_MOVE_OR_LVALUE(ReadHandler)(handler_)(result_ec, result_n);
2216
+ }
2217
+ }
2218
+
2219
+ //private:
2220
+ AsyncReadStream& stream_;
2221
+ DynamicBuffer_v2 buffers_;
2222
+ char delim_;
2223
+ int start_;
2224
+ std::size_t search_position_;
2225
+ std::size_t bytes_to_read_;
2226
+ ReadHandler handler_;
2227
+ };
2228
+
2229
+ template <typename AsyncReadStream,
2230
+ typename DynamicBuffer_v2, typename ReadHandler>
2231
+ inline asio_handler_allocate_is_deprecated
2232
+ asio_handler_allocate(std::size_t size,
2233
+ read_until_delim_op_v2<AsyncReadStream,
2234
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2235
+ {
2236
+ #if defined(ASIO_NO_DEPRECATED)
2237
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
2238
+ return asio_handler_allocate_is_no_longer_used();
2239
+ #else // defined(ASIO_NO_DEPRECATED)
2240
+ return asio_handler_alloc_helpers::allocate(
2241
+ size, this_handler->handler_);
2242
+ #endif // defined(ASIO_NO_DEPRECATED)
2243
+ }
2244
+
2245
+ template <typename AsyncReadStream,
2246
+ typename DynamicBuffer_v2, typename ReadHandler>
2247
+ inline asio_handler_deallocate_is_deprecated
2248
+ asio_handler_deallocate(void* pointer, std::size_t size,
2249
+ read_until_delim_op_v2<AsyncReadStream,
2250
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2251
+ {
2252
+ asio_handler_alloc_helpers::deallocate(
2253
+ pointer, size, this_handler->handler_);
2254
+ #if defined(ASIO_NO_DEPRECATED)
2255
+ return asio_handler_deallocate_is_no_longer_used();
2256
+ #endif // defined(ASIO_NO_DEPRECATED)
2257
+ }
2258
+
2259
+ template <typename AsyncReadStream,
2260
+ typename DynamicBuffer_v2, typename ReadHandler>
2261
+ inline bool asio_handler_is_continuation(
2262
+ read_until_delim_op_v2<AsyncReadStream,
2263
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2264
+ {
2265
+ return this_handler->start_ == 0 ? true
2266
+ : asio_handler_cont_helpers::is_continuation(
2267
+ this_handler->handler_);
2268
+ }
2269
+
2270
+ template <typename Function, typename AsyncReadStream,
2271
+ typename DynamicBuffer_v2, typename ReadHandler>
2272
+ inline asio_handler_invoke_is_deprecated
2273
+ asio_handler_invoke(Function& function,
2274
+ read_until_delim_op_v2<AsyncReadStream,
2275
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2276
+ {
2277
+ asio_handler_invoke_helpers::invoke(
2278
+ function, this_handler->handler_);
2279
+ #if defined(ASIO_NO_DEPRECATED)
2280
+ return asio_handler_invoke_is_no_longer_used();
2281
+ #endif // defined(ASIO_NO_DEPRECATED)
2282
+ }
2283
+
2284
+ template <typename Function, typename AsyncReadStream,
2285
+ typename DynamicBuffer_v2, typename ReadHandler>
2286
+ inline asio_handler_invoke_is_deprecated
2287
+ asio_handler_invoke(const Function& function,
2288
+ read_until_delim_op_v2<AsyncReadStream,
2289
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2290
+ {
2291
+ asio_handler_invoke_helpers::invoke(
2292
+ function, this_handler->handler_);
2293
+ #if defined(ASIO_NO_DEPRECATED)
2294
+ return asio_handler_invoke_is_no_longer_used();
2295
+ #endif // defined(ASIO_NO_DEPRECATED)
2296
+ }
2297
+
2298
+ template <typename AsyncReadStream>
2299
+ class initiate_async_read_until_delim_v2
2300
+ {
2301
+ public:
2302
+ typedef typename AsyncReadStream::executor_type executor_type;
2303
+
2304
+ explicit initiate_async_read_until_delim_v2(AsyncReadStream& stream)
2305
+ : stream_(stream)
2306
+ {
2307
+ }
2308
+
2309
+ executor_type get_executor() const ASIO_NOEXCEPT
2310
+ {
2311
+ return stream_.get_executor();
2312
+ }
2313
+
2314
+ template <typename ReadHandler, typename DynamicBuffer_v2>
2315
+ void operator()(ASIO_MOVE_ARG(ReadHandler) handler,
2316
+ ASIO_MOVE_ARG(DynamicBuffer_v2) buffers, char delim) const
2317
+ {
2318
+ // If you get an error on the following line it means that your handler
2319
+ // does not meet the documented type requirements for a ReadHandler.
2320
+ ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
2321
+
2322
+ non_const_lvalue<ReadHandler> handler2(handler);
2323
+ read_until_delim_op_v2<AsyncReadStream,
2324
+ typename decay<DynamicBuffer_v2>::type,
2325
+ typename decay<ReadHandler>::type>(
2326
+ stream_, ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers),
2327
+ delim, handler2.value)(asio::error_code(), 0, 1);
2328
+ }
2329
+
2330
+ private:
2331
+ AsyncReadStream& stream_;
2332
+ };
2333
+ } // namespace detail
2334
+
2335
+ #if !defined(GENERATING_DOCUMENTATION)
2336
+
2337
+ template <template <typename, typename> class Associator,
2338
+ typename AsyncReadStream, typename DynamicBuffer_v2,
2339
+ typename ReadHandler, typename DefaultCandidate>
2340
+ struct associator<Associator,
2341
+ detail::read_until_delim_op_v2<AsyncReadStream,
2342
+ DynamicBuffer_v2, ReadHandler>,
2343
+ DefaultCandidate>
2344
+ : Associator<ReadHandler, DefaultCandidate>
2345
+ {
2346
+ static typename Associator<ReadHandler, DefaultCandidate>::type get(
2347
+ const detail::read_until_delim_op_v2<AsyncReadStream,
2348
+ DynamicBuffer_v2, ReadHandler>& h,
2349
+ const DefaultCandidate& c = DefaultCandidate()) ASIO_NOEXCEPT
2350
+ {
2351
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
2352
+ }
2353
+ };
2354
+
2355
+ #endif // !defined(GENERATING_DOCUMENTATION)
2356
+
2357
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2358
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2359
+ std::size_t)) ReadHandler>
2360
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2361
+ void (asio::error_code, std::size_t))
2362
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2363
+ char delim, ASIO_MOVE_ARG(ReadHandler) handler,
2364
+ typename constraint<
2365
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2366
+ >::type)
2367
+ {
2368
+ return async_initiate<ReadHandler,
2369
+ void (asio::error_code, std::size_t)>(
2370
+ detail::initiate_async_read_until_delim_v2<AsyncReadStream>(s),
2371
+ handler, ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), delim);
2372
+ }
2373
+
2374
+ namespace detail
2375
+ {
2376
+ template <typename AsyncReadStream,
2377
+ typename DynamicBuffer_v2, typename ReadHandler>
2378
+ class read_until_delim_string_op_v2
2379
+ : public base_from_cancellation_state<ReadHandler>
2380
+ {
2381
+ public:
2382
+ template <typename BufferSequence>
2383
+ read_until_delim_string_op_v2(AsyncReadStream& stream,
2384
+ ASIO_MOVE_ARG(BufferSequence) buffers,
2385
+ const std::string& delim, ReadHandler& handler)
2386
+ : base_from_cancellation_state<ReadHandler>(
2387
+ handler, enable_partial_cancellation()),
2388
+ stream_(stream),
2389
+ buffers_(ASIO_MOVE_CAST(BufferSequence)(buffers)),
2390
+ delim_(delim),
2391
+ start_(0),
2392
+ search_position_(0),
2393
+ bytes_to_read_(0),
2394
+ handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
2395
+ {
2396
+ }
2397
+
2398
+ #if defined(ASIO_HAS_MOVE)
2399
+ read_until_delim_string_op_v2(const read_until_delim_string_op_v2& other)
2400
+ : base_from_cancellation_state<ReadHandler>(other),
2401
+ stream_(other.stream_),
2402
+ buffers_(other.buffers_),
2403
+ delim_(other.delim_),
2404
+ start_(other.start_),
2405
+ search_position_(other.search_position_),
2406
+ bytes_to_read_(other.bytes_to_read_),
2407
+ handler_(other.handler_)
2408
+ {
2409
+ }
2410
+
2411
+ read_until_delim_string_op_v2(read_until_delim_string_op_v2&& other)
2412
+ : base_from_cancellation_state<ReadHandler>(
2413
+ ASIO_MOVE_CAST(base_from_cancellation_state<
2414
+ ReadHandler>)(other)),
2415
+ stream_(other.stream_),
2416
+ buffers_(ASIO_MOVE_CAST(DynamicBuffer_v2)(other.buffers_)),
2417
+ delim_(ASIO_MOVE_CAST(std::string)(other.delim_)),
2418
+ start_(other.start_),
2419
+ search_position_(other.search_position_),
2420
+ bytes_to_read_(other.bytes_to_read_),
2421
+ handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
2422
+ {
2423
+ }
2424
+ #endif // defined(ASIO_HAS_MOVE)
2425
+
2426
+ void operator()(asio::error_code ec,
2427
+ std::size_t bytes_transferred, int start = 0)
2428
+ {
2429
+ const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
2430
+ std::size_t pos;
2431
+ switch (start_ = start)
2432
+ {
2433
+ case 1:
2434
+ for (;;)
2435
+ {
2436
+ {
2437
+ // Determine the range of the data to be searched.
2438
+ typedef typename DynamicBuffer_v2::const_buffers_type
2439
+ buffers_type;
2440
+ typedef buffers_iterator<buffers_type> iterator;
2441
+ buffers_type data_buffers =
2442
+ const_cast<const DynamicBuffer_v2&>(buffers_).data(
2443
+ 0, buffers_.size());
2444
+ iterator begin = iterator::begin(data_buffers);
2445
+ iterator start_pos = begin + search_position_;
2446
+ iterator end = iterator::end(data_buffers);
2447
+
2448
+ // Look for a match.
2449
+ std::pair<iterator, bool> result = detail::partial_search(
2450
+ start_pos, end, delim_.begin(), delim_.end());
2451
+ if (result.first != end && result.second)
2452
+ {
2453
+ // Full match. We're done.
2454
+ search_position_ = result.first - begin + delim_.length();
2455
+ bytes_to_read_ = 0;
2456
+ }
2457
+
2458
+ // No match yet. Check if buffer is full.
2459
+ else if (buffers_.size() == buffers_.max_size())
2460
+ {
2461
+ search_position_ = not_found;
2462
+ bytes_to_read_ = 0;
2463
+ }
2464
+
2465
+ // Need to read some more data.
2466
+ else
2467
+ {
2468
+ if (result.first != end)
2469
+ {
2470
+ // Partial match. Next search needs to start from beginning of
2471
+ // match.
2472
+ search_position_ = result.first - begin;
2473
+ }
2474
+ else
2475
+ {
2476
+ // Next search can start with the new data.
2477
+ search_position_ = end - begin;
2478
+ }
2479
+
2480
+ bytes_to_read_ = std::min<std::size_t>(
2481
+ std::max<std::size_t>(512,
2482
+ buffers_.capacity() - buffers_.size()),
2483
+ std::min<std::size_t>(65536,
2484
+ buffers_.max_size() - buffers_.size()));
2485
+ }
2486
+ }
2487
+
2488
+ // Check if we're done.
2489
+ if (!start && bytes_to_read_ == 0)
2490
+ break;
2491
+
2492
+ // Start a new asynchronous read operation to obtain more data.
2493
+ pos = buffers_.size();
2494
+ buffers_.grow(bytes_to_read_);
2495
+ {
2496
+ ASIO_HANDLER_LOCATION((
2497
+ __FILE__, __LINE__, "async_read_until"));
2498
+ stream_.async_read_some(buffers_.data(pos, bytes_to_read_),
2499
+ ASIO_MOVE_CAST(read_until_delim_string_op_v2)(*this));
2500
+ }
2501
+ return; default:
2502
+ buffers_.shrink(bytes_to_read_ - bytes_transferred);
2503
+ if (ec || bytes_transferred == 0)
2504
+ break;
2505
+ if (this->cancelled() != cancellation_type::none)
2506
+ {
2507
+ ec = error::operation_aborted;
2508
+ break;
2509
+ }
2510
+ }
2511
+
2512
+ const asio::error_code result_ec =
2513
+ (search_position_ == not_found)
2514
+ ? error::not_found : ec;
2515
+
2516
+ const std::size_t result_n =
2517
+ (ec || search_position_ == not_found)
2518
+ ? 0 : search_position_;
2519
+
2520
+ ASIO_MOVE_OR_LVALUE(ReadHandler)(handler_)(result_ec, result_n);
2521
+ }
2522
+ }
2523
+
2524
+ //private:
2525
+ AsyncReadStream& stream_;
2526
+ DynamicBuffer_v2 buffers_;
2527
+ std::string delim_;
2528
+ int start_;
2529
+ std::size_t search_position_;
2530
+ std::size_t bytes_to_read_;
2531
+ ReadHandler handler_;
2532
+ };
2533
+
2534
+ template <typename AsyncReadStream,
2535
+ typename DynamicBuffer_v2, typename ReadHandler>
2536
+ inline asio_handler_allocate_is_deprecated
2537
+ asio_handler_allocate(std::size_t size,
2538
+ read_until_delim_string_op_v2<AsyncReadStream,
2539
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2540
+ {
2541
+ #if defined(ASIO_NO_DEPRECATED)
2542
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
2543
+ return asio_handler_allocate_is_no_longer_used();
2544
+ #else // defined(ASIO_NO_DEPRECATED)
2545
+ return asio_handler_alloc_helpers::allocate(
2546
+ size, this_handler->handler_);
2547
+ #endif // defined(ASIO_NO_DEPRECATED)
2548
+ }
2549
+
2550
+ template <typename AsyncReadStream,
2551
+ typename DynamicBuffer_v2, typename ReadHandler>
2552
+ inline asio_handler_deallocate_is_deprecated
2553
+ asio_handler_deallocate(void* pointer, std::size_t size,
2554
+ read_until_delim_string_op_v2<AsyncReadStream,
2555
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2556
+ {
2557
+ asio_handler_alloc_helpers::deallocate(
2558
+ pointer, size, this_handler->handler_);
2559
+ #if defined(ASIO_NO_DEPRECATED)
2560
+ return asio_handler_deallocate_is_no_longer_used();
2561
+ #endif // defined(ASIO_NO_DEPRECATED)
2562
+ }
2563
+
2564
+ template <typename AsyncReadStream,
2565
+ typename DynamicBuffer_v2, typename ReadHandler>
2566
+ inline bool asio_handler_is_continuation(
2567
+ read_until_delim_string_op_v2<AsyncReadStream,
2568
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2569
+ {
2570
+ return this_handler->start_ == 0 ? true
2571
+ : asio_handler_cont_helpers::is_continuation(
2572
+ this_handler->handler_);
2573
+ }
2574
+
2575
+ template <typename Function, typename AsyncReadStream,
2576
+ typename DynamicBuffer_v2, typename ReadHandler>
2577
+ inline asio_handler_invoke_is_deprecated
2578
+ asio_handler_invoke(Function& function,
2579
+ read_until_delim_string_op_v2<AsyncReadStream,
2580
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2581
+ {
2582
+ asio_handler_invoke_helpers::invoke(
2583
+ function, this_handler->handler_);
2584
+ #if defined(ASIO_NO_DEPRECATED)
2585
+ return asio_handler_invoke_is_no_longer_used();
2586
+ #endif // defined(ASIO_NO_DEPRECATED)
2587
+ }
2588
+
2589
+ template <typename Function, typename AsyncReadStream,
2590
+ typename DynamicBuffer_v2, typename ReadHandler>
2591
+ inline asio_handler_invoke_is_deprecated
2592
+ asio_handler_invoke(const Function& function,
2593
+ read_until_delim_string_op_v2<AsyncReadStream,
2594
+ DynamicBuffer_v2, ReadHandler>* this_handler)
2595
+ {
2596
+ asio_handler_invoke_helpers::invoke(
2597
+ function, this_handler->handler_);
2598
+ #if defined(ASIO_NO_DEPRECATED)
2599
+ return asio_handler_invoke_is_no_longer_used();
2600
+ #endif // defined(ASIO_NO_DEPRECATED)
2601
+ }
2602
+
2603
+ template <typename AsyncReadStream>
2604
+ class initiate_async_read_until_delim_string_v2
2605
+ {
2606
+ public:
2607
+ typedef typename AsyncReadStream::executor_type executor_type;
2608
+
2609
+ explicit initiate_async_read_until_delim_string_v2(AsyncReadStream& stream)
2610
+ : stream_(stream)
2611
+ {
2612
+ }
2613
+
2614
+ executor_type get_executor() const ASIO_NOEXCEPT
2615
+ {
2616
+ return stream_.get_executor();
2617
+ }
2618
+
2619
+ template <typename ReadHandler, typename DynamicBuffer_v2>
2620
+ void operator()(ASIO_MOVE_ARG(ReadHandler) handler,
2621
+ ASIO_MOVE_ARG(DynamicBuffer_v2) buffers,
2622
+ const std::string& delim) const
2623
+ {
2624
+ // If you get an error on the following line it means that your handler
2625
+ // does not meet the documented type requirements for a ReadHandler.
2626
+ ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
2627
+
2628
+ non_const_lvalue<ReadHandler> handler2(handler);
2629
+ read_until_delim_string_op_v2<AsyncReadStream,
2630
+ typename decay<DynamicBuffer_v2>::type,
2631
+ typename decay<ReadHandler>::type>(
2632
+ stream_, ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers),
2633
+ delim, handler2.value)(asio::error_code(), 0, 1);
2634
+ }
2635
+
2636
+ private:
2637
+ AsyncReadStream& stream_;
2638
+ };
2639
+ } // namespace detail
2640
+
2641
+ #if !defined(GENERATING_DOCUMENTATION)
2642
+
2643
+ template <template <typename, typename> class Associator,
2644
+ typename AsyncReadStream, typename DynamicBuffer_v2,
2645
+ typename ReadHandler, typename DefaultCandidate>
2646
+ struct associator<Associator,
2647
+ detail::read_until_delim_string_op_v2<AsyncReadStream,
2648
+ DynamicBuffer_v2, ReadHandler>,
2649
+ DefaultCandidate>
2650
+ : Associator<ReadHandler, DefaultCandidate>
2651
+ {
2652
+ static typename Associator<ReadHandler, DefaultCandidate>::type get(
2653
+ const detail::read_until_delim_string_op_v2<AsyncReadStream,
2654
+ DynamicBuffer_v2, ReadHandler>& h,
2655
+ const DefaultCandidate& c = DefaultCandidate()) ASIO_NOEXCEPT
2656
+ {
2657
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
2658
+ }
2659
+ };
2660
+
2661
+ #endif // !defined(GENERATING_DOCUMENTATION)
2662
+
2663
+ template <typename AsyncReadStream,
2664
+ typename DynamicBuffer_v2,
2665
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2666
+ std::size_t)) ReadHandler>
2667
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2668
+ void (asio::error_code, std::size_t))
2669
+ async_read_until(AsyncReadStream& s,
2670
+ DynamicBuffer_v2 buffers, ASIO_STRING_VIEW_PARAM delim,
2671
+ ASIO_MOVE_ARG(ReadHandler) handler,
2672
+ typename constraint<
2673
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2674
+ >::type)
2675
+ {
2676
+ return async_initiate<ReadHandler,
2677
+ void (asio::error_code, std::size_t)>(
2678
+ detail::initiate_async_read_until_delim_string_v2<AsyncReadStream>(s),
2679
+ handler, ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers),
2680
+ static_cast<std::string>(delim));
2681
+ }
2682
+
2683
+ #if !defined(ASIO_NO_EXTENSIONS)
2684
+ #if defined(ASIO_HAS_BOOST_REGEX)
2685
+
2686
+ namespace detail
2687
+ {
2688
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2689
+ typename RegEx, typename ReadHandler>
2690
+ class read_until_expr_op_v2
2691
+ : public base_from_cancellation_state<ReadHandler>
2692
+ {
2693
+ public:
2694
+ template <typename BufferSequence>
2695
+ read_until_expr_op_v2(AsyncReadStream& stream,
2696
+ ASIO_MOVE_ARG(BufferSequence) buffers,
2697
+ const boost::regex& expr, ReadHandler& handler)
2698
+ : base_from_cancellation_state<ReadHandler>(
2699
+ handler, enable_partial_cancellation()),
2700
+ stream_(stream),
2701
+ buffers_(ASIO_MOVE_CAST(BufferSequence)(buffers)),
2702
+ expr_(expr),
2703
+ start_(0),
2704
+ search_position_(0),
2705
+ bytes_to_read_(0),
2706
+ handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
2707
+ {
2708
+ }
2709
+
2710
+ #if defined(ASIO_HAS_MOVE)
2711
+ read_until_expr_op_v2(const read_until_expr_op_v2& other)
2712
+ : base_from_cancellation_state<ReadHandler>(other),
2713
+ stream_(other.stream_),
2714
+ buffers_(other.buffers_),
2715
+ expr_(other.expr_),
2716
+ start_(other.start_),
2717
+ search_position_(other.search_position_),
2718
+ bytes_to_read_(other.bytes_to_read_),
2719
+ handler_(other.handler_)
2720
+ {
2721
+ }
2722
+
2723
+ read_until_expr_op_v2(read_until_expr_op_v2&& other)
2724
+ : base_from_cancellation_state<ReadHandler>(
2725
+ ASIO_MOVE_CAST(base_from_cancellation_state<
2726
+ ReadHandler>)(other)),
2727
+ stream_(other.stream_),
2728
+ buffers_(ASIO_MOVE_CAST(DynamicBuffer_v2)(other.buffers_)),
2729
+ expr_(other.expr_),
2730
+ start_(other.start_),
2731
+ search_position_(other.search_position_),
2732
+ bytes_to_read_(other.bytes_to_read_),
2733
+ handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
2734
+ {
2735
+ }
2736
+ #endif // defined(ASIO_HAS_MOVE)
2737
+
2738
+ void operator()(asio::error_code ec,
2739
+ std::size_t bytes_transferred, int start = 0)
2740
+ {
2741
+ const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
2742
+ std::size_t pos;
2743
+ switch (start_ = start)
2744
+ {
2745
+ case 1:
2746
+ for (;;)
2747
+ {
2748
+ {
2749
+ // Determine the range of the data to be searched.
2750
+ typedef typename DynamicBuffer_v2::const_buffers_type
2751
+ buffers_type;
2752
+ typedef buffers_iterator<buffers_type> iterator;
2753
+ buffers_type data_buffers =
2754
+ const_cast<const DynamicBuffer_v2&>(buffers_).data(
2755
+ 0, buffers_.size());
2756
+ iterator begin = iterator::begin(data_buffers);
2757
+ iterator start_pos = begin + search_position_;
2758
+ iterator end = iterator::end(data_buffers);
2759
+
2760
+ // Look for a match.
2761
+ boost::match_results<iterator,
2762
+ typename std::vector<boost::sub_match<iterator> >::allocator_type>
2763
+ match_results;
2764
+ bool match = regex_search(start_pos, end, match_results, expr_,
2765
+ boost::match_default | boost::match_partial);
2766
+ if (match && match_results[0].matched)
2767
+ {
2768
+ // Full match. We're done.
2769
+ search_position_ = match_results[0].second - begin;
2770
+ bytes_to_read_ = 0;
2771
+ }
2772
+
2773
+ // No match yet. Check if buffer is full.
2774
+ else if (buffers_.size() == buffers_.max_size())
2775
+ {
2776
+ search_position_ = not_found;
2777
+ bytes_to_read_ = 0;
2778
+ }
2779
+
2780
+ // Need to read some more data.
2781
+ else
2782
+ {
2783
+ if (match)
2784
+ {
2785
+ // Partial match. Next search needs to start from beginning of
2786
+ // match.
2787
+ search_position_ = match_results[0].first - begin;
2788
+ }
2789
+ else
2790
+ {
2791
+ // Next search can start with the new data.
2792
+ search_position_ = end - begin;
2793
+ }
2794
+
2795
+ bytes_to_read_ = std::min<std::size_t>(
2796
+ std::max<std::size_t>(512,
2797
+ buffers_.capacity() - buffers_.size()),
2798
+ std::min<std::size_t>(65536,
2799
+ buffers_.max_size() - buffers_.size()));
2800
+ }
2801
+ }
2802
+
2803
+ // Check if we're done.
2804
+ if (!start && bytes_to_read_ == 0)
2805
+ break;
2806
+
2807
+ // Start a new asynchronous read operation to obtain more data.
2808
+ pos = buffers_.size();
2809
+ buffers_.grow(bytes_to_read_);
2810
+ {
2811
+ ASIO_HANDLER_LOCATION((
2812
+ __FILE__, __LINE__, "async_read_until"));
2813
+ stream_.async_read_some(buffers_.data(pos, bytes_to_read_),
2814
+ ASIO_MOVE_CAST(read_until_expr_op_v2)(*this));
2815
+ }
2816
+ return; default:
2817
+ buffers_.shrink(bytes_to_read_ - bytes_transferred);
2818
+ if (ec || bytes_transferred == 0)
2819
+ break;
2820
+ if (this->cancelled() != cancellation_type::none)
2821
+ {
2822
+ ec = error::operation_aborted;
2823
+ break;
2824
+ }
2825
+ }
2826
+
2827
+ const asio::error_code result_ec =
2828
+ (search_position_ == not_found)
2829
+ ? error::not_found : ec;
2830
+
2831
+ const std::size_t result_n =
2832
+ (ec || search_position_ == not_found)
2833
+ ? 0 : search_position_;
2834
+
2835
+ ASIO_MOVE_OR_LVALUE(ReadHandler)(handler_)(result_ec, result_n);
2836
+ }
2837
+ }
2838
+
2839
+ //private:
2840
+ AsyncReadStream& stream_;
2841
+ DynamicBuffer_v2 buffers_;
2842
+ RegEx expr_;
2843
+ int start_;
2844
+ std::size_t search_position_;
2845
+ std::size_t bytes_to_read_;
2846
+ ReadHandler handler_;
2847
+ };
2848
+
2849
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2850
+ typename RegEx, typename ReadHandler>
2851
+ inline asio_handler_allocate_is_deprecated
2852
+ asio_handler_allocate(std::size_t size,
2853
+ read_until_expr_op_v2<AsyncReadStream,
2854
+ DynamicBuffer_v2, RegEx, ReadHandler>* this_handler)
2855
+ {
2856
+ #if defined(ASIO_NO_DEPRECATED)
2857
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
2858
+ return asio_handler_allocate_is_no_longer_used();
2859
+ #else // defined(ASIO_NO_DEPRECATED)
2860
+ return asio_handler_alloc_helpers::allocate(
2861
+ size, this_handler->handler_);
2862
+ #endif // defined(ASIO_NO_DEPRECATED)
2863
+ }
2864
+
2865
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2866
+ typename RegEx, typename ReadHandler>
2867
+ inline asio_handler_deallocate_is_deprecated
2868
+ asio_handler_deallocate(void* pointer, std::size_t size,
2869
+ read_until_expr_op_v2<AsyncReadStream,
2870
+ DynamicBuffer_v2, RegEx, ReadHandler>* this_handler)
2871
+ {
2872
+ asio_handler_alloc_helpers::deallocate(
2873
+ pointer, size, this_handler->handler_);
2874
+ #if defined(ASIO_NO_DEPRECATED)
2875
+ return asio_handler_deallocate_is_no_longer_used();
2876
+ #endif // defined(ASIO_NO_DEPRECATED)
2877
+ }
2878
+
2879
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2880
+ typename RegEx, typename ReadHandler>
2881
+ inline bool asio_handler_is_continuation(
2882
+ read_until_expr_op_v2<AsyncReadStream,
2883
+ DynamicBuffer_v2, RegEx, ReadHandler>* this_handler)
2884
+ {
2885
+ return this_handler->start_ == 0 ? true
2886
+ : asio_handler_cont_helpers::is_continuation(
2887
+ this_handler->handler_);
2888
+ }
2889
+
2890
+ template <typename Function, typename AsyncReadStream,
2891
+ typename DynamicBuffer_v2, typename RegEx, typename ReadHandler>
2892
+ inline asio_handler_invoke_is_deprecated
2893
+ asio_handler_invoke(Function& function,
2894
+ read_until_expr_op_v2<AsyncReadStream,
2895
+ DynamicBuffer_v2, RegEx, ReadHandler>* this_handler)
2896
+ {
2897
+ asio_handler_invoke_helpers::invoke(
2898
+ function, this_handler->handler_);
2899
+ #if defined(ASIO_NO_DEPRECATED)
2900
+ return asio_handler_invoke_is_no_longer_used();
2901
+ #endif // defined(ASIO_NO_DEPRECATED)
2902
+ }
2903
+
2904
+ template <typename Function, typename AsyncReadStream,
2905
+ typename DynamicBuffer_v2, typename RegEx, typename ReadHandler>
2906
+ inline asio_handler_invoke_is_deprecated
2907
+ asio_handler_invoke(const Function& function,
2908
+ read_until_expr_op_v2<AsyncReadStream,
2909
+ DynamicBuffer_v2, RegEx, ReadHandler>* this_handler)
2910
+ {
2911
+ asio_handler_invoke_helpers::invoke(
2912
+ function, this_handler->handler_);
2913
+ #if defined(ASIO_NO_DEPRECATED)
2914
+ return asio_handler_invoke_is_no_longer_used();
2915
+ #endif // defined(ASIO_NO_DEPRECATED)
2916
+ }
2917
+
2918
+ template <typename AsyncReadStream>
2919
+ class initiate_async_read_until_expr_v2
2920
+ {
2921
+ public:
2922
+ typedef typename AsyncReadStream::executor_type executor_type;
2923
+
2924
+ explicit initiate_async_read_until_expr_v2(AsyncReadStream& stream)
2925
+ : stream_(stream)
2926
+ {
2927
+ }
2928
+
2929
+ executor_type get_executor() const ASIO_NOEXCEPT
2930
+ {
2931
+ return stream_.get_executor();
2932
+ }
2933
+
2934
+ template <typename ReadHandler, typename DynamicBuffer_v2, typename RegEx>
2935
+ void operator()(ASIO_MOVE_ARG(ReadHandler) handler,
2936
+ ASIO_MOVE_ARG(DynamicBuffer_v2) buffers,
2937
+ const RegEx& expr) const
2938
+ {
2939
+ // If you get an error on the following line it means that your handler
2940
+ // does not meet the documented type requirements for a ReadHandler.
2941
+ ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
2942
+
2943
+ non_const_lvalue<ReadHandler> handler2(handler);
2944
+ read_until_expr_op_v2<AsyncReadStream,
2945
+ typename decay<DynamicBuffer_v2>::type,
2946
+ RegEx, typename decay<ReadHandler>::type>(
2947
+ stream_, ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers),
2948
+ expr, handler2.value)(asio::error_code(), 0, 1);
2949
+ }
2950
+
2951
+ private:
2952
+ AsyncReadStream& stream_;
2953
+ };
2954
+ } // namespace detail
2955
+
2956
+ #if !defined(GENERATING_DOCUMENTATION)
2957
+
2958
+ template <template <typename, typename> class Associator,
2959
+ typename AsyncReadStream, typename DynamicBuffer_v2,
2960
+ typename RegEx, typename ReadHandler, typename DefaultCandidate>
2961
+ struct associator<Associator,
2962
+ detail::read_until_expr_op_v2<AsyncReadStream,
2963
+ DynamicBuffer_v2, RegEx, ReadHandler>,
2964
+ DefaultCandidate>
2965
+ : Associator<ReadHandler, DefaultCandidate>
2966
+ {
2967
+ static typename Associator<ReadHandler, DefaultCandidate>::type get(
2968
+ const detail::read_until_expr_op_v2<AsyncReadStream,
2969
+ DynamicBuffer_v2, RegEx, ReadHandler>& h,
2970
+ const DefaultCandidate& c = DefaultCandidate()) ASIO_NOEXCEPT
2971
+ {
2972
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
2973
+ }
2974
+ };
2975
+
2976
+ #endif // !defined(GENERATING_DOCUMENTATION)
2977
+
2978
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2979
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
2980
+ std::size_t)) ReadHandler>
2981
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2982
+ void (asio::error_code, std::size_t))
2983
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2984
+ const boost::regex& expr, ASIO_MOVE_ARG(ReadHandler) handler,
2985
+ typename constraint<
2986
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2987
+ >::type)
2988
+ {
2989
+ return async_initiate<ReadHandler,
2990
+ void (asio::error_code, std::size_t)>(
2991
+ detail::initiate_async_read_until_expr_v2<AsyncReadStream>(s),
2992
+ handler, ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), expr);
2993
+ }
2994
+
2995
+ #endif // defined(ASIO_HAS_BOOST_REGEX)
2996
+
2997
+ namespace detail
2998
+ {
2999
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
3000
+ typename MatchCondition, typename ReadHandler>
3001
+ class read_until_match_op_v2
3002
+ : public base_from_cancellation_state<ReadHandler>
3003
+ {
3004
+ public:
3005
+ template <typename BufferSequence>
3006
+ read_until_match_op_v2(AsyncReadStream& stream,
3007
+ ASIO_MOVE_ARG(BufferSequence) buffers,
3008
+ MatchCondition match_condition, ReadHandler& handler)
3009
+ : base_from_cancellation_state<ReadHandler>(
3010
+ handler, enable_partial_cancellation()),
3011
+ stream_(stream),
3012
+ buffers_(ASIO_MOVE_CAST(BufferSequence)(buffers)),
3013
+ match_condition_(match_condition),
3014
+ start_(0),
3015
+ search_position_(0),
3016
+ bytes_to_read_(0),
3017
+ handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
3018
+ {
3019
+ }
3020
+
3021
+ #if defined(ASIO_HAS_MOVE)
3022
+ read_until_match_op_v2(const read_until_match_op_v2& other)
3023
+ : base_from_cancellation_state<ReadHandler>(other),
3024
+ stream_(other.stream_),
3025
+ buffers_(other.buffers_),
3026
+ match_condition_(other.match_condition_),
3027
+ start_(other.start_),
3028
+ search_position_(other.search_position_),
3029
+ bytes_to_read_(other.bytes_to_read_),
3030
+ handler_(other.handler_)
3031
+ {
3032
+ }
3033
+
3034
+ read_until_match_op_v2(read_until_match_op_v2&& other)
3035
+ : base_from_cancellation_state<ReadHandler>(
3036
+ ASIO_MOVE_CAST(base_from_cancellation_state<
3037
+ ReadHandler>)(other)),
3038
+ stream_(other.stream_),
3039
+ buffers_(ASIO_MOVE_CAST(DynamicBuffer_v2)(other.buffers_)),
3040
+ match_condition_(other.match_condition_),
3041
+ start_(other.start_),
3042
+ search_position_(other.search_position_),
3043
+ bytes_to_read_(other.bytes_to_read_),
3044
+ handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
3045
+ {
3046
+ }
3047
+ #endif // defined(ASIO_HAS_MOVE)
3048
+
3049
+ void operator()(asio::error_code ec,
3050
+ std::size_t bytes_transferred, int start = 0)
3051
+ {
3052
+ const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
3053
+ std::size_t pos;
3054
+ switch (start_ = start)
3055
+ {
3056
+ case 1:
3057
+ for (;;)
3058
+ {
3059
+ {
3060
+ // Determine the range of the data to be searched.
3061
+ typedef typename DynamicBuffer_v2::const_buffers_type
3062
+ buffers_type;
3063
+ typedef buffers_iterator<buffers_type> iterator;
3064
+ buffers_type data_buffers =
3065
+ const_cast<const DynamicBuffer_v2&>(buffers_).data(
3066
+ 0, buffers_.size());
3067
+ iterator begin = iterator::begin(data_buffers);
3068
+ iterator start_pos = begin + search_position_;
3069
+ iterator end = iterator::end(data_buffers);
3070
+
3071
+ // Look for a match.
3072
+ std::pair<iterator, bool> result = match_condition_(start_pos, end);
3073
+ if (result.second)
3074
+ {
3075
+ // Full match. We're done.
3076
+ search_position_ = result.first - begin;
3077
+ bytes_to_read_ = 0;
3078
+ }
3079
+
3080
+ // No match yet. Check if buffer is full.
3081
+ else if (buffers_.size() == buffers_.max_size())
3082
+ {
3083
+ search_position_ = not_found;
3084
+ bytes_to_read_ = 0;
3085
+ }
3086
+
3087
+ // Need to read some more data.
3088
+ else
3089
+ {
3090
+ if (result.first != end)
3091
+ {
3092
+ // Partial match. Next search needs to start from beginning of
3093
+ // match.
3094
+ search_position_ = result.first - begin;
3095
+ }
3096
+ else
3097
+ {
3098
+ // Next search can start with the new data.
3099
+ search_position_ = end - begin;
3100
+ }
3101
+
3102
+ bytes_to_read_ = std::min<std::size_t>(
3103
+ std::max<std::size_t>(512,
3104
+ buffers_.capacity() - buffers_.size()),
3105
+ std::min<std::size_t>(65536,
3106
+ buffers_.max_size() - buffers_.size()));
3107
+ }
3108
+ }
3109
+
3110
+ // Check if we're done.
3111
+ if (!start && bytes_to_read_ == 0)
3112
+ break;
3113
+
3114
+ // Start a new asynchronous read operation to obtain more data.
3115
+ pos = buffers_.size();
3116
+ buffers_.grow(bytes_to_read_);
3117
+ {
3118
+ ASIO_HANDLER_LOCATION((
3119
+ __FILE__, __LINE__, "async_read_until"));
3120
+ stream_.async_read_some(buffers_.data(pos, bytes_to_read_),
3121
+ ASIO_MOVE_CAST(read_until_match_op_v2)(*this));
3122
+ }
3123
+ return; default:
3124
+ buffers_.shrink(bytes_to_read_ - bytes_transferred);
3125
+ if (ec || bytes_transferred == 0)
3126
+ break;
3127
+ if (this->cancelled() != cancellation_type::none)
3128
+ {
3129
+ ec = error::operation_aborted;
3130
+ break;
3131
+ }
3132
+ }
3133
+
3134
+ const asio::error_code result_ec =
3135
+ (search_position_ == not_found)
3136
+ ? error::not_found : ec;
3137
+
3138
+ const std::size_t result_n =
3139
+ (ec || search_position_ == not_found)
3140
+ ? 0 : search_position_;
3141
+
3142
+ ASIO_MOVE_OR_LVALUE(ReadHandler)(handler_)(result_ec, result_n);
3143
+ }
3144
+ }
3145
+
3146
+ //private:
3147
+ AsyncReadStream& stream_;
3148
+ DynamicBuffer_v2 buffers_;
3149
+ MatchCondition match_condition_;
3150
+ int start_;
3151
+ std::size_t search_position_;
3152
+ std::size_t bytes_to_read_;
3153
+ ReadHandler handler_;
3154
+ };
3155
+
3156
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
3157
+ typename MatchCondition, typename ReadHandler>
3158
+ inline asio_handler_allocate_is_deprecated
3159
+ asio_handler_allocate(std::size_t size,
3160
+ read_until_match_op_v2<AsyncReadStream, DynamicBuffer_v2,
3161
+ MatchCondition, ReadHandler>* this_handler)
3162
+ {
3163
+ #if defined(ASIO_NO_DEPRECATED)
3164
+ asio_handler_alloc_helpers::allocate(size, this_handler->handler_);
3165
+ return asio_handler_allocate_is_no_longer_used();
3166
+ #else // defined(ASIO_NO_DEPRECATED)
3167
+ return asio_handler_alloc_helpers::allocate(
3168
+ size, this_handler->handler_);
3169
+ #endif // defined(ASIO_NO_DEPRECATED)
3170
+ }
3171
+
3172
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
3173
+ typename MatchCondition, typename ReadHandler>
3174
+ inline asio_handler_deallocate_is_deprecated
3175
+ asio_handler_deallocate(void* pointer, std::size_t size,
3176
+ read_until_match_op_v2<AsyncReadStream, DynamicBuffer_v2,
3177
+ MatchCondition, ReadHandler>* this_handler)
3178
+ {
3179
+ asio_handler_alloc_helpers::deallocate(
3180
+ pointer, size, this_handler->handler_);
3181
+ #if defined(ASIO_NO_DEPRECATED)
3182
+ return asio_handler_deallocate_is_no_longer_used();
3183
+ #endif // defined(ASIO_NO_DEPRECATED)
3184
+ }
3185
+
3186
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
3187
+ typename MatchCondition, typename ReadHandler>
3188
+ inline bool asio_handler_is_continuation(
3189
+ read_until_match_op_v2<AsyncReadStream, DynamicBuffer_v2,
3190
+ MatchCondition, ReadHandler>* this_handler)
3191
+ {
3192
+ return this_handler->start_ == 0 ? true
3193
+ : asio_handler_cont_helpers::is_continuation(
3194
+ this_handler->handler_);
3195
+ }
3196
+
3197
+ template <typename Function, typename AsyncReadStream,
3198
+ typename DynamicBuffer_v2, typename MatchCondition,
3199
+ typename ReadHandler>
3200
+ inline asio_handler_invoke_is_deprecated
3201
+ asio_handler_invoke(Function& function,
3202
+ read_until_match_op_v2<AsyncReadStream, DynamicBuffer_v2,
3203
+ MatchCondition, ReadHandler>* this_handler)
3204
+ {
3205
+ asio_handler_invoke_helpers::invoke(
3206
+ function, this_handler->handler_);
3207
+ #if defined(ASIO_NO_DEPRECATED)
3208
+ return asio_handler_invoke_is_no_longer_used();
3209
+ #endif // defined(ASIO_NO_DEPRECATED)
3210
+ }
3211
+
3212
+ template <typename Function, typename AsyncReadStream,
3213
+ typename DynamicBuffer_v2, typename MatchCondition,
3214
+ typename ReadHandler>
3215
+ inline asio_handler_invoke_is_deprecated
3216
+ asio_handler_invoke(const Function& function,
3217
+ read_until_match_op_v2<AsyncReadStream, DynamicBuffer_v2,
3218
+ MatchCondition, ReadHandler>* this_handler)
3219
+ {
3220
+ asio_handler_invoke_helpers::invoke(
3221
+ function, this_handler->handler_);
3222
+ #if defined(ASIO_NO_DEPRECATED)
3223
+ return asio_handler_invoke_is_no_longer_used();
3224
+ #endif // defined(ASIO_NO_DEPRECATED)
3225
+ }
3226
+
3227
+ template <typename AsyncReadStream>
3228
+ class initiate_async_read_until_match_v2
3229
+ {
3230
+ public:
3231
+ typedef typename AsyncReadStream::executor_type executor_type;
3232
+
3233
+ explicit initiate_async_read_until_match_v2(AsyncReadStream& stream)
3234
+ : stream_(stream)
3235
+ {
3236
+ }
3237
+
3238
+ executor_type get_executor() const ASIO_NOEXCEPT
3239
+ {
3240
+ return stream_.get_executor();
3241
+ }
3242
+
3243
+ template <typename ReadHandler,
3244
+ typename DynamicBuffer_v2, typename MatchCondition>
3245
+ void operator()(ASIO_MOVE_ARG(ReadHandler) handler,
3246
+ ASIO_MOVE_ARG(DynamicBuffer_v2) buffers,
3247
+ MatchCondition match_condition) const
3248
+ {
3249
+ // If you get an error on the following line it means that your handler
3250
+ // does not meet the documented type requirements for a ReadHandler.
3251
+ ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
3252
+
3253
+ non_const_lvalue<ReadHandler> handler2(handler);
3254
+ read_until_match_op_v2<AsyncReadStream,
3255
+ typename decay<DynamicBuffer_v2>::type,
3256
+ MatchCondition, typename decay<ReadHandler>::type>(
3257
+ stream_, ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers),
3258
+ match_condition, handler2.value)(asio::error_code(), 0, 1);
3259
+ }
3260
+
3261
+ private:
3262
+ AsyncReadStream& stream_;
3263
+ };
3264
+ } // namespace detail
3265
+
3266
+ #if !defined(GENERATING_DOCUMENTATION)
3267
+
3268
+ template <template <typename, typename> class Associator,
3269
+ typename AsyncReadStream, typename DynamicBuffer_v2,
3270
+ typename MatchCondition, typename ReadHandler, typename DefaultCandidate>
3271
+ struct associator<Associator,
3272
+ detail::read_until_match_op_v2<AsyncReadStream,
3273
+ DynamicBuffer_v2, MatchCondition, ReadHandler>,
3274
+ DefaultCandidate>
3275
+ : Associator<ReadHandler, DefaultCandidate>
3276
+ {
3277
+ static typename Associator<ReadHandler, DefaultCandidate>::type get(
3278
+ const detail::read_until_match_op_v2<AsyncReadStream,
3279
+ DynamicBuffer_v2, MatchCondition, ReadHandler>& h,
3280
+ const DefaultCandidate& c = DefaultCandidate()) ASIO_NOEXCEPT
3281
+ {
3282
+ return Associator<ReadHandler, DefaultCandidate>::get(h.handler_, c);
3283
+ }
3284
+ };
3285
+
3286
+ #endif // !defined(GENERATING_DOCUMENTATION)
3287
+
3288
+ template <typename AsyncReadStream,
3289
+ typename DynamicBuffer_v2, typename MatchCondition,
3290
+ ASIO_COMPLETION_TOKEN_FOR(void (asio::error_code,
3291
+ std::size_t)) ReadHandler>
3292
+ ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
3293
+ void (asio::error_code, std::size_t))
3294
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
3295
+ MatchCondition match_condition, ASIO_MOVE_ARG(ReadHandler) handler,
3296
+ typename constraint<
3297
+ is_match_condition<MatchCondition>::value
3298
+ >::type,
3299
+ typename constraint<
3300
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
3301
+ >::type)
3302
+ {
3303
+ return async_initiate<ReadHandler,
3304
+ void (asio::error_code, std::size_t)>(
3305
+ detail::initiate_async_read_until_match_v2<AsyncReadStream>(s), handler,
3306
+ ASIO_MOVE_CAST(DynamicBuffer_v2)(buffers), match_condition);
3307
+ }
3308
+
3309
+ #endif // !defined(ASIO_NO_EXTENSIONS)
3310
+
3311
+ } // namespace asio
3312
+
3313
+ #include "asio/detail/pop_options.hpp"
3314
+
3315
+ #endif // ASIO_IMPL_READ_UNTIL_HPP