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,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