couchbase 3.5.4 → 3.5.5

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 (441) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/ext/CMakeLists.txt +8 -6
  4. data/ext/cache/cpm/{CPM_0.38.6.cmake → CPM_0.40.5.cmake} +152 -22
  5. data/ext/cache/extconf_include.rb +3 -3
  6. data/ext/cache/mozilla-ca-bundle.crt +32 -87
  7. data/ext/cache/mozilla-ca-bundle.sha256 +1 -1
  8. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/CMakeLists.txt +30 -6
  9. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/utils.cmake +13 -2
  10. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async_logger-inl.h +5 -7
  11. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/mpmc_blocking_q.h +3 -3
  12. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/os-inl.h +3 -3
  13. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/thread_pool-inl.h +3 -8
  14. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/thread_pool.h +3 -14
  15. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/base.h +47 -31
  16. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/format-inl.h +32 -8
  17. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/format.h +22 -14
  18. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/ranges.h +1 -1
  19. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/mdc.h +4 -0
  20. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/pattern_formatter-inl.h +16 -2
  21. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ansicolor_sink.h +1 -1
  22. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/base_sink.h +4 -4
  23. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/callback_sink.h +1 -1
  24. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/daily_file_sink.h +3 -0
  25. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/hourly_file_sink.h +2 -0
  26. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/msvc_sink.h +1 -1
  27. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/rotating_file_sink-inl.h +1 -1
  28. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/syslog_sink.h +3 -2
  29. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +9 -0
  30. data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/version.h +2 -2
  31. data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/format.cc → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/src/bundled_fmtlib_format.cpp} +10 -5
  32. data/ext/couchbase/CMakeLists.txt +3 -2
  33. data/ext/couchbase/cmake/APKBUILD.in +54 -0
  34. data/ext/couchbase/cmake/Backtrace.cmake +3 -1
  35. data/ext/couchbase/cmake/CPM.cmake +1 -1
  36. data/ext/couchbase/cmake/CompilerWarnings.cmake +0 -5
  37. data/ext/couchbase/cmake/Packaging.cmake +174 -11
  38. data/ext/couchbase/cmake/RPath.cmake +10 -0
  39. data/ext/couchbase/cmake/Testing.cmake +0 -4
  40. data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +7 -26
  41. data/ext/couchbase/cmake/VersionInfo.cmake +4 -0
  42. data/ext/couchbase/cmake/build_version.hxx.in +1 -0
  43. data/ext/couchbase/cmake/couchbase-cxx-client.spec.in +2 -2
  44. data/ext/couchbase/cmake/couchbase_cxx_client.pc.in +2 -2
  45. data/ext/couchbase/core/agent_config.cxx +1 -1
  46. data/ext/couchbase/core/agent_group_config.cxx +1 -1
  47. data/ext/couchbase/core/bucket.cxx +9 -9
  48. data/ext/couchbase/core/cluster.cxx +0 -2
  49. data/ext/couchbase/core/cluster_agent_config.cxx +1 -1
  50. data/ext/couchbase/core/collections_component.cxx +1 -1
  51. data/ext/couchbase/core/columnar/agent_config.cxx +2 -2
  52. data/ext/couchbase/core/columnar/error.hxx +0 -1
  53. data/ext/couchbase/core/columnar/query_component.cxx +2 -2
  54. data/ext/couchbase/core/config_profiles.cxx +1 -1
  55. data/ext/couchbase/core/core_sdk_shim.cxx +1 -1
  56. data/ext/couchbase/core/crud_component.cxx +1 -1
  57. data/ext/couchbase/core/design_document_namespace_fmt.hxx +1 -1
  58. data/ext/couchbase/core/diagnostics_fmt.hxx +1 -1
  59. data/ext/couchbase/core/document_id.cxx +1 -1
  60. data/ext/couchbase/core/document_id_fmt.hxx +1 -1
  61. data/ext/couchbase/core/error_context/analytics_json.hxx +3 -1
  62. data/ext/couchbase/core/error_context/key_value_json.hxx +1 -1
  63. data/ext/couchbase/core/error_context/query_public_json.hxx +1 -1
  64. data/ext/couchbase/core/error_context/subdocument_json.hxx +1 -1
  65. data/ext/couchbase/core/fmt/key_value_error_map_attribute.hxx +1 -1
  66. data/ext/couchbase/core/fmt/key_value_extended_error_info.hxx +1 -1
  67. data/ext/couchbase/core/fmt/key_value_status_code.hxx +1 -1
  68. data/ext/couchbase/core/http_component.cxx +3 -3
  69. data/ext/couchbase/core/impl/analytics.cxx +1 -0
  70. data/ext/couchbase/core/impl/best_effort_retry_strategy.cxx +1 -1
  71. data/ext/couchbase/core/impl/collection.cxx +28 -4
  72. data/ext/couchbase/core/impl/date_range.cxx +2 -2
  73. data/ext/couchbase/core/impl/date_range_query.cxx +2 -2
  74. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +1 -1
  75. data/ext/couchbase/core/impl/error.cxx +27 -4
  76. data/ext/couchbase/core/impl/expiry.cxx +2 -2
  77. data/ext/couchbase/core/impl/fail_fast_retry_strategy.cxx +1 -2
  78. data/ext/couchbase/core/impl/get_replica.hxx +2 -0
  79. data/ext/couchbase/core/impl/key_value_error_context.cxx +6 -4
  80. data/ext/couchbase/core/impl/lookup_in_replica.hxx +2 -0
  81. data/ext/couchbase/core/impl/numeric_range.cxx +1 -1
  82. data/ext/couchbase/core/impl/observe_seqno.hxx +2 -0
  83. data/ext/couchbase/core/impl/query.cxx +1 -0
  84. data/ext/couchbase/core/impl/query_error_context.cxx +3 -2
  85. data/ext/couchbase/core/impl/scope.cxx +5 -6
  86. data/ext/couchbase/core/impl/search.cxx +3 -1
  87. data/ext/couchbase/core/io/config_tracker.cxx +1 -1
  88. data/ext/couchbase/core/io/dns_client.cxx +23 -8
  89. data/ext/couchbase/core/io/http_command.hxx +2 -2
  90. data/ext/couchbase/core/io/http_parser.cxx +1 -1
  91. data/ext/couchbase/core/io/http_session.cxx +4 -0
  92. data/ext/couchbase/core/io/http_session.hxx +4 -2
  93. data/ext/couchbase/core/io/mcbp_command.hxx +2 -2
  94. data/ext/couchbase/core/key_value_config.cxx +2 -2
  95. data/ext/couchbase/core/logger/logger.hxx +1 -1
  96. data/ext/couchbase/core/management/rbac_fmt.hxx +1 -1
  97. data/ext/couchbase/core/mcbp/operation_queue.cxx +1 -1
  98. data/ext/couchbase/core/mcbp/packet.cxx +1 -1
  99. data/ext/couchbase/core/meta/features.hxx +11 -0
  100. data/ext/couchbase/core/meta/version.cxx +48 -7
  101. data/ext/couchbase/core/operations/document_analytics.cxx +23 -17
  102. data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
  103. data/ext/couchbase/core/operations/document_append.hxx +2 -0
  104. data/ext/couchbase/core/operations/document_decrement.hxx +2 -0
  105. data/ext/couchbase/core/operations/document_exists.hxx +2 -0
  106. data/ext/couchbase/core/operations/document_get.hxx +2 -0
  107. data/ext/couchbase/core/operations/document_get_all_replicas.hxx +2 -0
  108. data/ext/couchbase/core/operations/document_get_and_lock.hxx +2 -0
  109. data/ext/couchbase/core/operations/document_get_and_touch.hxx +2 -0
  110. data/ext/couchbase/core/operations/document_get_any_replica.hxx +2 -0
  111. data/ext/couchbase/core/operations/document_get_projected.hxx +2 -0
  112. data/ext/couchbase/core/operations/document_increment.hxx +2 -0
  113. data/ext/couchbase/core/operations/document_insert.hxx +2 -0
  114. data/ext/couchbase/core/operations/document_lookup_in.hxx +2 -0
  115. data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +2 -0
  116. data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +2 -0
  117. data/ext/couchbase/core/operations/document_mutate_in.hxx +2 -0
  118. data/ext/couchbase/core/operations/document_prepend.hxx +2 -0
  119. data/ext/couchbase/core/operations/document_query.hxx +1 -0
  120. data/ext/couchbase/core/operations/document_remove.hxx +2 -0
  121. data/ext/couchbase/core/operations/document_replace.hxx +2 -0
  122. data/ext/couchbase/core/operations/document_search.hxx +1 -0
  123. data/ext/couchbase/core/operations/document_touch.hxx +2 -0
  124. data/ext/couchbase/core/operations/document_unlock.hxx +2 -0
  125. data/ext/couchbase/core/operations/document_upsert.hxx +2 -0
  126. data/ext/couchbase/core/operations/document_view.hxx +1 -0
  127. data/ext/couchbase/core/operations/http_noop.hxx +2 -0
  128. data/ext/couchbase/core/operations/management/CMakeLists.txt +0 -1
  129. data/ext/couchbase/core/operations/management/analytics_dataset_create.cxx +1 -1
  130. data/ext/couchbase/core/operations/management/analytics_dataset_create.hxx +1 -0
  131. data/ext/couchbase/core/operations/management/analytics_dataset_drop.cxx +1 -1
  132. data/ext/couchbase/core/operations/management/analytics_dataset_drop.hxx +1 -0
  133. data/ext/couchbase/core/operations/management/analytics_dataset_get_all.hxx +1 -0
  134. data/ext/couchbase/core/operations/management/analytics_dataverse_create.cxx +1 -1
  135. data/ext/couchbase/core/operations/management/analytics_dataverse_create.hxx +1 -0
  136. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.cxx +1 -1
  137. data/ext/couchbase/core/operations/management/analytics_dataverse_drop.hxx +1 -0
  138. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.cxx +1 -1
  139. data/ext/couchbase/core/operations/management/analytics_get_pending_mutations.hxx +2 -0
  140. data/ext/couchbase/core/operations/management/analytics_index_create.hxx +1 -0
  141. data/ext/couchbase/core/operations/management/analytics_index_drop.cxx +1 -1
  142. data/ext/couchbase/core/operations/management/analytics_index_drop.hxx +1 -0
  143. data/ext/couchbase/core/operations/management/analytics_index_get_all.hxx +1 -0
  144. data/ext/couchbase/core/operations/management/analytics_link_connect.cxx +1 -1
  145. data/ext/couchbase/core/operations/management/analytics_link_connect.hxx +1 -0
  146. data/ext/couchbase/core/operations/management/analytics_link_create.hxx +1 -0
  147. data/ext/couchbase/core/operations/management/analytics_link_disconnect.cxx +1 -1
  148. data/ext/couchbase/core/operations/management/analytics_link_disconnect.hxx +1 -0
  149. data/ext/couchbase/core/operations/management/analytics_link_drop.cxx +1 -1
  150. data/ext/couchbase/core/operations/management/analytics_link_drop.hxx +1 -0
  151. data/ext/couchbase/core/operations/management/analytics_link_get_all.cxx +24 -16
  152. data/ext/couchbase/core/operations/management/analytics_link_get_all.hxx +4 -3
  153. data/ext/couchbase/core/operations/management/analytics_link_replace.hxx +1 -0
  154. data/ext/couchbase/core/operations/management/analytics_link_utils.hxx +4 -3
  155. data/ext/couchbase/core/operations/management/bucket_create.hxx +1 -0
  156. data/ext/couchbase/core/operations/management/bucket_describe.cxx +1 -1
  157. data/ext/couchbase/core/operations/management/bucket_describe.hxx +1 -0
  158. data/ext/couchbase/core/operations/management/bucket_drop.cxx +1 -1
  159. data/ext/couchbase/core/operations/management/bucket_drop.hxx +1 -0
  160. data/ext/couchbase/core/operations/management/bucket_flush.cxx +1 -1
  161. data/ext/couchbase/core/operations/management/bucket_flush.hxx +1 -0
  162. data/ext/couchbase/core/operations/management/bucket_get.cxx +1 -1
  163. data/ext/couchbase/core/operations/management/bucket_get.hxx +1 -0
  164. data/ext/couchbase/core/operations/management/bucket_get_all.hxx +1 -0
  165. data/ext/couchbase/core/operations/management/bucket_update.hxx +1 -0
  166. data/ext/couchbase/core/operations/management/change_password.cxx +1 -1
  167. data/ext/couchbase/core/operations/management/change_password.hxx +1 -0
  168. data/ext/couchbase/core/operations/management/cluster_describe.hxx +1 -0
  169. data/ext/couchbase/core/operations/management/cluster_developer_preview_enable.hxx +1 -0
  170. data/ext/couchbase/core/operations/management/collection_create.cxx +1 -1
  171. data/ext/couchbase/core/operations/management/collection_create.hxx +2 -0
  172. data/ext/couchbase/core/operations/management/collection_drop.cxx +1 -1
  173. data/ext/couchbase/core/operations/management/collection_drop.hxx +1 -0
  174. data/ext/couchbase/core/operations/management/collection_update.cxx +1 -1
  175. data/ext/couchbase/core/operations/management/collection_update.hxx +2 -0
  176. data/ext/couchbase/core/operations/management/collections_manifest_get.hxx +2 -0
  177. data/ext/couchbase/core/operations/management/eventing_deploy_function.cxx +1 -1
  178. data/ext/couchbase/core/operations/management/eventing_deploy_function.hxx +3 -2
  179. data/ext/couchbase/core/operations/management/eventing_drop_function.cxx +1 -1
  180. data/ext/couchbase/core/operations/management/eventing_drop_function.hxx +3 -2
  181. data/ext/couchbase/core/operations/management/eventing_get_all_functions.hxx +3 -2
  182. data/ext/couchbase/core/operations/management/eventing_get_function.cxx +1 -1
  183. data/ext/couchbase/core/operations/management/eventing_get_function.hxx +3 -2
  184. data/ext/couchbase/core/operations/management/eventing_get_status.hxx +3 -2
  185. data/ext/couchbase/core/operations/management/eventing_pause_function.cxx +1 -1
  186. data/ext/couchbase/core/operations/management/eventing_pause_function.hxx +3 -2
  187. data/ext/couchbase/core/operations/management/eventing_resume_function.cxx +1 -1
  188. data/ext/couchbase/core/operations/management/eventing_resume_function.hxx +3 -2
  189. data/ext/couchbase/core/operations/management/eventing_undeploy_function.cxx +1 -1
  190. data/ext/couchbase/core/operations/management/eventing_undeploy_function.hxx +3 -2
  191. data/ext/couchbase/core/operations/management/eventing_upsert_function.cxx +1 -2
  192. data/ext/couchbase/core/operations/management/eventing_upsert_function.hxx +3 -2
  193. data/ext/couchbase/core/operations/management/freeform.hxx +2 -0
  194. data/ext/couchbase/core/operations/management/group_drop.cxx +1 -1
  195. data/ext/couchbase/core/operations/management/group_drop.hxx +1 -0
  196. data/ext/couchbase/core/operations/management/group_get.cxx +1 -1
  197. data/ext/couchbase/core/operations/management/group_get.hxx +1 -0
  198. data/ext/couchbase/core/operations/management/group_get_all.hxx +1 -0
  199. data/ext/couchbase/core/operations/management/group_upsert.hxx +1 -0
  200. data/ext/couchbase/core/operations/management/query_index_build.hxx +7 -5
  201. data/ext/couchbase/core/operations/management/query_index_build_deferred.hxx +3 -0
  202. data/ext/couchbase/core/operations/management/query_index_create.cxx +1 -1
  203. data/ext/couchbase/core/operations/management/query_index_create.hxx +1 -0
  204. data/ext/couchbase/core/operations/management/query_index_drop.cxx +1 -1
  205. data/ext/couchbase/core/operations/management/query_index_drop.hxx +1 -0
  206. data/ext/couchbase/core/operations/management/query_index_get_all.hxx +2 -0
  207. data/ext/couchbase/core/operations/management/query_index_get_all_deferred.hxx +3 -0
  208. data/ext/couchbase/core/operations/management/role_get_all.hxx +1 -0
  209. data/ext/couchbase/core/operations/management/scope_create.cxx +1 -1
  210. data/ext/couchbase/core/operations/management/scope_create.hxx +1 -0
  211. data/ext/couchbase/core/operations/management/scope_drop.cxx +1 -1
  212. data/ext/couchbase/core/operations/management/scope_drop.hxx +1 -0
  213. data/ext/couchbase/core/operations/management/scope_get_all.cxx +1 -1
  214. data/ext/couchbase/core/operations/management/scope_get_all.hxx +1 -0
  215. data/ext/couchbase/core/operations/management/search_get_stats.hxx +1 -0
  216. data/ext/couchbase/core/operations/management/search_index_analyze_document.cxx +1 -1
  217. data/ext/couchbase/core/operations/management/search_index_analyze_document.hxx +1 -0
  218. data/ext/couchbase/core/operations/management/search_index_control_ingest.cxx +1 -1
  219. data/ext/couchbase/core/operations/management/search_index_control_ingest.hxx +1 -0
  220. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.cxx +1 -1
  221. data/ext/couchbase/core/operations/management/search_index_control_plan_freeze.hxx +1 -0
  222. data/ext/couchbase/core/operations/management/search_index_control_query.cxx +1 -1
  223. data/ext/couchbase/core/operations/management/search_index_control_query.hxx +1 -0
  224. data/ext/couchbase/core/operations/management/search_index_drop.cxx +1 -1
  225. data/ext/couchbase/core/operations/management/search_index_drop.hxx +1 -0
  226. data/ext/couchbase/core/operations/management/search_index_get.cxx +1 -1
  227. data/ext/couchbase/core/operations/management/search_index_get.hxx +1 -0
  228. data/ext/couchbase/core/operations/management/search_index_get_all.cxx +1 -1
  229. data/ext/couchbase/core/operations/management/search_index_get_all.hxx +1 -0
  230. data/ext/couchbase/core/operations/management/search_index_get_documents_count.cxx +1 -1
  231. data/ext/couchbase/core/operations/management/search_index_get_documents_count.hxx +2 -0
  232. data/ext/couchbase/core/operations/management/search_index_get_stats.cxx +1 -1
  233. data/ext/couchbase/core/operations/management/search_index_get_stats.hxx +1 -0
  234. data/ext/couchbase/core/operations/management/search_index_upsert.cxx +1 -1
  235. data/ext/couchbase/core/operations/management/search_index_upsert.hxx +1 -0
  236. data/ext/couchbase/core/operations/management/user_drop.hxx +1 -0
  237. data/ext/couchbase/core/operations/management/user_get.hxx +1 -0
  238. data/ext/couchbase/core/operations/management/user_get_all.hxx +1 -0
  239. data/ext/couchbase/core/operations/management/user_upsert.cxx +3 -3
  240. data/ext/couchbase/core/operations/management/user_upsert.hxx +1 -0
  241. data/ext/couchbase/core/operations/management/view_index_drop.cxx +1 -1
  242. data/ext/couchbase/core/operations/management/view_index_drop.hxx +1 -0
  243. data/ext/couchbase/core/operations/management/view_index_get.cxx +1 -1
  244. data/ext/couchbase/core/operations/management/view_index_get.hxx +1 -0
  245. data/ext/couchbase/core/operations/management/view_index_get_all.cxx +1 -1
  246. data/ext/couchbase/core/operations/management/view_index_get_all.hxx +2 -0
  247. data/ext/couchbase/core/operations/management/view_index_upsert.cxx +1 -1
  248. data/ext/couchbase/core/operations/management/view_index_upsert.hxx +1 -0
  249. data/ext/couchbase/core/origin.cxx +3 -2
  250. data/ext/couchbase/core/platform/base64.h +8 -8
  251. data/ext/couchbase/core/protocol/client_opcode_fmt.hxx +1 -1
  252. data/ext/couchbase/core/protocol/client_response.hxx +1 -1
  253. data/ext/couchbase/core/protocol/frame_info_id_fmt.hxx +1 -1
  254. data/ext/couchbase/core/protocol/hello_feature_fmt.hxx +1 -1
  255. data/ext/couchbase/core/protocol/magic_fmt.hxx +1 -1
  256. data/ext/couchbase/core/protocol/server_opcode_fmt.hxx +1 -1
  257. data/ext/couchbase/core/query_context.hxx +7 -6
  258. data/ext/couchbase/core/retry_orchestrator.cxx +1 -1
  259. data/ext/couchbase/core/sasl/CMakeLists.txt +0 -1
  260. data/ext/couchbase/core/sasl/error_fmt.h +1 -1
  261. data/ext/couchbase/core/seed_config.cxx +2 -2
  262. data/ext/couchbase/core/service_type_fmt.hxx +1 -1
  263. data/ext/couchbase/core/topology/capabilities_fmt.hxx +1 -1
  264. data/ext/couchbase/core/topology/collections_manifest_fmt.hxx +2 -1
  265. data/ext/couchbase/core/topology/configuration_fmt.hxx +1 -1
  266. data/ext/couchbase/core/transactions/async_attempt_context.cxx +1 -1
  267. data/ext/couchbase/core/transactions/async_attempt_context.hxx +9 -22
  268. data/ext/couchbase/core/transactions/attempt_context.cxx +1 -1
  269. data/ext/couchbase/core/transactions/attempt_context.hxx +6 -33
  270. data/ext/couchbase/core/transactions/attempt_context_impl.cxx +41 -41
  271. data/ext/couchbase/core/transactions/attempt_context_impl.hxx +15 -16
  272. data/ext/couchbase/core/transactions/exceptions_fmt.hxx +1 -1
  273. data/ext/couchbase/core/transactions/internal/atr_cleanup_entry.hxx +1 -1
  274. data/ext/couchbase/core/transactions/internal/client_record.hxx +4 -3
  275. data/ext/couchbase/core/transactions/internal/doc_record_fmt.hxx +1 -1
  276. data/ext/couchbase/core/transactions/internal/exceptions_internal.hxx +0 -2
  277. data/ext/couchbase/core/transactions/internal/exceptions_internal_fmt.hxx +1 -1
  278. data/ext/couchbase/core/transactions/internal/logging.hxx +2 -0
  279. data/ext/couchbase/core/transactions/internal/transaction_context.hxx +3 -0
  280. data/ext/couchbase/core/transactions/result_fmt.hxx +1 -1
  281. data/ext/couchbase/core/transactions/transaction_context.cxx +12 -2
  282. data/ext/couchbase/core/transactions/transaction_get_result.hxx +0 -20
  283. data/ext/couchbase/core/transactions/transaction_links.hxx +1 -1
  284. data/ext/couchbase/core/utils/join_strings.hxx +2 -2
  285. data/ext/couchbase/core/utils/keyspace.hxx +2 -1
  286. data/ext/couchbase/core/utils/url_codec.cxx +1 -1
  287. data/ext/couchbase/couchbase/common_options.hxx +16 -1
  288. data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +0 -2
  289. data/ext/couchbase/couchbase/fmt/analytics_status.hxx +0 -2
  290. data/ext/couchbase/couchbase/fmt/cas.hxx +0 -2
  291. data/ext/couchbase/couchbase/fmt/durability_level.hxx +0 -2
  292. data/ext/couchbase/couchbase/fmt/error.hxx +0 -2
  293. data/ext/couchbase/couchbase/fmt/error_context.hxx +0 -2
  294. data/ext/couchbase/couchbase/fmt/mutation_token.hxx +0 -2
  295. data/ext/couchbase/couchbase/fmt/query_profile.hxx +0 -2
  296. data/ext/couchbase/couchbase/fmt/query_scan_consistency.hxx +0 -2
  297. data/ext/couchbase/couchbase/fmt/query_status.hxx +0 -2
  298. data/ext/couchbase/couchbase/fmt/retry_reason.hxx +5 -1
  299. data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +0 -2
  300. data/ext/couchbase/couchbase/fmt/tls_verify_mode.hxx +0 -2
  301. data/ext/couchbase/couchbase/fmt/transaction_keyspace.hxx +0 -2
  302. data/ext/couchbase/couchbase/metrics/otel_meter.hxx +16 -20
  303. data/ext/extconf.rb +1 -0
  304. data/ext/rcb_analytics.cxx +7 -7
  305. data/ext/rcb_backend.cxx +6 -1
  306. data/ext/rcb_buckets.cxx +1 -1
  307. data/ext/rcb_collections.cxx +1 -1
  308. data/ext/rcb_crud.cxx +51 -30
  309. data/ext/rcb_diagnostics.cxx +1 -1
  310. data/ext/rcb_exceptions.cxx +3 -2
  311. data/ext/rcb_extras.cxx +1 -1
  312. data/ext/rcb_range_scan.cxx +1 -1
  313. data/ext/rcb_search.cxx +1 -1
  314. data/ext/rcb_users.cxx +2 -2
  315. data/ext/rcb_utils.hxx +32 -0
  316. data/lib/couchbase/logger.rb +3 -3
  317. data/lib/couchbase/options.rb +48 -0
  318. data/lib/couchbase/version.rb +1 -1
  319. metadata +131 -153
  320. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/CMakeLists.txt +0 -520
  321. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/ChangeLog.md +0 -2598
  322. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/LICENSE +0 -27
  323. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/README.md +0 -484
  324. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/fmt.cc +0 -135
  325. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/src/os.cc +0 -403
  326. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/FindSetEnv.cmake +0 -7
  327. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/JoinPaths.cmake +0 -26
  328. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/fmt-config.cmake.in +0 -7
  329. data/ext/cache/fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/support/cmake/fmt.pc.in +0 -11
  330. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/args.h +0 -235
  331. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/chrono.h +0 -2240
  332. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/color.h +0 -643
  333. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/compile.h +0 -535
  334. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/core.h +0 -2969
  335. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/format-inl.h +0 -1678
  336. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/format.h +0 -4535
  337. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/os.h +0 -455
  338. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/ostream.h +0 -245
  339. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/printf.h +0 -675
  340. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/ranges.h +0 -738
  341. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/std.h +0 -537
  342. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/include/spdlog/fmt/bundled/xchar.h +0 -259
  343. data/ext/cache/spdlog/19df5d3d8e5526c255d27414e09568671ef87483/spdlog/src/bundled_fmtlib_format.cpp +0 -46
  344. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/LICENSE +0 -0
  345. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/ide.cmake +0 -0
  346. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/pch.h.in +0 -0
  347. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlog.pc.in +0 -0
  348. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlogCPack.cmake +0 -0
  349. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/spdlogConfig.cmake.in +0 -0
  350. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/cmake/version.rc.in +0 -0
  351. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async.h +0 -0
  352. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/async_logger.h +0 -0
  353. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/argv.h +0 -0
  354. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/env.h +0 -0
  355. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/helpers-inl.h +0 -0
  356. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/cfg/helpers.h +0 -0
  357. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/common-inl.h +0 -0
  358. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/common.h +0 -0
  359. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/backtracer-inl.h +0 -0
  360. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/backtracer.h +0 -0
  361. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/circular_q.h +0 -0
  362. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/console_globals.h +0 -0
  363. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/file_helper-inl.h +0 -0
  364. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/file_helper.h +0 -0
  365. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/fmt_helper.h +0 -0
  366. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg-inl.h +0 -0
  367. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg.h +0 -0
  368. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg_buffer-inl.h +0 -0
  369. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/log_msg_buffer.h +0 -0
  370. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/null_mutex.h +0 -0
  371. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/os.h +0 -0
  372. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/periodic_worker-inl.h +0 -0
  373. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/periodic_worker.h +0 -0
  374. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/registry-inl.h +0 -0
  375. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/registry.h +0 -0
  376. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/synchronous_factory.h +0 -0
  377. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/tcp_client-windows.h +0 -0
  378. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/tcp_client.h +0 -0
  379. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/udp_client-windows.h +0 -0
  380. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/udp_client.h +0 -0
  381. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/details/windows_include.h +0 -0
  382. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bin_to_hex.h +0 -0
  383. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/args.h +0 -0
  384. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/chrono.h +0 -0
  385. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/color.h +0 -0
  386. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/compile.h +0 -0
  387. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/core.h +0 -0
  388. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bundled/fmt.license.rst +0 -0
  389. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/bundled/locale.h +0 -0
  390. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/os.h +0 -0
  391. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/ostream.h +0 -0
  392. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/printf.h +0 -0
  393. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/std.h +0 -0
  394. /data/ext/cache/{fmt/141a17a028e6c29914e109691389f6cf87f9cfe3/fmt/include/fmt → spdlog/7251ead404dccd824789f8f3a13df2a6fb56440c/spdlog/include/spdlog/fmt/bundled}/xchar.h +0 -0
  395. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/chrono.h +0 -0
  396. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/compile.h +0 -0
  397. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/fmt.h +0 -0
  398. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/ostr.h +0 -0
  399. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/ranges.h +0 -0
  400. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/std.h +0 -0
  401. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fmt/xchar.h +0 -0
  402. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/formatter.h +0 -0
  403. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/fwd.h +0 -0
  404. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/logger-inl.h +0 -0
  405. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/logger.h +0 -0
  406. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/pattern_formatter.h +0 -0
  407. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/android_sink.h +0 -0
  408. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h +0 -0
  409. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/base_sink-inl.h +0 -0
  410. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/basic_file_sink-inl.h +0 -0
  411. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/basic_file_sink.h +0 -0
  412. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/dist_sink.h +0 -0
  413. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/dup_filter_sink.h +0 -0
  414. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/kafka_sink.h +0 -0
  415. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/mongo_sink.h +0 -0
  416. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/null_sink.h +0 -0
  417. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ostream_sink.h +0 -0
  418. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/qt_sinks.h +0 -0
  419. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/ringbuffer_sink.h +0 -0
  420. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/rotating_file_sink.h +0 -0
  421. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/sink-inl.h +0 -0
  422. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/sink.h +0 -0
  423. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h +0 -0
  424. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_color_sinks.h +0 -0
  425. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +0 -0
  426. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/stdout_sinks.h +0 -0
  427. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/systemd_sink.h +0 -0
  428. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/tcp_sink.h +0 -0
  429. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/udp_sink.h +0 -0
  430. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/win_eventlog_sink.h +0 -0
  431. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/sinks/wincolor_sink.h +0 -0
  432. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/spdlog-inl.h +0 -0
  433. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/spdlog.h +0 -0
  434. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/stopwatch.h +0 -0
  435. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/include/spdlog/tweakme.h +0 -0
  436. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/async.cpp +0 -0
  437. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/cfg.cpp +0 -0
  438. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/color_sinks.cpp +0 -0
  439. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/file_sinks.cpp +0 -0
  440. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/spdlog.cpp +0 -0
  441. /data/ext/cache/spdlog/{19df5d3d8e5526c255d27414e09568671ef87483 → 7251ead404dccd824789f8f3a13df2a6fb56440c}/spdlog/src/stdout_sinks.cpp +0 -0
@@ -148,19 +148,19 @@ public:
148
148
  #endif
149
149
 
150
150
  size_t overrun_counter() {
151
- std::unique_lock<std::mutex> lock(queue_mutex_);
151
+ std::lock_guard<std::mutex> lock(queue_mutex_);
152
152
  return q_.overrun_counter();
153
153
  }
154
154
 
155
155
  size_t discard_counter() { return discard_counter_.load(std::memory_order_relaxed); }
156
156
 
157
157
  size_t size() {
158
- std::unique_lock<std::mutex> lock(queue_mutex_);
158
+ std::lock_guard<std::mutex> lock(queue_mutex_);
159
159
  return q_.size();
160
160
  }
161
161
 
162
162
  void reset_overrun_counter() {
163
- std::unique_lock<std::mutex> lock(queue_mutex_);
163
+ std::lock_guard<std::mutex> lock(queue_mutex_);
164
164
  q_.reset_overrun_counter();
165
165
  }
166
166
 
@@ -483,12 +483,12 @@ SPDLOG_INLINE void utf8_to_wstrbuf(string_view_t str, wmemory_buf_t &target) {
483
483
 
484
484
  // find the size to allocate for the result buffer
485
485
  int result_size =
486
- ::MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str.data(), str_size, NULL, 0);
486
+ ::MultiByteToWideChar(CP_UTF8, 0, str.data(), str_size, NULL, 0);
487
487
 
488
488
  if (result_size > 0) {
489
489
  target.resize(result_size);
490
- result_size = ::MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str.data(), str_size,
491
- target.data(), result_size);
490
+ result_size = ::MultiByteToWideChar(CP_UTF8, 0, str.data(), str_size, target.data(),
491
+ result_size);
492
492
  if (result_size > 0) {
493
493
  assert(result_size == target.size());
494
494
  return;
@@ -62,13 +62,9 @@ void SPDLOG_INLINE thread_pool::post_log(async_logger_ptr &&worker_ptr,
62
62
  post_async_msg_(std::move(async_m), overflow_policy);
63
63
  }
64
64
 
65
- std::future<void> SPDLOG_INLINE thread_pool::post_flush(async_logger_ptr &&worker_ptr,
66
- async_overflow_policy overflow_policy) {
67
- std::promise<void> promise;
68
- std::future<void> future = promise.get_future();
69
- post_async_msg_(async_msg(std::move(worker_ptr), async_msg_type::flush, std::move(promise)),
70
- overflow_policy);
71
- return future;
65
+ void SPDLOG_INLINE thread_pool::post_flush(async_logger_ptr &&worker_ptr,
66
+ async_overflow_policy overflow_policy) {
67
+ post_async_msg_(async_msg(std::move(worker_ptr), async_msg_type::flush), overflow_policy);
72
68
  }
73
69
 
74
70
  size_t SPDLOG_INLINE thread_pool::overrun_counter() { return q_.overrun_counter(); }
@@ -112,7 +108,6 @@ bool SPDLOG_INLINE thread_pool::process_next_msg_() {
112
108
  }
113
109
  case async_msg_type::flush: {
114
110
  incoming_async_msg.worker_ptr->backend_flush_();
115
- incoming_async_msg.flush_promise.set_value();
116
111
  return true;
117
112
  }
118
113
 
@@ -9,7 +9,6 @@
9
9
 
10
10
  #include <chrono>
11
11
  #include <functional>
12
- #include <future>
13
12
  #include <memory>
14
13
  #include <thread>
15
14
  #include <vector>
@@ -28,7 +27,6 @@ enum class async_msg_type { log, flush, terminate };
28
27
  struct async_msg : log_msg_buffer {
29
28
  async_msg_type msg_type{async_msg_type::log};
30
29
  async_logger_ptr worker_ptr;
31
- std::promise<void> flush_promise;
32
30
 
33
31
  async_msg() = default;
34
32
  ~async_msg() = default;
@@ -58,20 +56,12 @@ struct async_msg : log_msg_buffer {
58
56
  async_msg(async_logger_ptr &&worker, async_msg_type the_type, const details::log_msg &m)
59
57
  : log_msg_buffer{m},
60
58
  msg_type{the_type},
61
- worker_ptr{std::move(worker)},
62
- flush_promise{} {}
59
+ worker_ptr{std::move(worker)} {}
63
60
 
64
61
  async_msg(async_logger_ptr &&worker, async_msg_type the_type)
65
62
  : log_msg_buffer{},
66
63
  msg_type{the_type},
67
- worker_ptr{std::move(worker)},
68
- flush_promise{} {}
69
-
70
- async_msg(async_logger_ptr &&worker, async_msg_type the_type, std::promise<void> &&promise)
71
- : log_msg_buffer{},
72
- msg_type{the_type},
73
- worker_ptr{std::move(worker)},
74
- flush_promise{std::move(promise)} {}
64
+ worker_ptr{std::move(worker)} {}
75
65
 
76
66
  explicit async_msg(async_msg_type the_type)
77
67
  : async_msg{nullptr, the_type} {}
@@ -98,8 +88,7 @@ public:
98
88
  void post_log(async_logger_ptr &&worker_ptr,
99
89
  const details::log_msg &msg,
100
90
  async_overflow_policy overflow_policy);
101
- std::future<void> post_flush(async_logger_ptr &&worker_ptr,
102
- async_overflow_policy overflow_policy);
91
+ void post_flush(async_logger_ptr &&worker_ptr, async_overflow_policy overflow_policy);
103
92
  size_t overrun_counter();
104
93
  void reset_overrun_counter();
105
94
  size_t discard_counter();
@@ -23,7 +23,7 @@
23
23
  #endif
24
24
 
25
25
  // The fmt library version in the form major * 10000 + minor * 100 + patch.
26
- #define FMT_VERSION 110001
26
+ #define FMT_VERSION 110002
27
27
 
28
28
  // Detect compiler versions.
29
29
  #if defined(__clang__) && !defined(__ibmxl__)
@@ -441,7 +441,8 @@ struct is_std_string_like : std::false_type {};
441
441
  template <typename T>
442
442
  struct is_std_string_like<T, void_t<decltype(std::declval<T>().find_first_of(
443
443
  typename T::value_type(), 0))>>
444
- : std::true_type {};
444
+ : std::is_convertible<decltype(std::declval<T>().data()),
445
+ const typename T::value_type*> {};
445
446
 
446
447
  // Returns true iff the literal encoding is UTF-8.
447
448
  constexpr auto is_utf8_enabled() -> bool {
@@ -466,6 +467,7 @@ template <typename Char> FMT_CONSTEXPR auto length(const Char* s) -> size_t {
466
467
  template <typename Char>
467
468
  FMT_CONSTEXPR auto compare(const Char* s1, const Char* s2, std::size_t n)
468
469
  -> int {
470
+ if (!is_constant_evaluated() && sizeof(Char) == 1) return memcmp(s1, s2, n);
469
471
  for (; n != 0; ++s1, ++s2, --n) {
470
472
  if (*s1 < *s2) return -1;
471
473
  if (*s1 > *s2) return 1;
@@ -473,14 +475,22 @@ FMT_CONSTEXPR auto compare(const Char* s1, const Char* s2, std::size_t n)
473
475
  return 0;
474
476
  }
475
477
 
478
+ namespace adl {
479
+ using namespace std;
480
+
481
+ template <typename Container>
482
+ auto invoke_back_inserter()
483
+ -> decltype(back_inserter(std::declval<Container&>()));
484
+ } // namespace adl
485
+
476
486
  template <typename It, typename Enable = std::true_type>
477
487
  struct is_back_insert_iterator : std::false_type {};
488
+
478
489
  template <typename It>
479
490
  struct is_back_insert_iterator<
480
- It,
481
- bool_constant<std::is_same<
482
- decltype(back_inserter(std::declval<typename It::container_type&>())),
483
- It>::value>> : std::true_type {};
491
+ It, bool_constant<std::is_same<
492
+ decltype(adl::invoke_back_inserter<typename It::container_type>()),
493
+ It>::value>> : std::true_type {};
484
494
 
485
495
  // Extracts a reference to the container from *insert_iterator.
486
496
  template <typename OutputIt>
@@ -611,11 +621,12 @@ namespace detail {
611
621
  // to it, deducing Char. Explicitly convertible types such as the ones returned
612
622
  // from FMT_STRING are intentionally excluded.
613
623
  template <typename Char, FMT_ENABLE_IF(is_char<Char>::value)>
614
- auto to_string_view(const Char* s) -> basic_string_view<Char> {
624
+ constexpr auto to_string_view(const Char* s) -> basic_string_view<Char> {
615
625
  return s;
616
626
  }
617
627
  template <typename T, FMT_ENABLE_IF(is_std_string_like<T>::value)>
618
- auto to_string_view(const T& s) -> basic_string_view<typename T::value_type> {
628
+ constexpr auto to_string_view(const T& s)
629
+ -> basic_string_view<typename T::value_type> {
619
630
  return s;
620
631
  }
621
632
  template <typename Char>
@@ -919,12 +930,9 @@ template <typename T> class buffer {
919
930
  try_reserve(size_ + count);
920
931
  auto free_cap = capacity_ - size_;
921
932
  if (free_cap < count) count = free_cap;
922
- if (std::is_same<T, U>::value) {
923
- memcpy(ptr_ + size_, begin, count * sizeof(T));
924
- } else {
925
- T* out = ptr_ + size_;
926
- for (size_t i = 0; i < count; ++i) out[i] = begin[i];
927
- }
933
+ // A loop is faster than memcpy on small sizes.
934
+ T* out = ptr_ + size_;
935
+ for (size_t i = 0; i < count; ++i) out[i] = begin[i];
928
936
  size_ += count;
929
937
  begin += count;
930
938
  }
@@ -1157,6 +1165,7 @@ template <typename T> class basic_appender {
1157
1165
  using difference_type = ptrdiff_t;
1158
1166
  using pointer = T*;
1159
1167
  using reference = T&;
1168
+ using container_type = detail::buffer<T>;
1160
1169
  FMT_UNCHECKED_ITERATOR(basic_appender);
1161
1170
 
1162
1171
  FMT_CONSTEXPR basic_appender(detail::buffer<T>& buf) : buffer_(&buf) {}
@@ -1173,6 +1182,8 @@ template <typename T> class basic_appender {
1173
1182
  using appender = basic_appender<char>;
1174
1183
 
1175
1184
  namespace detail {
1185
+ template <typename T>
1186
+ struct is_back_insert_iterator<basic_appender<T>> : std::true_type {};
1176
1187
 
1177
1188
  template <typename T, typename Enable = void>
1178
1189
  struct locking : std::true_type {};
@@ -1189,12 +1200,6 @@ FMT_CONSTEXPR inline auto is_locking() -> bool {
1189
1200
  }
1190
1201
 
1191
1202
  // An optimized version of std::copy with the output value type (T).
1192
- template <typename T, typename InputIt>
1193
- auto copy(InputIt begin, InputIt end, appender out) -> appender {
1194
- get_container(out).append(begin, end);
1195
- return out;
1196
- }
1197
-
1198
1203
  template <typename T, typename InputIt, typename OutputIt,
1199
1204
  FMT_ENABLE_IF(is_back_insert_iterator<OutputIt>::value)>
1200
1205
  auto copy(InputIt begin, InputIt end, OutputIt out) -> OutputIt {
@@ -1209,14 +1214,6 @@ FMT_CONSTEXPR auto copy(InputIt begin, InputIt end, OutputIt out) -> OutputIt {
1209
1214
  return out;
1210
1215
  }
1211
1216
 
1212
- template <typename T>
1213
- FMT_CONSTEXPR auto copy(const T* begin, const T* end, T* out) -> T* {
1214
- if (is_constant_evaluated()) return copy<T, const T*, T*>(begin, end, out);
1215
- auto size = to_unsigned(end - begin);
1216
- if (size > 0) memcpy(out, begin, size * sizeof(T));
1217
- return out + size;
1218
- }
1219
-
1220
1217
  template <typename T, typename V, typename OutputIt>
1221
1218
  FMT_CONSTEXPR auto copy(basic_string_view<V> s, OutputIt out) -> OutputIt {
1222
1219
  return copy<T>(s.begin(), s.end(), out);
@@ -1238,12 +1235,25 @@ constexpr auto has_const_formatter() -> bool {
1238
1235
  return has_const_formatter_impl<Context>(static_cast<T*>(nullptr));
1239
1236
  }
1240
1237
 
1238
+ template <typename It, typename Enable = std::true_type>
1239
+ struct is_buffer_appender : std::false_type {};
1240
+ template <typename It>
1241
+ struct is_buffer_appender<
1242
+ It, bool_constant<
1243
+ is_back_insert_iterator<It>::value &&
1244
+ std::is_base_of<buffer<typename It::container_type::value_type>,
1245
+ typename It::container_type>::value>>
1246
+ : std::true_type {};
1247
+
1241
1248
  // Maps an output iterator to a buffer.
1242
- template <typename T, typename OutputIt>
1249
+ template <typename T, typename OutputIt,
1250
+ FMT_ENABLE_IF(!is_buffer_appender<OutputIt>::value)>
1243
1251
  auto get_buffer(OutputIt out) -> iterator_buffer<OutputIt, T> {
1244
1252
  return iterator_buffer<OutputIt, T>(out);
1245
1253
  }
1246
- template <typename T> auto get_buffer(basic_appender<T> out) -> buffer<T>& {
1254
+ template <typename T, typename OutputIt,
1255
+ FMT_ENABLE_IF(is_buffer_appender<OutputIt>::value)>
1256
+ auto get_buffer(OutputIt out) -> buffer<T>& {
1247
1257
  return get_container(out);
1248
1258
  }
1249
1259
 
@@ -1475,6 +1485,12 @@ template <typename Context> struct arg_mapper {
1475
1485
 
1476
1486
  FMT_MAP_API auto map(void* val) -> const void* { return val; }
1477
1487
  FMT_MAP_API auto map(const void* val) -> const void* { return val; }
1488
+ FMT_MAP_API auto map(volatile void* val) -> const void* {
1489
+ return const_cast<const void*>(val);
1490
+ }
1491
+ FMT_MAP_API auto map(const volatile void* val) -> const void* {
1492
+ return const_cast<const void*>(val);
1493
+ }
1478
1494
  FMT_MAP_API auto map(std::nullptr_t val) -> const void* { return val; }
1479
1495
 
1480
1496
  // Use SFINAE instead of a const T* parameter to avoid a conflict with the
@@ -1760,7 +1776,7 @@ template <typename Context> class basic_format_arg {
1760
1776
  * `vis(value)` will be called with the value of type `double`.
1761
1777
  */
1762
1778
  template <typename Visitor>
1763
- FMT_CONSTEXPR auto visit(Visitor&& vis) const -> decltype(vis(0)) {
1779
+ FMT_CONSTEXPR FMT_INLINE auto visit(Visitor&& vis) const -> decltype(vis(0)) {
1764
1780
  switch (type_) {
1765
1781
  case detail::type::none_type:
1766
1782
  break;
@@ -1443,12 +1443,26 @@ template <typename T> struct span {
1443
1443
  size_t size;
1444
1444
  };
1445
1445
 
1446
- #ifdef _WIN32
1447
- inline void flockfile(FILE* f) { _lock_file(f); }
1448
- inline void funlockfile(FILE* f) { _unlock_file(f); }
1449
- inline int getc_unlocked(FILE* f) { return _fgetc_nolock(f); }
1446
+ template <typename F> auto flockfile(F* f) -> decltype(_lock_file(f)) {
1447
+ _lock_file(f);
1448
+ }
1449
+ template <typename F> auto funlockfile(F* f) -> decltype(_unlock_file(f)) {
1450
+ _unlock_file(f);
1451
+ }
1452
+
1453
+ #ifndef getc_unlocked
1454
+ template <typename F> auto getc_unlocked(F* f) -> decltype(_fgetc_nolock(f)) {
1455
+ return _fgetc_nolock(f);
1456
+ }
1450
1457
  #endif
1451
1458
 
1459
+ template <typename F = FILE, typename Enable = void>
1460
+ struct has_flockfile : std::false_type {};
1461
+
1462
+ template <typename F>
1463
+ struct has_flockfile<F, void_t<decltype(flockfile(&std::declval<F&>()))>>
1464
+ : std::true_type {};
1465
+
1452
1466
  // A FILE wrapper. F is FILE defined as a template parameter to make system API
1453
1467
  // detection work.
1454
1468
  template <typename F> class file_base {
@@ -1619,7 +1633,15 @@ inline auto get_file(FILE* f, ...) -> fallback_file<FILE> { return f; }
1619
1633
 
1620
1634
  using file_ref = decltype(get_file(static_cast<FILE*>(nullptr), 0));
1621
1635
 
1636
+ template <typename F = FILE, typename Enable = void>
1622
1637
  class file_print_buffer : public buffer<char> {
1638
+ public:
1639
+ explicit file_print_buffer(F*) : buffer(nullptr, size_t()) {}
1640
+ };
1641
+
1642
+ template <typename F>
1643
+ class file_print_buffer<F, enable_if_t<has_flockfile<F>::value>>
1644
+ : public buffer<char> {
1623
1645
  private:
1624
1646
  file_ref file_;
1625
1647
 
@@ -1634,7 +1656,7 @@ class file_print_buffer : public buffer<char> {
1634
1656
  }
1635
1657
 
1636
1658
  public:
1637
- explicit file_print_buffer(FILE* f) : buffer(grow, size_t()), file_(f) {
1659
+ explicit file_print_buffer(F* f) : buffer(grow, size_t()), file_(f) {
1638
1660
  flockfile(f);
1639
1661
  file_.init_buffer();
1640
1662
  auto buf = file_.get_write_buffer();
@@ -1643,7 +1665,8 @@ class file_print_buffer : public buffer<char> {
1643
1665
  ~file_print_buffer() {
1644
1666
  file_.advance_write_buffer(size());
1645
1667
  bool flush = file_.needs_flush();
1646
- funlockfile(file_);
1668
+ F* f = file_; // Make funlockfile depend on the template parameter F
1669
+ funlockfile(f); // for the system API detection to work.
1647
1670
  if (flush) fflush(file_);
1648
1671
  }
1649
1672
  };
@@ -1692,8 +1715,9 @@ FMT_FUNC void vprint_buffered(std::FILE* f, string_view fmt, format_args args) {
1692
1715
  }
1693
1716
 
1694
1717
  FMT_FUNC void vprint(std::FILE* f, string_view fmt, format_args args) {
1695
- if (!detail::file_ref(f).is_buffered()) return vprint_buffered(f, fmt, args);
1696
- auto&& buffer = detail::file_print_buffer(f);
1718
+ if (!detail::file_ref(f).is_buffered() || !detail::has_flockfile<>())
1719
+ return vprint_buffered(f, fmt, args);
1720
+ auto&& buffer = detail::file_print_buffer<>(f);
1697
1721
  return detail::vformat_to(buffer, fmt, args);
1698
1722
  }
1699
1723
 
@@ -106,6 +106,13 @@
106
106
  # define FMT_NOINLINE
107
107
  #endif
108
108
 
109
+ namespace std {
110
+ template <> struct iterator_traits<fmt::appender> {
111
+ using iterator_category = output_iterator_tag;
112
+ using value_type = char;
113
+ };
114
+ } // namespace std
115
+
109
116
  #ifndef FMT_THROW
110
117
  # if FMT_EXCEPTIONS
111
118
  # if FMT_MSC_VERSION || defined(__NVCC__)
@@ -546,6 +553,7 @@ constexpr auto to_pointer(OutputIt, size_t) -> T* {
546
553
  template <typename T> auto to_pointer(basic_appender<T> it, size_t n) -> T* {
547
554
  buffer<T>& buf = get_container(it);
548
555
  auto size = buf.size();
556
+ buf.try_reserve(size + n);
549
557
  if (buf.capacity() < size + n) return nullptr;
550
558
  buf.try_resize(size + n);
551
559
  return buf.data() + size;
@@ -1119,7 +1127,7 @@ template <typename Char, typename Sign> constexpr auto sign(Sign s) -> Char {
1119
1127
  #if !FMT_GCC_VERSION || FMT_GCC_VERSION >= 604
1120
1128
  static_assert(std::is_same<Sign, sign_t>::value, "");
1121
1129
  #endif
1122
- return static_cast<Char>("\0-+ "[s]);
1130
+ return static_cast<char>(((' ' << 24) | ('+' << 16) | ('-' << 8)) >> (s * 8));
1123
1131
  }
1124
1132
 
1125
1133
  template <typename T> FMT_CONSTEXPR auto count_digits_fallback(T n) -> int {
@@ -2317,15 +2325,13 @@ FMT_CONSTEXPR auto write(OutputIt out, T value) -> OutputIt {
2317
2325
  if (negative) abs_value = ~abs_value + 1;
2318
2326
  int num_digits = count_digits(abs_value);
2319
2327
  auto size = (negative ? 1 : 0) + static_cast<size_t>(num_digits);
2320
- auto it = reserve(out, size);
2321
- if (auto ptr = to_pointer<Char>(it, size)) {
2328
+ if (auto ptr = to_pointer<Char>(out, size)) {
2322
2329
  if (negative) *ptr++ = static_cast<Char>('-');
2323
2330
  format_decimal<Char>(ptr, abs_value, num_digits);
2324
2331
  return out;
2325
2332
  }
2326
- if (negative) *it++ = static_cast<Char>('-');
2327
- it = format_decimal<Char>(it, abs_value, num_digits).end;
2328
- return base_iterator(out, it);
2333
+ if (negative) *out++ = static_cast<Char>('-');
2334
+ return format_decimal<Char>(out, abs_value, num_digits).end;
2329
2335
  }
2330
2336
 
2331
2337
  // DEPRECATED!
@@ -3629,9 +3635,7 @@ auto write(OutputIt out, monostate, format_specs = {}, locale_ref = {})
3629
3635
  template <typename Char, typename OutputIt>
3630
3636
  FMT_CONSTEXPR auto write(OutputIt out, basic_string_view<Char> value)
3631
3637
  -> OutputIt {
3632
- auto it = reserve(out, value.size());
3633
- it = copy_noinline<Char>(value.begin(), value.end(), it);
3634
- return base_iterator(out, it);
3638
+ return copy_noinline<Char>(value.begin(), value.end(), out);
3635
3639
  }
3636
3640
 
3637
3641
  template <typename Char, typename OutputIt, typename T,
@@ -3972,15 +3976,19 @@ struct formatter<T, Char, enable_if_t<detail::has_format_as<T>::value>>
3972
3976
  : formatter<detail::format_as_t<T>, Char> {
3973
3977
  template <typename FormatContext>
3974
3978
  auto format(const T& value, FormatContext& ctx) const -> decltype(ctx.out()) {
3975
- using base = formatter<detail::format_as_t<T>, Char>;
3976
3979
  auto&& val = format_as(value); // Make an lvalue reference for format.
3977
- return base::format(val, ctx);
3980
+ return formatter<detail::format_as_t<T>, Char>::format(val, ctx);
3978
3981
  }
3979
3982
  };
3980
3983
 
3981
- #define FMT_FORMAT_AS(Type, Base) \
3982
- template <typename Char> \
3983
- struct formatter<Type, Char> : formatter<Base, Char> {}
3984
+ #define FMT_FORMAT_AS(Type, Base) \
3985
+ template <typename Char> \
3986
+ struct formatter<Type, Char> : formatter<Base, Char> { \
3987
+ template <typename FormatContext> \
3988
+ auto format(Type value, FormatContext& ctx) const -> decltype(ctx.out()) { \
3989
+ return formatter<Base, Char>::format(value, ctx); \
3990
+ } \
3991
+ }
3984
3992
 
3985
3993
  FMT_FORMAT_AS(signed char, int);
3986
3994
  FMT_FORMAT_AS(unsigned char, unsigned);
@@ -490,7 +490,7 @@ struct range_formatter<
490
490
  auto out = ctx.out();
491
491
  auto it = detail::range_begin(range);
492
492
  auto end = detail::range_end(range);
493
- if (is_debug) return write_debug_string(out, it, end);
493
+ if (is_debug) return write_debug_string(out, std::move(it), end);
494
494
 
495
495
  out = detail::copy<Char>(opening_bracket_, out);
496
496
  int i = 0;
@@ -3,6 +3,10 @@
3
3
 
4
4
  #pragma once
5
5
 
6
+ #if defined(SPDLOG_NO_TLS)
7
+ #error "This header requires thread local storage support, but SPDLOG_NO_TLS is defined."
8
+ #endif
9
+
6
10
  #include <map>
7
11
  #include <string>
8
12
 
@@ -10,7 +10,11 @@
10
10
  #include <spdlog/details/fmt_helper.h>
11
11
  #include <spdlog/details/log_msg.h>
12
12
  #include <spdlog/details/os.h>
13
- #include <spdlog/mdc.h>
13
+
14
+ #ifndef SPDLOG_NO_TLS
15
+ #include <spdlog/mdc.h>
16
+ #endif
17
+
14
18
  #include <spdlog/fmt/fmt.h>
15
19
  #include <spdlog/formatter.h>
16
20
 
@@ -176,7 +180,7 @@ public:
176
180
 
177
181
  // Abbreviated month
178
182
  static const std::array<const char *, 12> months{
179
- {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"}};
183
+ {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}};
180
184
 
181
185
  template <typename ScopedPadder>
182
186
  class b_formatter final : public flag_formatter {
@@ -786,6 +790,7 @@ private:
786
790
 
787
791
  // Class for formatting Mapped Diagnostic Context (MDC) in log messages.
788
792
  // Example: [logger-name] [info] [mdc_key_1:mdc_value_1 mdc_key_2:mdc_value_2] some message
793
+ #ifndef SPDLOG_NO_TLS
789
794
  template <typename ScopedPadder>
790
795
  class mdc_formatter : public flag_formatter {
791
796
  public:
@@ -824,6 +829,7 @@ public:
824
829
  }
825
830
  }
826
831
  };
832
+ #endif
827
833
 
828
834
  // Full info formatter
829
835
  // pattern: [%Y-%m-%d %H:%M:%S.%e] [%n] [%l] [%s:%#] %v
@@ -901,6 +907,7 @@ public:
901
907
  dest.push_back(' ');
902
908
  }
903
909
 
910
+ #ifndef SPDLOG_NO_TLS
904
911
  // add mdc if present
905
912
  auto &mdc_map = mdc::get_context();
906
913
  if (!mdc_map.empty()) {
@@ -909,6 +916,7 @@ public:
909
916
  dest.push_back(']');
910
917
  dest.push_back(' ');
911
918
  }
919
+ #endif
912
920
  // fmt_helper::append_string_view(msg.msg(), dest);
913
921
  fmt_helper::append_string_view(msg.payload, dest);
914
922
  }
@@ -916,7 +924,11 @@ public:
916
924
  private:
917
925
  std::chrono::seconds cache_timestamp_{0};
918
926
  memory_buf_t cached_datetime_;
927
+
928
+ #ifndef SPDLOG_NO_TLS
919
929
  mdc_formatter<null_scoped_padder> mdc_formatter_{padding_info{}};
930
+ #endif
931
+
920
932
  };
921
933
 
922
934
  } // namespace details
@@ -1211,9 +1223,11 @@ SPDLOG_INLINE void pattern_formatter::handle_flag_(char flag, details::padding_i
1211
1223
  padding));
1212
1224
  break;
1213
1225
 
1226
+ #ifndef SPDLOG_NO_TLS // mdc formatter requires TLS support
1214
1227
  case ('&'):
1215
1228
  formatters_.push_back(details::make_unique<details::mdc_formatter<Padder>>(padding));
1216
1229
  break;
1230
+ #endif
1217
1231
 
1218
1232
  default: // Unknown flag appears as is
1219
1233
  auto unknown_flag = details::make_unique<details::aggregate_formatter>();
@@ -40,7 +40,7 @@ public:
40
40
 
41
41
  void log(const details::log_msg &msg) override;
42
42
  void flush() override;
43
- void set_pattern(const std::string &pattern) final;
43
+ void set_pattern(const std::string &pattern) final override;
44
44
  void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) override;
45
45
 
46
46
  // Formatting codes
@@ -28,10 +28,10 @@ public:
28
28
  base_sink &operator=(const base_sink &) = delete;
29
29
  base_sink &operator=(base_sink &&) = delete;
30
30
 
31
- void log(const details::log_msg &msg) final;
32
- void flush() final;
33
- void set_pattern(const std::string &pattern) final;
34
- void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) final;
31
+ void log(const details::log_msg &msg) final override;
32
+ void flush() final override;
33
+ void set_pattern(const std::string &pattern) final override;
34
+ void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) final override;
35
35
 
36
36
  protected:
37
37
  // sink formatter
@@ -27,7 +27,7 @@ public:
27
27
 
28
28
  protected:
29
29
  void sink_it_(const details::log_msg &msg) override { callback_(msg); }
30
- void flush_() override{};
30
+ void flush_() override{}
31
31
 
32
32
  private:
33
33
  custom_log_callback callback_;
@@ -62,6 +62,9 @@ struct daily_filename_format_calculator {
62
62
  * Rotating file sink based on date.
63
63
  * If truncate != false , the created file will be truncated.
64
64
  * If max_files > 0, retain only the last max_files and delete previous.
65
+ * If max_files > 0, retain only the last max_files and delete previous.
66
+ * Note that old log files from previous executions will not be deleted by this class,
67
+ * rotation and deletion is only applied while the program is running.
65
68
  */
66
69
  template <typename Mutex, typename FileNameCalc = daily_filename_calculator>
67
70
  class daily_file_sink final : public base_sink<Mutex> {
@@ -39,6 +39,8 @@ struct hourly_filename_calculator {
39
39
  * Rotating file sink based on time.
40
40
  * If truncate != false , the created file will be truncated.
41
41
  * If max_files > 0, retain only the last max_files and delete previous.
42
+ * Note that old log files from previous executions will not be deleted by this class,
43
+ * rotation and deletion is only applied while the program is running.
42
44
  */
43
45
  template <typename Mutex, typename FileNameCalc = hourly_filename_calculator>
44
46
  class hourly_file_sink final : public base_sink<Mutex> {
@@ -32,7 +32,7 @@ class msvc_sink : public base_sink<Mutex> {
32
32
  public:
33
33
  msvc_sink() = default;
34
34
  msvc_sink(bool check_debugger_present)
35
- : check_debugger_present_{check_debugger_present} {};
35
+ : check_debugger_present_{check_debugger_present} {}
36
36
 
37
37
  protected:
38
38
  void sink_it_(const details::log_msg &msg) override {
@@ -60,7 +60,7 @@ SPDLOG_INLINE filename_t rotating_file_sink<Mutex>::calc_filename(const filename
60
60
 
61
61
  filename_t basename, ext;
62
62
  std::tie(basename, ext) = details::file_helper::split_by_extension(filename);
63
- return fmt_lib::format(SPDLOG_FILENAME_T("{}.{}{}"), basename, index, ext);
63
+ return fmt_lib::format(SPDLOG_FMT_STRING(SPDLOG_FILENAME_T("{}.{}{}")), basename, index, ext);
64
64
  }
65
65
 
66
66
  template <typename Mutex>
@@ -64,13 +64,14 @@ protected:
64
64
  //
65
65
  // Simply maps spdlog's log level to syslog priority level.
66
66
  //
67
- int syslog_prio_from_level(const details::log_msg &msg) const {
67
+ virtual int syslog_prio_from_level(const details::log_msg &msg) const {
68
68
  return syslog_levels_.at(static_cast<levels_array::size_type>(msg.level));
69
69
  }
70
70
 
71
- private:
72
71
  using levels_array = std::array<int, 7>;
73
72
  levels_array syslog_levels_;
73
+
74
+ private:
74
75
  // must store the ident because the man says openlog might use the pointer as
75
76
  // is and not a string copy
76
77
  const std::string ident_;