mt-libcouchbase 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (707) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +38 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +24 -0
  8. data/README.md +445 -0
  9. data/Rakefile +76 -0
  10. data/ext/README.md +6 -0
  11. data/ext/Rakefile +19 -0
  12. data/ext/libcouchbase/.gitignore +132 -0
  13. data/ext/libcouchbase/CMakeLists.txt +455 -0
  14. data/ext/libcouchbase/CONTRIBUTING.md +105 -0
  15. data/ext/libcouchbase/LICENSE +202 -0
  16. data/ext/libcouchbase/README.markdown +195 -0
  17. data/ext/libcouchbase/RELEASE_NOTES.markdown +3523 -0
  18. data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +52 -0
  19. data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
  20. data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
  21. data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +18 -0
  22. data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
  23. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
  24. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +54 -0
  25. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +57 -0
  26. data/ext/libcouchbase/cmake/Modules/FindProfiler.cmake +16 -0
  27. data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +49 -0
  28. data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +142 -0
  29. data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
  30. data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
  31. data/ext/libcouchbase/cmake/config-cmake.h.in +80 -0
  32. data/ext/libcouchbase/cmake/configure +355 -0
  33. data/ext/libcouchbase/cmake/defs.mk.in +6 -0
  34. data/ext/libcouchbase/cmake/dtrace-instr-link.pl +51 -0
  35. data/ext/libcouchbase/cmake/libcouchbase.stp.in +829 -0
  36. data/ext/libcouchbase/cmake/source_files.cmake +104 -0
  37. data/ext/libcouchbase/contrib/cJSON/cJSON.c +1022 -0
  38. data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
  39. data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +25 -0
  40. data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
  41. data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +259 -0
  42. data/ext/libcouchbase/contrib/cbsasl/src/client.c +419 -0
  43. data/ext/libcouchbase/contrib/cbsasl/src/common.c +50 -0
  44. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
  45. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
  46. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
  47. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
  48. data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
  49. data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
  50. data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.c +500 -0
  51. data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.h +99 -0
  52. data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
  53. data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
  54. data/ext/libcouchbase/contrib/cliopts/cliopts.c +938 -0
  55. data/ext/libcouchbase/contrib/cliopts/cliopts.h +610 -0
  56. data/ext/libcouchbase/contrib/genhash/genhash.c +371 -0
  57. data/ext/libcouchbase/contrib/genhash/genhash.h +241 -0
  58. data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
  59. data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
  60. data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
  61. data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
  62. data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
  63. data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
  64. data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
  65. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
  66. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
  67. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
  68. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
  69. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
  70. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
  71. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
  72. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
  73. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
  74. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
  75. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
  76. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
  77. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
  78. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
  79. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
  80. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
  81. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
  82. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
  83. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
  84. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
  85. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
  86. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
  87. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
  88. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
  89. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
  90. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
  91. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
  92. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
  93. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
  94. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
  95. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
  96. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
  97. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
  98. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
  99. data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
  100. data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
  101. data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
  102. data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
  103. data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
  104. data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
  105. data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
  106. data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
  107. data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
  108. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
  109. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4893 -0
  110. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
  111. data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +7 -0
  112. data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
  113. data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
  114. data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
  115. data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
  116. data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
  117. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +75 -0
  118. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
  119. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
  120. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
  121. data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +100 -0
  122. data/ext/libcouchbase/contrib/snappy/snappy.cc +1312 -0
  123. data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
  124. data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
  125. data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
  126. data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
  127. data/ext/libcouchbase/doc/Doxyfile +2495 -0
  128. data/ext/libcouchbase/doc/DoxygenLayout.xml +109 -0
  129. data/ext/libcouchbase/doc/Makefile +44 -0
  130. data/ext/libcouchbase/doc/apiattr.h +117 -0
  131. data/ext/libcouchbase/doc/cbc-n1qlback.markdown +88 -0
  132. data/ext/libcouchbase/doc/cbc-pillowfight.markdown +296 -0
  133. data/ext/libcouchbase/doc/cbc-subdoc.markdown +299 -0
  134. data/ext/libcouchbase/doc/cbc.markdown +763 -0
  135. data/ext/libcouchbase/doc/cbcrc.markdown +52 -0
  136. data/ext/libcouchbase/doc/common-additional-options.markdown +82 -0
  137. data/ext/libcouchbase/doc/common-options.markdown +71 -0
  138. data/ext/libcouchbase/doc/environment.h +93 -0
  139. data/ext/libcouchbase/doc/example/threads.c +77 -0
  140. data/ext/libcouchbase/doc/footer.html +22 -0
  141. data/ext/libcouchbase/doc/genman.sh +25 -0
  142. data/ext/libcouchbase/doc/header.html +52 -0
  143. data/ext/libcouchbase/doc/intro.h +130 -0
  144. data/ext/libcouchbase/doc/mainpage.h +136 -0
  145. data/ext/libcouchbase/doc/man/cbc-admin.1 +1 -0
  146. data/ext/libcouchbase/doc/man/cbc-bucket-create.1 +1 -0
  147. data/ext/libcouchbase/doc/man/cbc-bucket-delete.1 +1 -0
  148. data/ext/libcouchbase/doc/man/cbc-cat.1 +1 -0
  149. data/ext/libcouchbase/doc/man/cbc-connstr.1 +1 -0
  150. data/ext/libcouchbase/doc/man/cbc-cp.1 +1 -0
  151. data/ext/libcouchbase/doc/man/cbc-create.1 +1 -0
  152. data/ext/libcouchbase/doc/man/cbc-decr.1 +1 -0
  153. data/ext/libcouchbase/doc/man/cbc-flush.1 +1 -0
  154. data/ext/libcouchbase/doc/man/cbc-hash.1 +1 -0
  155. data/ext/libcouchbase/doc/man/cbc-incr.1 +1 -0
  156. data/ext/libcouchbase/doc/man/cbc-lock.1 +1 -0
  157. data/ext/libcouchbase/doc/man/cbc-mcflush.1 +1 -0
  158. data/ext/libcouchbase/doc/man/cbc-mcversion.1 +1 -0
  159. data/ext/libcouchbase/doc/man/cbc-n1ql.1 +1 -0
  160. data/ext/libcouchbase/doc/man/cbc-n1qlback.1 +198 -0
  161. data/ext/libcouchbase/doc/man/cbc-observe.1 +1 -0
  162. data/ext/libcouchbase/doc/man/cbc-pillowfight.1 +499 -0
  163. data/ext/libcouchbase/doc/man/cbc-ping.1 +1 -0
  164. data/ext/libcouchbase/doc/man/cbc-rm.1 +1 -0
  165. data/ext/libcouchbase/doc/man/cbc-role-list.1 +1 -0
  166. data/ext/libcouchbase/doc/man/cbc-stats.1 +1 -0
  167. data/ext/libcouchbase/doc/man/cbc-subdoc.1 +494 -0
  168. data/ext/libcouchbase/doc/man/cbc-unlock.1 +1 -0
  169. data/ext/libcouchbase/doc/man/cbc-user-delete.1 +1 -0
  170. data/ext/libcouchbase/doc/man/cbc-user-list.1 +1 -0
  171. data/ext/libcouchbase/doc/man/cbc-user-upsert.1 +1 -0
  172. data/ext/libcouchbase/doc/man/cbc-verbosity.1 +1 -0
  173. data/ext/libcouchbase/doc/man/cbc-version.1 +1 -0
  174. data/ext/libcouchbase/doc/man/cbc-view.1 +1 -0
  175. data/ext/libcouchbase/doc/man/cbc-watch.1 +1 -0
  176. data/ext/libcouchbase/doc/man/cbc.1 +1035 -0
  177. data/ext/libcouchbase/doc/man/cbcrc.4 +71 -0
  178. data/ext/libcouchbase/doc/style.css +1162 -0
  179. data/ext/libcouchbase/example/CMakeLists.txt +52 -0
  180. data/ext/libcouchbase/example/README.markdown +47 -0
  181. data/ext/libcouchbase/example/analytics/.gitignore +1 -0
  182. data/ext/libcouchbase/example/analytics/analytics.c +158 -0
  183. data/ext/libcouchbase/example/analytics/build-queries.rb +34 -0
  184. data/ext/libcouchbase/example/analytics/cJSON.c +1 -0
  185. data/ext/libcouchbase/example/analytics/cJSON.h +1 -0
  186. data/ext/libcouchbase/example/analytics/queries/00-show-dataverse.json +5 -0
  187. data/ext/libcouchbase/example/analytics/queries/01-setup-dataset-breweries.json +6 -0
  188. data/ext/libcouchbase/example/analytics/queries/02-setup-dataset-beers.json +6 -0
  189. data/ext/libcouchbase/example/analytics/queries/03-initiate-shadow.json +6 -0
  190. data/ext/libcouchbase/example/analytics/queries/04-list-datasets.json +7 -0
  191. data/ext/libcouchbase/example/analytics/queries/05-count-breweries.json +5 -0
  192. data/ext/libcouchbase/example/analytics/queries/06-first-brewery.json +6 -0
  193. data/ext/libcouchbase/example/analytics/queries/07-key-based-lookup.json +6 -0
  194. data/ext/libcouchbase/example/analytics/queries/08-exact-match-lookup.json +7 -0
  195. data/ext/libcouchbase/example/analytics/queries/09-exact-match-lookup-different-shape.json +6 -0
  196. data/ext/libcouchbase/example/analytics/queries/10-other-query-filters.json +6 -0
  197. data/ext/libcouchbase/example/analytics/queries/11-equijoin.json +9 -0
  198. data/ext/libcouchbase/example/analytics/queries/12-equijoin-select-star.json +10 -0
  199. data/ext/libcouchbase/example/analytics/queries/13-ansi-join.json +8 -0
  200. data/ext/libcouchbase/example/analytics/queries/14-join-select-values.json +8 -0
  201. data/ext/libcouchbase/example/analytics/queries/15-nested-outer-join.json +7 -0
  202. data/ext/libcouchbase/example/analytics/queries/16-theta-join.json +8 -0
  203. data/ext/libcouchbase/example/analytics/queries/17-existential-quantification.json +9 -0
  204. data/ext/libcouchbase/example/analytics/queries/18-universal-quantification.json +7 -0
  205. data/ext/libcouchbase/example/analytics/queries/19-simple-aggregation.json +6 -0
  206. data/ext/libcouchbase/example/analytics/queries/20-simple-aggregation-unwrapped-value.json +6 -0
  207. data/ext/libcouchbase/example/analytics/queries/21-simple-aggregation-explicit.json +6 -0
  208. data/ext/libcouchbase/example/analytics/queries/22-grouping-and-aggregation.json +6 -0
  209. data/ext/libcouchbase/example/analytics/queries/23-grouping-and-aggregation-with-hint.json +7 -0
  210. data/ext/libcouchbase/example/analytics/queries/24-grouping-and-limits.json +7 -0
  211. data/ext/libcouchbase/example/analytics/queries/25-named-parameters.json +7 -0
  212. data/ext/libcouchbase/example/analytics/queries/26-positional-parameters.json +7 -0
  213. data/ext/libcouchbase/example/analytics/queries.h +113 -0
  214. data/ext/libcouchbase/example/crypto/.gitignore +2 -0
  215. data/ext/libcouchbase/example/crypto/Makefile +13 -0
  216. data/ext/libcouchbase/example/crypto/common_provider.c +26 -0
  217. data/ext/libcouchbase/example/crypto/common_provider.h +33 -0
  218. data/ext/libcouchbase/example/crypto/openssl_symmetric_decrypt.c +144 -0
  219. data/ext/libcouchbase/example/crypto/openssl_symmetric_encrypt.c +146 -0
  220. data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.c +271 -0
  221. data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.h +29 -0
  222. data/ext/libcouchbase/example/db/db.c +171 -0
  223. data/ext/libcouchbase/example/db/vb.c +227 -0
  224. data/ext/libcouchbase/example/fts/.gitignore +1 -0
  225. data/ext/libcouchbase/example/fts/build-queries.rb +33 -0
  226. data/ext/libcouchbase/example/fts/fts.c +142 -0
  227. data/ext/libcouchbase/example/fts/queries/00-simple-text-query.json +12 -0
  228. data/ext/libcouchbase/example/fts/queries/01-simple-text-query-on-non-default-index.json +9 -0
  229. data/ext/libcouchbase/example/fts/queries/02-simple-text-query-on-stored-field.json +13 -0
  230. data/ext/libcouchbase/example/fts/queries/03-match-query-with-facet.json +19 -0
  231. data/ext/libcouchbase/example/fts/queries/04-docid-query.json +11 -0
  232. data/ext/libcouchbase/example/fts/queries/05-unanalyzed-term-query-with-fuzziness-level-of-0.json +13 -0
  233. data/ext/libcouchbase/example/fts/queries/06-unanalyzed-term-query-with-fuzziness-level-of-2.json +14 -0
  234. data/ext/libcouchbase/example/fts/queries/07-match-phrase-query.json +13 -0
  235. data/ext/libcouchbase/example/fts/queries/08-phrase-query.json +16 -0
  236. data/ext/libcouchbase/example/fts/queries/09-query-string-query.json +9 -0
  237. data/ext/libcouchbase/example/fts/queries/10-conjunction-query.json +21 -0
  238. data/ext/libcouchbase/example/fts/queries/11-wild-card-query.json +13 -0
  239. data/ext/libcouchbase/example/fts/queries/12-numeric-range-query.json +11 -0
  240. data/ext/libcouchbase/example/fts/queries/13-regexp-query.json +13 -0
  241. data/ext/libcouchbase/example/fts/queries.h +61 -0
  242. data/ext/libcouchbase/example/instancepool/main.cc +112 -0
  243. data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
  244. data/ext/libcouchbase/example/instancepool/pool.h +69 -0
  245. data/ext/libcouchbase/example/libeventdirect/main.c +222 -0
  246. data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
  247. data/ext/libcouchbase/example/minimal/.gitignore +1 -0
  248. data/ext/libcouchbase/example/minimal/minimal.c +132 -0
  249. data/ext/libcouchbase/example/minimal/query.c +185 -0
  250. data/ext/libcouchbase/example/observe/durability.c +102 -0
  251. data/ext/libcouchbase/example/observe/observe.c +159 -0
  252. data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +143 -0
  253. data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +201 -0
  254. data/ext/libcouchbase/example/subdoc/subdoc-xattrs.c +286 -0
  255. data/ext/libcouchbase/example/tick/tick.c +119 -0
  256. data/ext/libcouchbase/example/tracing/.gitignore +2 -0
  257. data/ext/libcouchbase/example/tracing/Makefile +8 -0
  258. data/ext/libcouchbase/example/tracing/cJSON.c +1 -0
  259. data/ext/libcouchbase/example/tracing/cJSON.h +1 -0
  260. data/ext/libcouchbase/example/tracing/tracing.c +439 -0
  261. data/ext/libcouchbase/example/tracing/views.c +444 -0
  262. data/ext/libcouchbase/example/users/README +48 -0
  263. data/ext/libcouchbase/example/users/users.c +147 -0
  264. data/ext/libcouchbase/example/views/views-example.cc +83 -0
  265. data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
  266. data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
  267. data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
  268. data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
  269. data/ext/libcouchbase/include/libcouchbase/auth.h +297 -0
  270. data/ext/libcouchbase/include/libcouchbase/cbft.h +151 -0
  271. data/ext/libcouchbase/include/libcouchbase/cntl-private.h +319 -0
  272. data/ext/libcouchbase/include/libcouchbase/cntl.h +1418 -0
  273. data/ext/libcouchbase/include/libcouchbase/configuration.h.in +29 -0
  274. data/ext/libcouchbase/include/libcouchbase/couchbase.h +4089 -0
  275. data/ext/libcouchbase/include/libcouchbase/crypto.h +306 -0
  276. data/ext/libcouchbase/include/libcouchbase/deprecated.h +312 -0
  277. data/ext/libcouchbase/include/libcouchbase/error.h +680 -0
  278. data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
  279. data/ext/libcouchbase/include/libcouchbase/iops.h +1053 -0
  280. data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
  281. data/ext/libcouchbase/include/libcouchbase/kvbuf.h +137 -0
  282. data/ext/libcouchbase/include/libcouchbase/metrics.h +79 -0
  283. data/ext/libcouchbase/include/libcouchbase/n1ql.h +539 -0
  284. data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
  285. data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +370 -0
  286. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
  287. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
  288. data/ext/libcouchbase/include/libcouchbase/subdoc.h +347 -0
  289. data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
  290. data/ext/libcouchbase/include/libcouchbase/tracing.h +437 -0
  291. data/ext/libcouchbase/include/libcouchbase/vbucket.h +680 -0
  292. data/ext/libcouchbase/include/libcouchbase/views.h +357 -0
  293. data/ext/libcouchbase/include/libcouchbase/visibility.h +66 -0
  294. data/ext/libcouchbase/include/memcached/COPYING +30 -0
  295. data/ext/libcouchbase/include/memcached/README +10 -0
  296. data/ext/libcouchbase/include/memcached/protocol_binary.h +885 -0
  297. data/ext/libcouchbase/packaging/README +7 -0
  298. data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
  299. data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
  300. data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
  301. data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
  302. data/ext/libcouchbase/packaging/deb/compat +1 -0
  303. data/ext/libcouchbase/packaging/deb/control +72 -0
  304. data/ext/libcouchbase/packaging/deb/copyright +10 -0
  305. data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
  306. data/ext/libcouchbase/packaging/deb/package.mk +31 -0
  307. data/ext/libcouchbase/packaging/deb/rules +46 -0
  308. data/ext/libcouchbase/packaging/deb/source/format +1 -0
  309. data/ext/libcouchbase/packaging/distinfo/README +1 -0
  310. data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
  311. data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
  312. data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
  313. data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
  314. data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
  315. data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +101 -0
  316. data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
  317. data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
  318. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +467 -0
  319. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
  320. data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
  321. data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
  322. data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
  323. data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +31 -0
  324. data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +66 -0
  325. data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
  326. data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +31 -0
  327. data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
  328. data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
  329. data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +44 -0
  330. data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +218 -0
  331. data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
  332. data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +155 -0
  333. data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +709 -0
  334. data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +13 -0
  335. data/ext/libcouchbase/plugins/io/select/plugin-select.c +451 -0
  336. data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
  337. data/ext/libcouchbase/src/README.md +101 -0
  338. data/ext/libcouchbase/src/aspend.h +105 -0
  339. data/ext/libcouchbase/src/auth-priv.h +85 -0
  340. data/ext/libcouchbase/src/auth.cc +146 -0
  341. data/ext/libcouchbase/src/bootstrap.cc +263 -0
  342. data/ext/libcouchbase/src/bootstrap.h +149 -0
  343. data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +450 -0
  344. data/ext/libcouchbase/src/bucketconfig/bc_file.cc +281 -0
  345. data/ext/libcouchbase/src/bucketconfig/bc_http.cc +527 -0
  346. data/ext/libcouchbase/src/bucketconfig/bc_http.h +107 -0
  347. data/ext/libcouchbase/src/bucketconfig/bc_static.cc +150 -0
  348. data/ext/libcouchbase/src/bucketconfig/clconfig.h +700 -0
  349. data/ext/libcouchbase/src/bucketconfig/confmon.cc +403 -0
  350. data/ext/libcouchbase/src/callbacks.c +380 -0
  351. data/ext/libcouchbase/src/cbft.cc +253 -0
  352. data/ext/libcouchbase/src/cntl.cc +1057 -0
  353. data/ext/libcouchbase/src/config_static.h +176 -0
  354. data/ext/libcouchbase/src/connspec.cc +555 -0
  355. data/ext/libcouchbase/src/connspec.h +155 -0
  356. data/ext/libcouchbase/src/crypto.cc +399 -0
  357. data/ext/libcouchbase/src/ctx-log-inl.h +44 -0
  358. data/ext/libcouchbase/src/dns-srv.cc +146 -0
  359. data/ext/libcouchbase/src/dump.cc +103 -0
  360. data/ext/libcouchbase/src/errmap.cc +173 -0
  361. data/ext/libcouchbase/src/errmap.h +271 -0
  362. data/ext/libcouchbase/src/getconfig.cc +72 -0
  363. data/ext/libcouchbase/src/gethrtime.c +109 -0
  364. data/ext/libcouchbase/src/handler.cc +1101 -0
  365. data/ext/libcouchbase/src/hashtable.c +75 -0
  366. data/ext/libcouchbase/src/hdr_timings.c +92 -0
  367. data/ext/libcouchbase/src/hostlist.cc +293 -0
  368. data/ext/libcouchbase/src/hostlist.h +160 -0
  369. data/ext/libcouchbase/src/http/http-priv.h +326 -0
  370. data/ext/libcouchbase/src/http/http.cc +672 -0
  371. data/ext/libcouchbase/src/http/http.h +1 -0
  372. data/ext/libcouchbase/src/http/http_io.cc +316 -0
  373. data/ext/libcouchbase/src/instance.cc +917 -0
  374. data/ext/libcouchbase/src/internal.h +285 -0
  375. data/ext/libcouchbase/src/iofactory.c +575 -0
  376. data/ext/libcouchbase/src/jsparse/parser.cc +445 -0
  377. data/ext/libcouchbase/src/jsparse/parser.h +159 -0
  378. data/ext/libcouchbase/src/lcbht/lcbht.cc +177 -0
  379. data/ext/libcouchbase/src/lcbht/lcbht.h +210 -0
  380. data/ext/libcouchbase/src/lcbio/connect.cc +603 -0
  381. data/ext/libcouchbase/src/lcbio/connect.h +400 -0
  382. data/ext/libcouchbase/src/lcbio/ctx.c +658 -0
  383. data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
  384. data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
  385. data/ext/libcouchbase/src/lcbio/iotable.h +169 -0
  386. data/ext/libcouchbase/src/lcbio/ioutils.cc +356 -0
  387. data/ext/libcouchbase/src/lcbio/ioutils.h +144 -0
  388. data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
  389. data/ext/libcouchbase/src/lcbio/manager.cc +579 -0
  390. data/ext/libcouchbase/src/lcbio/manager.h +195 -0
  391. data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
  392. data/ext/libcouchbase/src/lcbio/rw-inl.h +137 -0
  393. data/ext/libcouchbase/src/lcbio/ssl.h +159 -0
  394. data/ext/libcouchbase/src/lcbio/timer-cxx.h +87 -0
  395. data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
  396. data/ext/libcouchbase/src/lcbio/timer.c +132 -0
  397. data/ext/libcouchbase/src/legacy.c +431 -0
  398. data/ext/libcouchbase/src/list.c +144 -0
  399. data/ext/libcouchbase/src/list.h +127 -0
  400. data/ext/libcouchbase/src/logging.c +244 -0
  401. data/ext/libcouchbase/src/logging.h +88 -0
  402. data/ext/libcouchbase/src/mc/compress.cc +171 -0
  403. data/ext/libcouchbase/src/mc/compress.h +56 -0
  404. data/ext/libcouchbase/src/mc/forward.c +186 -0
  405. data/ext/libcouchbase/src/mc/forward.h +90 -0
  406. data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
  407. data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
  408. data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +115 -0
  409. data/ext/libcouchbase/src/mc/mcreq.c +983 -0
  410. data/ext/libcouchbase/src/mc/mcreq.h +1015 -0
  411. data/ext/libcouchbase/src/mcserver/mcserver.cc +1055 -0
  412. data/ext/libcouchbase/src/mcserver/mcserver.h +221 -0
  413. data/ext/libcouchbase/src/mcserver/negotiate.cc +757 -0
  414. data/ext/libcouchbase/src/mcserver/negotiate.h +128 -0
  415. data/ext/libcouchbase/src/mctx-helper.h +62 -0
  416. data/ext/libcouchbase/src/metrics.cc +132 -0
  417. data/ext/libcouchbase/src/n1ql/ixmgmt.cc +857 -0
  418. data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
  419. data/ext/libcouchbase/src/n1ql/n1ql.cc +830 -0
  420. data/ext/libcouchbase/src/n1ql/params.cc +260 -0
  421. data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
  422. data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
  423. data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
  424. data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
  425. data/ext/libcouchbase/src/newconfig.cc +365 -0
  426. data/ext/libcouchbase/src/nodeinfo.cc +184 -0
  427. data/ext/libcouchbase/src/operations/cbflush.cc +63 -0
  428. data/ext/libcouchbase/src/operations/counter.cc +117 -0
  429. data/ext/libcouchbase/src/operations/durability-cas.cc +251 -0
  430. data/ext/libcouchbase/src/operations/durability-seqno.cc +170 -0
  431. data/ext/libcouchbase/src/operations/durability.cc +668 -0
  432. data/ext/libcouchbase/src/operations/durability_internal.h +306 -0
  433. data/ext/libcouchbase/src/operations/get.cc +409 -0
  434. data/ext/libcouchbase/src/operations/observe-seqno.cc +94 -0
  435. data/ext/libcouchbase/src/operations/observe.cc +367 -0
  436. data/ext/libcouchbase/src/operations/ping.cc +496 -0
  437. data/ext/libcouchbase/src/operations/pktfwd.cc +86 -0
  438. data/ext/libcouchbase/src/operations/remove.cc +84 -0
  439. data/ext/libcouchbase/src/operations/stats.cc +459 -0
  440. data/ext/libcouchbase/src/operations/store.cc +358 -0
  441. data/ext/libcouchbase/src/operations/subdoc.cc +614 -0
  442. data/ext/libcouchbase/src/operations/touch.cc +84 -0
  443. data/ext/libcouchbase/src/packetutils.h +388 -0
  444. data/ext/libcouchbase/src/probes.d +182 -0
  445. data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
  446. data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
  447. data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
  448. data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
  449. data/ext/libcouchbase/src/rdb/rope.c +419 -0
  450. data/ext/libcouchbase/src/rdb/rope.h +488 -0
  451. data/ext/libcouchbase/src/retrychk.cc +113 -0
  452. data/ext/libcouchbase/src/retryq.cc +458 -0
  453. data/ext/libcouchbase/src/retryq.h +170 -0
  454. data/ext/libcouchbase/src/ringbuffer.c +442 -0
  455. data/ext/libcouchbase/src/ringbuffer.h +100 -0
  456. data/ext/libcouchbase/src/rnd.cc +61 -0
  457. data/ext/libcouchbase/src/rnd.h +39 -0
  458. data/ext/libcouchbase/src/settings.c +125 -0
  459. data/ext/libcouchbase/src/settings.h +273 -0
  460. data/ext/libcouchbase/src/sllist-inl.h +197 -0
  461. data/ext/libcouchbase/src/sllist.h +76 -0
  462. data/ext/libcouchbase/src/ssl/CMakeLists.txt +11 -0
  463. data/ext/libcouchbase/src/ssl/ssl_c.c +442 -0
  464. data/ext/libcouchbase/src/ssl/ssl_common.c +478 -0
  465. data/ext/libcouchbase/src/ssl/ssl_e.c +421 -0
  466. data/ext/libcouchbase/src/ssl/ssl_iot_common.h +182 -0
  467. data/ext/libcouchbase/src/strcodecs/base64.c +307 -0
  468. data/ext/libcouchbase/src/strcodecs/strcodecs.h +302 -0
  469. data/ext/libcouchbase/src/timings.c +207 -0
  470. data/ext/libcouchbase/src/trace.h +117 -0
  471. data/ext/libcouchbase/src/tracing/span.cc +421 -0
  472. data/ext/libcouchbase/src/tracing/threshold_logging_tracer.cc +213 -0
  473. data/ext/libcouchbase/src/tracing/tracer.cc +53 -0
  474. data/ext/libcouchbase/src/tracing/tracing-internal.h +198 -0
  475. data/ext/libcouchbase/src/utilities.c +176 -0
  476. data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
  477. data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
  478. data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
  479. data/ext/libcouchbase/src/vbucket/hash.h +30 -0
  480. data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
  481. data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
  482. data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
  483. data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
  484. data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
  485. data/ext/libcouchbase/src/vbucket/vbucket.c +1735 -0
  486. data/ext/libcouchbase/src/views/docreq.cc +213 -0
  487. data/ext/libcouchbase/src/views/docreq.h +94 -0
  488. data/ext/libcouchbase/src/views/viewreq.cc +381 -0
  489. data/ext/libcouchbase/src/views/viewreq.h +87 -0
  490. data/ext/libcouchbase/src/wait.cc +156 -0
  491. data/ext/libcouchbase/tests/CMakeLists.txt +149 -0
  492. data/ext/libcouchbase/tests/basic/t_base64.cc +109 -0
  493. data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
  494. data/ext/libcouchbase/tests/basic/t_connstr.cc +456 -0
  495. data/ext/libcouchbase/tests/basic/t_creds.cc +96 -0
  496. data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
  497. data/ext/libcouchbase/tests/basic/t_host.cc +210 -0
  498. data/ext/libcouchbase/tests/basic/t_jsparse.cc +82 -0
  499. data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
  500. data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
  501. data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
  502. data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
  503. data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +17 -0
  504. data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
  505. data/ext/libcouchbase/tests/basic/t_packet.cc +215 -0
  506. data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
  507. data/ext/libcouchbase/tests/basic/t_scram.cc +514 -0
  508. data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
  509. data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
  510. data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
  511. data/ext/libcouchbase/tests/check-all.cc +612 -0
  512. data/ext/libcouchbase/tests/htparse/t_basic.cc +173 -0
  513. data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
  514. data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
  515. data/ext/libcouchbase/tests/ioserver/ioserver.cc +117 -0
  516. data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
  517. data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
  518. data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
  519. data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
  520. data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
  521. data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
  522. data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
  523. data/ext/libcouchbase/tests/iotests/mock-environment.cc +632 -0
  524. data/ext/libcouchbase/tests/iotests/mock-environment.h +480 -0
  525. data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
  526. data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
  527. data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
  528. data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
  529. data/ext/libcouchbase/tests/iotests/t_behavior.cc +220 -0
  530. data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
  531. data/ext/libcouchbase/tests/iotests/t_confmon.cc +223 -0
  532. data/ext/libcouchbase/tests/iotests/t_durability.cc +1108 -0
  533. data/ext/libcouchbase/tests/iotests/t_eerrs.cc +121 -0
  534. data/ext/libcouchbase/tests/iotests/t_errmap.cc +181 -0
  535. data/ext/libcouchbase/tests/iotests/t_forward.cc +118 -0
  536. data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
  537. data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
  538. data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
  539. data/ext/libcouchbase/tests/iotests/t_lock.cc +274 -0
  540. data/ext/libcouchbase/tests/iotests/t_misc.cc +777 -0
  541. data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
  542. data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
  543. data/ext/libcouchbase/tests/iotests/t_netfail.cc +778 -0
  544. data/ext/libcouchbase/tests/iotests/t_obseqno.cc +156 -0
  545. data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
  546. data/ext/libcouchbase/tests/iotests/t_sched.cc +87 -0
  547. data/ext/libcouchbase/tests/iotests/t_serverops.cc +231 -0
  548. data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
  549. data/ext/libcouchbase/tests/iotests/t_snappy.cc +316 -0
  550. data/ext/libcouchbase/tests/iotests/t_subdoc.cc +857 -0
  551. data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
  552. data/ext/libcouchbase/tests/iotests/t_views.cc +417 -0
  553. data/ext/libcouchbase/tests/iotests/testutil.cc +251 -0
  554. data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
  555. data/ext/libcouchbase/tests/mc/mctest.h +119 -0
  556. data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
  557. data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
  558. data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
  559. data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
  560. data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
  561. data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
  562. data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
  563. data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
  564. data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
  565. data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
  566. data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
  567. data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
  568. data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
  569. data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
  570. data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
  571. data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
  572. data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
  573. data/ext/libcouchbase/tests/socktests/socktest.cc +344 -0
  574. data/ext/libcouchbase/tests/socktests/socktest.h +447 -0
  575. data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
  576. data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
  577. data/ext/libcouchbase/tests/socktests/t_manager.cc +159 -0
  578. data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
  579. data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
  580. data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
  581. data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
  582. data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
  583. data/ext/libcouchbase/tests/start_mock.bat +15 -0
  584. data/ext/libcouchbase/tests/start_mock.sh +42 -0
  585. data/ext/libcouchbase/tests/unit_tests.cc +43 -0
  586. data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
  587. data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
  588. data/ext/libcouchbase/tests/vbucket/confdata/ketama_expected.json +2562 -0
  589. data/ext/libcouchbase/tests/vbucket/confdata/map_node_present_nodesext_missing_nodes.json +94 -0
  590. data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
  591. data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
  592. data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
  593. data/ext/libcouchbase/tests/vbucket/confdata/memd_ketama_config.json +31 -0
  594. data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
  595. data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
  596. data/ext/libcouchbase/tests/vbucket/t_config.cc +386 -0
  597. data/ext/libcouchbase/tools/CMakeLists.txt +80 -0
  598. data/ext/libcouchbase/tools/cbc-handlers.h +636 -0
  599. data/ext/libcouchbase/tools/cbc-n1qlback.cc +496 -0
  600. data/ext/libcouchbase/tools/cbc-pillowfight.cc +1230 -0
  601. data/ext/libcouchbase/tools/cbc-proxy.cc +534 -0
  602. data/ext/libcouchbase/tools/cbc-subdoc.cc +825 -0
  603. data/ext/libcouchbase/tools/cbc.cc +1928 -0
  604. data/ext/libcouchbase/tools/common/histogram.cc +44 -0
  605. data/ext/libcouchbase/tools/common/histogram.h +23 -0
  606. data/ext/libcouchbase/tools/common/options.cc +451 -0
  607. data/ext/libcouchbase/tools/common/options.h +90 -0
  608. data/ext/libcouchbase/tools/docgen/docgen.h +495 -0
  609. data/ext/libcouchbase/tools/docgen/loc.h +211 -0
  610. data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
  611. data/ext/libcouchbase/tools/docgen/seqgen.h +122 -0
  612. data/ext/libcouchbase/tools/extract-packets.rb +110 -0
  613. data/ext/libcouchbase/tools/linenoise/linenoise.c +1199 -0
  614. data/ext/libcouchbase/tools/linenoise/linenoise.h +73 -0
  615. data/lib/mt-libcouchbase/bucket.rb +825 -0
  616. data/lib/mt-libcouchbase/callbacks.rb +69 -0
  617. data/lib/mt-libcouchbase/connection.rb +896 -0
  618. data/lib/mt-libcouchbase/design_docs.rb +92 -0
  619. data/lib/mt-libcouchbase/error.rb +68 -0
  620. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdbase.rb +23 -0
  621. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdcounter.rb +36 -0
  622. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdendure.rb +26 -0
  623. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdfts.rb +24 -0
  624. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdget.rb +30 -0
  625. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdgetreplica.rb +49 -0
  626. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdhttp.rb +58 -0
  627. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdn1ql.rb +40 -0
  628. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdobseqno.rb +33 -0
  629. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdobserve.rb +30 -0
  630. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdstore.rb +40 -0
  631. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdstoredur.rb +45 -0
  632. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdsubdoc.rb +61 -0
  633. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdverbosity.rb +29 -0
  634. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdviewquery.rb +61 -0
  635. data/lib/mt-libcouchbase/ext/mt-libcouchbase/contigbuf.rb +14 -0
  636. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st.rb +15 -0
  637. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st0.rb +23 -0
  638. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st1.rb +26 -0
  639. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st2.rb +32 -0
  640. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st3.rb +26 -0
  641. data/lib/mt-libcouchbase/ext/mt-libcouchbase/crst_u.rb +20 -0
  642. data/lib/mt-libcouchbase/ext/mt-libcouchbase/durability_opts_st_v.rb +11 -0
  643. data/lib/mt-libcouchbase/ext/mt-libcouchbase/durability_opts_t.rb +14 -0
  644. data/lib/mt-libcouchbase/ext/mt-libcouchbase/durabilityopt_sv0.rb +63 -0
  645. data/lib/mt-libcouchbase/ext/mt-libcouchbase/enums.rb +1007 -0
  646. data/lib/mt-libcouchbase/ext/mt-libcouchbase/fragbuf.rb +18 -0
  647. data/lib/mt-libcouchbase/ext/mt-libcouchbase/ftshandle.rb +7 -0
  648. data/lib/mt-libcouchbase/ext/mt-libcouchbase/histogram.rb +34 -0
  649. data/lib/mt-libcouchbase/ext/mt-libcouchbase/http_request_t.rb +7 -0
  650. data/lib/mt-libcouchbase/ext/mt-libcouchbase/keybuf.rb +20 -0
  651. data/lib/mt-libcouchbase/ext/mt-libcouchbase/multicmd_ctx.rb +30 -0
  652. data/lib/mt-libcouchbase/ext/mt-libcouchbase/mutation_token.rb +17 -0
  653. data/lib/mt-libcouchbase/ext/mt-libcouchbase/n1qlhandle.rb +7 -0
  654. data/lib/mt-libcouchbase/ext/mt-libcouchbase/n1qlparams.rb +7 -0
  655. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respbase.rb +29 -0
  656. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respcounter.rb +32 -0
  657. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respendure.rb +49 -0
  658. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respfts.rb +40 -0
  659. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respget.rb +44 -0
  660. data/lib/mt-libcouchbase/ext/mt-libcouchbase/resphttp.rb +48 -0
  661. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respmcversion.rb +38 -0
  662. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respn1ql.rb +41 -0
  663. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respobseqno.rb +52 -0
  664. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respobserve.rb +41 -0
  665. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respserverbase.rb +32 -0
  666. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstats.rb +38 -0
  667. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstore.rb +32 -0
  668. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstoredur.rb +38 -0
  669. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respsubdoc.rb +35 -0
  670. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respviewquery.rb +67 -0
  671. data/lib/mt-libcouchbase/ext/mt-libcouchbase/sdentry.rb +22 -0
  672. data/lib/mt-libcouchbase/ext/mt-libcouchbase/sdspec.rb +31 -0
  673. data/lib/mt-libcouchbase/ext/mt-libcouchbase/t.rb +7 -0
  674. data/lib/mt-libcouchbase/ext/mt-libcouchbase/valbuf.rb +22 -0
  675. data/lib/mt-libcouchbase/ext/mt-libcouchbase/valbuf_u_buf.rb +14 -0
  676. data/lib/mt-libcouchbase/ext/mt-libcouchbase/viewhandle.rb +7 -0
  677. data/lib/mt-libcouchbase/ext/mt-libcouchbase.rb +1175 -0
  678. data/lib/mt-libcouchbase/ext/mt-libcouchbase_libuv.rb +22 -0
  679. data/lib/mt-libcouchbase/ext/tasks.rb +39 -0
  680. data/lib/mt-libcouchbase/n1ql.rb +80 -0
  681. data/lib/mt-libcouchbase/query_full_text.rb +147 -0
  682. data/lib/mt-libcouchbase/query_n1ql.rb +123 -0
  683. data/lib/mt-libcouchbase/query_view.rb +135 -0
  684. data/lib/mt-libcouchbase/results_fiber.rb +281 -0
  685. data/lib/mt-libcouchbase/results_native.rb +220 -0
  686. data/lib/mt-libcouchbase/subdoc_request.rb +139 -0
  687. data/lib/mt-libcouchbase/version.rb +5 -0
  688. data/lib/mt-libcouchbase.rb +40 -0
  689. data/mt-libcouchbase.gemspec +68 -0
  690. data/spec/bucket_spec.rb +290 -0
  691. data/spec/connection_spec.rb +257 -0
  692. data/spec/design_docs_spec.rb +31 -0
  693. data/spec/error_spec.rb +26 -0
  694. data/spec/fts_spec.rb +135 -0
  695. data/spec/n1ql_spec.rb +260 -0
  696. data/spec/results_libuv_spec.rb +244 -0
  697. data/spec/results_native_spec.rb +259 -0
  698. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
  699. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
  700. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
  701. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
  702. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
  703. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
  704. data/spec/subdoc_spec.rb +192 -0
  705. data/spec/view_spec.rb +201 -0
  706. data/windows_build.md +36 -0
  707. metadata +873 -0
@@ -0,0 +1,1418 @@
1
+ /* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2017 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+
19
+ /**
20
+ * @file
21
+ * @brief Command codes for libcouchbase.
22
+ *
23
+ * @details
24
+ * These codes may be passed to 'lcb_cntl'.
25
+ *
26
+ * Note that the constant values are also public API; thus allowing forwards
27
+ * and backwards compatibility.
28
+ */
29
+
30
+ #ifndef LCB_CNTL_H
31
+ #define LCB_CNTL_H
32
+
33
+ #ifdef __cplusplus
34
+ extern "C" {
35
+ #endif
36
+
37
+
38
+ /**
39
+ * @ingroup lcb-cntl
40
+ * @defgroup lcb-cntl-settings Setting List
41
+ * @brief Adjust tunables for the client
42
+ * @details
43
+ *
44
+ * The constants in this file are used to control the behavior of the library.
45
+ * All of the operations above may be passed as the `cmd` parameter to the
46
+ * lcb_cntl() function, thus:
47
+ *
48
+ * @code{.c}
49
+ * char something;
50
+ * lcb_error_t rv;
51
+ * rv = lcb_cntl(instance, LCB_CNTL_GET, LCB_CNTL_FOO, &something);
52
+ * @endcode
53
+ *
54
+ * will retrieve the setting of `LCB_CNTL_FOO` into `something`.
55
+ *
56
+ * You may also use the lcb_cntl_string() function, which operates on
57
+ * strings and can set various configuration properties fairly simply. Note
58
+ * however that string names are subject to change, and not all configuration
59
+ * directives have a string alias:
60
+ *
61
+ * @code{.c}
62
+ * rv = lcb_cntl_string("operation_timeout", "5.0");
63
+ * @endcode
64
+ *
65
+ * Of the commands listed below, some will be read-only (i.e. you may only
66
+ * _read_ the setting using the @ref LCB_CNTL_GET `mode`), some will be write-only
67
+ * (i.e. you may only _modify_ the setting, and use @ref LCB_CNTL_SET for the `mode`)
68
+ * and some will be both readable and writable.
69
+ *
70
+ * Along the documentation of each specific command, there is a table displaying
71
+ * the modes supported and the expected pointer type to be passed as the `arg`
72
+ * value into lcb_cntl(). Note that some read-write commands require different
73
+ * pointer types depending on whether the `mode` is retrieval or storage.
74
+ *
75
+ *
76
+ * @section lcb-time-info Timeout and Time Value Settings
77
+ *
78
+ * There are various settings on the library that control behavior with
79
+ * respect to wall clock time.
80
+ *
81
+ * Timeout settings control how long the library will wait for a certain event
82
+ * before proceeding to the next course of action (which may either be to try
83
+ * a different operation or fail the current one, depending on the specific
84
+ * timeout).
85
+ *
86
+ * Other settings may configure how often the library proactively polls for
87
+ * a configuration update, retries various interally retried operations and
88
+ * so forth.
89
+ *
90
+ * Time values are specified in _microseconds_ stored within an `lcb_U32`.
91
+ *
92
+ * When specified as an argument to lcb_cntl_string() or through the connection
93
+ * string, it will be parsed from a string float value where the integer-part
94
+ * is in seconds and the fractional-part is in fractions of a second.
95
+ *
96
+ * Note that timeouts in libcouchbase are implemented via an event loop
97
+ * scheduler. As such their accuracy and promptness is limited by how
98
+ * often the event loop is invoked and how much wall time is spent in
99
+ * each of their handlers. Specifically if you issue long running blocking
100
+ * calls within any of the handlers (and this means any of the library's
101
+ * callbacks) then the timeout accuracy will be impacted.
102
+ *
103
+ * Further behavior is dependent on the event loop plugin itself and how
104
+ * it schedules timeouts.
105
+ *
106
+ *
107
+ * @par Configuration Stability Attributes
108
+ * Configuration parameters are still subject to the API classification used
109
+ * in @ref lcb_attributes. For _deprecated_ control commands, lcb_cntl() will
110
+ * either perform the operation, _or_ consider it a no-op, _or_ return an error
111
+ * code.
112
+ */
113
+
114
+ /**
115
+ * @addtogroup lcb-cntl-settings
116
+ * @{
117
+ */
118
+
119
+ /**
120
+ * @name Modes
121
+ * Modes for the lcb_cntl() `mode` argument
122
+ * @{
123
+ */
124
+ #define LCB_CNTL_SET 0x01 /**< @brief Modify a setting */
125
+ #define LCB_CNTL_GET 0x00 /**< @brief Retrieve a setting */
126
+ /**@}*/
127
+
128
+ /**
129
+ * @brief Operation Timeout
130
+ *
131
+ * The operation timeout is the maximum amount of time the library will wait
132
+ * for an operation to receive a response before invoking its callback with
133
+ * a failure status.
134
+ *
135
+ * An operation may timeout if:
136
+ *
137
+ * * A server is taking too long to respond
138
+ * * An updated cluster configuration has not been promptly received
139
+ *
140
+ * @code{.c}
141
+ * lcb_U32 tmo = 3500000;
142
+ * lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_OP_TIMEOUT, &tmo);
143
+ * @endcode
144
+ *
145
+ * @cntl_arg_both{lcbU32*}
146
+ * @committed
147
+ * @see lcb-time-info
148
+ */
149
+ #define LCB_CNTL_OP_TIMEOUT 0x00
150
+
151
+ /**
152
+ * @brief Views Timeout
153
+ * This is the I/O timeout for HTTP requests issues with LCB_HTTP_TYPE_VIEWS
154
+ *
155
+ * @cntl_arg_both{lcb_U32*}
156
+ * @committed
157
+ */
158
+ #define LCB_CNTL_VIEW_TIMEOUT 0x01
159
+
160
+ /**
161
+ * @brief N1QL Timeout
162
+ * This is the I/O timeout for N1QL queries, issued via lcb_n1ql_query()
163
+ *
164
+ * @cntl_arg_both{lcb_U32*}
165
+ * @committed
166
+ */
167
+ #define LCB_CNTL_N1QL_TIMEOUT 0x3D
168
+
169
+ /**
170
+ * @brief Get the name of the bucket
171
+ * This returns the name of the bucket this instance is connected to, or `NULL`
172
+ * if not yet connected to a bucket
173
+ *
174
+ * @cntl_arg_getonly{`const char*`}
175
+ * @committed
176
+ */
177
+ #define LCB_CNTL_BUCKETNAME 0x30
178
+
179
+ /**
180
+ * @brief Get the bucket type.
181
+ * This returns the bucket type - which is either of the following:
182
+ *
183
+ * * LCB_BTYPE_UNSPEC
184
+ * * LCB_BTYPE_COUCHBASE
185
+ * * LCB_BTYPE_EPHEMERAL
186
+ * * LCB_BTYPE_MEMCACHED
187
+ *
188
+ * @see https://developer.couchbase.com/documentation/server/current/architecture/core-data-access-buckets.html
189
+ *
190
+ * @cntl_arg_getonly{lcb_BTYPE*}
191
+ */
192
+ #define LCB_CNTL_BUCKETTYPE 0x48
193
+
194
+ /**
195
+ * @brief Get the handle type.
196
+ * This returns the handle type - which is either LCB_TYPE_CLUSTER or
197
+ * LCB_TYPE_BUCKET
198
+ *
199
+ * @cntl_arg_getonly{lcb_type_t*}
200
+ */
201
+ #define LCB_CNTL_HANDLETYPE 0x04
202
+
203
+ /**@brief Get the vBucket handle.
204
+ * Obtains the current cluster configuration from the client.
205
+ *
206
+ * @cntl_arg_getonly{lcbvb_CONFIG**}
207
+ */
208
+ #define LCB_CNTL_VBCONFIG 0x05
209
+
210
+ /**@brief Get the iops implementation instance
211
+ *
212
+ * @cntl_arg_getonly{lcb_io_opt_t*}
213
+ * @uncommitted
214
+ */
215
+ #define LCB_CNTL_IOPS 0x06
216
+
217
+
218
+ /** @brief Structure containing mapping information for a key */
219
+ typedef struct lcb_cntl_vbinfo_st {
220
+ int version;
221
+
222
+ union {
223
+ /** v0 */
224
+ struct {
225
+ const void *key; /**< **Input** Key */
226
+ lcb_SIZE nkey; /**< **Input** Length of key */
227
+ int vbucket; /**< **Output** Mapped vBucket */
228
+ int server_index; /**< **Output** Server index for vBucket */
229
+ } v0;
230
+ } v;
231
+ } lcb_cntl_vbinfo_t;
232
+
233
+ /**
234
+ * @brief Get the vBucket ID for a given key, based on the current configuration
235
+ *
236
+ * @cntl_arg_getonly{lcb_cntl_vbinfo_t*}
237
+ * @committed
238
+ */
239
+ #define LCB_CNTL_VBMAP 0x07
240
+
241
+
242
+ /**
243
+ * Modes for handling IPv6 in the IO layer.
244
+ */
245
+ typedef enum {
246
+ LCB_IPV6_DISABLED = 0x00, /**< disable IPv6 */
247
+ LCB_IPV6_ONLY = 0x1, /**< enforce only IPv6 */
248
+ LCB_IPV6_ALLOW = 0x02 /**< use both IPv6 and IPv4 */
249
+ } lcb_ipv6_t;
250
+
251
+ /**
252
+ * @brief IPv4/IPv6 selection policy
253
+ *
254
+ * Setting which controls whether hostname lookups should prefer IPv4 or IPv6
255
+ *
256
+ * Use `ipv6` in the connection string (e.g. "ipv6=allow" or "ipv6=only")
257
+ *
258
+ * @cntl_arg_both{lcb_ipv6_t*}
259
+ * @committed
260
+ */
261
+ #define LCB_CNTL_IP6POLICY 0x0b
262
+
263
+ /**
264
+ * @brief Configuration error threshold.
265
+ *
266
+ * This number indicates how many
267
+ * network/mapping/not-my-vbucket errors are received before a configuration
268
+ * update is requested again.
269
+ *
270
+ * @cntl_arg_both{lcb_SIZE*}
271
+ */
272
+ #define LCB_CNTL_CONFERRTHRESH 0x0c
273
+
274
+ /**
275
+ * @brief Default timeout for lcb_durability_poll()
276
+ * @ingroup lcb-time-info
277
+ *
278
+ * This is the time the client will
279
+ * spend sending repeated probes to a given key's vBucket masters and replicas
280
+ * before they are deemed not to have satisfied the durability requirements
281
+ *
282
+ * @cntl_arg_both{lcb_U32*}
283
+ * @committed
284
+ */
285
+ #define LCB_CNTL_DURABILITY_TIMEOUT 0x0d
286
+
287
+ /**
288
+ * @brief Polling grace interval for lcb_durability_poll()
289
+ *
290
+ * This is the time the client will wait between repeated probes to
291
+ * a given server.
292
+ *
293
+ * @cntl_arg_both{lcb_U32*}
294
+ * @committed
295
+ */
296
+ #define LCB_CNTL_DURABILITY_INTERVAL 0x0e
297
+
298
+ /**
299
+ * @brief Timeout for otherwise unspecified HTTP requests
300
+ *
301
+ * Examples of these kinds of HTTP requests might be cluster management,
302
+ * user management, etc.
303
+ *
304
+ * @cntl_arg_both{lcb_U32*}
305
+ * @committed
306
+ */
307
+ #define LCB_CNTL_HTTP_TIMEOUT 0x0f
308
+
309
+ /**
310
+ * @brief Print verbose plugin load information to console
311
+ *
312
+ * This modifies a static, global setting regarding whether to
313
+ * print verbose information when trying to dynamically load an IO plugin.
314
+ * The information printed can be useful in determining why a plugin failed
315
+ * to load. This setting can also be controlled via the
316
+ * "LIBCOUCHBASE_DLOPEN_DEBUG" environment variable (and if enabled from the
317
+ * environment, will override the setting mentioned here).
318
+ *
319
+ * @cntl_arg_both{int*}
320
+ *
321
+ * @note Pass NULL to lcb_cntl for the 'instance' parameter.
322
+ * @volatile
323
+ */
324
+ #define LCB_CNTL_IOPS_DLOPEN_DEBUG 0x11
325
+
326
+ /**@brief Initial bootstrap timeout.
327
+ * This is how long the client will wait to obtain the initial configuration.
328
+ *
329
+ * @cntl_arg_both{lcb_U32*}
330
+ * @committed*/
331
+ #define LCB_CNTL_CONFIGURATION_TIMEOUT 0x12
332
+
333
+ /**
334
+ * @brief Randomize order of bootstrap nodes.
335
+ *
336
+ * This controls whether the connection attempts for configuration retrievals
337
+ * should be done in the supplied order or whether they should be randomized.
338
+ *
339
+ * For the initial connection the supplied order is the list of hosts provided
340
+ * in the lcb_create_st structure. For subsequent connections this is the
341
+ * order of nodes as received by the server.
342
+ *
343
+ * @cntl_arg_both{int*}
344
+ * @committed
345
+ */
346
+ #define LCB_CNTL_RANDOMIZE_BOOTSTRAP_HOSTS 0x14
347
+
348
+ /**
349
+ * @brief Determine if file-based configuration has been loaded
350
+ *
351
+ * If the configuration cache is in use, the argument pointer
352
+ * will be set to a true value. If the configuration cache was not used,
353
+ * the argument pointer will be set to false.
354
+ *
355
+ * A false value may indicates that the client will need to load the
356
+ * configuration from the network. This may be caused by the following:
357
+ * - The configuration cache did not exist or was empty
358
+ * - The configuration cache contained stale information
359
+ *
360
+ * @cntl_arg_getonly{int*}
361
+ * @uncommitted
362
+ */
363
+ #define LCB_CNTL_CONFIG_CACHE_LOADED 0x15
364
+
365
+ /**
366
+ * @brief Force a specific SASL mechanism
367
+ *
368
+ * Force a specific SASL mechanism to use for authentication. This
369
+ * can allow a user to ensure a certain level of security and have the
370
+ * connection fail if the desired mechanism is not available.
371
+ *
372
+ * When setting this value, the arg parameter shall be a
373
+ * `NUL`-terminated string or a `NULL` pointer (to unset). When retrieving
374
+ * this value, the parameter shall be set to a `char **`. Note that this
375
+ * value (in LCB_CNTL_GET) is valid only until the next call to a
376
+ * libcouchbase API, after which it may have been freed.
377
+ *
378
+ * @cntl_arg_get_and_set{char**, char*}
379
+ */
380
+ #define LCB_CNTL_FORCE_SASL_MECH 0x16
381
+
382
+ /**
383
+ * @brief Maximum number of HTTP redirects to follow
384
+ * Set how many redirects the library should follow for the single request.
385
+ * Set to -1 to remove limit at all.
386
+ *
387
+ * @cntl_arg_both{int*}
388
+ * @uncommitted
389
+ */
390
+ #define LCB_CNTL_MAX_REDIRECTS 0x17
391
+
392
+ /**
393
+ * @name Logging
394
+ *
395
+ * Verbose logging may be enabled by default using the environment variable
396
+ * `LCB_LOGLEVEL` and setting it to a number > 1; higher values produce more
397
+ * verbose output. The maximum level is `5`.
398
+ *
399
+ * You may also install your own logger using lcb_cntl() and the
400
+ * @ref LCB_CNTL_LOGGER constant. Note that
401
+ * the logger functions will not be called rapidly from within hot paths.
402
+ * @{
403
+ */
404
+
405
+ /**
406
+ * @brief Logging Levels
407
+ * @committed
408
+ */
409
+ typedef enum {
410
+ LCB_LOG_TRACE = 0, /**< the most verbose level */
411
+ LCB_LOG_DEBUG, /**< diagnostic information, required to investigate problems */
412
+ LCB_LOG_INFO, /**< useful notices, not often */
413
+ LCB_LOG_WARN, /**< error notifications */
414
+ LCB_LOG_ERROR, /**< error messages, usually the library have to re-initialize connection instance */
415
+ LCB_LOG_FATAL, /**< fatal errors, the library cannot proceed */
416
+ LCB_LOG_MAX /**< internal value for total number of levels */
417
+ } lcb_log_severity_t;
418
+
419
+ struct lcb_logprocs_st;
420
+
421
+ /**
422
+ * @brief Logger callback
423
+ *
424
+ *
425
+ * This callback is invoked for each logging message emitted
426
+ * @param procs the logging structure provided
427
+ * @param iid instance id
428
+ * @param subsys a string describing the module which emitted the message
429
+ * @param severity one of the LCB_LOG_* severity constants.
430
+ * @param srcfile the source file which emitted this message
431
+ * @param srcline the line of the file for the message
432
+ * @param fmt a printf format string
433
+ * @param ap a va_list for vprintf
434
+ */
435
+ typedef void (*lcb_logging_callback)(struct lcb_logprocs_st *procs,
436
+ unsigned int iid, const char *subsys, int severity, const char *srcfile,
437
+ int srcline, const char *fmt, va_list ap);
438
+
439
+ /**
440
+ * @brief Logging context
441
+ * @volatile
442
+ *
443
+ * This structure defines the logging handlers. Currently there is only
444
+ * a single field defined which is the default callback for the loggers.
445
+ * This API may change.
446
+ */
447
+ typedef struct lcb_logprocs_st {
448
+ int version;
449
+ union { struct { lcb_logging_callback callback; } v0; } v;
450
+ } lcb_logprocs;
451
+
452
+ /**
453
+ * @brief Access the lcb_logprocs structure
454
+ * @uncommitted
455
+ *
456
+ * The lcb_logoprocs structure passed must not be freed until the instance
457
+ * is completely destroyed. This will only happen once the destruction
458
+ * callback is called (see lcb_set_destroy_callback()).
459
+ *
460
+ * @cntl_arg_get_and_set{lcb_logprocs**,lcb_logprocs*}*/
461
+ #define LCB_CNTL_LOGGER 0x18
462
+
463
+ /**
464
+ * Helper to express printf spec for sensitive data. Usage:
465
+ *
466
+ * printf("Logged as " LCB_LOG_SPEC("%s") " user", LCB_LOG_UD(instance, doc->username));
467
+ */
468
+ #define LCB_LOG_SPEC(fmt) "%s" fmt "%s"
469
+
470
+ #define LCB_LOG_UD_OTAG "<ud>"
471
+ #define LCB_LOG_UD_CTAG "</ud>"
472
+ /**
473
+ * User data is data that is stored into Couchbase by the application user account.
474
+ *
475
+ * - Key and value pairs in JSON documents, or the key exclusively
476
+ * - Application/Admin usernames that identify the human person
477
+ * - Names and email addresses asked during product registration and alerting
478
+ * - Usernames
479
+ * - Document xattrs
480
+ * - Query statements included in the log file collected by support that leak
481
+ * the document fields (Select floor_price from stock).
482
+ */
483
+ #define LCB_LOG_UD(instance, val) \
484
+ lcb_is_redacting_logs(instance) ? LCB_LOG_UD_OTAG : "", val, lcb_is_redacting_logs(instance) ? LCB_LOG_UD_CTAG : ""
485
+
486
+ #define LCB_LOG_MD_OTAG "<md>"
487
+ #define LCB_LOG_MD_CTAG "</md>"
488
+ /**
489
+ * Metadata is logical data needed by Couchbase to store and process user data.
490
+ *
491
+ * - Cluster name
492
+ * - Bucket names
493
+ * - DDoc/view names
494
+ * - View code
495
+ * - Index names
496
+ * - Mapreduce Design Doc Name and Definition (IP)
497
+ * - XDCR Replication Stream Names
498
+ * - And other couchbase resource specific meta data
499
+ */
500
+ #define LCB_LOG_MD(instance, val) \
501
+ lcb_is_redacting_logs(instance) ? LCB_LOG_MD_OTAG : "", val, lcb_is_redacting_logs(instance) ? LCB_LOG_MD_CTAG : ""
502
+
503
+ #define LCB_LOG_SD_OTAG "<sd>"
504
+ #define LCB_LOG_SD_CTAG "</sd>"
505
+ /**
506
+ * System data is data from other parts of the system Couchbase interacts with over the network.
507
+ *
508
+ * - IP addresses
509
+ * - IP tables
510
+ * - Hosts names
511
+ * - Ports
512
+ * - DNS topology
513
+ */
514
+ #define LCB_LOG_SD(instance, val) \
515
+ lcb_is_redacting_logs(instance) ? LCB_LOG_SD_OTAG : "", val, lcb_is_redacting_logs(instance) ? LCB_LOG_SD_CTAG : ""
516
+ /**@}*/
517
+
518
+
519
+ /**
520
+ * @brief Refresh Throttling
521
+ *
522
+ * Modify the amount of time (in microseconds) before the
523
+ * @ref LCB_CNTL_CONFERRTHRESH will forcefully be set to its maximum
524
+ * number forcing a configuration refresh.
525
+ *
526
+ * Note that if you expect a high number of timeouts in your operations, you
527
+ * should set this to a high number (along with `CONFERRTHRESH`). If you
528
+ * are using the default timeout setting, then this value is likely optimal.
529
+ *
530
+ * @cntl_arg_both{lcb_U32*}
531
+ * @see LCB_CNTL_CONFERRTHRESH
532
+ */
533
+ #define LCB_CNTL_CONFDELAY_THRESH 0x19
534
+
535
+ /**
536
+ * @brief Get the transport used to fetch cluster configuration.
537
+ * @cntl_arg_getonly{lcb_config_transport_t*}
538
+ * @uncommitted
539
+ */
540
+ #define LCB_CNTL_CONFIG_TRANSPORT 0x1A
541
+
542
+ /**
543
+ * @brief Per-node configuration timeout.
544
+ *
545
+ * The per-node configuration timeout sets the amount of time to wait
546
+ * for each node within the bootstrap/configuration process. This interval
547
+ * is a subset of the @ref LCB_CNTL_CONFIGURATION_TIMEOUT
548
+ * option mentioned above and is intended
549
+ * to ensure that the bootstrap process does not wait too long for a given
550
+ * node. Nodes that are physically offline may never respond and it may take
551
+ * a long time until they are detected as being offline.
552
+ * See CCBC-261 and CCBC-313 for more reasons.
553
+ *
554
+ * @note the `CONFIGURATION_TIMEOUT` should be higher than this number.
555
+ * No check is made to ensure that this is the case, however.
556
+ *
557
+ * @cntl_arg_both{lcb_U32*}
558
+ * @see LCB_CNTL_CONFIGURATION_TIMEOUT
559
+ * @committed
560
+ */
561
+ #define LCB_CNTL_CONFIG_NODE_TIMEOUT 0x1B
562
+
563
+ /**
564
+ * @brief Idling/Persistence for HTTP bootstrap
565
+ *
566
+ * By default the behavior of the library for HTTP bootstrap is to keep the
567
+ * stream open at all times (opening a new stream on a different host if the
568
+ * existing one is broken) in order to proactively receive configuration
569
+ * updates.
570
+ *
571
+ * The default value for this setting is -1. Changing this to another number
572
+ * invokes the following semantics:
573
+ *
574
+ * - The configuration stream is not kept alive indefinitely. It is kept open
575
+ * for the number of seconds specified in this setting. The socket is closed
576
+ * after a period of inactivity (indicated by this setting).
577
+ *
578
+ * - If the stream is broken (and no current refresh was requested by the
579
+ * client) then a new stream is not opened.
580
+ *
581
+ * @cntl_arg_both{lcb_U32*}
582
+ * @volatile
583
+ */
584
+ #define LCB_CNTL_HTCONFIG_IDLE_TIMEOUT 0x1C
585
+
586
+ /**
587
+ * @brief Get the current SCM changeset for the library binary
588
+ * @cntl_arg_getonly{char**}
589
+ */
590
+ #define LCB_CNTL_CHANGESET 0x1F
591
+
592
+ /**
593
+ * @brief File used for the configuration cache.
594
+ *
595
+ * The configuration
596
+ * cache allows to bootstrap from a cluster without using the initial
597
+ * bootstrap connection, considerably reducing latency. If the file passed
598
+ * does not exist, the normal bootstrap process is performed and the file
599
+ * is written to with the current information. File will be updated as
600
+ * the configuration in the cluster changes. Multiple instances may race
601
+ * to update the file, and that is the intended behavior.
602
+ *
603
+ * @note The leading directories for the file must exist, otherwise the file
604
+ * will never be created.
605
+ *
606
+ * @note Configuration cache is not supported for memcached buckets
607
+ * @cntl_arg_get_and_set{char**, char*}
608
+ * @uncommitted
609
+ * @see LCB_CNTL_CONFIG_CACHE_LOADED
610
+ */
611
+ #define LCB_CNTL_CONFIGCACHE 0x21
612
+
613
+ /**
614
+ * @brief File used for read-only configuration cache
615
+ *
616
+ * This is identical to the @ref LCB_CNTL_CONFIGCACHE directive, except that
617
+ * it guarantees that the library will never overwrite or otherwise modify
618
+ * the path specified.
619
+ *
620
+ * @see LCB_CNTL_CONFIGCACHE
621
+ */
622
+ #define LCB_CNTL_CONFIGCACHE_RO 0x36
623
+
624
+ /**
625
+ * SSL options
626
+ *
627
+ * @committed
628
+ */
629
+ typedef enum {
630
+ LCB_SSL_ENABLED = 1 << 0, /**< Use SSL */
631
+ LCB_SSL_NOVERIFY = 1 << 1, /**< Don't verify certificates */
632
+ LCB_SSL_NOGLOBALINIT = 1 << 2 /**< Do not call SSL's global init functions */
633
+ } lcb_SSLOPTS;
634
+
635
+ /**
636
+ * @brief Get SSL Mode
637
+ *
638
+ * Retrieve the SSL mode currently in use by the library. This is a read-only
639
+ * setting. To set the SSL mode at the library, specify the appropriate values
640
+ * within the connection string. See @ref lcb_create_st3 for details.
641
+ *
642
+ * @cntl_arg_getonly{`int*` (value is one of @ref lcb_SSLOPTS)}
643
+ * @committed
644
+ */
645
+ #define LCB_CNTL_SSL_MODE 0x22
646
+
647
+ /**
648
+ * @brief Get SSL Certificate path
649
+ *
650
+ * Retrieve the path to the CA certificate (if any) being used.
651
+ *
652
+ * @cntl_arg_getonly{`char**`}
653
+ * @see LCB_CNTL_SSL_MODE
654
+ * @committed
655
+ */
656
+ #define LCB_CNTL_SSL_CERT 0x23
657
+
658
+ /**
659
+ * @brief Get SSL private key path
660
+ *
661
+ * Retrieve the path to the private key (if any) being used.
662
+ * When key specified, the library will use it to authenticate on the services,
663
+ * skipping all other authentication mechanisms (SASL, HTTP Basic auth, etc)
664
+ *
665
+ * @cntl_arg_getonly{`char**`}
666
+ * @see LCB_CNTL_SSL_MODE
667
+ * @see https://developer.couchbase.com/documentation/server/5.0/security/security-certs-auth.html
668
+ * @committed
669
+ */
670
+ #define LCB_CNTL_SSL_KEY 0x4b
671
+
672
+ /**
673
+ * @brief Get SSL trust store path
674
+ *
675
+ * Trust store might be NULL, in this case the library expects it to be concatenated with certificate.
676
+ *
677
+ * @cntl_arg_getonly{`char**`}
678
+ * @see LCB_CNTL_SSL_MODE
679
+ * @see https://developer.couchbase.com/documentation/server/5.0/security/security-certs-auth.html
680
+ * @committed
681
+ */
682
+ #define LCB_CNTL_SSL_TRUSTSTORE 0x4d
683
+
684
+ /**
685
+ * Alias for @ref LCB_CNTL_SSL_CERT for backward compatibility.
686
+ * @deprecated
687
+ */
688
+ #define LCB_CNTL_SSL_CACERT LCB_CNTL_SSL_CERT
689
+
690
+ /**
691
+ * @brief Select retry mode to manipulate
692
+ */
693
+ typedef enum {
694
+ LCB_RETRY_ON_TOPOCHANGE = 0, /**< Select retry for topology */
695
+ LCB_RETRY_ON_SOCKERR, /**< Select retry for network errors */
696
+ LCB_RETRY_ON_VBMAPERR, /**< Select retry for NOT_MY_VBUCKET responses */
697
+
698
+ /** Retry when there is no node for the item. This case is special as the
699
+ * `cmd` setting is treated as a boolean rather than a bitmask*/
700
+ LCB_RETRY_ON_MISSINGNODE,
701
+ LCB_RETRY_ON_MAX /**<< maximum index */
702
+ } lcb_RETRYMODEOPTS;
703
+
704
+ typedef enum {
705
+ /**Don't retry any commands. A command which has been forwarded to
706
+ * a server and a not-my-vbucket has been received in response for it
707
+ * will result in a failure.*/
708
+ LCB_RETRY_CMDS_NONE = 0,
709
+
710
+ /**Only retry simple retrieval operations (excludes touch,
711
+ * get-and-touch, and get-locked) which may be retried many numbers of times
712
+ * without risking unintended data manipulation. */
713
+ LCB_RETRY_CMDS_GET = 0x01,
714
+
715
+ /**Retry operations which may potentially fail because they have been
716
+ * accepted by a previous server, but will not silently corrupt data.
717
+ * Such commands include mutation operations containing a CAS.*/
718
+ LCB_RETRY_CMDS_SAFE = 0x03, /* Includes 'GET', plus a new flag (e.g. 0x02|0x01) */
719
+
720
+ /**Retry all commands, disregarding any potential unintended receipt of
721
+ * errors or data mutation.*/
722
+ LCB_RETRY_CMDS_ALL = 0x07 /* e.g. 0x01|0x03| NEW FLAG: 0x04 */
723
+ } lcb_RETRYCMDOPTS;
724
+
725
+ /**@brief Create a retry setting value
726
+ * @param mode the mode to set (@see lcb_RETRYMODEOPTS)
727
+ * @param policy the policy determining which commands should be retried
728
+ * (@see lcb_RETRYCMDOPTS)
729
+ * @return a value which can be assigned to an `lcb_U32` and passed to
730
+ * the @ref LCB_CNTL_RETRYMODE setting
731
+ */
732
+ #define LCB_RETRYOPT_CREATE(mode, policy) (((mode) << 16) | policy)
733
+
734
+ /** Get mode from retry setting value */
735
+ #define LCB_RETRYOPT_GETMODE(u) ((u) >> 16)
736
+ /** Get policy from retry setting value */
737
+ #define LCB_RETRYOPT_GETPOLICY(u) ((u)&0xffff)
738
+
739
+ /**
740
+ * @volatile
741
+ *
742
+ * @brief Set retry policies
743
+ *
744
+ * This function sets the retry behavior. The retry behavior is the action the
745
+ * library should take when a command has failed because of a failure which
746
+ * may be a result of environmental and/or topology issues. In such cases it
747
+ * may be possible to retry the command internally and have it succeed a second
748
+ * time without propagating an error back to the application.
749
+ *
750
+ * The behavior consists of a _mode_ and _command_ selectors. The _command_
751
+ * selector indicates which commands should be retried (and which should be
752
+ * propagated up to the user) whereas the _mode_ indicates under which
753
+ * circumstances should the _command_ policy be used.
754
+ *
755
+ * Disable retries anywhere:
756
+ * @code{.c}
757
+ * for (int ii = 0; ii < LCB_RETRY_ON_MAX; ++ii) {
758
+ * lcb_U32 val = LCB_RETRYOPT_CREATE(ii, LCB_RETRY_CMDS_NONE);
759
+ * lcb_error_t err = lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_RETRYMODE, &val);
760
+ * }
761
+ * @endcode
762
+ *
763
+ * Only retry simple GET operations when retry is needed because of topology
764
+ * changes:
765
+ * @code{.c}
766
+ * lcb_U32 val = LCB_RETRYOPT_CREATE(LCB_RETRY_ON_TOPOCHANGE, LCB_RETRY_CMDS_GET);
767
+ * lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_RETRYMODE, &val);
768
+ * @endcode
769
+ *
770
+ * Determine the behavior of the library when a `NOT_MY_VBUCKET` is received:
771
+ * @code{.c}
772
+ * lcb_U32 val = LCB_RETRYOPT_CREATE(LCB_RETRY_ON_VBMAPERR, 0);
773
+ * lcb_cntl(instance, LCB_CNTL_GET, LCB_CNTL_RETRYMODE, &val);
774
+ * lcb_U32 policy = LCB_RETRYOPT_GETPOLICY(val);
775
+ * @endcode
776
+ *
777
+ * @cntl_arg_both{`lcb_U32 *`}
778
+ */
779
+ #define LCB_CNTL_RETRYMODE 0x24
780
+
781
+ /**
782
+ * @brief Enumeration representing various URL forms to use for the configuration
783
+ * stream */
784
+ typedef enum {
785
+ /** `/pools/default/b[s]/$bucket`: Introduced in Couchbase Server 2.5 */
786
+ LCB_HTCONFIG_URLTYPE_25PLUS = 0x01,
787
+
788
+ /** `/pools/default/buckets[Streaming]/$bucket`. */
789
+ LCB_HTCONFIG_URLTYPE_COMPAT = 0x02,
790
+
791
+ /** Try `25PLUS` first and fallback to `COMPAT` */
792
+ LCB_HTCONFIG_URLTYPE_TRYALL = 0x03
793
+ } lcb_HTCONFIG_URLTYPE;
794
+
795
+ /**
796
+ * @brief Set the URL selection mode.
797
+ *
798
+ * The URL type can be a mask of the #lcb_HTCONFIG_URLTYPE constants which
799
+ * indicate which URLs the HTTP provider should use.
800
+ *
801
+ * The default is to use the `25PLUS` URI first, and fallback on the compat uri
802
+ * if the terse one fails with an HTTP 404 (Not Found). The new-style URI is
803
+ * considered more efficient on cluster resources and can help the cluster
804
+ * maintain many more streaming connections than the compat version, however
805
+ * it is only available in Couchbase Server 2.5 and greater.
806
+ *
807
+ * This setting is only used when CCCP is disabled. This will typically be for
808
+ * older clusters or for memcached buckets.
809
+ * @cntl_arg_both{`int*` (value is one of @ref lcb_HTCONFIG_URLTYPE)}
810
+
811
+ * @volatile Primarily here to support tests and buggy HTTP servers/proxies
812
+ * which do not like to maintain a connection upon receipt of a 404.
813
+ */
814
+ #define LCB_CNTL_HTCONFIG_URLTYPE 0x25
815
+
816
+ /**
817
+ * Determines whether to run the event loop internally within lcb_destroy()
818
+ * until no more I/O resources remain for the library. This is usually only
819
+ * necessary if you are creating a lot of instances and/or are using memory
820
+ * leak analysis tools.
821
+ *
822
+ * @cntl_arg_both{`int*` (as a boolean)}
823
+ * @see lcb_destroy_async() and lcb_set_destroy_callback()
824
+ * @volatile
825
+ */
826
+ #define LCB_CNTL_SYNCDESTROY 0x28
827
+
828
+ /**
829
+ * Sets the logging level for the console logger. If a logger is already
830
+ * initialized (either from the environment, or via lcb_cntl_logger() then
831
+ * this operation does nothing.
832
+ *
833
+ * This is mainly useful for applications which want to proxy the built in
834
+ * logging options via command line options and the like, rather than setting
835
+ * it from the environment.
836
+ *
837
+ * The argument passed to lcb_cntl() is an integer of 0 until
838
+ * `LCB_LOG_MAX`, though the actual type is of `lcb_U32` rather than
839
+ * an enum type #lcb_log_severity_t.
840
+ *
841
+ * @cntl_arg_setonly{const lcb_U32 *}
842
+ * @see LCB_CNTL_LOGGER
843
+ */
844
+ #define LCB_CNTL_CONLOGGER_LEVEL 0x29
845
+
846
+ /**
847
+ *
848
+ * Sets the output file (as a `FILE*`) for the console logger. Note that
849
+ * any existing file pointer will be cleared (but not `fclose()`d.
850
+ *
851
+ * If used with lcb_cntl_string(), (using the `console_log_file` parameter),
852
+ * the third argument is taken as the _name_ of a file. Note that the user
853
+ * is responsible for closing the file.
854
+ *
855
+ * This setting does not require a library handle and therefore the first
856
+ * argument to lcb_cntl() should be `NULL`.
857
+ *
858
+ *
859
+ * @cntl_arg_get_and_set{`FILE**`, `FILE*`}
860
+ * @see LCB_CNTL_LOGGER
861
+ * @see LCB_CNTL_CONLOGGER_LEVEL
862
+ */
863
+ #define LCB_CNTL_CONLOGGER_FP 0x3B
864
+
865
+ /**
866
+ * Sets the behavior for reporting network errors. By default network errors
867
+ * are returned as `LCB_NETWORK_ERROR` return codes for compatibility reasons.
868
+ * More detailed error codes may be available by enabling this option which will
869
+ * return appropriate error codes which have a category of
870
+ * @ref LCB_ERRTYPE_NETWORK
871
+ *
872
+ * Using this option means your programming model is centered around the various
873
+ * LCB_EIF* macros (see <libcouchbase/error.h>) rather than individual codes.
874
+ *
875
+ * @cntl_arg_both{int * (As a boolean)}
876
+ */
877
+ #define LCB_CNTL_DETAILED_ERRCODES 0x2A
878
+
879
+ /**
880
+ *
881
+ * Sets the interval at which the retry queue will attempt to resend a failed
882
+ * operation. When an operation fails and the retry policy (see
883
+ * @ref LCB_CNTL_RETRYMODE) allows the operation to be retried, it shall be
884
+ * placed into a queue, and then be retried within a given interval.
885
+ *
886
+ * Setting a high value will be friendlier on the network but also potentially
887
+ * increase latency, while setting this to a low value may cause unnecessary
888
+ * network traffic for operations which are not yet ready to be retried.
889
+ *
890
+ * @cntl_arg_both{lcb_U32* (microseconds)}
891
+ *
892
+ * @see LCB_CNTL_RETRY_BACKOFF
893
+ */
894
+ #define LCB_CNTL_RETRY_INTERVAL 0x2C
895
+
896
+ /**
897
+ *
898
+ * When an operation has been retried more than once and it has still not
899
+ * succeeded, the library will attempt to back off for the operation by
900
+ * scheduling it to be retried in `LCB_CNTL_RETRY_INTEVAL * ${n}` microseconds,
901
+ * where `${n}` is the factor controlled by this setting.
902
+ *
903
+ * @cntl_arg_both{float*}
904
+ */
905
+ #define LCB_CNTL_RETRY_BACKOFF 0x2D
906
+
907
+ /**
908
+ * Whether commands are retried immediately upon receipt of not-my-vbucket
909
+ * replies.
910
+ *
911
+ * Since version 2.4.8, packets by default are retried immediately on a
912
+ * different node if it had previously failed with a not-my-vbucket
913
+ * response, and is thus not subject to the @ref LCB_CNTL_RETRY_INTERVAL
914
+ * and @ref LCB_CNTL_RETRY_BACKOFF settings. Disabling this setting will
915
+ * restore the older behavior. This may be used in case there are problems
916
+ * with the default heuristic/retry algorithm.
917
+ *
918
+ * @volatile
919
+ */
920
+ #define LCB_CNTL_RETRY_NMV_IMM 0x37
921
+
922
+ /**
923
+ * Set the maximum pool size for pooled http (view request) sockets. This should
924
+ * be set to 1 (the default) unless you plan to execute concurrent view requests.
925
+ * You may set this to 0 to disable pooling
926
+ *
927
+ * @cntl_arg_both{lcb_SIZE}
928
+ * @volatile
929
+ */
930
+ #define LCB_CNTL_HTTP_POOLSIZE 0x2E
931
+
932
+ /**
933
+ * Determine whether or not a new configuration should be received when an error
934
+ * is received over the HTTP API (i.e. via lcb_make_http_request().
935
+ *
936
+ * The default value is true, however you may wish to disable this if you are
937
+ * expectedly issuing a lot of requests which may result in an error.
938
+ *
939
+ * @cntl_arg_both{int (as boolean)}
940
+ * @uncommitted
941
+ */
942
+ #define LCB_CNTL_HTTP_REFRESH_CONFIG_ON_ERROR 0x2F
943
+
944
+ /**
945
+ * Set the behavior of the lcb_sched_leave() API call. By default the
946
+ * lcb_sched_leave() will also set up the necessary requirements for flushing
947
+ * to the network. If this option is off then an explicit call to
948
+ * lcb_sched_flush() must be performed instead.
949
+ *
950
+ * @cntl_arg_both{int (as boolean)}
951
+ * @volatile
952
+ */
953
+ #define LCB_CNTL_SCHED_IMPLICIT_FLUSH 0x31
954
+
955
+ /**
956
+ *
957
+ * Request the server to return an additional 16 bytes of data for each
958
+ * mutation operation. This extra information may help with more reliable
959
+ * durability polling, but will also increase the size of the response packet.
960
+ *
961
+ * This should be set on the instance before issuing lcb_connect(). While this
962
+ * may also be set after lcb_connect() is called, it will currently only take
963
+ * effect when a server reconnects (which itself may be undefined).
964
+ *
965
+ * @cntl_arg_both{int (as boolean)}
966
+ */
967
+ #define LCB_CNTL_FETCH_MUTATION_TOKENS 0x34
968
+
969
+ /**
970
+ * This setting determines whether the lcb_durability_poll() function will
971
+ * transparently attempt to use mutation token functionality (rather than checking
972
+ * the CAS). This option is most useful for older code which does
973
+ * explicitly use mutation tokens but would like to use its benefits when
974
+ * ensuring durability constraints are satisfied.
975
+ *
976
+ * This option is enabled by default. Users may wish to disable this if they
977
+ * are performing durability operations against items stored from different
978
+ * client instances, as this will make use of a client-global state which is
979
+ * derived on a per-vBucket basis. This means that the last mutation performed
980
+ * on a given vBucket for the client will be used, which in some cases may be
981
+ * older or newer than the mutations passed to the lcb_durability_poll()
982
+ * function.
983
+ *
984
+ * @cntl_arg_both{int (as boolean)}
985
+ * @volatile
986
+ */
987
+ #define LCB_CNTL_DURABILITY_MUTATION_TOKENS 0x35
988
+
989
+ /**
990
+ * This read-only property determines if the mutation token mechanism is supported
991
+ * on the cluster itself. This will only be accurate once a single operation
992
+ * has been performed on the cluster - or in other words, once a connection
993
+ * to a data node has been established for the purposes of normal operations.
994
+ *
995
+ * @cntl_arg_getonly{int (as boolean)}
996
+ * @uncommitted
997
+ */
998
+ #define LCB_CNTL_MUTATION_TOKENS_SUPPORTED 0x38
999
+
1000
+
1001
+ /**
1002
+ * This setting determines if calls to lcb_wait() and lcb_wait3() will reset
1003
+ * the timeout of pending operations to the time that lcb_wait() was called,
1004
+ * rather than having the operation maintain the time of the call which
1005
+ * scheduled it. If the time between lcb_store3() and family and the lcb_wait()
1006
+ * functions is long, it is recommended to disable this setting in order to
1007
+ * avoid prematurely having operations time out.
1008
+ *
1009
+ * @cntl_arg_both{int (as boolean)}
1010
+ * @uncommitted
1011
+ *
1012
+ * Use `"readj_wait_tmo"` for the string version
1013
+ */
1014
+ #define LCB_CNTL_RESET_TIMEOUT_ON_WAIT 0x3A
1015
+
1016
+ /**
1017
+ * Clears the internal prepared statement cache for N1QL
1018
+ *
1019
+ * This does not take any arguments, and is valid only on @ref LCB_CNTL_SET
1020
+ * @uncommitted
1021
+ */
1022
+ #define LCB_CNTL_N1QL_CLEARACHE 0x3E
1023
+
1024
+ /**
1025
+ * Sets additional text for negotiation. This allows wrappers or applications
1026
+ * to add additional identifying information which can then be seen in the
1027
+ * server logs.
1028
+ *
1029
+ * @cntl_arg_get_and_set{`const char**`, `const char*`}
1030
+ *
1031
+ * Use `"client_string"` for the string version
1032
+ */
1033
+ #define LCB_CNTL_CLIENT_STRING 0x3F
1034
+
1035
+ typedef const char *lcb_BUCKETCRED[2];
1036
+
1037
+ /**
1038
+ * Set credentials for a bucket. This is used for N1QL and CBFT APIs to allow
1039
+ * access to multiple buckets. It can also be used to set the password
1040
+ * of the current bucket when reconnecting (in case it changes).
1041
+ *
1042
+ * The format for the credentials is an array of two nul-terminated strings,
1043
+ * the first refers to the bucket and the second refers to the password.
1044
+ */
1045
+ #define LCB_CNTL_BUCKET_CRED 0x40
1046
+
1047
+ /**
1048
+ * Set the amount of time the client should wait before retrying a
1049
+ * not-my-vbucket response packet. The default is 100ms. The value should
1050
+ * be specified in microseconds.
1051
+ *
1052
+ * Use `"retry_nmv_interval"` with lcb_cntl_string()
1053
+ *
1054
+ * @cntl_arg_both{lcb_U32*}
1055
+ */
1056
+ #define LCB_CNTL_RETRY_NMV_INTERVAL 0x41
1057
+
1058
+ /**
1059
+ * Limit the number of bytes to be read (and thereby processed) during I/O
1060
+ * read operations. This setting may be useful when the network is faster than
1061
+ * processing resources.
1062
+ *
1063
+ * @note This setting only works for event-style I/O plugins. This means it
1064
+ * has no effect on completion style plugins such as libuv or Windows IOCP
1065
+ *
1066
+ * @cntl_arg_both{lcb_U32*}
1067
+ */
1068
+ #define LCB_CNTL_READ_CHUNKSIZE 0x42
1069
+
1070
+ /**
1071
+ * Enable/Disable the Error Map feature. This is disabled by default.
1072
+ * Works only on servers which support error map
1073
+ *
1074
+ * Use `enable_errmap` in the connection string
1075
+ *
1076
+ * @cntl_arg_both{int* (as boolean)}
1077
+ */
1078
+ #define LCB_CNTL_ENABLE_ERRMAP 0x43
1079
+
1080
+ /**
1081
+ * Enable/Disable sending the SELECT_BUCKET command after authentication.
1082
+ * This is useful to test auth, and should not be set by end-users.
1083
+ *
1084
+ * Note that even if this feature is enabled (the default), the client will
1085
+ * only send `SELECT_BUCKET` if the server indicates that it is supported
1086
+ * during negotiation.
1087
+ *
1088
+ * Use `select_bucket` in the connection string
1089
+ *
1090
+ * @cntl_arg_both{int* (as boolean)}
1091
+ */
1092
+ #define LCB_CNTL_SELECT_BUCKET 0x44
1093
+
1094
+ /**
1095
+ * Enable/Disable setting the `TCP_KEEPALIVE` option on created sockets.
1096
+ * This is enabled by default for I/O backends which support it.
1097
+ *
1098
+ * The keepalive interval will be set to the operating system default.
1099
+ *
1100
+ * @cntl_arg_both{int* (as boolean)}
1101
+ */
1102
+ #define LCB_CNTL_TCP_KEEPALIVE 0x45
1103
+
1104
+ /**
1105
+ * Set the amount of time to wait in between polling for a new configuration.
1106
+ * This will have no effect if connected to a Memcached buckets, or using
1107
+ * HTTP or File-based configurations (see the `bootstrap_on` connection
1108
+ * string option).
1109
+ *
1110
+ * This option facilitates 'fast failover' - in that the client can preemptively
1111
+ * check for any cluster topology updates before encountering an error.
1112
+ *
1113
+ * @cntl_arg_both{lcb_U32*}
1114
+ *
1115
+ * The value for this option is a time value. See the top of this header
1116
+ * in respect to how to specify this.
1117
+ *
1118
+ * Using a value of `0` disables this feature.
1119
+ *
1120
+ * You can also use `config_poll_interval` in the connection string.
1121
+ *
1122
+ * @note
1123
+ * Background polling is implemented in the library's non-blocking event loop.
1124
+ * Synchronous clients (i.e. those using `lcb_wait()`) will only be able to
1125
+ * poll as often as the library's event loop is active. If the library is
1126
+ * suspended, that is, if not inside an `lcb_wait()` call, the library will
1127
+ * be unable to do any kind of background polling.
1128
+ */
1129
+ #define LCB_CNTL_CONFIG_POLL_INTERVAL 0x46
1130
+
1131
+ /**
1132
+ * From version 2.7.4, the C library sends a HELLO command before
1133
+ * authentication. This works on all modern server versions, but may cause
1134
+ * disconnects on more ancient variants (Couchbase 2.x for example).
1135
+ *
1136
+ * This setting will disable the sending of the HELLO command (which older
1137
+ * servers don't understand anyway). To disable the sending of hello, set this
1138
+ * value to false.
1139
+ *
1140
+ * @cntl_arg_both{int* (as boolean)}
1141
+ * @committed
1142
+ *
1143
+ * You can also use `send_hello=false` in the connection string.
1144
+ */
1145
+ #define LCB_CNTL_SEND_HELLO 0x47
1146
+
1147
+ /**
1148
+ * Once redaction is enabled, anything at ERROR, WARN and INFO will wrap
1149
+ * sensitive information with special tags, for further processing with the goal
1150
+ * to remove or encrypt that information. DEBUG or TRACE level logging are
1151
+ * expected to have specific info.
1152
+ *
1153
+ * Use `log_redaction` in the connection string
1154
+ *
1155
+ * @cntl_arg_both{int* (as boolean)}
1156
+ * @committed
1157
+ */
1158
+ #define LCB_CNTL_LOG_REDACTION 0x4c
1159
+
1160
+ /**
1161
+ * Activate/deactivate end-to-end tracing.
1162
+ *
1163
+ * Use `enable_tracing` in the connection string
1164
+ *
1165
+ * @cntl_arg_both{int* (as boolean)}
1166
+ * @see lcb-tracing-api
1167
+ * @committed
1168
+ */
1169
+ #define LCB_CNTL_ENABLE_TRACING 0x4e
1170
+
1171
+ typedef enum {
1172
+ LCBTRACE_THRESHOLD_KV = 0,
1173
+ LCBTRACE_THRESHOLD_N1QL,
1174
+ LCBTRACE_THRESHOLD_VIEW,
1175
+ LCBTRACE_THRESHOLD_FTS,
1176
+ LCBTRACE_THRESHOLD_ANALYTICS,
1177
+ LCBTRACE_THRESHOLD__MAX
1178
+ } lcbtrace_THRESHOLDOPTS;
1179
+
1180
+ /**
1181
+ * Flush interval for orphaned spans queue in default tracer.
1182
+ *
1183
+ * This is the time the tracer will wait between repeated attempts
1184
+ * to flush most recent orphaned spans.
1185
+ *
1186
+ * Use `tracing_orphaned_queue_flush_interval` in the connection string
1187
+ *
1188
+ * @code{.c}
1189
+ * lcb_U32 tmo = 10000000; // 10 seconds in microseconds
1190
+ * lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_TRACING_ORPHANED_QUEUE_FLUSH_INTERVAL, &tmo);
1191
+ * @endcode
1192
+ *
1193
+ * @code{.c}
1194
+ * rv = lcb_cntl_string("tracing_orphaned_queue_flush_interval", "10.0");
1195
+ * @endcode
1196
+ *
1197
+ * @cntl_arg_both{lcb_U32*}
1198
+ * @committed
1199
+ */
1200
+ #define LCB_CNTL_TRACING_ORPHANED_QUEUE_FLUSH_INTERVAL 0x4f
1201
+
1202
+ /**
1203
+ * Size of orphaned spans queue in default tracer.
1204
+ *
1205
+ * Queues in default tracer has fixed size, and it will remove information about older spans,
1206
+ * when the limit will be reached before flushing time.
1207
+ *
1208
+ * Use `tracing_orphaned_queue_size` in the connection string
1209
+ *
1210
+ * @cntl_arg_both{lcb_U32*}
1211
+ * @committed
1212
+ */
1213
+ #define LCB_CNTL_TRACING_ORPHANED_QUEUE_SIZE 0x50
1214
+
1215
+ /**
1216
+ * Flush interval for spans with total time over threshold in default tracer.
1217
+ *
1218
+ * This is the time the tracer will wait between repeated attempts
1219
+ * to flush threshold queue.
1220
+ *
1221
+ * Use `tracing_threshold_queue_flush_interval` in the connection string
1222
+ *
1223
+ * @code{.c}
1224
+ * lcb_U32 tmo = 10000000; // 10 seconds in microseconds
1225
+ * lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_TRACING_THRESHOLD_QUEUE_FLUSH_INTERVAL, &tmo);
1226
+ * @endcode
1227
+ *
1228
+ * @code{.c}
1229
+ * rv = lcb_cntl_string("tracing_threshold_queue_flush_interval", "10.0");
1230
+ * @endcode
1231
+ *
1232
+ * @cntl_arg_both{lcb_U32*}
1233
+ * @committed
1234
+ */
1235
+ #define LCB_CNTL_TRACING_THRESHOLD_QUEUE_FLUSH_INTERVAL 0x51
1236
+
1237
+ /**
1238
+ * Size of threshold queue in default tracer.
1239
+ *
1240
+ * Queues in default tracer has fixed size, and it will remove information about older spans,
1241
+ * when the limit will be reached before flushing time.
1242
+ *
1243
+ * Use `tracing_threshold_queue_size` in the connection string
1244
+ *
1245
+ * @cntl_arg_both{lcb_U32*}
1246
+ * @committed
1247
+ */
1248
+ #define LCB_CNTL_TRACING_THRESHOLD_QUEUE_SIZE 0x52
1249
+
1250
+ /**
1251
+ * Minimum time for the tracing span of KV service to be considered by threshold tracer.
1252
+ *
1253
+ * Use `tracing_threshold_kv` in the connection string
1254
+ *
1255
+ * @cntl_arg_both{lcb_U32*}
1256
+ * @committed
1257
+ */
1258
+ #define LCB_CNTL_TRACING_THRESHOLD_KV 0x53
1259
+
1260
+ /**
1261
+ * Minimum time for the tracing span of N1QL service to be considered by threshold tracer.
1262
+ *
1263
+ * Use `tracing_threshold_n1ql` in the connection string
1264
+ *
1265
+ * @cntl_arg_both{lcb_U32*}
1266
+ * @committed
1267
+ */
1268
+ #define LCB_CNTL_TRACING_THRESHOLD_N1QL 0x54
1269
+
1270
+ /**
1271
+ * Minimum time for the tracing span of VIEW service to be considered by threshold tracer.
1272
+ *
1273
+ * Use `tracing_threshold_view` in the connection string
1274
+ *
1275
+ * @cntl_arg_both{lcb_U32*}
1276
+ * @committed
1277
+ */
1278
+ #define LCB_CNTL_TRACING_THRESHOLD_VIEW 0x55
1279
+
1280
+ /**
1281
+ * Minimum time for the tracing span of FTS service to be considered by threshold tracer.
1282
+ *
1283
+ * Use `tracing_threshold_fts` in the connection string
1284
+ *
1285
+ * @cntl_arg_both{lcb_U32*}
1286
+ * @committed
1287
+ */
1288
+ #define LCB_CNTL_TRACING_THRESHOLD_FTS 0x56
1289
+
1290
+ /**
1291
+ * Minimum time for the tracing span of ANALYTICS service to be considered by threshold tracer.
1292
+ *
1293
+ * Use `tracing_threshold_analytics` in the connection string
1294
+ *
1295
+ * @cntl_arg_both{lcb_U32*}
1296
+ * @committed
1297
+ */
1298
+ #define LCB_CNTL_TRACING_THRESHOLD_ANALYTICS 0x57
1299
+
1300
+ /**
1301
+ * Options for how to handle compression
1302
+ *
1303
+ * @committed
1304
+ */
1305
+ typedef enum {
1306
+ /** Do not perform compression in any direction. Data which is received
1307
+ * compressed via the server will be indicated as such by having the
1308
+ * `LCB_VALUE_F_SNAPPYCOMP` flag set in the lcb_GETRESPv0::datatype field */
1309
+ LCB_COMPRESS_NONE = 0x00,
1310
+
1311
+ /**
1312
+ * Decompress incoming data, if the data has been compressed at the server.
1313
+ * If this is set, the `datatype` field in responses will always be stripped
1314
+ * of the `LCB_VALUE_F_SNAPPYCOMP` flag.
1315
+ */
1316
+ LCB_COMPRESS_IN = 1 << 0,
1317
+
1318
+ /**
1319
+ * Compress outgoing data. Note that if the `datatype` field contains the
1320
+ * `LCB_VALUE_F_SNAPPYCOMP` flag, then the data will never be compressed
1321
+ * as it is assumed that it is already compressed.
1322
+ */
1323
+ LCB_COMPRESS_OUT = 1 << 1,
1324
+
1325
+
1326
+ LCB_COMPRESS_INOUT = (LCB_COMPRESS_IN|LCB_COMPRESS_OUT),
1327
+
1328
+ /**
1329
+ * By default the library will send a HELLO command to the server to
1330
+ * determine whether compression is supported or not. Because commands may
1331
+ * be pipelined prior to the scheduing of the HELLO command it is possible
1332
+ * that the first few commands may not be compressed when schedule due to
1333
+ * the library not yet having negotiated settings with the server. Setting
1334
+ * this flag will force the client to assume that all servers support
1335
+ * compression despite a HELLO not having been intially negotiated.
1336
+ */
1337
+ LCB_COMPRESS_FORCE = 1 << 2
1338
+ } lcb_COMPRESSOPTS;
1339
+
1340
+ /**
1341
+ * @brief Control how the library handles compression and deflation to and from
1342
+ * the server.
1343
+ *
1344
+ * Starting in Couchbase Server 3.0, compression can optionally be applied to
1345
+ * incoming and outcoming data. For incoming (i.e. `GET` requests) the data
1346
+ * may be received in compressed format and then allow the client to inflate
1347
+ * the data upon receipt. For outgoing (i.e. `SET` requests) the data may be
1348
+ * compressed on the client side and then be stored and recognized on the
1349
+ * server itself.
1350
+ *
1351
+ * The default behavior is to transparently handle compression for both incoming
1352
+ * and outgoing data.
1353
+ *
1354
+ * Note that if the lcb_STORECMDv0::datatype field is set with compression
1355
+ * flags, the data will _never_ be compressed by the library as this is an
1356
+ * indication that it is _already_ compressed.
1357
+ *
1358
+ * @cntl_arg_both{`int*` (value is one of @ref lcb_COMPRESSOPTS)}
1359
+ * @committed
1360
+ */
1361
+ #define LCB_CNTL_COMPRESSION_OPTS 0x26
1362
+
1363
+ /**
1364
+ * Minimum size of the document payload to be compressed when compression enabled.
1365
+ *
1366
+ * Use `compression_min_size` in the connection string
1367
+ *
1368
+ * @cntl_arg_both{lcb_U32*}
1369
+ * @committed
1370
+ */
1371
+ #define LCB_CNTL_COMPRESSION_MIN_SIZE 0x58
1372
+
1373
+ /**
1374
+ * Minimum compression ratio (compressed / original) of the compressed payload to allow sending it to cluster.
1375
+ *
1376
+ * Use `compression_min_ratio` in the connection string
1377
+ *
1378
+ * @cntl_arg_both{lcb_U32*}
1379
+ * @committed
1380
+ */
1381
+ #define LCB_CNTL_COMPRESSION_MIN_RATIO 0x59
1382
+
1383
+
1384
+ /**
1385
+ * Select type of network (alternative addresses).
1386
+ *
1387
+ * Use `network` in the connection string
1388
+ *
1389
+ * @cntl_arg_get_and_set{`const char**`, `const char*`}
1390
+ *
1391
+ * @uncommitted
1392
+ */
1393
+ #define LCB_CNTL_NETWORK 0x5b
1394
+
1395
+ /**
1396
+ * The amount of time the pool should wait before closing idle connections.
1397
+ *
1398
+ * Use `http_pool_timeout` in the connection string
1399
+ *
1400
+ * @cntl_arg_both{lcb_U32*}
1401
+ * @committed
1402
+ */
1403
+ #define LCB_CNTL_HTTP_POOL_TIMEOUT 0x5d
1404
+
1405
+ /**
1406
+ * This is not a command, but rather an indicator of the last item.
1407
+ * @internal
1408
+ */
1409
+ #define LCB_CNTL__MAX 0x5e
1410
+ /**@}*/
1411
+
1412
+ #ifdef __cplusplus
1413
+ }
1414
+ #endif
1415
+
1416
+ #include "cntl-private.h"
1417
+
1418
+ #endif /* LCB_CNTL_H */