libcouchbase 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,300 @@
1
+ /* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2014 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
+ #ifndef LCB_DEPRECATED_H
19
+ #define LCB_DEPRECATED_H
20
+ #ifndef LIBCOUCHBASE_COUCHBASE_H
21
+ #error "include <libcouchbase/couchbase.h> first"
22
+ #endif
23
+
24
+ #ifdef __cplusplus
25
+ extern "C" {
26
+ #endif
27
+
28
+ /**@file
29
+ * Deprecated APIs
30
+ */
31
+
32
+ #define LCB_DEPR_API(X) LIBCOUCHBASE_API LCB_DEPRECATED(X)
33
+ #define LCB_DEPR_API2(X, reason) LIBCOUCHBASE_API LCB_DEPRECATED2(X, reason)
34
+
35
+ /** @deprecated Use @ref LCB_CNTL_IP6POLICY via lcb_cntl() */
36
+ LCB_DEPR_API2(void lcb_behavior_set_ipv6(lcb_t instance, lcb_ipv6_t mode), "Use LCB_CNTL_IP6POLICY");
37
+ /** @deprecated Use @ref LCB_CNTL_IP6POLICY via lcb_cntl() */
38
+ LCB_DEPR_API2(lcb_ipv6_t lcb_behavior_get_ipv6(lcb_t instance), "Use LCB_CNTL_IP6POLICY");
39
+ /** @deprecated Use @ref LCB_CNTL_CONFERRTHRESH via lcb_cntl() */
40
+ LCB_DEPR_API2(void lcb_behavior_set_config_errors_threshold(lcb_t instance, lcb_size_t num_events),
41
+ "Use LCB_CNTL_CONFERRTHRESH");
42
+ /** @deprecated Use @ref LCB_CNTL_CONFERRTHRESH via lcb_cntl() */
43
+ LCB_DEPR_API2(lcb_size_t lcb_behavior_get_config_errors_threshold(lcb_t instance),
44
+ "Use LCB_CNTL_CONFERRTHRESH");
45
+ /** @deprecated Use @ref LCB_CNTL_OP_TIMEOUT via lcb_cntl() */
46
+ LCB_DEPR_API2(void lcb_set_timeout(lcb_t instance, lcb_uint32_t usec),
47
+ "Use LCB_CNTL_OP_TIMEOUT");
48
+ /** @deprecated Use @ref LCB_CNTL_OP_TIMEOUT via lcb_cntl() */
49
+ LCB_DEPR_API2(lcb_uint32_t lcb_get_timeout(lcb_t instance),
50
+ "Use LCB_CNTL_OP_TIMEOUT");
51
+ /** @deprecated Use @ref LCB_CNTL_VIEW_TIMEOUT via lcb_cntl() */
52
+ LCB_DEPR_API2(void lcb_set_view_timeout(lcb_t instance, lcb_uint32_t usec),
53
+ "Use LCB_CNTL_VIEW_TIMEOUT");
54
+ /** @deprecated Use @ref LCB_CNTL_VIEW_TIMEOUT via lcb_cntl() */
55
+ LCB_DEPR_API2(lcb_uint32_t lcb_get_view_timeout(lcb_t instance),
56
+ "Use LCB_CNTL_VIEW_TIMEOUT");
57
+
58
+ /**
59
+ * @deprecated Do not use this function. Check the error code of the specific operation
60
+ * to determine if something succeeded or not. Because the library has many
61
+ * asynchronous "flows" of control, determining the "last error" is not very
62
+ * fruitful. Since most API calls are themselves only schedule-related, they cannot
63
+ * possibly derive a "Real" error either
64
+ */
65
+ LCB_DEPR_API2(lcb_error_t lcb_get_last_error(lcb_t instance),
66
+ "This function does not returning meaningful information. Use the operation callbacks "
67
+ "and/or bootstrap callbacks");
68
+
69
+ /** @deprecated This function does nothing */
70
+ LCB_DEPR_API2(void lcb_flush_buffers(lcb_t instance, const void *cookie),
71
+ "This function does nothing");
72
+
73
+ /** I'm not sure what uses this anymore */
74
+ typedef enum {
75
+ LCB_VBUCKET_STATE_ACTIVE = 1, /* Actively servicing a vbucket. */
76
+ LCB_VBUCKET_STATE_REPLICA = 2, /* Servicing a vbucket as a replica only. */
77
+ LCB_VBUCKET_STATE_PENDING = 3, /* Pending active. */
78
+ LCB_VBUCKET_STATE_DEAD = 4 /* Not in use, pending deletion. */
79
+ } lcb_vbucket_state_t;
80
+
81
+ typedef void (*lcb_error_callback)(lcb_t instance, lcb_error_t error, const char *errinfo);
82
+
83
+ /**
84
+ * @deprecated Use the logging API (@ref LCB_CNTL_LOGGER) instead to receive error
85
+ * information. For programmatic errors, use the operations interface. For bootstrap
86
+ * status, use lcb_get_bootstrap_status() and lcb_set_bootstrap_callback()
87
+ */
88
+ LCB_DEPR_API2(lcb_error_callback lcb_set_error_callback(lcb_t, lcb_error_callback),
89
+ "This function only reports bootstrap errors. Use lcb_set_bootstrap_callback instead");
90
+
91
+
92
+
93
+ /**
94
+ * Timer stuff is deprecated. It should not be used externally, and internal
95
+ * code should use the new lcbio_timer_ functions
96
+ */
97
+ struct lcb_timer_st;
98
+ typedef struct lcb_timer_st *lcb_timer_t;
99
+ typedef void (*lcb_timer_callback)(lcb_timer_t timer, lcb_t instance, const void *cookie);
100
+ LCB_DEPR_API(lcb_timer_t lcb_timer_create(lcb_t instance, const void *command_cookie, lcb_uint32_t usec, int periodic, lcb_timer_callback callback, lcb_error_t *error));
101
+ LCB_DEPR_API(lcb_error_t lcb_timer_destroy(lcb_t instance, lcb_timer_t timer));
102
+
103
+ typedef enum lcb_compat_t { LCB_MEMCACHED_CLUSTER = 0x00, LCB_CACHED_CONFIG = 0x01 } lcb_compat_t;
104
+ typedef lcb_compat_t lcb_cluster_t;
105
+ struct lcb_memcached_st { const char *serverlist; const char *username; const char *password; };
106
+ struct lcb_cached_config_st {
107
+ const char *cachefile;
108
+ struct lcb_create_st createopt;
109
+ };
110
+
111
+ /**
112
+ * @deprecated
113
+ * Use @ref LCB_CNTL_CONFIGCACHE for configuration cache options
114
+ */
115
+ #define lcb_create_compat lcb__create_compat_230
116
+ LCB_DEPR_API2(lcb_error_t lcb_create_compat(lcb_compat_t type, const void *specific, lcb_t *instance, struct lcb_io_opt_st *io),
117
+ "Use memcached:// for legacy memcached. For config cache, use LCB_CNTL_CONFIGCACHE");
118
+
119
+ typedef enum {
120
+ LCB_ASYNCHRONOUS = 0x00,
121
+ LCB_SYNCHRONOUS = 0xff
122
+ } lcb_syncmode_t;
123
+ LCB_DEPR_API2(void lcb_behavior_set_syncmode(lcb_t, lcb_syncmode_t),
124
+ "Syncmode will be removed in future versions. Use lcb_wait() instead");
125
+ LCB_DEPR_API2(lcb_syncmode_t lcb_behavior_get_syncmode(lcb_t),
126
+ "Syncmode will be removed in future versions. Use lcb_wait() instead");
127
+
128
+ LCB_DEPR_API2(const char *lcb_get_host(lcb_t),
129
+ "Use lcb_get_node(instance, LCB_NODE_HTCONFIG, 0)");
130
+ LCB_DEPR_API2(const char *lcb_get_port(lcb_t),
131
+ "Use lcb_get_node(instance, LCB_NODE_HTCONFIG, 0)");
132
+
133
+ /* STRUCTURE ABBREV ID MAXVER */
134
+ #define LCB_XSSIZES(X) \
135
+ X(struct lcb_create_st, C_ST, 0, 3) \
136
+ X(struct lcb_create_io_ops_st, C_I_O_ST, 1, 1) \
137
+ \
138
+ X(struct lcb_get_cmd_st, G_C_ST, 2, 0) \
139
+ X(struct lcb_get_replica_cmd_st, G_R_C_ST, 3, 1) \
140
+ X(struct lcb_unlock_cmd_st, U_C_ST, 4, 0) \
141
+ X(lcb_touch_cmd_t, T_C_ST, 5, 0) \
142
+ X(struct lcb_store_cmd_st, S_C_ST, 6, 0) \
143
+ X(struct lcb_arithmetic_cmd_st, A_C_ST, 7, 0) \
144
+ X(struct lcb_observe_cmd_st, O_C_ST, 8, 0) \
145
+ X(struct lcb_remove_cmd_st, R_C_ST, 9, 0) \
146
+ X(struct lcb_http_cmd_st, H_C_ST, 10, 1) \
147
+ X(struct lcb_server_stats_cmd_st, S_S_C_ST, 11, 0) \
148
+ X(struct lcb_server_version_cmd_st, S_V_C_ST, 12, 0) \
149
+ X(struct lcb_verbosity_cmd_st, V_C_ST, 13, 0) \
150
+ X(struct lcb_flush_cmd_st, F_C_ST, 14, 0) \
151
+ \
152
+ X(lcb_get_resp_t, G_R_ST, 15, 0) \
153
+ X(lcb_store_resp_t, S_R_ST, 16, 0) \
154
+ X(lcb_remove_resp_t, R_R_ST, 17, 0) \
155
+ X(lcb_touch_resp_t, T_R_ST, 18, 0) \
156
+ X(lcb_unlock_resp_t, U_R_ST, 19, 0) \
157
+ X(lcb_arithmetic_resp_t, A_R_ST, 20, 0) \
158
+ X(lcb_observe_resp_t, O_R_ST, 21, 0) \
159
+ X(lcb_http_resp_t, H_R_ST, 22, 0) \
160
+ X(lcb_server_stat_resp_t, S_S_R_ST, 23, 0) \
161
+ X(lcb_server_version_resp_t, S_V_R_ST, 24, 0) \
162
+ X(lcb_verbosity_resp_t, V_R_ST, 25, 0) \
163
+ X(lcb_flush_resp_t, F_R_ST, 26, 0)
164
+
165
+ typedef enum {
166
+ #define X(sname, sabbrev, idval, vernum) \
167
+ LCB_##sabbrev##_ID = idval, LCB_##sabbrev##_V = vernum,
168
+ LCB_XSSIZES(X)
169
+ LCB_ST_M = 26
170
+ #undef X
171
+ } lcb__STRUCTSIZES;
172
+
173
+ #define lcb_verify_compiler_setup() ( \
174
+ lcb_verify_struct_size(LCB_C_ST_ID, LCB_C_ST_V, sizeof(struct lcb_create_st)) == LCB_SUCCESS && \
175
+ lcb_verify_struct_size(LCB_C_I_O_ST_ID, LCB_C_I_O_ST_V, sizeof(struct lcb_create_io_ops_st)) == LCB_SUCCESS && \
176
+ lcb_verify_struct_size(LCB_G_C_ST_ID, LCB_G_C_ST_V, sizeof(struct lcb_get_cmd_st)) == LCB_SUCCESS && \
177
+ lcb_verify_struct_size(LCB_G_R_C_ST_ID, LCB_G_R_C_ST_V, sizeof(struct lcb_get_replica_cmd_st)) == LCB_SUCCESS && \
178
+ lcb_verify_struct_size(LCB_U_C_ST_ID, LCB_U_C_ST_V, sizeof(struct lcb_unlock_cmd_st)) == LCB_SUCCESS && \
179
+ lcb_verify_struct_size(LCB_T_C_ST_ID, LCB_T_C_ST_V, sizeof(lcb_touch_cmd_t)) == LCB_SUCCESS && \
180
+ lcb_verify_struct_size(LCB_S_C_ST_ID, LCB_S_C_ST_V, sizeof(struct lcb_store_cmd_st)) == LCB_SUCCESS && \
181
+ lcb_verify_struct_size(LCB_A_C_ST_ID, LCB_A_C_ST_V, sizeof(struct lcb_arithmetic_cmd_st)) == LCB_SUCCESS && \
182
+ lcb_verify_struct_size(LCB_O_C_ST_ID, LCB_O_C_ST_V, sizeof(struct lcb_observe_cmd_st)) == LCB_SUCCESS && \
183
+ lcb_verify_struct_size(LCB_R_C_ST_ID, LCB_R_C_ST_V, sizeof(struct lcb_remove_cmd_st)) == LCB_SUCCESS && \
184
+ lcb_verify_struct_size(LCB_H_C_ST_ID, LCB_H_C_ST_V, sizeof(struct lcb_http_cmd_st)) == LCB_SUCCESS && \
185
+ lcb_verify_struct_size(LCB_S_S_C_ST_ID, LCB_S_S_C_ST_V, sizeof(struct lcb_server_stats_cmd_st)) == LCB_SUCCESS && \
186
+ lcb_verify_struct_size(LCB_S_V_C_ST_ID, LCB_S_V_C_ST_V, sizeof(struct lcb_server_version_cmd_st)) == LCB_SUCCESS && \
187
+ lcb_verify_struct_size(LCB_V_C_ST_ID, LCB_V_C_ST_V, sizeof(struct lcb_verbosity_cmd_st)) == LCB_SUCCESS && \
188
+ lcb_verify_struct_size(LCB_F_C_ST_ID, LCB_F_C_ST_V, sizeof(struct lcb_flush_cmd_st)) == LCB_SUCCESS && \
189
+ lcb_verify_struct_size(LCB_G_R_ST_ID, LCB_G_R_ST_V, sizeof(lcb_get_resp_t)) == LCB_SUCCESS &&\
190
+ lcb_verify_struct_size(LCB_S_R_ST_ID, LCB_S_R_ST_V, sizeof(lcb_store_resp_t)) == LCB_SUCCESS && \
191
+ lcb_verify_struct_size(LCB_R_R_ST_ID, LCB_R_R_ST_V, sizeof(lcb_remove_resp_t)) == LCB_SUCCESS && \
192
+ lcb_verify_struct_size(LCB_T_R_ST_ID, LCB_T_R_ST_V, sizeof(lcb_touch_resp_t)) == LCB_SUCCESS && \
193
+ lcb_verify_struct_size(LCB_U_R_ST_ID, LCB_U_R_ST_V, sizeof(lcb_unlock_resp_t)) == LCB_SUCCESS && \
194
+ lcb_verify_struct_size(LCB_A_R_ST_ID, LCB_A_R_ST_V, sizeof(lcb_arithmetic_resp_t)) == LCB_SUCCESS && \
195
+ lcb_verify_struct_size(LCB_O_R_ST_ID, LCB_O_R_ST_V, sizeof(lcb_observe_resp_t)) == LCB_SUCCESS && \
196
+ lcb_verify_struct_size(LCB_H_R_ST_ID, LCB_H_R_ST_V, sizeof(lcb_http_resp_t)) == LCB_SUCCESS && \
197
+ lcb_verify_struct_size(LCB_S_S_R_ST_ID, LCB_S_S_R_ST_V, sizeof(lcb_server_stat_resp_t)) == LCB_SUCCESS && \
198
+ lcb_verify_struct_size(LCB_S_V_R_ST_ID, LCB_S_V_R_ST_V, sizeof(lcb_server_version_resp_t)) == LCB_SUCCESS && \
199
+ lcb_verify_struct_size(LCB_V_R_ST_ID, LCB_V_R_ST_V, sizeof(lcb_verbosity_resp_t)) == LCB_SUCCESS && \
200
+ lcb_verify_struct_size(LCB_F_R_ST_ID, LCB_F_R_ST_V, sizeof(lcb_flush_resp_t)) == LCB_SUCCESS \
201
+ )
202
+
203
+ /**
204
+ * Verify that libcouchbase and yourself have the same size for a
205
+ * certain version of a struct. Using different alignment / struct
206
+ * packing will give you strange results..
207
+ *
208
+ * @param id the id of the structure to check
209
+ * @param version the version of the structure to check
210
+ * @param size the expected size of the structure
211
+ * @return LCB_SUCCESS on success
212
+ */
213
+ LIBCOUCHBASE_API
214
+ lcb_error_t lcb_verify_struct_size(lcb_uint32_t id, lcb_uint32_t version,
215
+ lcb_size_t size);
216
+
217
+ /** Deprecated cntls */
218
+
219
+ /**@deprecated It is currently not possible to adjust buffer sizes */
220
+ #define LCB_CNTL_RBUFSIZE 0x02
221
+ /**@deprecated It is currently not possible to adjust buffer sizes */
222
+ #define LCB_CNTL_WBUFSIZE 0x03
223
+ /** @deprecated */
224
+ #define LCB_CNTL_SYNCMODE 0x0a
225
+ /**@deprecated Initial connections are always attempted */
226
+ #define LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT 0x13
227
+
228
+ /**@deprecated - Use error classifiers */
229
+ #define lcb_is_error_enomem(a) ((a == LCB_CLIENT_ENOMEM) || (a == LCB_ENOMEM))
230
+ /**@deprecated - Use error classifiers */
231
+ #define lcb_is_error_etmpfail(a) ((a == LCB_CLIENT_ETMPFAIL) || (a == LCB_ETMPFAIL))
232
+
233
+ typedef enum {
234
+ LCB_CONFIGURATION_NEW = 0x00,
235
+ LCB_CONFIGURATION_CHANGED = 0x01,
236
+ LCB_CONFIGURATION_UNCHANGED = 0x02
237
+ } lcb_configuration_t;
238
+
239
+ typedef void (*lcb_configuration_callback)(lcb_t instance, lcb_configuration_t config);
240
+
241
+ /**@deprecated - Use lcb_set_bootstrap_callback() */
242
+ LCB_DEPR_API2(
243
+ lcb_configuration_callback lcb_set_configuration_callback(lcb_t, lcb_configuration_callback),
244
+ "use lcb_set_bootstrap_callback() to determine when client is ready");
245
+
246
+ /* Deprecated HTTP "Status Aliases" */
247
+ typedef enum {
248
+ LCB_HTTP_STATUS_CONTINUE = 100,
249
+ LCB_HTTP_STATUS_SWITCHING_PROTOCOLS = 101,
250
+ LCB_HTTP_STATUS_PROCESSING = 102,
251
+ LCB_HTTP_STATUS_OK = 200,
252
+ LCB_HTTP_STATUS_CREATED = 201,
253
+ LCB_HTTP_STATUS_ACCEPTED = 202,
254
+ LCB_HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION = 203,
255
+ LCB_HTTP_STATUS_NO_CONTENT = 204,
256
+ LCB_HTTP_STATUS_RESET_CONTENT = 205,
257
+ LCB_HTTP_STATUS_PARTIAL_CONTENT = 206,
258
+ LCB_HTTP_STATUS_MULTI_STATUS = 207,
259
+ LCB_HTTP_STATUS_MULTIPLE_CHOICES = 300,
260
+ LCB_HTTP_STATUS_MOVED_PERMANENTLY = 301,
261
+ LCB_HTTP_STATUS_FOUND = 302,
262
+ LCB_HTTP_STATUS_SEE_OTHER = 303,
263
+ LCB_HTTP_STATUS_NOT_MODIFIED = 304,
264
+ LCB_HTTP_STATUS_USE_PROXY = 305,
265
+ LCB_HTTP_STATUS_UNUSED = 306,
266
+ LCB_HTTP_STATUS_TEMPORARY_REDIRECT = 307,
267
+ LCB_HTTP_STATUS_BAD_REQUEST = 400,
268
+ LCB_HTTP_STATUS_UNAUTHORIZED = 401,
269
+ LCB_HTTP_STATUS_PAYMENT_REQUIRED = 402,
270
+ LCB_HTTP_STATUS_FORBIDDEN = 403,
271
+ LCB_HTTP_STATUS_NOT_FOUND = 404,
272
+ LCB_HTTP_STATUS_METHOD_NOT_ALLOWED = 405,
273
+ LCB_HTTP_STATUS_NOT_ACCEPTABLE = 406,
274
+ LCB_HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED = 407,
275
+ LCB_HTTP_STATUS_REQUEST_TIMEOUT = 408,
276
+ LCB_HTTP_STATUS_CONFLICT = 409,
277
+ LCB_HTTP_STATUS_GONE = 410,
278
+ LCB_HTTP_STATUS_LENGTH_REQUIRED = 411,
279
+ LCB_HTTP_STATUS_PRECONDITION_FAILED = 412,
280
+ LCB_HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE = 413,
281
+ LCB_HTTP_STATUS_REQUEST_URI_TOO_LONG = 414,
282
+ LCB_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415,
283
+ LCB_HTTP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE = 416,
284
+ LCB_HTTP_STATUS_EXPECTATION_FAILED = 417,
285
+ LCB_HTTP_STATUS_UNPROCESSABLE_ENTITY = 422,
286
+ LCB_HTTP_STATUS_LOCKED = 423,
287
+ LCB_HTTP_STATUS_FAILED_DEPENDENCY = 424,
288
+ LCB_HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
289
+ LCB_HTTP_STATUS_NOT_IMPLEMENTED = 501,
290
+ LCB_HTTP_STATUS_BAD_GATEWAY = 502,
291
+ LCB_HTTP_STATUS_SERVICE_UNAVAILABLE = 503,
292
+ LCB_HTTP_STATUS_GATEWAY_TIMEOUT = 504,
293
+ LCB_HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED = 505,
294
+ LCB_HTTP_STATUS_INSUFFICIENT_STORAGE = 507
295
+ } lcb_http_status_t;
296
+
297
+ #ifdef __cplusplus
298
+ }
299
+ #endif
300
+ #endif
@@ -0,0 +1,595 @@
1
+ /* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2012 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
+ * @file
20
+ * @brief
21
+ * Definition of all of the error codes used by libcouchbase
22
+ */
23
+ #ifndef LIBCOUCHBASE_ERROR_H
24
+ #define LIBCOUCHBASE_ERROR_H 1
25
+
26
+ #ifndef LIBCOUCHBASE_COUCHBASE_H
27
+ #error "Include libcouchbase/couchbase.h instead"
28
+ #endif
29
+
30
+
31
+ /**
32
+ * @ingroup lcb-public-api
33
+ * @defgroup lcb-error-codes Error Codes
34
+ * @brief Status codes returned by the library
35
+ *
36
+ * @addtogroup lcb-error-codes
37
+ * @{
38
+ */
39
+ #ifdef __cplusplus
40
+ extern "C" {
41
+ #endif
42
+
43
+ /**
44
+ * @brief Error Categories
45
+ *
46
+ * These error categories are assigned as a series of OR'd bits to each
47
+ * of the error codes in lcb_error_t.
48
+ *
49
+ * @see lcb_get_errtype
50
+ */
51
+ typedef enum {
52
+ /** Error type indicating a likely issue in user input */
53
+ LCB_ERRTYPE_INPUT = 1 << 0,
54
+
55
+ /** Error type indicating a likely network failure */
56
+ LCB_ERRTYPE_NETWORK = 1 << 1,
57
+
58
+ /** Error type indicating a fatal condition within the server or library */
59
+ LCB_ERRTYPE_FATAL = 1 << 2,
60
+
61
+ /** Error type indicating a transient condition within the server */
62
+ LCB_ERRTYPE_TRANSIENT = 1 << 3,
63
+
64
+ /** Error type indicating a negative server reply for the data */
65
+ LCB_ERRTYPE_DATAOP = 1 << 4,
66
+
67
+ /** Error codes which should never be visible to the user */
68
+ LCB_ERRTYPE_INTERNAL = 1 << 5,
69
+
70
+ /** Error code indicating a plugin failure */
71
+ LCB_ERRTYPE_PLUGIN = 1 << 6,
72
+
73
+ /** Error code indicating the server is under load */
74
+ LCB_ERRTYPE_SRVLOAD = 1 << 7,
75
+
76
+ /** Error code indicating the server generated this message */
77
+ LCB_ERRTYPE_SRVGEN = 1 << 8,
78
+
79
+ /**
80
+ * Error code indicates document (fulldoc) access ok, but
81
+ * error in performing subdocument operation. Note that this only
82
+ * covers errors which relate to a specific operation, rather than
83
+ * operations which prevent _any_ subdoc operation from executing.
84
+ */
85
+ LCB_ERRTYPE_SUBDOC = 1 << 9
86
+ } lcb_errflags_t;
87
+
88
+ /* PRIVATE. This is just here to instruct/inform users to use the more detailed codes */
89
+ #define LCB__ERR_USEDETAILS \
90
+ "Enable detailed error codes (via LCB_CNTL_DETAILED_ERRCODES, or via " \
91
+ "`detailed_errcodes` in the connection string) and/or enable logging to " \
92
+ "get more information"
93
+
94
+ /**
95
+ * @brief XMacro for all error types
96
+ * @param X macro to be invoked for each function. This will accept the following
97
+ * arguments:
98
+ * - Raw unquoted literal error identifier (e.g. `LCB_EINVAL`)
99
+ * - Code for the error (e.g. `0x23`)
100
+ * - Set of categories for the specific error (e.g. `LCB_ERRTYPE_FOO|LCB_ERRTYPE_BAR`)
101
+ * - Quoted string literal describing the error (e.g. `"This is sad"`)
102
+ */
103
+ #define LCB_XERR(X) \
104
+ /** Success */ \
105
+ X(LCB_SUCCESS, 0x00, 0, "Success (Not an error)") \
106
+ \
107
+ X(LCB_AUTH_CONTINUE, 0x01, LCB_ERRTYPE_INTERNAL|LCB_ERRTYPE_FATAL|LCB_ERRTYPE_SRVGEN, \
108
+ "Error code used internally within libcouchbase for SASL auth. Should " \
109
+ "not be visible from the API") \
110
+ \
111
+ /**This error code is received in callbacks when connecting or reconnecting
112
+ to the cluster. If received during initial bootstrap
113
+ (i.e. lcb_get_bootstrap_status()) then it should be considered a fatal
114
+ errror. This error should not be visible after initial bootstrap.
115
+
116
+ This error may also be received if CCCP bootstrap is used and the bucket does
117
+ not exist.*/ \
118
+ X(LCB_AUTH_ERROR, 0x02, LCB_ERRTYPE_FATAL|LCB_ERRTYPE_INPUT, \
119
+ "Authentication failed. You may have provided an invalid " \
120
+ "username/password combination") \
121
+ \
122
+ /**This error is received in callbacks. It is a result of trying to perform
123
+ an lcb_arithmetic() operation on an item which has an existing value that
124
+ cannot be parsed as a number. */ \
125
+ X(LCB_DELTA_BADVAL, 0x03, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN, \
126
+ "The value requested to be incremented is not stored as a number") \
127
+ \
128
+ /**This error is received in callbacks. It indicates that the key and value
129
+ exceeded the constraints within the server. The current constraints are
130
+ 150 bytes for a key and 20MB for a value */ \
131
+ X(LCB_E2BIG, 0x04, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN, \
132
+ "The object requested is too big to store in the server") \
133
+ \
134
+ X(LCB_EBUSY, 0x05, LCB_ERRTYPE_TRANSIENT, "The server is busy. Try again later") \
135
+ /**Internal error within the library. This may be a result of a bug */ \
136
+ X(LCB_EINTERNAL, 0x06, LCB_ERRTYPE_INTERNAL, "Internal libcouchbase error") \
137
+ \
138
+ /**If returned from an API call, it indicates invalid values were passed
139
+ to the function. If received within a callback, it indicates that a
140
+ malformed packet was sent to the server. */ \
141
+ X(LCB_EINVAL, 0x07, LCB_ERRTYPE_INPUT, "Invalid input/arguments") \
142
+ \
143
+ /**This code is received in callbacks. It means the server has no more memory
144
+ left to store or modify the item. */ \
145
+ X(LCB_ENOMEM, 0x08, LCB_ERRTYPE_TRANSIENT, \
146
+ "The server is out of memory. Try again later") \
147
+ \
148
+ X(LCB_ERANGE, 0x09, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN, \
149
+ "Invalid range") \
150
+ \
151
+ /**Generic error */ \
152
+ X(LCB_ERROR, 0x0A, 0, "Generic error") \
153
+ \
154
+ /**This error is received in callbacks from the server itself to indicate
155
+ that it could not perform the requested operation. This is usually due to memory and/or
156
+ resource constraints on the server. This error may also be returned if a
157
+ key has been locked (see lcb_get()) and an operation has been performed on it
158
+ without unlocking the item (see lcb_unlock(), or pass the correct CAS value
159
+ to a mutation function). */ \
160
+ X(LCB_ETMPFAIL, 0x0B, LCB_ERRTYPE_TRANSIENT|LCB_ERRTYPE_SRVLOAD|LCB_ERRTYPE_SRVGEN, \
161
+ "Temporary failure received from server. Try again later") \
162
+ \
163
+ /**The key already exists in the cluster. This error code is received within
164
+ callbacks as a result of an _add_ operation in which the key already exists.
165
+ It is also received for other operations in which a CAS was specified but has
166
+ changed on the server. */ \
167
+ X(LCB_KEY_EEXISTS, 0x0C, LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN, \
168
+ "The key already exists in the server. If you have supplied a CAS then " \
169
+ "the key exists with a CAS value different than specified") \
170
+ \
171
+ /**Received in callbacks to indicate that the server does not contain the item */ \
172
+ X(LCB_KEY_ENOENT, 0x0D, LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN, \
173
+ "The key does not exist on the server") \
174
+ \
175
+ /**Error code thrown if an I/O plugin could not be located */ \
176
+ X(LCB_DLOPEN_FAILED, 0x0E, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_FATAL|LCB_ERRTYPE_PLUGIN, \
177
+ "Could not locate plugin library") \
178
+ \
179
+ /**Error code thrown of an I/O plugin did not contain a proper initialization routine */ \
180
+ X(LCB_DLSYM_FAILED, 0x0F, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_FATAL|LCB_ERRTYPE_PLUGIN, \
181
+ "Required plugin initializer not found") \
182
+ \
183
+ /** This is a generic error code returned for various forms of socket
184
+ operation failures. Newer applications are recommended to enable the
185
+ @ref LCB_CNTL_DETAILED_ERRCODES setting via lcb_cntl() and receive more
186
+ detailed information about a socket error.
187
+
188
+ @see lcb_cntl(), @ref LCB_CNTL_DETAILED_ERRCODES */ \
189
+ X(LCB_NETWORK_ERROR, 0x10, LCB_ERRTYPE_NETWORK, \
190
+ "Generic network failure. " LCB__ERR_USEDETAILS) \
191
+ \
192
+ /**Error code received in callbacks if the command was forwarded to the wrong
193
+ server (for example, during a rebalance) and the library settings are configured
194
+ that the command should not be remapped to a new server */ \
195
+ X(LCB_NOT_MY_VBUCKET, 0x11, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_TRANSIENT|LCB_ERRTYPE_SRVGEN, \
196
+ "The server which received this command claims it is not hosting this key") \
197
+ \
198
+ /**Received in callbacks as a response to an LCB_APPEND or LCB_PREPEND on an
199
+ item that did not exist in the cluster. Equivalent to LCB_KEY_ENOENT */ \
200
+ X(LCB_NOT_STORED, 0x12, LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN, \
201
+ "Item not stored (did you try to append/prepend to a missing key?)") \
202
+ \
203
+ /**Returned from API calls if a specific operation is valid but is unsupported
204
+ in the current version or state of the library. May also be received in a
205
+ callback if the cluster does not support the operation.
206
+
207
+ This will be returned for unknown settings passed to lcb_cntl() unless
208
+ @ref LCB_CNTL_DETAILED_ERRCODES is set
209
+ */ \
210
+ X(LCB_NOT_SUPPORTED, 0x13, 0, "Operation not supported") \
211
+ \
212
+ /**Received in callbacks if the cluster does not know about the command.
213
+ Similar to LCB_NOT_SUPPORTED */ \
214
+ X(LCB_UNKNOWN_COMMAND, 0x14, LCB_ERRTYPE_SRVGEN, "Unknown command") \
215
+ \
216
+ /**Error code received if the hostname specified could not be found. It may
217
+ also be received if a socket could not be created to the host supplied.
218
+
219
+ A more detailed error code may be returned instead if
220
+ @ref LCB_CNTL_DETAILED_ERRCODES is set.*/ \
221
+ X(LCB_UNKNOWN_HOST, 0x15, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_INPUT, \
222
+ "DNS/Hostname lookup failed") \
223
+ \
224
+ /**Error code received if the server replied with an unexpected response */ \
225
+ X(LCB_PROTOCOL_ERROR, 0x16, LCB_ERRTYPE_NETWORK, \
226
+ "Data received on socket was not in the expected format") \
227
+ \
228
+ /**Error code received in callbacks for operations which did not receive a
229
+ reply from the server within the timeout limit.
230
+ @see LCB_CNTL_OP_TIMEOUT */ \
231
+ X(LCB_ETIMEDOUT, 0x17, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_TRANSIENT, \
232
+ "Client-Side timeout exceeded for operation. Inspect network conditions " \
233
+ "or increase the timeout") \
234
+ \
235
+ /** @see LCB_NETWORK_ERROR, LCB_UNKNOWN_HOST, @ref LCB_CNTL_DETAILED_ERRCODES */ \
236
+ X(LCB_CONNECT_ERROR, 0x18, LCB_ERRTYPE_NETWORK, \
237
+ "Error while establishing TCP connection. " LCB__ERR_USEDETAILS) \
238
+ \
239
+ /** Received on initial bootstrap if the bucket does not exist. Note that
240
+ for CCCP bootstrap, @ref LCB_AUTH_ERROR will be received instead */ \
241
+ X(LCB_BUCKET_ENOENT, 0x19, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_FATAL, \
242
+ "The bucket requested does not exist") \
243
+ \
244
+ /** Client could not allocate memory for internal structures */ \
245
+ X(LCB_CLIENT_ENOMEM, 0x1A, LCB_ERRTYPE_FATAL, \
246
+ "Memory allocation for libcouchbase failed. Severe problems ahead") \
247
+ \
248
+ /** Client could not schedule the request. This is typically received when
249
+ an operation is requested before the initial bootstrap has completed */ \
250
+ X(LCB_CLIENT_ENOCONF, 0x1B, LCB_ERRTYPE_TRANSIENT, \
251
+ "Client not bootstrapped. Ensure bootstrap/connect was attempted and was successful") \
252
+ \
253
+ X(LCB_EBADHANDLE, 0x1C, LCB_ERRTYPE_INPUT, \
254
+ "Bad handle type for operation. " \
255
+ "You cannot perform administrative operations on a data handle, or data "\
256
+ "operations on a cluster handle") \
257
+ \
258
+ X(LCB_SERVER_BUG, 0x1D, 0, "Encountered a server bug") \
259
+ \
260
+ X(LCB_PLUGIN_VERSION_MISMATCH, 0x1E, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_FATAL|LCB_ERRTYPE_PLUGIN, \
261
+ "This version of libcouchbase cannot load the specified plugin") \
262
+ \
263
+ X(LCB_INVALID_HOST_FORMAT, 0x1F, LCB_ERRTYPE_INPUT, \
264
+ "Hostname specified for URI is in an invalid format") \
265
+ \
266
+ X(LCB_INVALID_CHAR, 0x20, LCB_ERRTYPE_INPUT, "Illegal characted") \
267
+ \
268
+ /** Received in response to the durability API call, if the amount of nodes
269
+ or replicas to persist/replicate to exceed the total number of replicas the
270
+ bucket was configured with. */ \
271
+ X(LCB_DURABILITY_ETOOMANY, 0x21, LCB_ERRTYPE_INPUT, \
272
+ "Durability constraints requires more nodes/replicas than the cluster "\
273
+ "configuration allows. Durability constraints will never be satisfied") \
274
+ \
275
+ /** Received in scheduling if a command with the same key was specified more
276
+ than once. Some commands will accept this, but others (notably `observe`)
277
+ will not */ \
278
+ X(LCB_DUPLICATE_COMMANDS, 0x22, LCB_ERRTYPE_INPUT, \
279
+ "The same key was specified more than once in the command list") \
280
+ \
281
+ /** This error is received from API calls if the master node for the vBucket
282
+ the key has been hashed to is not present. This will happen in the result
283
+ of a node failover where no replica exists to replace it. */ \
284
+ X(LCB_NO_MATCHING_SERVER, 0x23, LCB_ERRTYPE_TRANSIENT, \
285
+ "The node the request was mapped to does not exist in the current cluster " \
286
+ "map. This may be the result of a failover.") \
287
+ \
288
+ /** Received during initial creation (lcb_create()) if an environment variable
289
+ was specified with an incorrect or invalid value.
290
+
291
+ @see @ref lcb-env-vars-page */ \
292
+ X(LCB_BAD_ENVIRONMENT, 0x24, LCB_ERRTYPE_FATAL|LCB_ERRTYPE_INPUT, \
293
+ "The value for an environment variable recognized by libcouchbase was " \
294
+ "specified in an incorrect format. Check your environment for entries " \
295
+ "starting with 'LCB_' or 'LIBCOUCHBASE_'") \
296
+ \
297
+ X(LCB_BUSY, 0x25, LCB_ERRTYPE_INTERNAL, "Busy. This is an internal error") \
298
+ \
299
+ /** Received from lcb_create() if the username does not match the bucket */ \
300
+ X(LCB_INVALID_USERNAME, 0x26, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_FATAL, \
301
+ "The username must match the bucket name (or be NULL) for data access") \
302
+ \
303
+ X(LCB_CONFIG_CACHE_INVALID, 0x27, LCB_ERRTYPE_INPUT, \
304
+ "The contents of the configuration cache file were invalid. Configuration " \
305
+ "will be fetched from the network") \
306
+ \
307
+ /** Received during initial bootstrap if the library was configured to force
308
+ the usage of a specific SASL mechanism and the server did not support this
309
+ mechanism. @see LCB_CNTL_FORCE_SASL_MECH */ \
310
+ X(LCB_SASLMECH_UNAVAILABLE, 0x28, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_FATAL, \
311
+ "The requested SASL mechanism was not supported by the server. Either " \
312
+ "upgrade the server or change the mechanism requirements") \
313
+ \
314
+ /** Received in the HTTP callback if the response was redirected too many
315
+ times. @see LCB_CNTL_MAX_REDIRECTS */ \
316
+ X(LCB_TOO_MANY_REDIRECTS, 0x29, LCB_ERRTYPE_NETWORK, \
317
+ "Maximum allowed number of redirects reached. See lcb_cntl and the "\
318
+ "LCB_CNTL_MAX_REDIRECTS option to modify this limit") \
319
+ \
320
+ /** May be received in operation callbacks if the cluster toplogy changed
321
+ and the library could not remap the command to a new node. This may be
322
+ because the internal structure lacked sufficient information to recreate
323
+ the packet, or because the configuration settings indicated that the command
324
+ should not be retried. @see LCB_CNTL_RETRYMODE */ \
325
+ X(LCB_MAP_CHANGED, 0x2A, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_TRANSIENT, \
326
+ "The cluster map has changed and this operation could not be completed " \
327
+ "or retried internally. Try this operation again") \
328
+ \
329
+ /** Returned from the lcb_pktfwd3() function if an incomplete packet was
330
+ passed */ \
331
+ X(LCB_INCOMPLETE_PACKET, 0x2B, LCB_ERRTYPE_TRANSIENT|LCB_ERRTYPE_INPUT, \
332
+ "Incomplete packet was passed to forward function") \
333
+ \
334
+ /** Mapped directly to the system `ECONNREFUSED` errno. This is received
335
+ in callbacks if an initial connection to the node could not be established.
336
+ Check your firewall settings and ensure the specified service is online. */ \
337
+ X(LCB_ECONNREFUSED, 0x2C, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_TRANSIENT, \
338
+ "The remote host refused the connection. Is the service up?") \
339
+ \
340
+ /** Returned in a callback if the socket connection was gracefully closed,
341
+ but the library wasn't expecting it. This may happen if the system is
342
+ being shut down.
343
+ @lcb_see_detailed_neterr */ \
344
+ X(LCB_ESOCKSHUTDOWN, 0x2D, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_TRANSIENT, \
345
+ "The remote host closed the connection") \
346
+ \
347
+ /** Returned in a callback if the socket connection was forcefully reset,
348
+ Equivalent to the system `ECONNRESET`.
349
+ @lcb_see_detailed_neterr
350
+ */ \
351
+ X(LCB_ECONNRESET, 0x2E, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_TRANSIENT, \
352
+ "The connection was forcibly reset by the remote host") \
353
+ \
354
+ /** Returned in a callback if the library could not allocated a local socket
355
+ due to TCP local port exhaustion. This means you have either found a bug
356
+ in the library or are creating too many TCP connections. Keep in mind that
357
+ a TCP connection will still occupy a slot in your system socket table even
358
+ after it has been closed (and will thus appear in a `TIME_WAIT` state).
359
+
360
+ @lcb_see_detailed_neterr
361
+ */ \
362
+ X(LCB_ECANTGETPORT, 0x2F, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_FATAL, \
363
+ "Could not assign a local port for this socket. For client sockets this means " \
364
+ "there are too many TCP sockets open") \
365
+ \
366
+ /** Returned if the library could not allocate a new file descriptor for a
367
+ socket or other resource. This may be more common on systems (such as
368
+ Mac OS X) which have relatively low limits for file descriptors. To raise
369
+ the file descriptor limit, refer to the `ulimit -n` command
370
+
371
+ @lcb_see_detailed_neterr
372
+ */ \
373
+ X(LCB_EFDLIMITREACHED, 0x30, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_FATAL, \
374
+ "The system or process has reached its maximum number of file descriptors") \
375
+ \
376
+ /** Returned in callback if the host or subnet containing a node could
377
+ not be contacted. This may be a result of a bad routing table or being
378
+ physically disconnected from the network.
379
+ @lcb_see_detailed_neterr. */ \
380
+ X(LCB_ENETUNREACH, 0x31, LCB_ERRTYPE_NETWORK|LCB_ERRTYPE_TRANSIENT, \
381
+ "The remote host was unreachable - is your network OK?") \
382
+ \
383
+ /** An unrecognized setting was passed to the lcb_cntl() function
384
+ @lcb_see_detailed_neterr */ \
385
+ X(LCB_ECTL_UNKNOWN, 0x32, LCB_ERRTYPE_INPUT, \
386
+ "Control code passed was unrecognized") \
387
+ \
388
+ /** An invalid operation was supplied for a setting to lcb_cntl(). This will
389
+ happen if you try to write to a read-only setting, or retrieve a value
390
+ which may only be set. Refer to the documentation for an individual setting
391
+ to see what modes it supports.
392
+ @lcb_see_detailed_neterr
393
+ */ \
394
+ X(LCB_ECTL_UNSUPPMODE, 0x33, LCB_ERRTYPE_INPUT, \
395
+ "Invalid modifier for cntl operation (e.g. tried to read a write-only value") \
396
+ \
397
+ /** A malformed argument was passed to lcb_cntl() for the given setting. See
398
+ the documentation for the setting to see what arguments it supports and
399
+ how they are to be supplied.
400
+
401
+ @lcb_see_detailed_neterr */ \
402
+ X(LCB_ECTL_BADARG, 0x34, LCB_ERRTYPE_INPUT, \
403
+ "Argument passed to cntl was badly formatted") \
404
+ \
405
+ /**An empty key was passed to an operation. Most commands do not accept
406
+ empty keys. */ \
407
+ X(LCB_EMPTY_KEY, 0x35, LCB_ERRTYPE_INPUT, \
408
+ "An empty key was passed to an operation") \
409
+ \
410
+ /** A problem with the SSL system was encountered. Use logging to discover
411
+ what happened. This error will only be thrown if something internal to the
412
+ SSL library failed (for example, a bad certificate or bad user input);
413
+ otherwise a network error will be thrown if an SSL connection was terminated */ \
414
+ X(LCB_SSL_ERROR, 0x36, LCB_ERRTYPE_FATAL, \
415
+ "A generic error related to the SSL subsystem was encountered. Enable logging " \
416
+ "to see more details") \
417
+ \
418
+ /** The certificate the server sent cannot be verified. This is a possible
419
+ case of a man-in-the-middle attack, but also of forgetting to supply
420
+ the path to the CA authority to the library. */ \
421
+ X(LCB_SSL_CANTVERIFY, 0x37, LCB_ERRTYPE_FATAL, \
422
+ "Client could not verify server's certificate") \
423
+ \
424
+ X(LCB_SCHEDFAIL_INTERNAL, 0x38, 0, \
425
+ "Internal error used for destroying unscheduled command data") \
426
+ \
427
+ /** An optional client feature was requested, but the current configuration
428
+ does not allow it to be used. This might be because it is not available
429
+ on a particular platform/architecture/operating system/configuration, or
430
+ it has been disabled at the time the library was built.
431
+ */ \
432
+ X(LCB_CLIENT_FEATURE_UNAVAILABLE, 0x39, LCB_ERRTYPE_INPUT, \
433
+ "The requested feature is not supported by the client, either because of " \
434
+ "settings in the configured instance, or because of options disabled at " \
435
+ "the time the library was compiled") \
436
+ \
437
+ /**An option was passed to a command which is incompatible with other
438
+ options. This may happen if two fields are mutually exclusive */ \
439
+ X(LCB_OPTIONS_CONFLICT, 0x3A, LCB_ERRTYPE_INPUT, \
440
+ "The operation structure contains conflicting options") \
441
+ \
442
+ /**Received in callbacks if an operation failed because of a negative HTTP
443
+ status code */ \
444
+ X(LCB_HTTP_ERROR, 0x3B, 0, \
445
+ "HTTP Operation failed. Inspect status code for details") \
446
+ \
447
+ /**Scheduling error received if @ref LCB_CNTL_DURABILITY_MUTATION_TOKENS was
448
+ enabled, but there is no available mutation token for the key. */ \
449
+ X(LCB_DURABILITY_NO_MUTATION_TOKENS, 0x3C, LCB_ERRTYPE_INPUT, \
450
+ "The given item does not have a mutation token associated with it. " \
451
+ "this is either because fetching mutation tokens was not enabled, or " \
452
+ "you are trying to check on something not stored by this instance") \
453
+ \
454
+ /** The server replied with an unrecognized status code */ \
455
+ X(LCB_UNKNOWN_MEMCACHED_ERROR, 0x3D, LCB_ERRTYPE_SRVGEN, \
456
+ "The server replied with an unrecognized status code. A newer version " \
457
+ "of this library may be able to decode it") \
458
+ \
459
+ /** The server replied that the given mutation has been lost */ \
460
+ X(LCB_MUTATION_LOST, 0x3E, LCB_ERRTYPE_SRVGEN,\
461
+ "The given mutation has been permanently lost due to the node failing " \
462
+ "before replication") \
463
+ X(LCB_SUBDOC_PATH_ENOENT, 0x3F, \
464
+ LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
465
+ "Sub-document path does not exist") \
466
+ X(LCB_SUBDOC_PATH_MISMATCH, 0x40,\
467
+ LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
468
+ "Type of element in sub-document path conflicts with type in document") \
469
+ X(LCB_SUBDOC_PATH_EINVAL, 0x41, \
470
+ LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
471
+ "Malformed sub-document path") \
472
+ X(LCB_SUBDOC_PATH_E2BIG, 0x42, \
473
+ LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
474
+ "Sub-document contains too many components") \
475
+ X(LCB_SUBDOC_DOC_E2DEEP, 0x43,\
476
+ LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
477
+ "Existing document contains too many levels of nesting") \
478
+ X(LCB_SUBDOC_VALUE_CANTINSERT, 0x44, \
479
+ LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
480
+ "Subdocument operation would invalidate the JSON") \
481
+ X(LCB_SUBDOC_DOC_NOTJSON, 0x45,\
482
+ LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
483
+ "Existing document is not valid JSON") \
484
+ X(LCB_SUBDOC_NUM_ERANGE, 0x46, \
485
+ LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
486
+ "The existing numeric value is too large") \
487
+ X(LCB_SUBDOC_BAD_DELTA, 0x47,\
488
+ LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
489
+ "Delta must be numeric, within the 64 bit signed range, and non-zero") \
490
+ X(LCB_SUBDOC_PATH_EEXISTS, 0x48,\
491
+ LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
492
+ "The given path already exists in the document") \
493
+ X(LCB_SUBDOC_MULTI_FAILURE, 0x49,\
494
+ LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
495
+ "Could not execute one or more multi lookups or mutations") \
496
+ X(LCB_SUBDOC_VALUE_E2DEEP, 0x4A,\
497
+ LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
498
+ "Value is too deep to insert") \
499
+ X(LCB_EINVAL_MCD, 0x4B, LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_INTERNAL, \
500
+ "A badly formatted packet was sent to the server. Please report this in a bug") \
501
+ X(LCB_EMPTY_PATH, 0x4C, LCB_ERRTYPE_INPUT, "Missing subdocument path") \
502
+ X(LCB_UNKNOWN_SDCMD, 0x4D, LCB_ERRTYPE_INPUT, "Unknown subdocument command") \
503
+ X(LCB_ENO_COMMANDS, 0x4E, LCB_ERRTYPE_INPUT, "No commands specified") \
504
+ X(LCB_QUERY_ERROR, 0x4F, LCB_ERRTYPE_SRVGEN, \
505
+ "Query execution failed. Inspect raw response object for information")
506
+
507
+ /** Error codes returned by the library. */
508
+ typedef enum {
509
+ #define X(n, v, cls, s) n = v,
510
+ LCB_XERR(X)
511
+ #undef X
512
+
513
+ #ifdef LIBCOUCHBASE_INTERNAL
514
+ /**
515
+ * This is a private value used by the tests in libcouchbase
516
+ */
517
+ LCB_MAX_ERROR_VAL,
518
+ #endif
519
+
520
+ /* The errors below this value reserver for libcouchbase usage. */
521
+ LCB_MAX_ERROR = 0x1000
522
+ } lcb_error_t;
523
+
524
+ /** @deprecated. Use new, less ambiguous identifier (@ref LCB_CLIENT_ENOCONF) */
525
+ #define LCB_CLIENT_ETMPFAIL LCB_CLIENT_ENOCONF
526
+
527
+ /** @brief If the error is a result of bad input */
528
+ #define LCB_EIFINPUT(e) (lcb_get_errtype(e) & LCB_ERRTYPE_INPUT)
529
+
530
+ /** @brief if the error is a result of a network condition */
531
+ #define LCB_EIFNET(e) (lcb_get_errtype(e) & LCB_ERRTYPE_NETWORK)
532
+
533
+ /** @brief if the error is fatal */
534
+ #define LCB_EIFFATAL(e) (lcb_get_errtype(e) & LCB_ERRTYPE_FATAL)
535
+
536
+ /** @brief if the error is transient */
537
+ #define LCB_EIFTMP(e) (lcb_get_errtype(e) & LCB_ERRTYPE_TRANSIENT)
538
+
539
+ /** @brief if the error is a routine negative server reply */
540
+ #define LCB_EIFDATA(e) (lcb_get_errtype(e) & LCB_ERRTYPE_DATAOP)
541
+
542
+ /** @brief if the error is a result of a plugin implementation */
543
+ #define LCB_EIFPLUGIN(e) (lcb_get_errtype(e) & LCB_ERRTYPE_PLUGIN)
544
+ #define LCB_EIFSRVLOAD(e) (lcb_get_errtype(e) & LCB_ERRTYPE_SRVLOAD)
545
+ #define LCB_EIFSRVGEN(e) (lcb_get_errtype(e) & LCB_ERRTYPE_SRVGEN)
546
+ #define LCB_EIFSUBDOC(e) (lcb_get_errtype(e) & LCB_ERRTYPE_SUBDOC)
547
+
548
+ /**
549
+ * @brief Get error categories for a specific code
550
+ * @param err the error received
551
+ * @return a set of flags containing the categories for the given error
552
+ * @committed
553
+ */
554
+ LIBCOUCHBASE_API
555
+ int lcb_get_errtype(lcb_error_t err);
556
+
557
+ /**
558
+ * Get a textual descrtiption for the given error code
559
+ * @param instance the instance the error code belongs to (you might
560
+ * want different localizations for the different instances)
561
+ * @param error the error code
562
+ * @return A textual description of the error message. The caller should
563
+ * <b>not</b> release the memory returned from this function.
564
+ * @committed
565
+ */
566
+ LIBCOUCHBASE_API
567
+ const char *lcb_strerror(lcb_t instance, lcb_error_t error);
568
+
569
+ /**
570
+ * This may be used in conjunction with the errmap callback if it wishes
571
+ * to fallback for default behavior for the given code.
572
+ * @uncomitted
573
+ */
574
+ LIBCOUCHBASE_API
575
+ lcb_error_t lcb_errmap_default(lcb_t instance, lcb_U16 code);
576
+
577
+ /**
578
+ * Callback for error mappings. This will be invoked when requesting whether
579
+ * the user has a possible mapping for this error code.
580
+ *
581
+ * This will be called for response codes which may be ambiguous in most
582
+ * use cases, or in cases where detailed response codes may be mapped to
583
+ * more generic ones.
584
+ */
585
+ typedef lcb_error_t (*lcb_errmap_callback)(lcb_t instance, lcb_U16 bincode);
586
+
587
+ /**@uncommitted*/
588
+ LIBCOUCHBASE_API
589
+ lcb_errmap_callback lcb_set_errmap_callback(lcb_t, lcb_errmap_callback);
590
+
591
+ #ifdef __cplusplus
592
+ }
593
+ #endif
594
+ /**@}*/
595
+ #endif