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,98 @@
1
+ /* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2010-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
+ * Basic platform includes.
20
+ */
21
+ #ifndef LCB_SYSDEFS_H
22
+ #define LCB_SYSDEFS_H
23
+
24
+ #ifdef __cplusplus
25
+ extern "C" {
26
+ #endif
27
+
28
+ #ifdef _WIN32
29
+ #include <stddef.h>
30
+ #include <winsock2.h>
31
+ #include <basetsd.h>
32
+
33
+ typedef __int64 lcb_int64_t;
34
+ typedef __int32 lcb_int32_t;
35
+ typedef SIZE_T lcb_size_t;
36
+ typedef SSIZE_T lcb_ssize_t;
37
+ typedef unsigned __int8 lcb_uint8_t;
38
+ typedef unsigned __int16 lcb_vbucket_t;
39
+ typedef unsigned __int16 lcb_uint16_t;
40
+ typedef unsigned __int32 lcb_uint32_t;
41
+ typedef unsigned __int64 lcb_cas_t;
42
+ typedef unsigned __int64 lcb_uint64_t;
43
+
44
+ /** FIXME: This should be a native type, but it's already defined here.. */
45
+ typedef unsigned __int32 lcb_time_t;
46
+ #else
47
+ #include <sys/types.h>
48
+ #include <stdint.h>
49
+ #include <time.h>
50
+
51
+ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
52
+ #include <stddef.h>
53
+ #endif
54
+
55
+ typedef int64_t lcb_int64_t;
56
+ typedef int32_t lcb_int32_t;
57
+ typedef size_t lcb_size_t;
58
+ typedef ssize_t lcb_ssize_t;
59
+ typedef uint16_t lcb_vbucket_t;
60
+ typedef uint8_t lcb_uint8_t;
61
+ typedef uint16_t lcb_uint16_t;
62
+ typedef uint32_t lcb_uint32_t;
63
+ typedef uint64_t lcb_cas_t;
64
+ typedef uint64_t lcb_uint64_t;
65
+ typedef time_t lcb_time_t;
66
+ #endif
67
+
68
+ typedef lcb_int64_t lcb_S64; /**< @brief Signed 64 bit type */
69
+ typedef lcb_uint64_t lcb_U64; /**< @brief Unsigned 64 bit type */
70
+ typedef lcb_uint32_t lcb_U32; /**< @brief Unsigned 32 bit type */
71
+ typedef lcb_int32_t lcb_S32; /**< @brief Signed 32 bit type */
72
+ typedef lcb_uint16_t lcb_U16; /**< @brief Unsigned 16 bit type */
73
+ typedef lcb_uint8_t lcb_U8; /**< @brief unsigned 8 bit type */
74
+ typedef lcb_size_t lcb_SIZE; /**< @brief Unsigned size type */
75
+ typedef lcb_ssize_t lcb_SSIZE; /**<@brief Signed size type */
76
+ typedef lcb_time_t lcb_SECS; /**< @brief Unsigned 'seconds time' type */
77
+ typedef lcb_cas_t lcb_CAS;
78
+
79
+ #ifdef __GNUC__
80
+ #define LCB_DEPRECATED(X) X __attribute__((deprecated))
81
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)
82
+ #define LCB_DEPRECATED2(X, reason) X __attribute__((deprecated(reason)))
83
+ #else
84
+ #define LCB_DEPRECATED2(X, reason) LCB_DEPRECATED(X)
85
+ #endif
86
+ #elif defined(_MSC_VER)
87
+ #define LCB_DEPRECATED(X) __declspec(deprecated) X
88
+ #define LCB_DEPRECATED2(X, reason) __declspec(deprecated(reason)) X
89
+ #else
90
+ #define LCB_DEPRECATED(X) X
91
+ #define LCB_DEPRECATED2(X, reason)
92
+ #endif
93
+
94
+ #ifdef __cplusplus
95
+ }
96
+ #endif
97
+
98
+ #endif /* LCB_SYSDEFS_H */
@@ -0,0 +1,643 @@
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_VBUCKET_H
19
+ #define LCB_VBUCKET_H
20
+ #include <libcouchbase/visibility.h>
21
+ #include <libcouchbase/sysdefs.h>
22
+
23
+ #ifdef __cplusplus
24
+ extern "C" {
25
+ #endif
26
+
27
+ /**
28
+ * @file
29
+ * @brief vBucket Mapping API
30
+ */
31
+
32
+ /**
33
+ * @ingroup lcb-public-api
34
+ * @defgroup lcb-vbucket-api vBucket
35
+ * @details
36
+ * These routines contain functionality for parsing a cluster topology configuration
37
+ * and mapping keys to cluster nodes appropriately.
38
+ */
39
+
40
+ /**
41
+ * @addtogroup lcb-vbucket-api
42
+ * @{
43
+ */
44
+
45
+ /**@brief This enum functions as a 'key' to indicate a specific service offered
46
+ * by a node */
47
+ typedef enum {
48
+ LCBVB_SVCTYPE_DATA = 0, /**< memcached/Data port */
49
+ LCBVB_SVCTYPE_VIEWS, /**< Views/CAPI port */
50
+ LCBVB_SVCTYPE_MGMT, /**< Administrative/'REST' UI */
51
+ LCBVB_SVCTYPE_IXQUERY, /**< Index query */
52
+ LCBVB_SVCTYPE_IXADMIN, /**< Index administration */
53
+ LCBVB_SVCTYPE_N1QL, /**< N1QL Query */
54
+ LCBVB_SVCTYPE_FTS, /**< Fulltext */
55
+ LCBVB_SVCTYPE__MAX
56
+ } lcbvb_SVCTYPE;
57
+
58
+ /**@brief This enum functions to indicate the 'mode' of the service. Currently
59
+ * this is to distinguish between SSL and plain transports */
60
+ typedef enum {
61
+ LCBVB_SVCMODE_PLAIN = 0, /**< Plain transport */
62
+ LCBVB_SVCMODE_SSL, /**< SSL Transport */
63
+ LCBVB_SVCMODE__MAX
64
+ } lcbvb_SVCMODE;
65
+
66
+ /**
67
+ * @volatile. ABI/API compatibility not guaranteed between versions
68
+ * @brief Services which may be provided by a node
69
+ */
70
+ typedef struct {
71
+ lcb_U16 data; /**< Data port for key-value operations (memcached protocol) */
72
+ lcb_U16 mgmt; /**< Port for adminsitrative operations (HTTP) */
73
+ lcb_U16 views; /**< Port for view queries (HTTP) */
74
+ lcb_U16 ixquery; /**< Indexing query port */
75
+ lcb_U16 ixadmin; /**< Indexing admin port (HTTP) */
76
+ lcb_U16 n1ql; /**< Query port */
77
+ lcb_U16 fts; /**< CBFT */
78
+ char *views_base_; /**< Views base URL */
79
+ char *query_base_; /**< N1QL base URL */
80
+ char *fts_base_;
81
+ char *hoststrs[LCBVB_SVCTYPE__MAX];
82
+ } lcbvb_SERVICES;
83
+
84
+ /**
85
+ * @volatile. ABI/API compatibility not guaranteed between versions.
86
+ *
87
+ * @brief Node in the cluster
88
+ * This structure represents a node in the cluster. The node has a hostname
89
+ * (@ref #hostname), and various services.
90
+ */
91
+ typedef struct {
92
+ lcbvb_SERVICES svc; /**< Plain services */
93
+ lcbvb_SERVICES svc_ssl; /**< SSL Services */
94
+ char *authority; /**< host:dataport for comparison */
95
+ char *hostname; /**< Hostname for the node */
96
+ char *viewpath; /**< Path prefix for view queries */
97
+ char *querypath; /**< Path prefix for n1ql queries */
98
+ char *ftspath; /**< Path prefix for fulltext queries */
99
+ unsigned nvbs; /**< Total number of vbuckets the server has assigned */
100
+ } lcbvb_SERVER;
101
+
102
+ /**@volatile. ABI/API compatibility not guaranteed between versions */
103
+ typedef struct {
104
+ int servers[4];
105
+ } lcbvb_VBUCKET;
106
+
107
+ /**@volatile*/
108
+ typedef struct {
109
+ lcb_U32 index;
110
+ lcb_U32 point;
111
+ } lcbvb_CONTINUUM;
112
+
113
+ /** @brief Type of algorithm used to distribute keys.
114
+ * This also indicates the type of bucket */
115
+ typedef enum {
116
+ LCBVB_DIST_VBUCKET = 0, /**< vBucket hashing ("couchbase") bucket */
117
+ LCBVB_DIST_KETAMA = 1 /**< Ketama hashing ("memcached") bucket */
118
+ } lcbvb_DISTMODE;
119
+
120
+ /**@volatile. ABI/API compatibility not guaranteed between versions.
121
+ * @brief Structure containing the configuration.*/
122
+ typedef struct lcbvb_CONFIG_st {
123
+ lcbvb_DISTMODE dtype; /**< Type of bucket/distribution */
124
+ unsigned nvb; /**< Number of vbuckets */
125
+ unsigned ndatasrv; /**< Number of data (memcached) servers */
126
+ unsigned nsrv; /** Number of servers */
127
+ unsigned nrepl; /**< Number of replicas */
128
+ unsigned ncontinuum; /* number of continuum points */
129
+ unsigned is3x; /* whether server 3.0 config semantics are in place */
130
+ int revid; /* revision ID from the config (-1 if not present) */
131
+ char *buuid; /* bucket UUID */
132
+ char *bname; /* bucket name */
133
+ const char *errstr; /* last error */
134
+ lcbvb_SERVER *servers; /* nodes */
135
+ lcbvb_VBUCKET *vbuckets; /* vbucket map */
136
+ lcbvb_VBUCKET *ffvbuckets; /* fast-forward map */
137
+ lcbvb_CONTINUUM *continuum; /* ketama continuums */
138
+ int *randbuf; /* Used for random server selection */
139
+ } lcbvb_CONFIG;
140
+
141
+
142
+ #define LCBVB_NSERVERS(cfg) (cfg)->nsrv
143
+ #define LCBVB_NDATASERVERS(cfg) (cfg)->ndatasrv
144
+ #define LCBVB_NREPLICAS(cfg) (cfg)->nrepl
145
+ #define LCBVB_DISTTYPE(cfg) (cfg)->dtype
146
+ #define LCBVB_GET_SERVER(conf, ix) ((conf)->servers + ix)
147
+
148
+ /**
149
+ * @uncommitted
150
+ * @brief Allocate a new config
151
+ * This can be used to create new config object and load it with a JSON config,
152
+ * optionally retrieving the error code
153
+ * @code{.c}
154
+ * lcbvb_CONFIG *cfg = lcbvb_create();
155
+ * if (0 != lcbvb_load_json(cfg, json)) {
156
+ * printf("Got error!", lcbvb_get_error(cfg));
157
+ * lcbvb_destroy(cfg);
158
+ * }
159
+ * @endcode
160
+ */
161
+ LIBCOUCHBASE_API
162
+ lcbvb_CONFIG *
163
+ lcbvb_create(void);
164
+
165
+ /**
166
+ * @uncommitted
167
+ * Parse the configuration string in `data` and return a new config object
168
+ * @param data
169
+ * @return A new config object, or NULL on error.
170
+ */
171
+ LIBCOUCHBASE_API
172
+ lcbvb_CONFIG *
173
+ lcbvb_parse_json(const char *data);
174
+
175
+ /**
176
+ * @committed
177
+ * Load a JSON-based configuration string into a configuration object
178
+ * @param vbc Object to populate
179
+ * @param data NUL-terminated string to parse
180
+ * @return 0 on success, nonzero on failure
181
+ * @note it is recommended to use this function rather than lcbvb_parse_json()
182
+ * as this will contain the error string in the configuration in case of parse
183
+ * failures.
184
+ */
185
+ LIBCOUCHBASE_API
186
+ int
187
+ lcbvb_load_json(lcbvb_CONFIG *vbc, const char *data);
188
+
189
+ /**@brief Serialize the current config as a JSON string.
190
+ * @volatile
191
+ * Serialize the current configuration as a JSON string. The string returned is
192
+ * NUL-terminated and should be freed using the free() function.
193
+ */
194
+ LIBCOUCHBASE_API
195
+ char *
196
+ lcbvb_save_json(lcbvb_CONFIG *vbc);
197
+
198
+ /**
199
+ * @committed
200
+ * @brief Return a string indicating why parsing the configuration failed
201
+ * @return An error string. Do not free this string
202
+ */
203
+ LIBCOUCHBASE_API
204
+ const char *
205
+ lcbvb_get_error(const lcbvb_CONFIG *vbc);
206
+
207
+ /**
208
+ * @volatile
209
+ * @brief Replace hostname placeholders with specific host string
210
+ * This function shall replace hostname placeholists with the actual host string
211
+ * specified in `hoststr`.
212
+ * @param cfg the configuration
213
+ * @param hostname the actual hostname to use.
214
+ *
215
+ * Use this immediately after a successful parsing of the configuration file.
216
+ */
217
+ LIBCOUCHBASE_API
218
+ void
219
+ lcbvb_replace_host(lcbvb_CONFIG *cfg, const char *hostname);
220
+
221
+ /**
222
+ * @committed
223
+ * Destroy the configuration object
224
+ * @param conf
225
+ */
226
+ LIBCOUCHBASE_API
227
+ void
228
+ lcbvb_destroy(lcbvb_CONFIG *conf);
229
+
230
+ /**
231
+ * @committed
232
+ *
233
+ * Gets the master node index for the given vbucket
234
+ * @param cfg The configuration
235
+ * @param vbid The vbucket to query
236
+ * @return The master index. -1 if offline
237
+ * @warning This function does no bounds checking for `vbid`. Ensure it is
238
+ * within range of `0 < vbid < cfg->nvbs`
239
+ */
240
+ LIBCOUCHBASE_API
241
+ int
242
+ lcbvb_vbmaster(lcbvb_CONFIG *cfg, int vbid);
243
+
244
+ /**
245
+ * @committed
246
+ *
247
+ * Return the 0-based replica index for the given vbucket.
248
+ * @param cfg The configuration object
249
+ * @param vbid The vbucket to query
250
+ * @param ix the replica index to retrieve. This is a number ranging from
251
+ * 0 to vbc->nrepl exclusive.
252
+ * @return The replica index, or -1 if offline
253
+ *
254
+ * @warning This function does no bounds checking for `vbix` or `ix`. Ensure
255
+ * that `0 < vbid < cfg->nvbs` and `-1 < ix < cfg->nrepl`
256
+ */
257
+ LIBCOUCHBASE_API
258
+ int
259
+ lcbvb_vbreplica(lcbvb_CONFIG *cfg, int vbid, unsigned ix);
260
+
261
+ /**
262
+ * @volatile
263
+ * This allows to get the given index for a vbucket server. If the index is
264
+ * 0 then this returns the master index, if the index is greater then it
265
+ * returns the replica index
266
+ */
267
+ #define lcbvb_vbserver(cfg, vbid, ix) ( (ix == 0) ? \
268
+ lcbvb_vbmaster(cfg, vbid) : lcbvb_vbreplica(cfg, vbid, ix-1) )
269
+
270
+
271
+ /**
272
+ * uncommitted
273
+ * Equivalent to
274
+ * @code{.c}
275
+ * lcbvb_nmv_remap_ex(cfg, vbid, bad, 0);
276
+ * @endcode
277
+ */
278
+ #define lcbvb_nmv_remap(cfg, vbid, bad) lcbvb_nmv_remap_ex(cfg, vbid, bad, 0)
279
+
280
+ /**
281
+ * @uncommitted
282
+ *
283
+ * Using various guesswork and heuristics, attempt to locate an alternate node
284
+ * for the master of a given vbucket. This should be used if the master index
285
+ * is -1 or if the master index is deemed incorrect by some other means.
286
+ *
287
+ * @param cfg the configuration object
288
+ * @param vbid the vbucket index to loop up
289
+ * @param bad the index known to be bad. Passing this parameter allows the
290
+ * handler to safely call this function and be sure that a previous call's
291
+ * applied heuristics will not affect the modified map.
292
+ * @param use_heuristics whether additional heuristics should be used. If
293
+ * heuristics is off, only the fast-forward map is employed.
294
+ */
295
+ int
296
+ lcbvb_nmv_remap_ex(lcbvb_CONFIG *cfg, int vbid, int bad, int use_heuristics);
297
+
298
+ /**
299
+ * @committed
300
+ *
301
+ * Map a given string to a vbucket and server
302
+ * @param cfg The configuration object
303
+ * @param key Key to map
304
+ * @param n Length of key
305
+ * @param[out] vbid Will contain the vBucket
306
+ * @param[out] srvix Will contain the server index
307
+ * @return 0 for now
308
+ */
309
+ LIBCOUCHBASE_API
310
+ int
311
+ lcbvb_map_key(lcbvb_CONFIG *cfg, const void *key, lcb_SIZE n,
312
+ int *vbid, int *srvix);
313
+
314
+ /**
315
+ * @committed
316
+ *
317
+ * Maps a key to a vBucket ID
318
+ * @param cfg The configuration
319
+ * @param key The key to retrieve
320
+ * @param n The size of the key
321
+ * @return the vBucket for the key
322
+ */
323
+ LIBCOUCHBASE_API
324
+ int
325
+ lcbvb_k2vb(lcbvb_CONFIG *cfg, const void *key, lcb_SIZE n);
326
+
327
+ /**
328
+ * @uncomitted
329
+ * Determines if a given server index is either a master or a replica for a
330
+ * vbucket
331
+ * @param vbc the configuration
332
+ * @param vbid the vbucket number
333
+ * @param ix the server index to check against
334
+ * @returns nonzero if the server `ix` is either a master or a replica for the
335
+ * vbucket `vbid`. Returns 0 otherwise.
336
+ */
337
+ LIBCOUCHBASE_API
338
+ int
339
+ lcbvb_has_vbucket(lcbvb_CONFIG *vbc, int vbid, int ix);
340
+
341
+ /**@committed
342
+ * @brief Get the number of servers in the bucket. Note that not all servers
343
+ * may actually be available.
344
+ * @param cfg The configuration
345
+ * @return The number of servers
346
+ **/
347
+ LIBCOUCHBASE_API
348
+ unsigned
349
+ lcbvb_get_nservers(const lcbvb_CONFIG *cfg);
350
+
351
+ /**@committed
352
+ * @brief Get the number of replicas the bucket is configured with
353
+ * Note that not all replicas may necessarily be online or available.
354
+ * @param cfg the configuration
355
+ * @return the number of configured replicas
356
+ */
357
+ LIBCOUCHBASE_API
358
+ unsigned
359
+ lcbvb_get_nreplicas(const lcbvb_CONFIG *cfg);
360
+
361
+ /**@committed
362
+ * @brief Get the distribution mode (AKA bucket type) of the bucket
363
+ * @param cfg the configuration
364
+ * @return the distribution mode
365
+ */
366
+ LIBCOUCHBASE_API
367
+ lcbvb_DISTMODE
368
+ lcbvb_get_distmode(const lcbvb_CONFIG *cfg);
369
+
370
+ /**
371
+ * @committed
372
+ *
373
+ * @brief Get the revision for this configuration.
374
+ *
375
+ * The revision is an
376
+ * integer which is increased each time the cluster generates a new
377
+ * configuration. This feature is available only on configurations generated
378
+ * by nodes of Couchbase Server v2.5 or later.
379
+ *
380
+ * @param cfg the configuration
381
+ * @return The revision ID, or `-1` if the config does not have a revision
382
+ */
383
+ LIBCOUCHBASE_API
384
+ int
385
+ lcbvb_get_revision(const lcbvb_CONFIG *cfg);
386
+
387
+ /**
388
+ * @committed
389
+ * @brief Gets the port associated with a given service of a given mode on a given
390
+ * server
391
+ * @param cfg the config object
392
+ * @param ix the index of the server to query
393
+ * @param type the type of service being provided
394
+ * @param mode the mode of transport being used (e.g. plain, ssl)
395
+ * @return a number greater than zero if the port exists, 0 otherwise
396
+ */
397
+ LIBCOUCHBASE_API
398
+ unsigned
399
+ lcbvb_get_port(lcbvb_CONFIG *cfg, unsigned ix,
400
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
401
+
402
+
403
+ /**
404
+ * @committed
405
+ *
406
+ * @brief Return a string for the given service
407
+ * This is like lcbvb_get_port but returns a string in the form of `host:port`
408
+ * rather than the numeric port
409
+ *
410
+ * @param cfg
411
+ * @param ix
412
+ * @param type
413
+ * @param mode
414
+ * @return A string if the service is found, NULL otherwise. The storage
415
+ * duration of the string is valid until the configuration object is
416
+ * destroyed.
417
+ */
418
+ LIBCOUCHBASE_API
419
+ const char *
420
+ lcbvb_get_hostport(lcbvb_CONFIG *cfg, unsigned ix,
421
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
422
+
423
+ /**
424
+ * @committed
425
+ *
426
+ * @brief Get the hostname of a given server index. This may be used if all
427
+ * nodes reside on different hostnames, and can be used to answer the question
428
+ * of "which node does this index belong to" without having to perform
429
+ * additional string processing on the port of the string.
430
+ *
431
+ * @param cfg the configuration
432
+ * @param ix the index of the server to look up
433
+ * @return a hostname without a port, or NULL if the index is out of bounds
434
+ */
435
+ LIBCOUCHBASE_API
436
+ const char *
437
+ lcbvb_get_hostname(const lcbvb_CONFIG *cfg, unsigned ix);
438
+
439
+ /**
440
+ * Function to return the URL prefix for a REST service.
441
+ *
442
+ * Returns a string suitable for being passed as a URL. This is only valid
443
+ * for ::LCBVB_SVCTYPE_VIEWS and ::LCBVB_SVCTYPE_N1QL.
444
+ *
445
+ * This function is different from lcbvb_get_hostport() -- it is mainly a
446
+ * convenience, but does cache the string. Also, theoretically the cluster
447
+ * is free to choose a _different_ URL prefix for a given service. Using this
448
+ * function will guarantee the URL prefix is correct.
449
+ */
450
+ LIBCOUCHBASE_API
451
+ const char *
452
+ lcbvb_get_resturl(lcbvb_CONFIG *cfg, unsigned ix,
453
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
454
+
455
+ /**
456
+ * Convenience function to select a random node for a service.
457
+ * @return 0 or greater if a node was found; a negative number if no node
458
+ * contains a service with the given criteria.
459
+ */
460
+ LIBCOUCHBASE_API
461
+ int
462
+ lcbvb_get_randhost(const lcbvb_CONFIG *cfg,
463
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
464
+
465
+ /**
466
+ * Get random node, excluding nodes already tried
467
+ * @param cfg the config
468
+ * @param type type of service
469
+ * @param mode transport mode
470
+ * @param used an array of integers representing server indexes (should be of
471
+ * size LCBVB_NSERVERS). Servers whose indexes in the `used` array are nonzero
472
+ * will be *skipped*.
473
+ *
474
+ * @return a server index, or -1 if no server remains (either because no
475
+ * server has the service, or because all available servers are in the
476
+ * exclude list)
477
+ */
478
+ LIBCOUCHBASE_API
479
+ int
480
+ lcbvb_get_randhost_ex(const lcbvb_CONFIG *cfg,
481
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode, int *used);
482
+
483
+ /** @brief Structure representing changes between two configurations */
484
+ typedef struct {
485
+ /** List of strings of servers added (via `host:data_port`) */
486
+ char **servers_added;
487
+ /** List of strings of servers removed (via `host:data_port`) */
488
+ char **servers_removed;
489
+ /** How many vBuckets have had an ownership change */
490
+ int n_vb_changes;
491
+ /** Whether the ordering of the nodes has changed as well */
492
+ int sequence_changed;
493
+ } lcbvb_CONFIGDIFF, VBUCKET_CONFIG_DIFF;
494
+
495
+ /** @brief Convenience enum to determine the mode of change */
496
+ typedef enum {
497
+ LCBVB_NO_CHANGES = 0, /**< No changes between configs */
498
+ LCBVB_SERVERS_MODIFIED = 1 << 0, /**< Servers have been added or removed */
499
+ LCBVB_MAP_MODIFIED = 1 << 1 /**< vBuckets have been transferred */
500
+ } lcbvb_CHANGETYPE, VBUCKET_CHANGE_STATUS;
501
+
502
+ /**
503
+ * @volatile
504
+ *
505
+ * @brief Compare two configurations and return information on the changes
506
+ * @param from the original configuration to use as the base
507
+ * @param to the new configuration
508
+ * @return an object which may be inspected, or NULL on allocation failure. The
509
+ * returned object should be freed with lcbvb_free_diff()
510
+ * @see lcbvb_get_changetype()
511
+ */
512
+ LIBCOUCHBASE_API
513
+ lcbvb_CONFIGDIFF *
514
+ lcbvb_compare(lcbvb_CONFIG *from, lcbvb_CONFIG *to);
515
+
516
+ /** @brief Free the structure returned by lcbvb_compare() */
517
+ LIBCOUCHBASE_API
518
+ void
519
+ lcbvb_free_diff(lcbvb_CONFIGDIFF *diff);
520
+
521
+ /**@brief Get a quick summary of the changes in the passed object
522
+ * @param diff the diff returned from lcbvb_compare()
523
+ */
524
+ LIBCOUCHBASE_API
525
+ lcbvb_CHANGETYPE
526
+ lcbvb_get_changetype(lcbvb_CONFIGDIFF *diff);
527
+
528
+ /**
529
+ * @volatile
530
+ *
531
+ * @brief Generate a sample configuration.
532
+ * @param vb a new configuration object returned via lcbvb_create()
533
+ * @param name the name of the bucket
534
+ * @param uuid UUID for the bucket
535
+ * @param servers an array of server objects which will serve as the basis
536
+ * for the server list within the configuration. The memory pointed to by
537
+ * servers may be released after this function has completed
538
+ * @param nservers number of servers in the array
539
+ * @param nreplica how many replicas for the bucket
540
+ * @param nvbuckets how many vbuckets for the bucket
541
+ */
542
+ LIBCOUCHBASE_API
543
+ int
544
+ lcbvb_genconfig_ex(lcbvb_CONFIG *vb,
545
+ const char *name, const char *uuid,
546
+ const lcbvb_SERVER *servers,
547
+ unsigned nservers, unsigned nreplica, unsigned nvbuckets);
548
+
549
+ /**
550
+ * @volatile
551
+ *
552
+ * @brief Generate a sample configuration used for testing.
553
+ * @param vb a new configuration object returned via lcbvb_create()
554
+ * @param nservers how many nodes to place into the configuration
555
+ * @param nreplica how many replicas should be assigned to the bucket
556
+ * @param nvbuckets how many vbuckets to create
557
+ * @return 0 on success, nonzero on error
558
+ *
559
+ * @note The base port for the lcbvb_SERVICES::data starts at 1000; the base
560
+ * port for lcbvb_SERVICES::views starts at 2000 and the base port for
561
+ * lcbvb_SERVICES::mgmt starts at 3000. The port number is incremented for
562
+ * each additional node.
563
+ */
564
+ LIBCOUCHBASE_API
565
+ int
566
+ lcbvb_genconfig(lcbvb_CONFIG *vb,
567
+ unsigned nservers, unsigned nreplica, unsigned nvbuckets);
568
+
569
+ /**
570
+ * @volatile
571
+ * Generate a fast-forward vBucket map for the configuration. This simply
572
+ * provides alternate indices.
573
+ */
574
+ LIBCOUCHBASE_API
575
+ void
576
+ lcbvb_genffmap(lcbvb_CONFIG *vb);
577
+
578
+
579
+ /**
580
+ * @volatile
581
+ * Convert the configuration to a ketama one.
582
+ * @param vb The configuration object.
583
+ */
584
+ LIBCOUCHBASE_API
585
+ void
586
+ lcbvb_make_ketama(lcbvb_CONFIG *vb);
587
+
588
+ /**
589
+ * @committed
590
+ *
591
+ * Get the views URL base.
592
+ * @param cfg The configuration
593
+ * @param ix The index of the server to fetch
594
+ * @param mode The mode, either plain or ssl
595
+ * @return A string reprenting the URL, or NULL if not available.
596
+ */
597
+ LIBCOUCHBASE_API
598
+ const char *
599
+ lcbvb_get_capibase(lcbvb_CONFIG *cfg, unsigned ix, lcbvb_SVCMODE mode);
600
+ /**@}*/
601
+
602
+ /*the rest of these symbols are deprecated and should not be touched by
603
+ * doxygen */
604
+
605
+ typedef enum {
606
+ LIBVBUCKET_SOURCE_FILE,
607
+ LIBVBUCKET_SOURCE_MEMORY
608
+ } vbucket_source_t;
609
+
610
+ typedef lcbvb_CONFIG *VBUCKET_CONFIG_HANDLE;
611
+ typedef lcbvb_DISTMODE VBUCKET_DISTRIBUTION_TYPE;
612
+ #define VBUCKET_DISTRIBUTION_VBUCKET LCBVB_DIST_VBUCKET
613
+ #define VBUCKET_DISTRIBUTION_KETAMA LCBVB_DIST_KETAMA
614
+ #define VBUCKET_NO_CHANGES LCBVB_NO_CHANGES
615
+ #define VBUCKET_SERVERS_MODIFIED LCBVB_SERVERS_MODIFIED
616
+ #define VBUCKET_MAP_MODIFIED LCVBVB_MAP_MODIFIED
617
+
618
+ LIBCOUCHBASE_API int vbucket_config_parse(lcbvb_CONFIG*,vbucket_source_t,const char*);
619
+ LIBCOUCHBASE_API const char *vbucket_get_error_message(lcbvb_CONFIG*);
620
+ LIBCOUCHBASE_API lcbvb_CONFIG* vbucket_config_create(void);
621
+ LIBCOUCHBASE_API void vbucket_config_destroy(lcbvb_CONFIG*);
622
+ LIBCOUCHBASE_API int vbucket_config_get_num_replicas(lcbvb_CONFIG*);
623
+ LIBCOUCHBASE_API int vbucket_config_get_num_vbuckets(lcbvb_CONFIG*);
624
+ LIBCOUCHBASE_API int vbucket_config_get_num_servers(lcbvb_CONFIG*);
625
+ LIBCOUCHBASE_API const char *vbucket_config_get_server(lcbvb_CONFIG*,int);
626
+ LIBCOUCHBASE_API const char *vbucket_config_get_couch_api_base(lcbvb_CONFIG*,int);
627
+ LIBCOUCHBASE_API const char *vbucket_config_get_rest_api_server(lcbvb_CONFIG*,int);
628
+ LIBCOUCHBASE_API lcbvb_DISTMODE vbucket_config_get_distribution_type(lcbvb_CONFIG*);
629
+ LIBCOUCHBASE_API int vbucket_map(lcbvb_CONFIG*,const void*,lcb_SIZE,int*,int*);
630
+ LIBCOUCHBASE_API int vbucket_get_vbucket_by_key(lcbvb_CONFIG*,const void*,lcb_SIZE);
631
+ LIBCOUCHBASE_API int vbucket_get_master(lcbvb_CONFIG*,int);
632
+ LIBCOUCHBASE_API int vbucket_get_replica(lcbvb_CONFIG*,int,int);
633
+ LIBCOUCHBASE_API lcbvb_CONFIGDIFF* vbucket_compare(lcbvb_CONFIG*,lcbvb_CONFIG*);
634
+ LIBCOUCHBASE_API void vbucket_free_diff(lcbvb_CONFIGDIFF*);
635
+ LIBCOUCHBASE_API int vbucket_config_get_revision(lcbvb_CONFIG*);
636
+ LIBCOUCHBASE_API lcbvb_CHANGETYPE vbucket_what_changed(lcbvb_CONFIGDIFF *diff);
637
+ LIBCOUCHBASE_API int vbucket_config_generate(lcbvb_CONFIG *vb, unsigned, unsigned, unsigned);
638
+
639
+
640
+ #ifdef __cplusplus
641
+ }
642
+ #endif
643
+ #endif