libcouchbase 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (561) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +35 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +24 -0
  8. data/README.md +389 -0
  9. data/Rakefile +75 -0
  10. data/ext/README.md +6 -0
  11. data/ext/Rakefile +20 -0
  12. data/ext/libcouchbase/.gitignore +130 -0
  13. data/ext/libcouchbase/.travis.yml +19 -0
  14. data/ext/libcouchbase/CMakeLists.txt +429 -0
  15. data/ext/libcouchbase/CONTRIBUTING.md +124 -0
  16. data/ext/libcouchbase/LICENSE +202 -0
  17. data/ext/libcouchbase/README.markdown +163 -0
  18. data/ext/libcouchbase/RELEASE_NOTES.markdown +2691 -0
  19. data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +27 -0
  20. data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
  21. data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
  22. data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +20 -0
  23. data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
  24. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
  25. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +52 -0
  26. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +56 -0
  27. data/ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake +11 -0
  28. data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +29 -0
  29. data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +133 -0
  30. data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
  31. data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
  32. data/ext/libcouchbase/cmake/config-cmake.h.in +60 -0
  33. data/ext/libcouchbase/cmake/configure +357 -0
  34. data/ext/libcouchbase/cmake/defs.mk.in +8 -0
  35. data/ext/libcouchbase/cmake/dtrace-instr-link.pl +38 -0
  36. data/ext/libcouchbase/cmake/source_files.cmake +73 -0
  37. data/ext/libcouchbase/configure.pl +1 -0
  38. data/ext/libcouchbase/contrib/cJSON/cJSON.c +624 -0
  39. data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
  40. data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +9 -0
  41. data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
  42. data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +217 -0
  43. data/ext/libcouchbase/contrib/cbsasl/src/client.c +205 -0
  44. data/ext/libcouchbase/contrib/cbsasl/src/common.c +46 -0
  45. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
  46. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
  47. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
  48. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
  49. data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
  50. data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
  51. data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
  52. data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
  53. data/ext/libcouchbase/contrib/cliopts/cliopts.c +747 -0
  54. data/ext/libcouchbase/contrib/cliopts/cliopts.h +493 -0
  55. data/ext/libcouchbase/contrib/genhash/genhash.c +372 -0
  56. data/ext/libcouchbase/contrib/genhash/genhash.h +235 -0
  57. data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
  58. data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
  59. data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
  60. data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
  61. data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
  62. data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
  63. data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
  64. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
  65. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
  66. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
  67. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
  68. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
  69. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
  70. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
  71. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
  72. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
  73. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
  74. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
  75. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
  76. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
  77. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
  78. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
  79. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
  80. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
  81. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
  82. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
  83. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
  84. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
  85. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
  86. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
  87. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
  88. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
  89. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
  90. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
  91. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
  92. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
  93. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
  94. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
  95. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
  96. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
  97. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
  98. data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
  99. data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
  100. data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
  101. data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
  102. data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
  103. data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
  104. data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
  105. data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
  106. data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
  107. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
  108. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4892 -0
  109. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
  110. data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +8 -0
  111. data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
  112. data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
  113. data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
  114. data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
  115. data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
  116. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +71 -0
  117. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
  118. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
  119. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
  120. data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +98 -0
  121. data/ext/libcouchbase/contrib/snappy/snappy.cc +1307 -0
  122. data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
  123. data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
  124. data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
  125. data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
  126. data/ext/libcouchbase/example/CMakeLists.txt +37 -0
  127. data/ext/libcouchbase/example/README.markdown +47 -0
  128. data/ext/libcouchbase/example/db/db.c +167 -0
  129. data/ext/libcouchbase/example/db/vb.c +227 -0
  130. data/ext/libcouchbase/example/instancepool/main.cc +102 -0
  131. data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
  132. data/ext/libcouchbase/example/instancepool/pool.h +69 -0
  133. data/ext/libcouchbase/example/libeventdirect/main.c +148 -0
  134. data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
  135. data/ext/libcouchbase/example/minimal/minimal.c +130 -0
  136. data/ext/libcouchbase/example/observe/observe.c +146 -0
  137. data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +132 -0
  138. data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +191 -0
  139. data/ext/libcouchbase/example/tick/tick.c +119 -0
  140. data/ext/libcouchbase/example/views/views-example.cc +83 -0
  141. data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
  142. data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
  143. data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
  144. data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
  145. data/ext/libcouchbase/include/libcouchbase/cbft.h +109 -0
  146. data/ext/libcouchbase/include/libcouchbase/cntl-private.h +356 -0
  147. data/ext/libcouchbase/include/libcouchbase/cntl.h +937 -0
  148. data/ext/libcouchbase/include/libcouchbase/configuration.h.in +23 -0
  149. data/ext/libcouchbase/include/libcouchbase/couchbase.h +3677 -0
  150. data/ext/libcouchbase/include/libcouchbase/deprecated.h +300 -0
  151. data/ext/libcouchbase/include/libcouchbase/error.h +595 -0
  152. data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
  153. data/ext/libcouchbase/include/libcouchbase/iops.h +1050 -0
  154. data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
  155. data/ext/libcouchbase/include/libcouchbase/kvbuf.h +132 -0
  156. data/ext/libcouchbase/include/libcouchbase/n1ql.h +364 -0
  157. data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
  158. data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +367 -0
  159. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
  160. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
  161. data/ext/libcouchbase/include/libcouchbase/subdoc.h +312 -0
  162. data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
  163. data/ext/libcouchbase/include/libcouchbase/vbucket.h +643 -0
  164. data/ext/libcouchbase/include/libcouchbase/views.h +298 -0
  165. data/ext/libcouchbase/include/libcouchbase/visibility.h +65 -0
  166. data/ext/libcouchbase/include/memcached/COPYING +30 -0
  167. data/ext/libcouchbase/include/memcached/README +10 -0
  168. data/ext/libcouchbase/include/memcached/protocol_binary.h +1916 -0
  169. data/ext/libcouchbase/include/memcached/vbucket.h +42 -0
  170. data/ext/libcouchbase/packaging/README +7 -0
  171. data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
  172. data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
  173. data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
  174. data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
  175. data/ext/libcouchbase/packaging/deb/compat +1 -0
  176. data/ext/libcouchbase/packaging/deb/control +73 -0
  177. data/ext/libcouchbase/packaging/deb/copyright +10 -0
  178. data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
  179. data/ext/libcouchbase/packaging/deb/package.mk +31 -0
  180. data/ext/libcouchbase/packaging/deb/rules +46 -0
  181. data/ext/libcouchbase/packaging/deb/source/format +1 -0
  182. data/ext/libcouchbase/packaging/distinfo/README +1 -0
  183. data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
  184. data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
  185. data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
  186. data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
  187. data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
  188. data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +108 -0
  189. data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
  190. data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
  191. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +466 -0
  192. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
  193. data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
  194. data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
  195. data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
  196. data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +29 -0
  197. data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +65 -0
  198. data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
  199. data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +29 -0
  200. data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
  201. data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
  202. data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +42 -0
  203. data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +212 -0
  204. data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
  205. data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +148 -0
  206. data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +648 -0
  207. data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +11 -0
  208. data/ext/libcouchbase/plugins/io/select/plugin-select.c +448 -0
  209. data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
  210. data/ext/libcouchbase/src/README.md +103 -0
  211. data/ext/libcouchbase/src/aspend.h +106 -0
  212. data/ext/libcouchbase/src/auth.cc +74 -0
  213. data/ext/libcouchbase/src/auth.h +54 -0
  214. data/ext/libcouchbase/src/bootstrap.c +269 -0
  215. data/ext/libcouchbase/src/bootstrap.h +129 -0
  216. data/ext/libcouchbase/src/bucketconfig/bc_cccp.c +495 -0
  217. data/ext/libcouchbase/src/bucketconfig/bc_file.c +347 -0
  218. data/ext/libcouchbase/src/bucketconfig/bc_http.c +630 -0
  219. data/ext/libcouchbase/src/bucketconfig/bc_http.h +82 -0
  220. data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +150 -0
  221. data/ext/libcouchbase/src/bucketconfig/clconfig.h +681 -0
  222. data/ext/libcouchbase/src/bucketconfig/confmon.c +474 -0
  223. data/ext/libcouchbase/src/callbacks.c +378 -0
  224. data/ext/libcouchbase/src/cbft.cc +210 -0
  225. data/ext/libcouchbase/src/cntl.cc +847 -0
  226. data/ext/libcouchbase/src/config_static.h +159 -0
  227. data/ext/libcouchbase/src/connspec.cc +462 -0
  228. data/ext/libcouchbase/src/connspec.h +105 -0
  229. data/ext/libcouchbase/src/ctx-log-inl.h +27 -0
  230. data/ext/libcouchbase/src/dump.c +98 -0
  231. data/ext/libcouchbase/src/getconfig.c +100 -0
  232. data/ext/libcouchbase/src/gethrtime.c +109 -0
  233. data/ext/libcouchbase/src/handler.c +922 -0
  234. data/ext/libcouchbase/src/hashset.c +164 -0
  235. data/ext/libcouchbase/src/hashset.h +86 -0
  236. data/ext/libcouchbase/src/hashtable.c +75 -0
  237. data/ext/libcouchbase/src/hdr_timings.c +92 -0
  238. data/ext/libcouchbase/src/hostlist.cc +301 -0
  239. data/ext/libcouchbase/src/hostlist.h +171 -0
  240. data/ext/libcouchbase/src/http/http-priv.h +307 -0
  241. data/ext/libcouchbase/src/http/http.cc +633 -0
  242. data/ext/libcouchbase/src/http/http.h +34 -0
  243. data/ext/libcouchbase/src/http/http_io.cc +307 -0
  244. data/ext/libcouchbase/src/instance.cc +722 -0
  245. data/ext/libcouchbase/src/internal.h +244 -0
  246. data/ext/libcouchbase/src/iofactory.c +575 -0
  247. data/ext/libcouchbase/src/jsparse/parser.cc +519 -0
  248. data/ext/libcouchbase/src/jsparse/parser.h +173 -0
  249. data/ext/libcouchbase/src/lcbht/lcbht.c +282 -0
  250. data/ext/libcouchbase/src/lcbht/lcbht.h +199 -0
  251. data/ext/libcouchbase/src/lcbio/connect.c +557 -0
  252. data/ext/libcouchbase/src/lcbio/connect.h +364 -0
  253. data/ext/libcouchbase/src/lcbio/ctx.c +611 -0
  254. data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
  255. data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
  256. data/ext/libcouchbase/src/lcbio/iotable.h +84 -0
  257. data/ext/libcouchbase/src/lcbio/ioutils.c +350 -0
  258. data/ext/libcouchbase/src/lcbio/ioutils.h +203 -0
  259. data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
  260. data/ext/libcouchbase/src/lcbio/manager.c +584 -0
  261. data/ext/libcouchbase/src/lcbio/manager.h +156 -0
  262. data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
  263. data/ext/libcouchbase/src/lcbio/rw-inl.h +115 -0
  264. data/ext/libcouchbase/src/lcbio/ssl.h +149 -0
  265. data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
  266. data/ext/libcouchbase/src/lcbio/timer.c +132 -0
  267. data/ext/libcouchbase/src/legacy.c +430 -0
  268. data/ext/libcouchbase/src/list.c +144 -0
  269. data/ext/libcouchbase/src/list.h +127 -0
  270. data/ext/libcouchbase/src/logging.c +244 -0
  271. data/ext/libcouchbase/src/logging.h +86 -0
  272. data/ext/libcouchbase/src/mc/compress.c +90 -0
  273. data/ext/libcouchbase/src/mc/compress.h +61 -0
  274. data/ext/libcouchbase/src/mc/forward.c +186 -0
  275. data/ext/libcouchbase/src/mc/forward.h +90 -0
  276. data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
  277. data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
  278. data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +111 -0
  279. data/ext/libcouchbase/src/mc/mcreq.c +954 -0
  280. data/ext/libcouchbase/src/mc/mcreq.h +977 -0
  281. data/ext/libcouchbase/src/mcserver/mcserver.c +784 -0
  282. data/ext/libcouchbase/src/mcserver/mcserver.h +121 -0
  283. data/ext/libcouchbase/src/mcserver/negotiate.c +656 -0
  284. data/ext/libcouchbase/src/mcserver/negotiate.h +119 -0
  285. data/ext/libcouchbase/src/n1ql/ixmgmt.cc +860 -0
  286. data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
  287. data/ext/libcouchbase/src/n1ql/n1ql.cc +729 -0
  288. data/ext/libcouchbase/src/n1ql/params.cc +215 -0
  289. data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
  290. data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
  291. data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
  292. data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
  293. data/ext/libcouchbase/src/newconfig.c +385 -0
  294. data/ext/libcouchbase/src/nodeinfo.cc +194 -0
  295. data/ext/libcouchbase/src/operations/cbflush.c +71 -0
  296. data/ext/libcouchbase/src/operations/counter.c +116 -0
  297. data/ext/libcouchbase/src/operations/durability-cas.c +224 -0
  298. data/ext/libcouchbase/src/operations/durability-seqno.c +157 -0
  299. data/ext/libcouchbase/src/operations/durability.c +668 -0
  300. data/ext/libcouchbase/src/operations/durability_internal.h +199 -0
  301. data/ext/libcouchbase/src/operations/get.c +409 -0
  302. data/ext/libcouchbase/src/operations/observe-seqno.c +96 -0
  303. data/ext/libcouchbase/src/operations/observe.c +340 -0
  304. data/ext/libcouchbase/src/operations/pktfwd.c +86 -0
  305. data/ext/libcouchbase/src/operations/remove.c +83 -0
  306. data/ext/libcouchbase/src/operations/stats.c +461 -0
  307. data/ext/libcouchbase/src/operations/store.c +360 -0
  308. data/ext/libcouchbase/src/operations/subdoc.cc +510 -0
  309. data/ext/libcouchbase/src/operations/touch.c +81 -0
  310. data/ext/libcouchbase/src/packetutils.c +60 -0
  311. data/ext/libcouchbase/src/packetutils.h +147 -0
  312. data/ext/libcouchbase/src/probes.d +211 -0
  313. data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
  314. data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
  315. data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
  316. data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
  317. data/ext/libcouchbase/src/rdb/rope.c +419 -0
  318. data/ext/libcouchbase/src/rdb/rope.h +488 -0
  319. data/ext/libcouchbase/src/retrychk.c +113 -0
  320. data/ext/libcouchbase/src/retryq.c +424 -0
  321. data/ext/libcouchbase/src/retryq.h +157 -0
  322. data/ext/libcouchbase/src/ringbuffer.c +442 -0
  323. data/ext/libcouchbase/src/ringbuffer.h +100 -0
  324. data/ext/libcouchbase/src/settings.c +95 -0
  325. data/ext/libcouchbase/src/settings.h +188 -0
  326. data/ext/libcouchbase/src/simplestring.c +211 -0
  327. data/ext/libcouchbase/src/simplestring.h +228 -0
  328. data/ext/libcouchbase/src/sllist-inl.h +197 -0
  329. data/ext/libcouchbase/src/sllist.h +76 -0
  330. data/ext/libcouchbase/src/ssl/CMakeLists.txt +23 -0
  331. data/ext/libcouchbase/src/ssl/ssl_c.c +415 -0
  332. data/ext/libcouchbase/src/ssl/ssl_common.c +454 -0
  333. data/ext/libcouchbase/src/ssl/ssl_e.c +408 -0
  334. data/ext/libcouchbase/src/ssl/ssl_iot_common.h +180 -0
  335. data/ext/libcouchbase/src/ssobuf.h +82 -0
  336. data/ext/libcouchbase/src/strcodecs/base64.c +123 -0
  337. data/ext/libcouchbase/src/strcodecs/strcodecs.h +285 -0
  338. data/ext/libcouchbase/src/timings.c +208 -0
  339. data/ext/libcouchbase/src/trace.h +105 -0
  340. data/ext/libcouchbase/src/utilities.c +171 -0
  341. data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
  342. data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
  343. data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
  344. data/ext/libcouchbase/src/vbucket/hash.h +30 -0
  345. data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
  346. data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
  347. data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
  348. data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
  349. data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
  350. data/ext/libcouchbase/src/vbucket/vbucket.c +1543 -0
  351. data/ext/libcouchbase/src/views/docreq.c +194 -0
  352. data/ext/libcouchbase/src/views/docreq.h +83 -0
  353. data/ext/libcouchbase/src/views/viewreq.c +358 -0
  354. data/ext/libcouchbase/src/views/viewreq.h +36 -0
  355. data/ext/libcouchbase/src/wait.c +161 -0
  356. data/ext/libcouchbase/tests/CMakeLists.txt +140 -0
  357. data/ext/libcouchbase/tests/basic/t_base64.cc +81 -0
  358. data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
  359. data/ext/libcouchbase/tests/basic/t_connstr.cc +404 -0
  360. data/ext/libcouchbase/tests/basic/t_creds.cc +32 -0
  361. data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
  362. data/ext/libcouchbase/tests/basic/t_hashset.cc +262 -0
  363. data/ext/libcouchbase/tests/basic/t_host.cc +198 -0
  364. data/ext/libcouchbase/tests/basic/t_jsparse.cc +137 -0
  365. data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
  366. data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
  367. data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
  368. data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
  369. data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +18 -0
  370. data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
  371. data/ext/libcouchbase/tests/basic/t_packet.cc +222 -0
  372. data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
  373. data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
  374. data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
  375. data/ext/libcouchbase/tests/basic/t_string.cc +112 -0
  376. data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
  377. data/ext/libcouchbase/tests/check-all.cc +608 -0
  378. data/ext/libcouchbase/tests/htparse/t_basic.cc +193 -0
  379. data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
  380. data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
  381. data/ext/libcouchbase/tests/ioserver/ioserver.cc +104 -0
  382. data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
  383. data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
  384. data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
  385. data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
  386. data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
  387. data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
  388. data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
  389. data/ext/libcouchbase/tests/iotests/mock-environment.cc +524 -0
  390. data/ext/libcouchbase/tests/iotests/mock-environment.h +385 -0
  391. data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
  392. data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
  393. data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
  394. data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
  395. data/ext/libcouchbase/tests/iotests/t_behavior.cc +226 -0
  396. data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
  397. data/ext/libcouchbase/tests/iotests/t_confmon.cc +241 -0
  398. data/ext/libcouchbase/tests/iotests/t_durability.cc +1059 -0
  399. data/ext/libcouchbase/tests/iotests/t_forward.cc +110 -0
  400. data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
  401. data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
  402. data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
  403. data/ext/libcouchbase/tests/iotests/t_lock.cc +275 -0
  404. data/ext/libcouchbase/tests/iotests/t_misc.cc +713 -0
  405. data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
  406. data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
  407. data/ext/libcouchbase/tests/iotests/t_netfail.cc +654 -0
  408. data/ext/libcouchbase/tests/iotests/t_obseqno.cc +157 -0
  409. data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
  410. data/ext/libcouchbase/tests/iotests/t_sched.cc +88 -0
  411. data/ext/libcouchbase/tests/iotests/t_serverops.cc +230 -0
  412. data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
  413. data/ext/libcouchbase/tests/iotests/t_subdoc.cc +822 -0
  414. data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
  415. data/ext/libcouchbase/tests/iotests/t_views.cc +405 -0
  416. data/ext/libcouchbase/tests/iotests/testutil.cc +250 -0
  417. data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
  418. data/ext/libcouchbase/tests/mc/mctest.h +119 -0
  419. data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
  420. data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
  421. data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
  422. data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
  423. data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
  424. data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
  425. data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
  426. data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
  427. data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
  428. data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
  429. data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
  430. data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
  431. data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
  432. data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
  433. data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
  434. data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
  435. data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
  436. data/ext/libcouchbase/tests/socktests/socktest.cc +347 -0
  437. data/ext/libcouchbase/tests/socktests/socktest.h +448 -0
  438. data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
  439. data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
  440. data/ext/libcouchbase/tests/socktests/t_manager.cc +179 -0
  441. data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
  442. data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
  443. data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
  444. data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
  445. data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
  446. data/ext/libcouchbase/tests/start_mock.bat +15 -0
  447. data/ext/libcouchbase/tests/start_mock.sh +42 -0
  448. data/ext/libcouchbase/tests/unit_tests.cc +43 -0
  449. data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
  450. data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
  451. data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
  452. data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
  453. data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
  454. data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
  455. data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
  456. data/ext/libcouchbase/tests/vbucket/t_config.cc +341 -0
  457. data/ext/libcouchbase/tools/CMakeLists.txt +51 -0
  458. data/ext/libcouchbase/tools/cbc-handlers.h +462 -0
  459. data/ext/libcouchbase/tools/cbc-n1qlback.cc +439 -0
  460. data/ext/libcouchbase/tools/cbc-pillowfight.cc +822 -0
  461. data/ext/libcouchbase/tools/cbc.cc +1541 -0
  462. data/ext/libcouchbase/tools/common/histogram.cc +43 -0
  463. data/ext/libcouchbase/tools/common/histogram.h +23 -0
  464. data/ext/libcouchbase/tools/common/my_inttypes.h +22 -0
  465. data/ext/libcouchbase/tools/common/options.cc +420 -0
  466. data/ext/libcouchbase/tools/common/options.h +81 -0
  467. data/ext/libcouchbase/tools/docgen/docgen.h +469 -0
  468. data/ext/libcouchbase/tools/docgen/loc.h +210 -0
  469. data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
  470. data/ext/libcouchbase/tools/docgen/seqgen.h +94 -0
  471. data/lib/libcouchbase.rb +36 -0
  472. data/lib/libcouchbase/bucket.rb +819 -0
  473. data/lib/libcouchbase/callbacks.rb +72 -0
  474. data/lib/libcouchbase/connection.rb +790 -0
  475. data/lib/libcouchbase/design_docs.rb +86 -0
  476. data/lib/libcouchbase/error.rb +68 -0
  477. data/lib/libcouchbase/ext/libcouchbase.rb +1135 -0
  478. data/lib/libcouchbase/ext/libcouchbase/cmdbase.rb +23 -0
  479. data/lib/libcouchbase/ext/libcouchbase/cmdcounter.rb +36 -0
  480. data/lib/libcouchbase/ext/libcouchbase/cmdendure.rb +26 -0
  481. data/lib/libcouchbase/ext/libcouchbase/cmdfts.rb +24 -0
  482. data/lib/libcouchbase/ext/libcouchbase/cmdget.rb +30 -0
  483. data/lib/libcouchbase/ext/libcouchbase/cmdgetreplica.rb +49 -0
  484. data/lib/libcouchbase/ext/libcouchbase/cmdhttp.rb +58 -0
  485. data/lib/libcouchbase/ext/libcouchbase/cmdn1ql.rb +40 -0
  486. data/lib/libcouchbase/ext/libcouchbase/cmdobseqno.rb +33 -0
  487. data/lib/libcouchbase/ext/libcouchbase/cmdobserve.rb +30 -0
  488. data/lib/libcouchbase/ext/libcouchbase/cmdstore.rb +40 -0
  489. data/lib/libcouchbase/ext/libcouchbase/cmdstoredur.rb +45 -0
  490. data/lib/libcouchbase/ext/libcouchbase/cmdsubdoc.rb +49 -0
  491. data/lib/libcouchbase/ext/libcouchbase/cmdverbosity.rb +29 -0
  492. data/lib/libcouchbase/ext/libcouchbase/cmdviewquery.rb +61 -0
  493. data/lib/libcouchbase/ext/libcouchbase/contigbuf.rb +14 -0
  494. data/lib/libcouchbase/ext/libcouchbase/create_st.rb +15 -0
  495. data/lib/libcouchbase/ext/libcouchbase/create_st0.rb +23 -0
  496. data/lib/libcouchbase/ext/libcouchbase/create_st1.rb +26 -0
  497. data/lib/libcouchbase/ext/libcouchbase/create_st2.rb +32 -0
  498. data/lib/libcouchbase/ext/libcouchbase/create_st3.rb +26 -0
  499. data/lib/libcouchbase/ext/libcouchbase/crst_u.rb +20 -0
  500. data/lib/libcouchbase/ext/libcouchbase/durability_opts_st_v.rb +11 -0
  501. data/lib/libcouchbase/ext/libcouchbase/durability_opts_t.rb +14 -0
  502. data/lib/libcouchbase/ext/libcouchbase/durabilityopt_sv0.rb +63 -0
  503. data/lib/libcouchbase/ext/libcouchbase/enums.rb +991 -0
  504. data/lib/libcouchbase/ext/libcouchbase/fragbuf.rb +18 -0
  505. data/lib/libcouchbase/ext/libcouchbase/ftshandle.rb +7 -0
  506. data/lib/libcouchbase/ext/libcouchbase/histogram.rb +34 -0
  507. data/lib/libcouchbase/ext/libcouchbase/http_request_t.rb +7 -0
  508. data/lib/libcouchbase/ext/libcouchbase/keybuf.rb +20 -0
  509. data/lib/libcouchbase/ext/libcouchbase/multicmd_ctx.rb +30 -0
  510. data/lib/libcouchbase/ext/libcouchbase/mutation_token.rb +17 -0
  511. data/lib/libcouchbase/ext/libcouchbase/n1qlhandle.rb +7 -0
  512. data/lib/libcouchbase/ext/libcouchbase/n1qlparams.rb +7 -0
  513. data/lib/libcouchbase/ext/libcouchbase/respbase.rb +29 -0
  514. data/lib/libcouchbase/ext/libcouchbase/respcounter.rb +32 -0
  515. data/lib/libcouchbase/ext/libcouchbase/respendure.rb +49 -0
  516. data/lib/libcouchbase/ext/libcouchbase/respfts.rb +40 -0
  517. data/lib/libcouchbase/ext/libcouchbase/respget.rb +44 -0
  518. data/lib/libcouchbase/ext/libcouchbase/resphttp.rb +48 -0
  519. data/lib/libcouchbase/ext/libcouchbase/respmcversion.rb +38 -0
  520. data/lib/libcouchbase/ext/libcouchbase/respn1ql.rb +41 -0
  521. data/lib/libcouchbase/ext/libcouchbase/respobseqno.rb +52 -0
  522. data/lib/libcouchbase/ext/libcouchbase/respobserve.rb +41 -0
  523. data/lib/libcouchbase/ext/libcouchbase/respserverbase.rb +32 -0
  524. data/lib/libcouchbase/ext/libcouchbase/respstats.rb +38 -0
  525. data/lib/libcouchbase/ext/libcouchbase/respstore.rb +32 -0
  526. data/lib/libcouchbase/ext/libcouchbase/respstoredur.rb +38 -0
  527. data/lib/libcouchbase/ext/libcouchbase/respsubdoc.rb +35 -0
  528. data/lib/libcouchbase/ext/libcouchbase/respviewquery.rb +67 -0
  529. data/lib/libcouchbase/ext/libcouchbase/sdentry.rb +22 -0
  530. data/lib/libcouchbase/ext/libcouchbase/sdspec.rb +26 -0
  531. data/lib/libcouchbase/ext/libcouchbase/t.rb +7 -0
  532. data/lib/libcouchbase/ext/libcouchbase/valbuf.rb +22 -0
  533. data/lib/libcouchbase/ext/libcouchbase/valbuf_u_buf.rb +14 -0
  534. data/lib/libcouchbase/ext/libcouchbase/viewhandle.rb +7 -0
  535. data/lib/libcouchbase/ext/libcouchbase_iocp.rb +26 -0
  536. data/lib/libcouchbase/ext/libcouchbase_libuv.rb +18 -0
  537. data/lib/libcouchbase/ext/tasks.rb +87 -0
  538. data/lib/libcouchbase/n1ql.rb +73 -0
  539. data/lib/libcouchbase/query_full_text.rb +147 -0
  540. data/lib/libcouchbase/query_n1ql.rb +121 -0
  541. data/lib/libcouchbase/query_view.rb +129 -0
  542. data/lib/libcouchbase/results_fiber.rb +262 -0
  543. data/lib/libcouchbase/results_native.rb +211 -0
  544. data/lib/libcouchbase/version.rb +5 -0
  545. data/libcouchbase.gemspec +61 -0
  546. data/spec/bucket_spec.rb +270 -0
  547. data/spec/connection_spec.rb +277 -0
  548. data/spec/design_docs_spec.rb +23 -0
  549. data/spec/error_spec.rb +26 -0
  550. data/spec/fts_spec.rb +129 -0
  551. data/spec/n1ql_spec.rb +201 -0
  552. data/spec/results_libuv_spec.rb +229 -0
  553. data/spec/results_native_spec.rb +259 -0
  554. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
  555. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
  556. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
  557. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
  558. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
  559. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
  560. data/spec/view_spec.rb +195 -0
  561. metadata +775 -0
@@ -0,0 +1,937 @@
1
+ /* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2013 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-timeout-info Timeout Settings
77
+ *
78
+ * Timeout settings control how long the library will wait for a certain event
79
+ * before proceeding to the next course of action (which may either be to try
80
+ * a different operation or fail the current one, depending on the specific
81
+ * timeout).
82
+ *
83
+ * Timeouts are specified in _microseconds_ stored within an `lcb_U32`.
84
+ *
85
+ * Note that timeouts in libcouchbase are implemented via an event loop
86
+ * scheduler. As such their accuracy and promptness is limited by how
87
+ * often the event loop is invoked and how much wall time is spent in
88
+ * each of their handlers. Specifically if you issue long running blocking
89
+ * calls within any of the handlers (and this means any of the library's
90
+ * callbacks) then the timeout accuracy will be impacted.
91
+ *
92
+ * Further behavior is dependent on the event loop plugin itself and how
93
+ * it schedules timeouts.
94
+ *
95
+ *
96
+ * @par Configuration Stability Attributes
97
+ * Configuration parameters are still subject to the API classification used
98
+ * in @ref lcb_attributes. For _deprecated_ control commands, lcb_cntl() will
99
+ * either perform the operation, _or_ consider it a no-op, _or_ return an error
100
+ * code.
101
+ */
102
+
103
+ /**
104
+ * @addtogroup lcb-cntl-settings
105
+ * @{
106
+ */
107
+
108
+ /**
109
+ * @name Modes
110
+ * Modes for the lcb_cntl() `mode` argument
111
+ * @{
112
+ */
113
+ #define LCB_CNTL_SET 0x01 /**< @brief Modify a setting */
114
+ #define LCB_CNTL_GET 0x00 /**< @brief Retrieve a setting */
115
+ /**@}*/
116
+
117
+ /**
118
+ * @brief Operation Timeout
119
+ *
120
+ * The operation timeout is the maximum amount of time the library will wait
121
+ * for an operation to receive a response before invoking its callback with
122
+ * a failure status.
123
+ *
124
+ * An operation may timeout if:
125
+ *
126
+ * * A server is taking too long to respond
127
+ * * An updated cluster configuration has not been promptly received
128
+ *
129
+ * @code{.c}
130
+ * lcb_U32 tmo = 3500000;
131
+ * lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_OP_TIMEOUT, &tmo);
132
+ * @endcode
133
+ *
134
+ * @cntl_arg_both{lcbU32*}
135
+ * @committed
136
+ * @see lcb-timeout-info
137
+ */
138
+ #define LCB_CNTL_OP_TIMEOUT 0x00
139
+
140
+ /**
141
+ * @brief Views Timeout
142
+ * This is the I/O timeout for HTTP requests issues with LCB_HTTP_TYPE_VIEWS
143
+ *
144
+ * @cntl_arg_both{lcb_U32*}
145
+ * @committed
146
+ */
147
+ #define LCB_CNTL_VIEW_TIMEOUT 0x01
148
+
149
+ /**
150
+ * @brief N1QL Timeout
151
+ * This is the I/O timeout for N1QL queries, issued via lcb_n1ql_query()
152
+ *
153
+ * @cntl_arg_both{lcb_U32*}
154
+ * @committed
155
+ */
156
+ #define LCB_CNTL_N1QL_TIMEOUT 0x3D
157
+
158
+ /**
159
+ * @brief Get the name of the bucket
160
+ * This returns the name of the bucket this instance is connected to, or `NULL`
161
+ * if not yet connected to a bucket
162
+ *
163
+ * @cntl_arg_getonly{`const char*`}
164
+ * @committed
165
+ */
166
+ #define LCB_CNTL_BUCKETNAME 0x30
167
+
168
+ /**
169
+ * @brief Get the handle type.
170
+ * This returns the handle type - which is either LCB_TYPE_CLUSTER or
171
+ * LCB_TYPE_BUCKET
172
+ *
173
+ * @cntl_arg_getonly{lcb_type_t*}
174
+ * @uncommitted
175
+ */
176
+ #define LCB_CNTL_HANDLETYPE 0x04
177
+
178
+ /**@brief Get the vBucket handle.
179
+ * Obtains the current cluster configuration from the client.
180
+ *
181
+ * @cntl_arg_getonly{lcbvb_CONFIG**}
182
+ * @uncommitted
183
+ */
184
+ #define LCB_CNTL_VBCONFIG 0x05
185
+
186
+ /**@brief Get the iops implementation instance
187
+ *
188
+ * @cntl_arg_getonly{lcb_io_opt_t*}
189
+ * @uncommitted
190
+ */
191
+ #define LCB_CNTL_IOPS 0x06
192
+
193
+
194
+ /** @brief Structure containing mapping information for a key */
195
+ typedef struct lcb_cntl_vbinfo_st {
196
+ int version;
197
+
198
+ union {
199
+ /** v0 */
200
+ struct {
201
+ const void *key; /**< **Input** Key */
202
+ lcb_SIZE nkey; /**< **Input** Length of key */
203
+ int vbucket; /**< **Output** Mapped vBucket */
204
+ int server_index; /**< **Output** Server index for vBucket */
205
+ } v0;
206
+ } v;
207
+ } lcb_cntl_vbinfo_t;
208
+
209
+ /**
210
+ * @brief Get the vBucket ID for a given key, based on the current configuration
211
+ *
212
+ * @cntl_arg_getonly{lcb_cntl_vbinfo_t*}
213
+ * @committed
214
+ */
215
+ #define LCB_CNTL_VBMAP 0x07
216
+
217
+ /**
218
+ * @brief Configuration error threshold.
219
+ *
220
+ * This number indicates how many
221
+ * network/mapping/not-my-vbucket errors are received before a configuration
222
+ * update is requested again.
223
+ *
224
+ * @cntl_arg_both{lcb_SIZE*}
225
+ * @uncommitted
226
+ */
227
+ #define LCB_CNTL_CONFERRTHRESH 0x0c
228
+
229
+ /**
230
+ * @brief Default timeout for lcb_durability_poll()
231
+ * @ingroup lcb-timeout-info
232
+ *
233
+ * This is the time the client will
234
+ * spend sending repeated probes to a given key's vBucket masters and replicas
235
+ * before they are deemed not to have satisfied the durability requirements
236
+ *
237
+ * @cntl_arg_both{lcb_U32*}
238
+ * @committed
239
+ */
240
+ #define LCB_CNTL_DURABILITY_TIMEOUT 0x0d
241
+
242
+ /**@brief Polling grace interval for lcb_durability_poll()
243
+ *
244
+ * This is the time the client will wait between repeated probes to
245
+ * a given server.
246
+ *
247
+ * @cntl_arg_both{lcb_U32*}
248
+ * @committed*/
249
+ #define LCB_CNTL_DURABILITY_INTERVAL 0x0e
250
+
251
+ /**@brief Timeout for non-views HTTP requests
252
+ * @cntl_arg_both{lcb_U32*}
253
+ * @committed*/
254
+ #define LCB_CNTL_HTTP_TIMEOUT 0x0f
255
+
256
+ /**
257
+ * @brief Print verbose plugin load information to console
258
+ *
259
+ * This modifies a static, global setting regarding whether to
260
+ * print verbose information when trying to dynamically load an IO plugin.
261
+ * The information printed can be useful in determining why a plugin failed
262
+ * to load. This setting can also be controlled via the
263
+ * "LIBCOUCHBASE_DLOPEN_DEBUG" environment variable (and if enabled from the
264
+ * environment, will override the setting mentioned here).
265
+ *
266
+ * @cntl_arg_both{int*}
267
+ *
268
+ * @note Pass NULL to lcb_cntl for the 'instance' parameter.
269
+ * @volatile
270
+ */
271
+ #define LCB_CNTL_IOPS_DLOPEN_DEBUG 0x11
272
+
273
+ /**@brief Initial bootstrap timeout.
274
+ * This is how long the client will wait to obtain the initial configuration.
275
+ *
276
+ * @cntl_arg_both{lcb_U32*}
277
+ * @committed*/
278
+ #define LCB_CNTL_CONFIGURATION_TIMEOUT 0x12
279
+
280
+ /**
281
+ * @brief Randomize order of bootstrap nodes.
282
+ *
283
+ * This controls whether the connection attempts for configuration retrievals
284
+ * should be done in the supplied order or whether they should be randomized.
285
+ *
286
+ * For the initial connection the supplied order is the list of hosts provided
287
+ * in the lcb_create_st structure. For subsequent connections this is the
288
+ * order of nodes as received by the server.
289
+ *
290
+ * @cntl_arg_both{int*}
291
+ * @committed
292
+ */
293
+ #define LCB_CNTL_RANDOMIZE_BOOTSTRAP_HOSTS 0x14
294
+
295
+ /**
296
+ * @brief Determine if file-based configuration has been loaded
297
+ *
298
+ * If the configuration cache is in use, the argument pointer
299
+ * will be set to a true value. If the configuration cache was not used,
300
+ * the argument pointer will be set to false.
301
+ *
302
+ * A false value may indicates that the client will need to load the
303
+ * configuration from the network. This may be caused by the following:
304
+ * - The configuration cache did not exist or was empty
305
+ * - The configuration cache contained stale information
306
+ *
307
+ * @cntl_arg_getonly{int*}
308
+ * @uncommitted
309
+ */
310
+ #define LCB_CNTL_CONFIG_CACHE_LOADED 0x15
311
+
312
+ /**
313
+ * @brief Force a specific SASL mechanism
314
+ *
315
+ * Force a specific SASL mechanism to use for authentication. This
316
+ * can allow a user to ensure a certain level of security and have the
317
+ * connection fail if the desired mechanism is not available.
318
+ *
319
+ * When setting this value, the arg parameter shall be a
320
+ * `NUL`-terminated string or a `NULL` pointer (to unset). When retrieving
321
+ * this value, the parameter shall be set to a `char **`. Note that this
322
+ * value (in LCB_CNTL_GET) is valid only until the next call to a
323
+ * libcouchbase API, after which it may have been freed.
324
+ *
325
+ * @cntl_arg_get_and_set{char**, char*}
326
+ * @uncommitted
327
+ */
328
+ #define LCB_CNTL_FORCE_SASL_MECH 0x16
329
+
330
+ /**
331
+ * @brief Maximum number of HTTP redirects to follow
332
+ * Set how many redirects the library should follow for the single request.
333
+ * Set to -1 to remove limit at all.
334
+ *
335
+ * @cntl_arg_both{int*}
336
+ * @uncommitted
337
+ */
338
+ #define LCB_CNTL_MAX_REDIRECTS 0x17
339
+
340
+ /**
341
+ * @name Logging
342
+ *
343
+ * Verbose logging may be enabled by default using the environment variable
344
+ * `LCB_LOGLEVEL` and setting it to a number > 1; higher values produce more
345
+ * verbose output. The maximum level is `5`.
346
+ *
347
+ * You may also install your own logger using lcb_cntl() and the
348
+ * @ref LCB_CNTL_LOGGER constant. Note that
349
+ * the logger functions will not be called rapidly from within hot paths.
350
+ * @{
351
+ */
352
+
353
+ /** @brief Logging Levels */
354
+ typedef enum { LCB_LOG_TRACE = 0, LCB_LOG_DEBUG, LCB_LOG_INFO, LCB_LOG_WARN,
355
+ LCB_LOG_ERROR, LCB_LOG_FATAL, LCB_LOG_MAX
356
+ } lcb_log_severity_t;
357
+
358
+ struct lcb_logprocs_st;
359
+
360
+ /**
361
+ * @brief Logger callback
362
+ *
363
+ * @uncommitted
364
+ *
365
+ * This callback is invoked for each logging message emitted
366
+ * @param procs the logging structure provided
367
+ * @param iid instance id
368
+ * @param subsys a string describing the module which emitted the message
369
+ * @param severity one of the LCB_LOG_* severity constants.
370
+ * @param srcfile the source file which emitted this message
371
+ * @param srcline the line of the file for the message
372
+ * @param fmt a printf format string
373
+ * @param ap a va_list for vprintf
374
+ */
375
+ typedef void (*lcb_logging_callback)(struct lcb_logprocs_st *procs,
376
+ unsigned int iid, const char *subsys, int severity, const char *srcfile,
377
+ int srcline, const char *fmt, va_list ap);
378
+
379
+ /**
380
+ * @brief Logging context
381
+ * @uncommitted
382
+ *
383
+ * This structure defines the logging handlers. Currently there is only
384
+ * a single field defined which is the default callback for the loggers.
385
+ * This API may change.
386
+ */
387
+ typedef struct lcb_logprocs_st {
388
+ int version;
389
+ union { struct { lcb_logging_callback callback; } v0; } v;
390
+ } lcb_logprocs;
391
+
392
+ /**
393
+ * @brief Access the lcb_logprocs structure
394
+ * @uncommitted
395
+ *
396
+ * The lcb_logoprocs structure passed must not be freed until the instance
397
+ * is completely destroyed. This will only happen once the destruction
398
+ * callback is called (see lcb_set_destroy_callback()).
399
+ *
400
+ * @cntl_arg_get_and_set{lcb_logprocs**,lcb_logprocs*}*/
401
+ #define LCB_CNTL_LOGGER 0x18
402
+ /**@}*/
403
+
404
+
405
+ /**
406
+ * @brief Refresh Throttling
407
+ *
408
+ * Modify the amount of time (in microseconds) before the
409
+ * @ref LCB_CNTL_CONFERRTHRESH will forcefully be set to its maximum
410
+ * number forcing a configuration refresh.
411
+ *
412
+ * Note that if you expect a high number of timeouts in your operations, you
413
+ * should set this to a high number (along with `CONFERRTHRESH`). If you
414
+ * are using the default timeout setting, then this value is likely optimal.
415
+ *
416
+ * @cntl_arg_both{lcb_U32*}
417
+ * @see LCB_CNTL_CONFERRTHRESH
418
+ * @uncommitted
419
+ */
420
+ #define LCB_CNTL_CONFDELAY_THRESH 0x19
421
+
422
+ /**@brief Get the transport used to fetch cluster configuration.
423
+ * @cntl_arg_getonly{lcb_config_transport_t*}
424
+ * @uncommitted*/
425
+ #define LCB_CNTL_CONFIG_TRANSPORT 0x1A
426
+
427
+ /**
428
+ * @brief Per-node configuration timeout.
429
+ *
430
+ * The per-node configuration timeout sets the amount of time to wait
431
+ * for each node within the bootstrap/configuration process. This interval
432
+ * is a subset of the @ref LCB_CNTL_CONFIGURATION_TIMEOUT
433
+ * option mentioned above and is intended
434
+ * to ensure that the bootstrap process does not wait too long for a given
435
+ * node. Nodes that are physically offline may never respond and it may take
436
+ * a long time until they are detected as being offline.
437
+ * See CCBC-261 and CCBC-313 for more reasons.
438
+ *
439
+ * @note the `CONFIGURATION_TIMEOUT` should be higher than this number.
440
+ * No check is made to ensure that this is the case, however.
441
+ *
442
+ * @cntl_arg_both{lcb_U32*}
443
+ * @see LCB_CNTL_CONFIGURATION_TIMEOUT
444
+ * @committed
445
+ */
446
+ #define LCB_CNTL_CONFIG_NODE_TIMEOUT 0x1B
447
+
448
+ /**
449
+ * @brief Idling/Persistence for HTTP bootstrap
450
+ *
451
+ * By default the behavior of the library for HTTP bootstrap is to keep the
452
+ * stream open at all times (opening a new stream on a different host if the
453
+ * existing one is broken) in order to proactively receive configuration
454
+ * updates.
455
+ *
456
+ * The default value for this setting is -1. Changing this to another number
457
+ * invokes the following semantics:
458
+ *
459
+ * - The configuration stream is not kept alive indefinitely. It is kept open
460
+ * for the number of seconds specified in this setting. The socket is closed
461
+ * after a period of inactivity (indicated by this setting).
462
+ *
463
+ * - If the stream is broken (and no current refresh was requested by the
464
+ * client) then a new stream is not opened.
465
+ *
466
+ * @cntl_arg_both{lcb_U32*}
467
+ * @volatile
468
+ */
469
+ #define LCB_CNTL_HTCONFIG_IDLE_TIMEOUT 0x1C
470
+
471
+ /**@brief Get the current SCM changeset for the library binary
472
+ * @cntl_arg_getonly{char**}
473
+ * @committed*/
474
+ #define LCB_CNTL_CHANGESET 0x1F
475
+
476
+ /**
477
+ * @brief file used for the configuration cache.
478
+ *
479
+ * The configuration
480
+ * cache allows to bootstrap from a cluster without using the initial
481
+ * bootstrap connection, considerably reducing latency. If the file passed
482
+ * does not exist, the normal bootstrap process is performed and the file
483
+ * is written to with the current information.
484
+ *
485
+ * @note The leading directories for the file must exist, otherwise the file
486
+ * will never be created.
487
+ *
488
+ * @note Configuration cache is not supported for memcached buckets
489
+ * @cntl_arg_get_and_set{char**, char*}
490
+ * @uncommitted
491
+ * @see LCB_CNTL_CONFIG_CACHE_LOADED
492
+ */
493
+ #define LCB_CNTL_CONFIGCACHE 0x21
494
+
495
+ /**
496
+ * @brief File used for read-only configuration cache
497
+ *
498
+ * This is identical to the @ref LCB_CNTL_CONFIGCACHE directive, except that
499
+ * it guarantees that the library will never overwrite or otherwise modify
500
+ * the path specified.
501
+ *
502
+ * @see LCB_CNTL_CONFIGCACHE
503
+ */
504
+ #define LCB_CNTL_CONFIGCACHE_RO 0x36
505
+
506
+ typedef enum {
507
+ LCB_SSL_ENABLED = 1 << 0, /**< Use SSL */
508
+ LCB_SSL_NOVERIFY = 1 << 1, /**< Don't verify certificates */
509
+ LCB_SSL_NOGLOBALINIT = 1 << 2 /**< Do not call SSL's global init functions */
510
+ } lcb_SSLOPTS;
511
+
512
+ /**
513
+ * @brief Get SSL Mode
514
+ *
515
+ * Retrieve the SSL mode currently in use by the library. This is a read-only
516
+ * setting. To set the SSL mode at the library, specify the appropriate values
517
+ * within the connection string. See @ref lcb_create_st3 for details.
518
+ *
519
+ * @cntl_arg_getonly{`int*` (value is one of @ref lcb_SSLOPTS)}
520
+ */
521
+ #define LCB_CNTL_SSL_MODE 0x22
522
+
523
+ /**
524
+ * @brief Get SSL Certificate path
525
+ *
526
+ * Retrieve the path to the CA certificate (if any) being used.
527
+ *
528
+ * @cntl_arg_getonly{`char**`}
529
+ * @see LCB_CNTL_SSL_MODE
530
+ */
531
+ #define LCB_CNTL_SSL_CERT 0x23
532
+ /* For back compat */
533
+ #define LCB_CNTL_SSL_CACERT LCB_CNTL_SSL_CERT
534
+
535
+ /**
536
+ * @brief
537
+ * Select retry mode to manipulate
538
+ */
539
+ typedef enum {
540
+ LCB_RETRY_ON_TOPOCHANGE = 0, /**< Select retry for topology */
541
+ LCB_RETRY_ON_SOCKERR, /**< Select retry for network errors */
542
+ LCB_RETRY_ON_VBMAPERR, /**< Select retry for NOT_MY_VBUCKET responses */
543
+
544
+ /** Retry when there is no node for the item. This case is special as the
545
+ * `cmd` setting is treated as a boolean rather than a bitmask*/
546
+ LCB_RETRY_ON_MISSINGNODE,
547
+ LCB_RETRY_ON_MAX /**<< maximum index */
548
+ } lcb_RETRYMODEOPTS;
549
+
550
+ typedef enum {
551
+ /**Don't retry any commands. A command which has been forwarded to
552
+ * a server and a not-my-vbucket has been received in response for it
553
+ * will result in a failure.*/
554
+ LCB_RETRY_CMDS_NONE = 0,
555
+
556
+ /**Only retry simple retrieval operations (excludes touch,
557
+ * get-and-touch, and get-locked) which may be retried many numbers of times
558
+ * without risking unintended data manipulation. */
559
+ LCB_RETRY_CMDS_GET = 0x01,
560
+
561
+ /**Retry operations which may potentially fail because they have been
562
+ * accepted by a previous server, but will not silently corrupt data.
563
+ * Such commands include mutation operations containing a CAS.*/
564
+ LCB_RETRY_CMDS_SAFE = 0x03, /* Includes 'GET', plus a new flag (e.g. 0x02|0x01) */
565
+
566
+ /**Retry all commands, disregarding any potential unintended receipt of
567
+ * errors or data mutation.*/
568
+ LCB_RETRY_CMDS_ALL = 0x07 /* e.g. 0x01|0x03| NEW FLAG: 0x04 */
569
+ } lcb_RETRYCMDOPTS;
570
+
571
+ /**@brief Create a retry setting value
572
+ * @param mode the mode to set (@see lcb_RETRYMODEOPTS)
573
+ * @param policy the policy determining which commands should be retried
574
+ * (@see lcb_RETRYCMDOPTS)
575
+ * @return a value which can be assigned to an `lcb_U32` and passed to
576
+ * the @ref LCB_CNTL_RETRYMODE setting
577
+ */
578
+ #define LCB_RETRYOPT_CREATE(mode, policy) (((mode) << 16) | policy)
579
+
580
+ #define LCB_RETRYOPT_GETMODE(u) (u) >> 16
581
+ #define LCB_RETRYOPT_GETPOLICY(u) (u) & 0xffff
582
+
583
+ /**
584
+ * @volatile
585
+ *
586
+ * @brief Set retry policies
587
+ *
588
+ * This function sets the retry behavior. The retry behavior is the action the
589
+ * library should take when a command has failed because of a failure which
590
+ * may be a result of environmental and/or topology issues. In such cases it
591
+ * may be possible to retry the command internally and have it succeed a second
592
+ * time without propagating an error back to the application.
593
+ *
594
+ * The behavior consists of a _mode_ and _command_ selectors. The _command_
595
+ * selector indicates which commands should be retried (and which should be
596
+ * propagated up to the user) whereas the _mode_ indicates under which
597
+ * circumstances should the _command_ policy be used.
598
+ *
599
+ * Disable retries anywhere:
600
+ * @code{.c}
601
+ * for (int ii = 0; ii < LCB_RETRY_ON_MAX; ++ii) {
602
+ * lcb_U32 val = LCB_RETRYOPT_CREATE(ii, LCB_RETRY_CMDS_NONE);
603
+ * lcb_error_t err = lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_RETRYMODE, &val);
604
+ * }
605
+ * @endcode
606
+ *
607
+ * Only retry simple GET operations when retry is needed because of topology
608
+ * changes:
609
+ * @code{.c}
610
+ * lcb_U32 val = LCB_RETRYOPT_CREATE(LCB_RETRY_ON_TOPOCHANGE, LCB_RETRY_CMDS_GET);
611
+ * lcb_cntl(instance, LCB_CNTL_SET, LCB_CNTL_RETRYMODE, &val);
612
+ * @endcode
613
+ *
614
+ * Determine the behavior of the library when a `NOT_MY_VBUCKET` is received:
615
+ * @code{.c}
616
+ * lcb_U32 val = LCB_RETRYOPT_CREATE(LCB_RETRY_ON_VBMAPERR, 0);
617
+ * lcb_cntl(instance, LCB_CNTL_GET, LCB_CNTL_RETRYMODE, &val);
618
+ * lcb_U32 policy = LCB_RETRYOPT_GETPOLICY(val);
619
+ * @endcode
620
+ *
621
+ * @cntl_arg_both{`lcb_U32 *`}
622
+ */
623
+ #define LCB_CNTL_RETRYMODE 0x24
624
+
625
+ /**
626
+ * @brief Enumeration representing various URL forms to use for the configuration
627
+ * stream */
628
+ typedef enum {
629
+ /** `/pools/default/b[s]/$bucket`: Introduced in Couchbase Server 2.5 */
630
+ LCB_HTCONFIG_URLTYPE_25PLUS = 0x01,
631
+
632
+ /** `/pools/default/buckets[Streaming]/$bucket`. */
633
+ LCB_HTCONFIG_URLTYPE_COMPAT = 0x02,
634
+
635
+ /** Try `25PLUS` first and fallback to `COMPAT` */
636
+ LCB_HTCONFIG_URLTYPE_TRYALL = 0x03
637
+ } lcb_HTCONFIG_URLTYPE;
638
+
639
+ /**
640
+ * @volatile - Primarily here to support tests and buggy HTTP servers/proxies
641
+ * which do not like to maintain a connection upon receipt of a 404.
642
+ *
643
+ * @brief Set the URL selection mode.
644
+ *
645
+ * The URL type can be a mask of the lcb_HTCONFIG_URLTYPE constants which
646
+ * indicate which URLs the HTTP provider should use.
647
+ *
648
+ * The default is to use the `25PLUS` URI first, and fallback on the compat uri
649
+ * if the terse one fails with an HTTP 404 (Not Found). The new-style URI is
650
+ * considered more efficient on cluster resources and can help the cluster
651
+ * maintain many more streaming connections than the compat version, however
652
+ * it is only available in Couchbase Server 2.5 and greater.
653
+ *
654
+ * This setting is only used when CCCP is disabled. This will typically be for
655
+ * older clusters or for memcached buckets.
656
+ * @cntl_arg_both{`int*` (value is one of @ref lcb_HTCONFIG_URLTYPE)}
657
+ */
658
+ #define LCB_CNTL_HTCONFIG_URLTYPE 0x25
659
+
660
+ /**
661
+ * @volatile
662
+ * Determines whether to run the event loop internally within lcb_destroy()
663
+ * until no more I/O resources remain for the library. This is usually only
664
+ * necessary if you are creating a lot of instances and/or are using memory
665
+ * leak analysis tools.
666
+ *
667
+ * @cntl_arg_both{`int*` (as a boolean)}
668
+ * @see lcb_destroy_async() and lcb_set_destroy_callback()
669
+ */
670
+ #define LCB_CNTL_SYNCDESTROY 0x28
671
+
672
+ /**
673
+ * @committed
674
+ *
675
+ * Sets the logging level for the console logger. If a logger is already
676
+ * initialized (either from the environment, or via lcb_cntl_logger() then
677
+ * this operation does nothing.
678
+ *
679
+ * This is mainly useful for applications which want to proxy the built in
680
+ * logging options via command line options and the like, rather than setting
681
+ * it from the environment.
682
+ *
683
+ * The argument passed to lcb_cntl() is an integer of 0 until
684
+ * `LCB_LOGLEVEL_MAX`, though the actual type is of `lcb_U32` rather than
685
+ * an enum type.
686
+ *
687
+ * @cntl_arg_setonly{const lcb_U32 *}
688
+ * @see LCB_CNTL_LOGGER
689
+ */
690
+ #define LCB_CNTL_CONLOGGER_LEVEL 0x29
691
+
692
+ /**
693
+ * @uncommitted
694
+ *
695
+ * Sets the output file (as a `FILE*`) for the console logger. Note that
696
+ * any existing file pointer will be cleared (but not `fclose()`d.
697
+ *
698
+ * If used with lcb_cntl_string(), (using the `console_log_file` parameter),
699
+ * the third argument is taken as the _name_ of a file. Note that the user
700
+ * is responsible for closing the file.
701
+ *
702
+ * This setting does not require a library handle and therefore the first
703
+ * argument to lcb_cntl() should be `NULL`.
704
+ *
705
+ *
706
+ * @cntl_arg_get_and_set{`FILE**`, `FILE*`}
707
+ * @see LCB_CNTL_LOGGER
708
+ * @see LCB_CNTL_CONLOGGER_LEVEL
709
+ */
710
+ #define LCB_CNTL_CONLOGGER_FP 0x3B
711
+
712
+ /**
713
+ * @committed
714
+ *
715
+ * Sets the behavior for reporting network errors. By default network errors
716
+ * are returned as `LCB_NETWORK_ERROR` return codes for compatibility reasons.
717
+ * More detailed error codes may be available by enabling this option which will
718
+ * return appropriate error codes which have a category of
719
+ * @ref LCB_ERRTYPE_NETWORK
720
+ *
721
+ * Using this option means your programming model is centered around the various
722
+ * LCB_EIF* macros (see <libcouchbase/error.h>) rather than individual codes.
723
+ *
724
+ * @cntl_arg_both{int * (As a boolean)}
725
+ */
726
+ #define LCB_CNTL_DETAILED_ERRCODES 0x2A
727
+
728
+ /**
729
+ * @uncommitted
730
+ *
731
+ * Sets the interval at which the retry queue will attempt to resend a failed
732
+ * operation. When an operation fails and the retry policy (see
733
+ * @ref LCB_CNTL_RETRYMODE) allows the operation to be retried, it shall be
734
+ * placed into a queue, and then be retried within a given interval.
735
+ *
736
+ * Setting a high value will be friendlier on the network but also potentially
737
+ * increase latency, while setting this to a low value may cause unnecessary
738
+ * network traffic for operations which are not yet ready to be retried.
739
+ *
740
+ * @cntl_arg_both{lcb_U32* (microseconds)}
741
+ *
742
+ * @see LCB_CNTL_RETRY_BACKOFF
743
+ */
744
+ #define LCB_CNTL_RETRY_INTERVAL 0x2C
745
+
746
+ /**
747
+ * @uncommitted
748
+ *
749
+ * When an operation has been retried more than once and it has still not
750
+ * succeeded, the library will attempt to back off for the operation by
751
+ * scheduling it to be retried in `LCB_CNTL_RETRY_INTEVAL * ${n}` microseconds,
752
+ * where `${n}` is the factor controlled by this setting.
753
+ *
754
+ * @cntl_arg_both{float*}
755
+ */
756
+ #define LCB_CNTL_RETRY_BACKOFF 0x2D
757
+
758
+ /**
759
+ * @volatile
760
+ * Whether commands are retried immediately upon receipt of not-my-vbucket
761
+ * replies.
762
+ *
763
+ * Since version 2.4.8, packets by default are retried immediately on a
764
+ * different node if it had previously failed with a not-my-vbucket
765
+ * response, and is thus not subject to the @ref LCB_CNTL_RETRY_INTERVAL
766
+ * and @ref LCB_CNTL_RETRY_BACKOFF settings. Disabling this setting will
767
+ * restore the older behavior. This may be used in case there are problems
768
+ * with the default heuristic/retry algorithm.
769
+ */
770
+ #define LCB_CNTL_RETRY_NMV_IMM 0x37
771
+
772
+ /**
773
+ * @volatile
774
+ *
775
+ * Set the maximum pool size for pooled http (view request) sockets. This should
776
+ * be set to 1 (the default) unless you plan to execute concurrent view requests.
777
+ * You may set this to 0 to disable pooling
778
+ *
779
+ * @cntl_arg_both{lcb_SIZE}
780
+ */
781
+ #define LCB_CNTL_HTTP_POOLSIZE 0x2E
782
+
783
+ /**
784
+ * @uncomitted
785
+ * Determine whether or not a new configuration should be received when an error
786
+ * is received over the HTTP API (i.e. via lcb_make_http_request().
787
+ *
788
+ * The default value is true, however you may wish to disable this if you are
789
+ * expectedly issuing a lot of requests which may result in an error.
790
+ *
791
+ * @cntl_arg_both{int (as boolean)}
792
+ */
793
+ #define LCB_CNTL_HTTP_REFRESH_CONFIG_ON_ERROR 0x2F
794
+
795
+ /**
796
+ * @volatile
797
+ * Set the behavior of the lcb_sched_leave() API call. By default the
798
+ * lcb_sched_leave() will also set up the necessary requirements for flushing
799
+ * to the network. If this option is off then an explicit call to
800
+ * lcb_sched_flush() must be performed instead.
801
+ *
802
+ * @cntl_arg_both{int (as boolean)}
803
+ */
804
+ #define LCB_CNTL_SCHED_IMPLICIT_FLUSH 0x31
805
+
806
+ /**
807
+ * @volatile
808
+ *
809
+ * Allow the server to return an additional 16 bytes of data for each
810
+ * mutation operation. This extra information may help with more reliable
811
+ * durability polling, but will also increase the size of the response packet.
812
+ *
813
+ * This should be set on the instance before issuing lcb_connect(). While this
814
+ * may also be set after lcb_connect() is called, it will currently only take
815
+ * effect when a server reconnects (which itself may be undefined).
816
+ *
817
+ * @cntl_arg_both{int (as boolean)}
818
+ */
819
+ #define LCB_CNTL_FETCH_MUTATION_TOKENS 0x34
820
+
821
+ /**
822
+ * @volatile
823
+ *
824
+ * This setting determines whether the lcb_durability_poll() function will
825
+ * transparently attempt to use mutation token functionality (rather than checking
826
+ * the CAS). This option is most useful for older code which does
827
+ * explicitly use mutation tokens but would like to use its benefits when
828
+ * ensuring durability constraints are satisfied.
829
+ *
830
+ * This option is enabled by default. Users may wish to disable this if they
831
+ * are performing durability operations against items stored from different
832
+ * client instances, as this will make use of a client-global state which is
833
+ * derived on a per-vBucket basis. This means that the last mutation performed
834
+ * on a given vBucket for the client will be used, which in some cases may be
835
+ * older or newer than the mutations passed to the lcb_durability_poll()
836
+ * function.
837
+ *
838
+ * @cntl_arg_both{int (as boolean)}
839
+ */
840
+ #define LCB_CNTL_DURABILITY_MUTATION_TOKENS 0x35
841
+
842
+ /**
843
+ * @volatile
844
+ *
845
+ * This read-only property determines if the mutation token mechanism is supported
846
+ * on the cluster itself. This will only be accurate once a single operation
847
+ * has been performed on the cluster - or in other words, once a connection
848
+ * to a data node has been established for the purposes of normal operations.
849
+ *
850
+ * @cntl_arg_getonly{int (as boolean)}
851
+ */
852
+ #define LCB_CNTL_MUTATION_TOKENS_SUPPORTED 0x38
853
+
854
+
855
+ /**
856
+ * @uncommitted
857
+ * This setting determines if calls to lcb_wait() and lcb_wait3() will reset
858
+ * the timeout of pending operations to the time that lcb_wait() was called,
859
+ * rather than having the operation maintain the time of the call which
860
+ * scheduled it. If the time between lcb_store3() and family and the lcb_wait()
861
+ * functions is long, it is recommended to disable this setting in order to
862
+ * avoid prematurely having operations time out.
863
+ *
864
+ * @cntl_arg_both{int (as boolean)}
865
+ *
866
+ * Use `"readj_wait_tmo"` for the string version
867
+ */
868
+ #define LCB_CNTL_RESET_TIMEOUT_ON_WAIT 0x3A
869
+
870
+ /**
871
+ * @volatile
872
+ * Clears the internal prepared statement cache for N1QL
873
+ *
874
+ * This does not take any arguments, and is valid only on @ref LCB_CNTL_SET
875
+ */
876
+ #define LCB_CNTL_N1QL_CLEARACHE 0x3E
877
+
878
+ /**
879
+ * @committed
880
+ * Sets additional text for negotiation. This allows wrappers or applications
881
+ * to add additional identifying information which can then be seen in the
882
+ * server logs.
883
+ *
884
+ * @cntl_arg_get_and_set{`const char**`, `const char*`}
885
+ *
886
+ * Use `"client_string"` for the string version
887
+ */
888
+ #define LCB_CNTL_CLIENT_STRING 0x3F
889
+
890
+ typedef const char *lcb_BUCKETCRED[2];
891
+
892
+ /**
893
+ * Set credentials for a bucket. This is used for N1QL and CBFT APIs to allow
894
+ * access to multiple buckets. It can also be used to set the password
895
+ * of the current bucket when reconnecting (in case it changes).
896
+ *
897
+ * The format for the credentials is an array of two nul-terminated strings,
898
+ * the first refers to the bucket and the second refers to the password.
899
+ */
900
+ #define LCB_CNTL_BUCKET_CRED 0x40
901
+
902
+ /**
903
+ * Set the amount of time the client should wait before retrying a
904
+ * not-my-vbucket response packet. The default is 100ms. The value should
905
+ * be specified in microseconds
906
+ *
907
+ * @committed
908
+ * @cntl_arg_both{lcb_U32*}
909
+ *
910
+ * Use `"retry_nmv_interval"` with lcb_cntl_string()
911
+ */
912
+ #define LCB_CNTL_RETRY_NMV_INTERVAL 0x41
913
+
914
+ /**
915
+ * Limit the number of bytes to be read (and thereby processed) during I/O
916
+ * read operations. This setting may be useful when the network is faster than
917
+ * processing resources.
918
+ *
919
+ * @note This setting only works for event-style I/O plugins. This means it
920
+ * has no effect on completion style plugins such as libuv or Windows IOCP
921
+ *
922
+ * @committed
923
+ * @cntl_arg_both{lcb_U32*}
924
+ */
925
+ #define LCB_CNTL_READ_CHUNKSIZE 0x42
926
+
927
+ /** This is not a command, but rather an indicator of the last item */
928
+ #define LCB_CNTL__MAX 0x43
929
+ /**@}*/
930
+
931
+ #ifdef __cplusplus
932
+ }
933
+ #endif
934
+
935
+ #include "cntl-private.h"
936
+
937
+ #endif /* LCB_CNTL_H */