mt-libcouchbase 1.4.0

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 (707) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +38 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +24 -0
  8. data/README.md +445 -0
  9. data/Rakefile +76 -0
  10. data/ext/README.md +6 -0
  11. data/ext/Rakefile +19 -0
  12. data/ext/libcouchbase/.gitignore +132 -0
  13. data/ext/libcouchbase/CMakeLists.txt +455 -0
  14. data/ext/libcouchbase/CONTRIBUTING.md +105 -0
  15. data/ext/libcouchbase/LICENSE +202 -0
  16. data/ext/libcouchbase/README.markdown +195 -0
  17. data/ext/libcouchbase/RELEASE_NOTES.markdown +3523 -0
  18. data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +52 -0
  19. data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
  20. data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
  21. data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +18 -0
  22. data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
  23. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
  24. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +54 -0
  25. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +57 -0
  26. data/ext/libcouchbase/cmake/Modules/FindProfiler.cmake +16 -0
  27. data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +49 -0
  28. data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +142 -0
  29. data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
  30. data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
  31. data/ext/libcouchbase/cmake/config-cmake.h.in +80 -0
  32. data/ext/libcouchbase/cmake/configure +355 -0
  33. data/ext/libcouchbase/cmake/defs.mk.in +6 -0
  34. data/ext/libcouchbase/cmake/dtrace-instr-link.pl +51 -0
  35. data/ext/libcouchbase/cmake/libcouchbase.stp.in +829 -0
  36. data/ext/libcouchbase/cmake/source_files.cmake +104 -0
  37. data/ext/libcouchbase/contrib/cJSON/cJSON.c +1022 -0
  38. data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
  39. data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +25 -0
  40. data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
  41. data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +259 -0
  42. data/ext/libcouchbase/contrib/cbsasl/src/client.c +419 -0
  43. data/ext/libcouchbase/contrib/cbsasl/src/common.c +50 -0
  44. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
  45. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
  46. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
  47. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
  48. data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
  49. data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
  50. data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.c +500 -0
  51. data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.h +99 -0
  52. data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
  53. data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
  54. data/ext/libcouchbase/contrib/cliopts/cliopts.c +938 -0
  55. data/ext/libcouchbase/contrib/cliopts/cliopts.h +610 -0
  56. data/ext/libcouchbase/contrib/genhash/genhash.c +371 -0
  57. data/ext/libcouchbase/contrib/genhash/genhash.h +241 -0
  58. data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
  59. data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
  60. data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
  61. data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
  62. data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
  63. data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
  64. data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
  65. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
  66. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
  67. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
  68. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
  69. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
  70. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
  71. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
  72. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
  73. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
  74. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
  75. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
  76. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
  77. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
  78. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
  79. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
  80. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
  81. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
  82. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
  83. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
  84. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
  85. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
  86. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
  87. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
  88. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
  89. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
  90. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
  91. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
  92. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
  93. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
  94. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
  95. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
  96. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
  97. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
  98. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
  99. data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
  100. data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
  101. data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
  102. data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
  103. data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
  104. data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
  105. data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
  106. data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
  107. data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
  108. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
  109. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4893 -0
  110. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
  111. data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +7 -0
  112. data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
  113. data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
  114. data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
  115. data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
  116. data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
  117. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +75 -0
  118. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
  119. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
  120. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
  121. data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +100 -0
  122. data/ext/libcouchbase/contrib/snappy/snappy.cc +1312 -0
  123. data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
  124. data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
  125. data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
  126. data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
  127. data/ext/libcouchbase/doc/Doxyfile +2495 -0
  128. data/ext/libcouchbase/doc/DoxygenLayout.xml +109 -0
  129. data/ext/libcouchbase/doc/Makefile +44 -0
  130. data/ext/libcouchbase/doc/apiattr.h +117 -0
  131. data/ext/libcouchbase/doc/cbc-n1qlback.markdown +88 -0
  132. data/ext/libcouchbase/doc/cbc-pillowfight.markdown +296 -0
  133. data/ext/libcouchbase/doc/cbc-subdoc.markdown +299 -0
  134. data/ext/libcouchbase/doc/cbc.markdown +763 -0
  135. data/ext/libcouchbase/doc/cbcrc.markdown +52 -0
  136. data/ext/libcouchbase/doc/common-additional-options.markdown +82 -0
  137. data/ext/libcouchbase/doc/common-options.markdown +71 -0
  138. data/ext/libcouchbase/doc/environment.h +93 -0
  139. data/ext/libcouchbase/doc/example/threads.c +77 -0
  140. data/ext/libcouchbase/doc/footer.html +22 -0
  141. data/ext/libcouchbase/doc/genman.sh +25 -0
  142. data/ext/libcouchbase/doc/header.html +52 -0
  143. data/ext/libcouchbase/doc/intro.h +130 -0
  144. data/ext/libcouchbase/doc/mainpage.h +136 -0
  145. data/ext/libcouchbase/doc/man/cbc-admin.1 +1 -0
  146. data/ext/libcouchbase/doc/man/cbc-bucket-create.1 +1 -0
  147. data/ext/libcouchbase/doc/man/cbc-bucket-delete.1 +1 -0
  148. data/ext/libcouchbase/doc/man/cbc-cat.1 +1 -0
  149. data/ext/libcouchbase/doc/man/cbc-connstr.1 +1 -0
  150. data/ext/libcouchbase/doc/man/cbc-cp.1 +1 -0
  151. data/ext/libcouchbase/doc/man/cbc-create.1 +1 -0
  152. data/ext/libcouchbase/doc/man/cbc-decr.1 +1 -0
  153. data/ext/libcouchbase/doc/man/cbc-flush.1 +1 -0
  154. data/ext/libcouchbase/doc/man/cbc-hash.1 +1 -0
  155. data/ext/libcouchbase/doc/man/cbc-incr.1 +1 -0
  156. data/ext/libcouchbase/doc/man/cbc-lock.1 +1 -0
  157. data/ext/libcouchbase/doc/man/cbc-mcflush.1 +1 -0
  158. data/ext/libcouchbase/doc/man/cbc-mcversion.1 +1 -0
  159. data/ext/libcouchbase/doc/man/cbc-n1ql.1 +1 -0
  160. data/ext/libcouchbase/doc/man/cbc-n1qlback.1 +198 -0
  161. data/ext/libcouchbase/doc/man/cbc-observe.1 +1 -0
  162. data/ext/libcouchbase/doc/man/cbc-pillowfight.1 +499 -0
  163. data/ext/libcouchbase/doc/man/cbc-ping.1 +1 -0
  164. data/ext/libcouchbase/doc/man/cbc-rm.1 +1 -0
  165. data/ext/libcouchbase/doc/man/cbc-role-list.1 +1 -0
  166. data/ext/libcouchbase/doc/man/cbc-stats.1 +1 -0
  167. data/ext/libcouchbase/doc/man/cbc-subdoc.1 +494 -0
  168. data/ext/libcouchbase/doc/man/cbc-unlock.1 +1 -0
  169. data/ext/libcouchbase/doc/man/cbc-user-delete.1 +1 -0
  170. data/ext/libcouchbase/doc/man/cbc-user-list.1 +1 -0
  171. data/ext/libcouchbase/doc/man/cbc-user-upsert.1 +1 -0
  172. data/ext/libcouchbase/doc/man/cbc-verbosity.1 +1 -0
  173. data/ext/libcouchbase/doc/man/cbc-version.1 +1 -0
  174. data/ext/libcouchbase/doc/man/cbc-view.1 +1 -0
  175. data/ext/libcouchbase/doc/man/cbc-watch.1 +1 -0
  176. data/ext/libcouchbase/doc/man/cbc.1 +1035 -0
  177. data/ext/libcouchbase/doc/man/cbcrc.4 +71 -0
  178. data/ext/libcouchbase/doc/style.css +1162 -0
  179. data/ext/libcouchbase/example/CMakeLists.txt +52 -0
  180. data/ext/libcouchbase/example/README.markdown +47 -0
  181. data/ext/libcouchbase/example/analytics/.gitignore +1 -0
  182. data/ext/libcouchbase/example/analytics/analytics.c +158 -0
  183. data/ext/libcouchbase/example/analytics/build-queries.rb +34 -0
  184. data/ext/libcouchbase/example/analytics/cJSON.c +1 -0
  185. data/ext/libcouchbase/example/analytics/cJSON.h +1 -0
  186. data/ext/libcouchbase/example/analytics/queries/00-show-dataverse.json +5 -0
  187. data/ext/libcouchbase/example/analytics/queries/01-setup-dataset-breweries.json +6 -0
  188. data/ext/libcouchbase/example/analytics/queries/02-setup-dataset-beers.json +6 -0
  189. data/ext/libcouchbase/example/analytics/queries/03-initiate-shadow.json +6 -0
  190. data/ext/libcouchbase/example/analytics/queries/04-list-datasets.json +7 -0
  191. data/ext/libcouchbase/example/analytics/queries/05-count-breweries.json +5 -0
  192. data/ext/libcouchbase/example/analytics/queries/06-first-brewery.json +6 -0
  193. data/ext/libcouchbase/example/analytics/queries/07-key-based-lookup.json +6 -0
  194. data/ext/libcouchbase/example/analytics/queries/08-exact-match-lookup.json +7 -0
  195. data/ext/libcouchbase/example/analytics/queries/09-exact-match-lookup-different-shape.json +6 -0
  196. data/ext/libcouchbase/example/analytics/queries/10-other-query-filters.json +6 -0
  197. data/ext/libcouchbase/example/analytics/queries/11-equijoin.json +9 -0
  198. data/ext/libcouchbase/example/analytics/queries/12-equijoin-select-star.json +10 -0
  199. data/ext/libcouchbase/example/analytics/queries/13-ansi-join.json +8 -0
  200. data/ext/libcouchbase/example/analytics/queries/14-join-select-values.json +8 -0
  201. data/ext/libcouchbase/example/analytics/queries/15-nested-outer-join.json +7 -0
  202. data/ext/libcouchbase/example/analytics/queries/16-theta-join.json +8 -0
  203. data/ext/libcouchbase/example/analytics/queries/17-existential-quantification.json +9 -0
  204. data/ext/libcouchbase/example/analytics/queries/18-universal-quantification.json +7 -0
  205. data/ext/libcouchbase/example/analytics/queries/19-simple-aggregation.json +6 -0
  206. data/ext/libcouchbase/example/analytics/queries/20-simple-aggregation-unwrapped-value.json +6 -0
  207. data/ext/libcouchbase/example/analytics/queries/21-simple-aggregation-explicit.json +6 -0
  208. data/ext/libcouchbase/example/analytics/queries/22-grouping-and-aggregation.json +6 -0
  209. data/ext/libcouchbase/example/analytics/queries/23-grouping-and-aggregation-with-hint.json +7 -0
  210. data/ext/libcouchbase/example/analytics/queries/24-grouping-and-limits.json +7 -0
  211. data/ext/libcouchbase/example/analytics/queries/25-named-parameters.json +7 -0
  212. data/ext/libcouchbase/example/analytics/queries/26-positional-parameters.json +7 -0
  213. data/ext/libcouchbase/example/analytics/queries.h +113 -0
  214. data/ext/libcouchbase/example/crypto/.gitignore +2 -0
  215. data/ext/libcouchbase/example/crypto/Makefile +13 -0
  216. data/ext/libcouchbase/example/crypto/common_provider.c +26 -0
  217. data/ext/libcouchbase/example/crypto/common_provider.h +33 -0
  218. data/ext/libcouchbase/example/crypto/openssl_symmetric_decrypt.c +144 -0
  219. data/ext/libcouchbase/example/crypto/openssl_symmetric_encrypt.c +146 -0
  220. data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.c +271 -0
  221. data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.h +29 -0
  222. data/ext/libcouchbase/example/db/db.c +171 -0
  223. data/ext/libcouchbase/example/db/vb.c +227 -0
  224. data/ext/libcouchbase/example/fts/.gitignore +1 -0
  225. data/ext/libcouchbase/example/fts/build-queries.rb +33 -0
  226. data/ext/libcouchbase/example/fts/fts.c +142 -0
  227. data/ext/libcouchbase/example/fts/queries/00-simple-text-query.json +12 -0
  228. data/ext/libcouchbase/example/fts/queries/01-simple-text-query-on-non-default-index.json +9 -0
  229. data/ext/libcouchbase/example/fts/queries/02-simple-text-query-on-stored-field.json +13 -0
  230. data/ext/libcouchbase/example/fts/queries/03-match-query-with-facet.json +19 -0
  231. data/ext/libcouchbase/example/fts/queries/04-docid-query.json +11 -0
  232. data/ext/libcouchbase/example/fts/queries/05-unanalyzed-term-query-with-fuzziness-level-of-0.json +13 -0
  233. data/ext/libcouchbase/example/fts/queries/06-unanalyzed-term-query-with-fuzziness-level-of-2.json +14 -0
  234. data/ext/libcouchbase/example/fts/queries/07-match-phrase-query.json +13 -0
  235. data/ext/libcouchbase/example/fts/queries/08-phrase-query.json +16 -0
  236. data/ext/libcouchbase/example/fts/queries/09-query-string-query.json +9 -0
  237. data/ext/libcouchbase/example/fts/queries/10-conjunction-query.json +21 -0
  238. data/ext/libcouchbase/example/fts/queries/11-wild-card-query.json +13 -0
  239. data/ext/libcouchbase/example/fts/queries/12-numeric-range-query.json +11 -0
  240. data/ext/libcouchbase/example/fts/queries/13-regexp-query.json +13 -0
  241. data/ext/libcouchbase/example/fts/queries.h +61 -0
  242. data/ext/libcouchbase/example/instancepool/main.cc +112 -0
  243. data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
  244. data/ext/libcouchbase/example/instancepool/pool.h +69 -0
  245. data/ext/libcouchbase/example/libeventdirect/main.c +222 -0
  246. data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
  247. data/ext/libcouchbase/example/minimal/.gitignore +1 -0
  248. data/ext/libcouchbase/example/minimal/minimal.c +132 -0
  249. data/ext/libcouchbase/example/minimal/query.c +185 -0
  250. data/ext/libcouchbase/example/observe/durability.c +102 -0
  251. data/ext/libcouchbase/example/observe/observe.c +159 -0
  252. data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +143 -0
  253. data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +201 -0
  254. data/ext/libcouchbase/example/subdoc/subdoc-xattrs.c +286 -0
  255. data/ext/libcouchbase/example/tick/tick.c +119 -0
  256. data/ext/libcouchbase/example/tracing/.gitignore +2 -0
  257. data/ext/libcouchbase/example/tracing/Makefile +8 -0
  258. data/ext/libcouchbase/example/tracing/cJSON.c +1 -0
  259. data/ext/libcouchbase/example/tracing/cJSON.h +1 -0
  260. data/ext/libcouchbase/example/tracing/tracing.c +439 -0
  261. data/ext/libcouchbase/example/tracing/views.c +444 -0
  262. data/ext/libcouchbase/example/users/README +48 -0
  263. data/ext/libcouchbase/example/users/users.c +147 -0
  264. data/ext/libcouchbase/example/views/views-example.cc +83 -0
  265. data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
  266. data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
  267. data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
  268. data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
  269. data/ext/libcouchbase/include/libcouchbase/auth.h +297 -0
  270. data/ext/libcouchbase/include/libcouchbase/cbft.h +151 -0
  271. data/ext/libcouchbase/include/libcouchbase/cntl-private.h +319 -0
  272. data/ext/libcouchbase/include/libcouchbase/cntl.h +1418 -0
  273. data/ext/libcouchbase/include/libcouchbase/configuration.h.in +29 -0
  274. data/ext/libcouchbase/include/libcouchbase/couchbase.h +4089 -0
  275. data/ext/libcouchbase/include/libcouchbase/crypto.h +306 -0
  276. data/ext/libcouchbase/include/libcouchbase/deprecated.h +312 -0
  277. data/ext/libcouchbase/include/libcouchbase/error.h +680 -0
  278. data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
  279. data/ext/libcouchbase/include/libcouchbase/iops.h +1053 -0
  280. data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
  281. data/ext/libcouchbase/include/libcouchbase/kvbuf.h +137 -0
  282. data/ext/libcouchbase/include/libcouchbase/metrics.h +79 -0
  283. data/ext/libcouchbase/include/libcouchbase/n1ql.h +539 -0
  284. data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
  285. data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +370 -0
  286. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
  287. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
  288. data/ext/libcouchbase/include/libcouchbase/subdoc.h +347 -0
  289. data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
  290. data/ext/libcouchbase/include/libcouchbase/tracing.h +437 -0
  291. data/ext/libcouchbase/include/libcouchbase/vbucket.h +680 -0
  292. data/ext/libcouchbase/include/libcouchbase/views.h +357 -0
  293. data/ext/libcouchbase/include/libcouchbase/visibility.h +66 -0
  294. data/ext/libcouchbase/include/memcached/COPYING +30 -0
  295. data/ext/libcouchbase/include/memcached/README +10 -0
  296. data/ext/libcouchbase/include/memcached/protocol_binary.h +885 -0
  297. data/ext/libcouchbase/packaging/README +7 -0
  298. data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
  299. data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
  300. data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
  301. data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
  302. data/ext/libcouchbase/packaging/deb/compat +1 -0
  303. data/ext/libcouchbase/packaging/deb/control +72 -0
  304. data/ext/libcouchbase/packaging/deb/copyright +10 -0
  305. data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
  306. data/ext/libcouchbase/packaging/deb/package.mk +31 -0
  307. data/ext/libcouchbase/packaging/deb/rules +46 -0
  308. data/ext/libcouchbase/packaging/deb/source/format +1 -0
  309. data/ext/libcouchbase/packaging/distinfo/README +1 -0
  310. data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
  311. data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
  312. data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
  313. data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
  314. data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
  315. data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +101 -0
  316. data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
  317. data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
  318. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +467 -0
  319. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
  320. data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
  321. data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
  322. data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
  323. data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +31 -0
  324. data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +66 -0
  325. data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
  326. data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +31 -0
  327. data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
  328. data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
  329. data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +44 -0
  330. data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +218 -0
  331. data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
  332. data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +155 -0
  333. data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +709 -0
  334. data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +13 -0
  335. data/ext/libcouchbase/plugins/io/select/plugin-select.c +451 -0
  336. data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
  337. data/ext/libcouchbase/src/README.md +101 -0
  338. data/ext/libcouchbase/src/aspend.h +105 -0
  339. data/ext/libcouchbase/src/auth-priv.h +85 -0
  340. data/ext/libcouchbase/src/auth.cc +146 -0
  341. data/ext/libcouchbase/src/bootstrap.cc +263 -0
  342. data/ext/libcouchbase/src/bootstrap.h +149 -0
  343. data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +450 -0
  344. data/ext/libcouchbase/src/bucketconfig/bc_file.cc +281 -0
  345. data/ext/libcouchbase/src/bucketconfig/bc_http.cc +527 -0
  346. data/ext/libcouchbase/src/bucketconfig/bc_http.h +107 -0
  347. data/ext/libcouchbase/src/bucketconfig/bc_static.cc +150 -0
  348. data/ext/libcouchbase/src/bucketconfig/clconfig.h +700 -0
  349. data/ext/libcouchbase/src/bucketconfig/confmon.cc +403 -0
  350. data/ext/libcouchbase/src/callbacks.c +380 -0
  351. data/ext/libcouchbase/src/cbft.cc +253 -0
  352. data/ext/libcouchbase/src/cntl.cc +1057 -0
  353. data/ext/libcouchbase/src/config_static.h +176 -0
  354. data/ext/libcouchbase/src/connspec.cc +555 -0
  355. data/ext/libcouchbase/src/connspec.h +155 -0
  356. data/ext/libcouchbase/src/crypto.cc +399 -0
  357. data/ext/libcouchbase/src/ctx-log-inl.h +44 -0
  358. data/ext/libcouchbase/src/dns-srv.cc +146 -0
  359. data/ext/libcouchbase/src/dump.cc +103 -0
  360. data/ext/libcouchbase/src/errmap.cc +173 -0
  361. data/ext/libcouchbase/src/errmap.h +271 -0
  362. data/ext/libcouchbase/src/getconfig.cc +72 -0
  363. data/ext/libcouchbase/src/gethrtime.c +109 -0
  364. data/ext/libcouchbase/src/handler.cc +1101 -0
  365. data/ext/libcouchbase/src/hashtable.c +75 -0
  366. data/ext/libcouchbase/src/hdr_timings.c +92 -0
  367. data/ext/libcouchbase/src/hostlist.cc +293 -0
  368. data/ext/libcouchbase/src/hostlist.h +160 -0
  369. data/ext/libcouchbase/src/http/http-priv.h +326 -0
  370. data/ext/libcouchbase/src/http/http.cc +672 -0
  371. data/ext/libcouchbase/src/http/http.h +1 -0
  372. data/ext/libcouchbase/src/http/http_io.cc +316 -0
  373. data/ext/libcouchbase/src/instance.cc +917 -0
  374. data/ext/libcouchbase/src/internal.h +285 -0
  375. data/ext/libcouchbase/src/iofactory.c +575 -0
  376. data/ext/libcouchbase/src/jsparse/parser.cc +445 -0
  377. data/ext/libcouchbase/src/jsparse/parser.h +159 -0
  378. data/ext/libcouchbase/src/lcbht/lcbht.cc +177 -0
  379. data/ext/libcouchbase/src/lcbht/lcbht.h +210 -0
  380. data/ext/libcouchbase/src/lcbio/connect.cc +603 -0
  381. data/ext/libcouchbase/src/lcbio/connect.h +400 -0
  382. data/ext/libcouchbase/src/lcbio/ctx.c +658 -0
  383. data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
  384. data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
  385. data/ext/libcouchbase/src/lcbio/iotable.h +169 -0
  386. data/ext/libcouchbase/src/lcbio/ioutils.cc +356 -0
  387. data/ext/libcouchbase/src/lcbio/ioutils.h +144 -0
  388. data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
  389. data/ext/libcouchbase/src/lcbio/manager.cc +579 -0
  390. data/ext/libcouchbase/src/lcbio/manager.h +195 -0
  391. data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
  392. data/ext/libcouchbase/src/lcbio/rw-inl.h +137 -0
  393. data/ext/libcouchbase/src/lcbio/ssl.h +159 -0
  394. data/ext/libcouchbase/src/lcbio/timer-cxx.h +87 -0
  395. data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
  396. data/ext/libcouchbase/src/lcbio/timer.c +132 -0
  397. data/ext/libcouchbase/src/legacy.c +431 -0
  398. data/ext/libcouchbase/src/list.c +144 -0
  399. data/ext/libcouchbase/src/list.h +127 -0
  400. data/ext/libcouchbase/src/logging.c +244 -0
  401. data/ext/libcouchbase/src/logging.h +88 -0
  402. data/ext/libcouchbase/src/mc/compress.cc +171 -0
  403. data/ext/libcouchbase/src/mc/compress.h +56 -0
  404. data/ext/libcouchbase/src/mc/forward.c +186 -0
  405. data/ext/libcouchbase/src/mc/forward.h +90 -0
  406. data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
  407. data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
  408. data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +115 -0
  409. data/ext/libcouchbase/src/mc/mcreq.c +983 -0
  410. data/ext/libcouchbase/src/mc/mcreq.h +1015 -0
  411. data/ext/libcouchbase/src/mcserver/mcserver.cc +1055 -0
  412. data/ext/libcouchbase/src/mcserver/mcserver.h +221 -0
  413. data/ext/libcouchbase/src/mcserver/negotiate.cc +757 -0
  414. data/ext/libcouchbase/src/mcserver/negotiate.h +128 -0
  415. data/ext/libcouchbase/src/mctx-helper.h +62 -0
  416. data/ext/libcouchbase/src/metrics.cc +132 -0
  417. data/ext/libcouchbase/src/n1ql/ixmgmt.cc +857 -0
  418. data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
  419. data/ext/libcouchbase/src/n1ql/n1ql.cc +830 -0
  420. data/ext/libcouchbase/src/n1ql/params.cc +260 -0
  421. data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
  422. data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
  423. data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
  424. data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
  425. data/ext/libcouchbase/src/newconfig.cc +365 -0
  426. data/ext/libcouchbase/src/nodeinfo.cc +184 -0
  427. data/ext/libcouchbase/src/operations/cbflush.cc +63 -0
  428. data/ext/libcouchbase/src/operations/counter.cc +117 -0
  429. data/ext/libcouchbase/src/operations/durability-cas.cc +251 -0
  430. data/ext/libcouchbase/src/operations/durability-seqno.cc +170 -0
  431. data/ext/libcouchbase/src/operations/durability.cc +668 -0
  432. data/ext/libcouchbase/src/operations/durability_internal.h +306 -0
  433. data/ext/libcouchbase/src/operations/get.cc +409 -0
  434. data/ext/libcouchbase/src/operations/observe-seqno.cc +94 -0
  435. data/ext/libcouchbase/src/operations/observe.cc +367 -0
  436. data/ext/libcouchbase/src/operations/ping.cc +496 -0
  437. data/ext/libcouchbase/src/operations/pktfwd.cc +86 -0
  438. data/ext/libcouchbase/src/operations/remove.cc +84 -0
  439. data/ext/libcouchbase/src/operations/stats.cc +459 -0
  440. data/ext/libcouchbase/src/operations/store.cc +358 -0
  441. data/ext/libcouchbase/src/operations/subdoc.cc +614 -0
  442. data/ext/libcouchbase/src/operations/touch.cc +84 -0
  443. data/ext/libcouchbase/src/packetutils.h +388 -0
  444. data/ext/libcouchbase/src/probes.d +182 -0
  445. data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
  446. data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
  447. data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
  448. data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
  449. data/ext/libcouchbase/src/rdb/rope.c +419 -0
  450. data/ext/libcouchbase/src/rdb/rope.h +488 -0
  451. data/ext/libcouchbase/src/retrychk.cc +113 -0
  452. data/ext/libcouchbase/src/retryq.cc +458 -0
  453. data/ext/libcouchbase/src/retryq.h +170 -0
  454. data/ext/libcouchbase/src/ringbuffer.c +442 -0
  455. data/ext/libcouchbase/src/ringbuffer.h +100 -0
  456. data/ext/libcouchbase/src/rnd.cc +61 -0
  457. data/ext/libcouchbase/src/rnd.h +39 -0
  458. data/ext/libcouchbase/src/settings.c +125 -0
  459. data/ext/libcouchbase/src/settings.h +273 -0
  460. data/ext/libcouchbase/src/sllist-inl.h +197 -0
  461. data/ext/libcouchbase/src/sllist.h +76 -0
  462. data/ext/libcouchbase/src/ssl/CMakeLists.txt +11 -0
  463. data/ext/libcouchbase/src/ssl/ssl_c.c +442 -0
  464. data/ext/libcouchbase/src/ssl/ssl_common.c +478 -0
  465. data/ext/libcouchbase/src/ssl/ssl_e.c +421 -0
  466. data/ext/libcouchbase/src/ssl/ssl_iot_common.h +182 -0
  467. data/ext/libcouchbase/src/strcodecs/base64.c +307 -0
  468. data/ext/libcouchbase/src/strcodecs/strcodecs.h +302 -0
  469. data/ext/libcouchbase/src/timings.c +207 -0
  470. data/ext/libcouchbase/src/trace.h +117 -0
  471. data/ext/libcouchbase/src/tracing/span.cc +421 -0
  472. data/ext/libcouchbase/src/tracing/threshold_logging_tracer.cc +213 -0
  473. data/ext/libcouchbase/src/tracing/tracer.cc +53 -0
  474. data/ext/libcouchbase/src/tracing/tracing-internal.h +198 -0
  475. data/ext/libcouchbase/src/utilities.c +176 -0
  476. data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
  477. data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
  478. data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
  479. data/ext/libcouchbase/src/vbucket/hash.h +30 -0
  480. data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
  481. data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
  482. data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
  483. data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
  484. data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
  485. data/ext/libcouchbase/src/vbucket/vbucket.c +1735 -0
  486. data/ext/libcouchbase/src/views/docreq.cc +213 -0
  487. data/ext/libcouchbase/src/views/docreq.h +94 -0
  488. data/ext/libcouchbase/src/views/viewreq.cc +381 -0
  489. data/ext/libcouchbase/src/views/viewreq.h +87 -0
  490. data/ext/libcouchbase/src/wait.cc +156 -0
  491. data/ext/libcouchbase/tests/CMakeLists.txt +149 -0
  492. data/ext/libcouchbase/tests/basic/t_base64.cc +109 -0
  493. data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
  494. data/ext/libcouchbase/tests/basic/t_connstr.cc +456 -0
  495. data/ext/libcouchbase/tests/basic/t_creds.cc +96 -0
  496. data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
  497. data/ext/libcouchbase/tests/basic/t_host.cc +210 -0
  498. data/ext/libcouchbase/tests/basic/t_jsparse.cc +82 -0
  499. data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
  500. data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
  501. data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
  502. data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
  503. data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +17 -0
  504. data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
  505. data/ext/libcouchbase/tests/basic/t_packet.cc +215 -0
  506. data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
  507. data/ext/libcouchbase/tests/basic/t_scram.cc +514 -0
  508. data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
  509. data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
  510. data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
  511. data/ext/libcouchbase/tests/check-all.cc +612 -0
  512. data/ext/libcouchbase/tests/htparse/t_basic.cc +173 -0
  513. data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
  514. data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
  515. data/ext/libcouchbase/tests/ioserver/ioserver.cc +117 -0
  516. data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
  517. data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
  518. data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
  519. data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
  520. data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
  521. data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
  522. data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
  523. data/ext/libcouchbase/tests/iotests/mock-environment.cc +632 -0
  524. data/ext/libcouchbase/tests/iotests/mock-environment.h +480 -0
  525. data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
  526. data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
  527. data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
  528. data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
  529. data/ext/libcouchbase/tests/iotests/t_behavior.cc +220 -0
  530. data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
  531. data/ext/libcouchbase/tests/iotests/t_confmon.cc +223 -0
  532. data/ext/libcouchbase/tests/iotests/t_durability.cc +1108 -0
  533. data/ext/libcouchbase/tests/iotests/t_eerrs.cc +121 -0
  534. data/ext/libcouchbase/tests/iotests/t_errmap.cc +181 -0
  535. data/ext/libcouchbase/tests/iotests/t_forward.cc +118 -0
  536. data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
  537. data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
  538. data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
  539. data/ext/libcouchbase/tests/iotests/t_lock.cc +274 -0
  540. data/ext/libcouchbase/tests/iotests/t_misc.cc +777 -0
  541. data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
  542. data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
  543. data/ext/libcouchbase/tests/iotests/t_netfail.cc +778 -0
  544. data/ext/libcouchbase/tests/iotests/t_obseqno.cc +156 -0
  545. data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
  546. data/ext/libcouchbase/tests/iotests/t_sched.cc +87 -0
  547. data/ext/libcouchbase/tests/iotests/t_serverops.cc +231 -0
  548. data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
  549. data/ext/libcouchbase/tests/iotests/t_snappy.cc +316 -0
  550. data/ext/libcouchbase/tests/iotests/t_subdoc.cc +857 -0
  551. data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
  552. data/ext/libcouchbase/tests/iotests/t_views.cc +417 -0
  553. data/ext/libcouchbase/tests/iotests/testutil.cc +251 -0
  554. data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
  555. data/ext/libcouchbase/tests/mc/mctest.h +119 -0
  556. data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
  557. data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
  558. data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
  559. data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
  560. data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
  561. data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
  562. data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
  563. data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
  564. data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
  565. data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
  566. data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
  567. data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
  568. data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
  569. data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
  570. data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
  571. data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
  572. data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
  573. data/ext/libcouchbase/tests/socktests/socktest.cc +344 -0
  574. data/ext/libcouchbase/tests/socktests/socktest.h +447 -0
  575. data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
  576. data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
  577. data/ext/libcouchbase/tests/socktests/t_manager.cc +159 -0
  578. data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
  579. data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
  580. data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
  581. data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
  582. data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
  583. data/ext/libcouchbase/tests/start_mock.bat +15 -0
  584. data/ext/libcouchbase/tests/start_mock.sh +42 -0
  585. data/ext/libcouchbase/tests/unit_tests.cc +43 -0
  586. data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
  587. data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
  588. data/ext/libcouchbase/tests/vbucket/confdata/ketama_expected.json +2562 -0
  589. data/ext/libcouchbase/tests/vbucket/confdata/map_node_present_nodesext_missing_nodes.json +94 -0
  590. data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
  591. data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
  592. data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
  593. data/ext/libcouchbase/tests/vbucket/confdata/memd_ketama_config.json +31 -0
  594. data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
  595. data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
  596. data/ext/libcouchbase/tests/vbucket/t_config.cc +386 -0
  597. data/ext/libcouchbase/tools/CMakeLists.txt +80 -0
  598. data/ext/libcouchbase/tools/cbc-handlers.h +636 -0
  599. data/ext/libcouchbase/tools/cbc-n1qlback.cc +496 -0
  600. data/ext/libcouchbase/tools/cbc-pillowfight.cc +1230 -0
  601. data/ext/libcouchbase/tools/cbc-proxy.cc +534 -0
  602. data/ext/libcouchbase/tools/cbc-subdoc.cc +825 -0
  603. data/ext/libcouchbase/tools/cbc.cc +1928 -0
  604. data/ext/libcouchbase/tools/common/histogram.cc +44 -0
  605. data/ext/libcouchbase/tools/common/histogram.h +23 -0
  606. data/ext/libcouchbase/tools/common/options.cc +451 -0
  607. data/ext/libcouchbase/tools/common/options.h +90 -0
  608. data/ext/libcouchbase/tools/docgen/docgen.h +495 -0
  609. data/ext/libcouchbase/tools/docgen/loc.h +211 -0
  610. data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
  611. data/ext/libcouchbase/tools/docgen/seqgen.h +122 -0
  612. data/ext/libcouchbase/tools/extract-packets.rb +110 -0
  613. data/ext/libcouchbase/tools/linenoise/linenoise.c +1199 -0
  614. data/ext/libcouchbase/tools/linenoise/linenoise.h +73 -0
  615. data/lib/mt-libcouchbase/bucket.rb +825 -0
  616. data/lib/mt-libcouchbase/callbacks.rb +69 -0
  617. data/lib/mt-libcouchbase/connection.rb +896 -0
  618. data/lib/mt-libcouchbase/design_docs.rb +92 -0
  619. data/lib/mt-libcouchbase/error.rb +68 -0
  620. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdbase.rb +23 -0
  621. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdcounter.rb +36 -0
  622. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdendure.rb +26 -0
  623. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdfts.rb +24 -0
  624. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdget.rb +30 -0
  625. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdgetreplica.rb +49 -0
  626. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdhttp.rb +58 -0
  627. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdn1ql.rb +40 -0
  628. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdobseqno.rb +33 -0
  629. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdobserve.rb +30 -0
  630. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdstore.rb +40 -0
  631. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdstoredur.rb +45 -0
  632. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdsubdoc.rb +61 -0
  633. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdverbosity.rb +29 -0
  634. data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdviewquery.rb +61 -0
  635. data/lib/mt-libcouchbase/ext/mt-libcouchbase/contigbuf.rb +14 -0
  636. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st.rb +15 -0
  637. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st0.rb +23 -0
  638. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st1.rb +26 -0
  639. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st2.rb +32 -0
  640. data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st3.rb +26 -0
  641. data/lib/mt-libcouchbase/ext/mt-libcouchbase/crst_u.rb +20 -0
  642. data/lib/mt-libcouchbase/ext/mt-libcouchbase/durability_opts_st_v.rb +11 -0
  643. data/lib/mt-libcouchbase/ext/mt-libcouchbase/durability_opts_t.rb +14 -0
  644. data/lib/mt-libcouchbase/ext/mt-libcouchbase/durabilityopt_sv0.rb +63 -0
  645. data/lib/mt-libcouchbase/ext/mt-libcouchbase/enums.rb +1007 -0
  646. data/lib/mt-libcouchbase/ext/mt-libcouchbase/fragbuf.rb +18 -0
  647. data/lib/mt-libcouchbase/ext/mt-libcouchbase/ftshandle.rb +7 -0
  648. data/lib/mt-libcouchbase/ext/mt-libcouchbase/histogram.rb +34 -0
  649. data/lib/mt-libcouchbase/ext/mt-libcouchbase/http_request_t.rb +7 -0
  650. data/lib/mt-libcouchbase/ext/mt-libcouchbase/keybuf.rb +20 -0
  651. data/lib/mt-libcouchbase/ext/mt-libcouchbase/multicmd_ctx.rb +30 -0
  652. data/lib/mt-libcouchbase/ext/mt-libcouchbase/mutation_token.rb +17 -0
  653. data/lib/mt-libcouchbase/ext/mt-libcouchbase/n1qlhandle.rb +7 -0
  654. data/lib/mt-libcouchbase/ext/mt-libcouchbase/n1qlparams.rb +7 -0
  655. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respbase.rb +29 -0
  656. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respcounter.rb +32 -0
  657. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respendure.rb +49 -0
  658. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respfts.rb +40 -0
  659. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respget.rb +44 -0
  660. data/lib/mt-libcouchbase/ext/mt-libcouchbase/resphttp.rb +48 -0
  661. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respmcversion.rb +38 -0
  662. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respn1ql.rb +41 -0
  663. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respobseqno.rb +52 -0
  664. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respobserve.rb +41 -0
  665. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respserverbase.rb +32 -0
  666. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstats.rb +38 -0
  667. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstore.rb +32 -0
  668. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstoredur.rb +38 -0
  669. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respsubdoc.rb +35 -0
  670. data/lib/mt-libcouchbase/ext/mt-libcouchbase/respviewquery.rb +67 -0
  671. data/lib/mt-libcouchbase/ext/mt-libcouchbase/sdentry.rb +22 -0
  672. data/lib/mt-libcouchbase/ext/mt-libcouchbase/sdspec.rb +31 -0
  673. data/lib/mt-libcouchbase/ext/mt-libcouchbase/t.rb +7 -0
  674. data/lib/mt-libcouchbase/ext/mt-libcouchbase/valbuf.rb +22 -0
  675. data/lib/mt-libcouchbase/ext/mt-libcouchbase/valbuf_u_buf.rb +14 -0
  676. data/lib/mt-libcouchbase/ext/mt-libcouchbase/viewhandle.rb +7 -0
  677. data/lib/mt-libcouchbase/ext/mt-libcouchbase.rb +1175 -0
  678. data/lib/mt-libcouchbase/ext/mt-libcouchbase_libuv.rb +22 -0
  679. data/lib/mt-libcouchbase/ext/tasks.rb +39 -0
  680. data/lib/mt-libcouchbase/n1ql.rb +80 -0
  681. data/lib/mt-libcouchbase/query_full_text.rb +147 -0
  682. data/lib/mt-libcouchbase/query_n1ql.rb +123 -0
  683. data/lib/mt-libcouchbase/query_view.rb +135 -0
  684. data/lib/mt-libcouchbase/results_fiber.rb +281 -0
  685. data/lib/mt-libcouchbase/results_native.rb +220 -0
  686. data/lib/mt-libcouchbase/subdoc_request.rb +139 -0
  687. data/lib/mt-libcouchbase/version.rb +5 -0
  688. data/lib/mt-libcouchbase.rb +40 -0
  689. data/mt-libcouchbase.gemspec +68 -0
  690. data/spec/bucket_spec.rb +290 -0
  691. data/spec/connection_spec.rb +257 -0
  692. data/spec/design_docs_spec.rb +31 -0
  693. data/spec/error_spec.rb +26 -0
  694. data/spec/fts_spec.rb +135 -0
  695. data/spec/n1ql_spec.rb +260 -0
  696. data/spec/results_libuv_spec.rb +244 -0
  697. data/spec/results_native_spec.rb +259 -0
  698. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
  699. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
  700. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
  701. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
  702. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
  703. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
  704. data/spec/subdoc_spec.rb +192 -0
  705. data/spec/view_spec.rb +201 -0
  706. data/windows_build.md +36 -0
  707. metadata +873 -0
@@ -0,0 +1,680 @@
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_ANALYTICS, /**< Analytics Query */
56
+ /* for backward compatiblity */
57
+ #define LCBVB_SVCTYPE_CBAS LCBVB_SVCTYPE_ANALYTICS
58
+ LCBVB_SVCTYPE__MAX
59
+ } lcbvb_SVCTYPE;
60
+
61
+ /**@brief This enum functions to indicate the 'mode' of the service. Currently
62
+ * this is to distinguish between SSL and plain transports */
63
+ typedef enum {
64
+ LCBVB_SVCMODE_PLAIN = 0, /**< Plain transport */
65
+ LCBVB_SVCMODE_SSL, /**< SSL Transport */
66
+ LCBVB_SVCMODE__MAX
67
+ } lcbvb_SVCMODE;
68
+
69
+ /**
70
+ * @volatile. ABI/API compatibility not guaranteed between versions
71
+ * @brief Services which may be provided by a node
72
+ */
73
+ typedef struct {
74
+ lcb_U16 data; /**< Data port for key-value operations (memcached protocol) */
75
+ lcb_U16 mgmt; /**< Port for adminsitrative operations (HTTP) */
76
+ lcb_U16 views; /**< Port for view queries (HTTP) */
77
+ lcb_U16 ixquery; /**< Indexing query port */
78
+ lcb_U16 ixadmin; /**< Indexing admin port (HTTP) */
79
+ lcb_U16 n1ql; /**< Query port */
80
+ lcb_U16 fts; /**< CBFT */
81
+ lcb_U16 cbas; /**< CBAS (Analytics) */
82
+ char *views_base_; /**< Views base URL */
83
+ char *query_base_; /**< N1QL base URL */
84
+ char *fts_base_;
85
+ char *cbas_base_;
86
+ char *hoststrs[LCBVB_SVCTYPE__MAX];
87
+ } lcbvb_SERVICES;
88
+
89
+ /**
90
+ * @volatile. ABI/API compatibility not guaranteed between versions.
91
+ *
92
+ * @brief Node in the cluster
93
+ * This structure represents a node in the cluster. The node has a hostname
94
+ * (@ref #hostname), and various services.
95
+ */
96
+ typedef struct {
97
+ lcbvb_SERVICES svc; /**< Plain services */
98
+ lcbvb_SERVICES svc_ssl; /**< SSL Services */
99
+ char *authority; /**< host:dataport for comparison */
100
+ char *hostname; /**< Hostname for the node */
101
+ char *viewpath; /**< Path prefix for view queries */
102
+ char *querypath; /**< Path prefix for n1ql queries */
103
+ char *ftspath; /**< Path prefix for fulltext queries */
104
+ char *cbaspath; /**< Path prefix for analytics queries */
105
+ unsigned nvbs; /**< Total number of vbuckets the server has assigned */
106
+ char *alt_hostname; /**< selected alternative hostname for the node */
107
+ lcbvb_SERVICES alt_svc; /**< selected alternative plain services */
108
+ lcbvb_SERVICES alt_svc_ssl; /**< selected alternative SSL Services */
109
+ } lcbvb_SERVER;
110
+
111
+ /**@volatile. ABI/API compatibility not guaranteed between versions */
112
+ typedef struct {
113
+ int servers[4];
114
+ } lcbvb_VBUCKET;
115
+
116
+ /**@volatile*/
117
+ typedef struct {
118
+ lcb_U32 index;
119
+ lcb_U32 point;
120
+ } lcbvb_CONTINUUM;
121
+
122
+ /** @brief Type of algorithm used to distribute keys.
123
+ * This also indicates the type of bucket */
124
+ typedef enum {
125
+ LCBVB_DIST_VBUCKET = 0, /**< vBucket hashing ("couchbase") bucket */
126
+ LCBVB_DIST_KETAMA = 1 /**< Ketama hashing ("memcached") bucket */
127
+ } lcbvb_DISTMODE;
128
+
129
+ typedef enum {
130
+ LCBVB_CAP_XATTR = 0x01,
131
+ LCBVB_CAP_CBHELLO = 0x02,
132
+ LCBVB_CAP_CCCP = 0x04,
133
+ LCBVB_CAP_COUCHAPI = 0x08,
134
+ LCBVB_CAP_DCP = 0x10,
135
+ LCBVB_CAP_NODES_EXT = 0x20,
136
+ LCBVB_CAP_TOUCH = 0x40,
137
+ LCBVB_CAP_XDCR_CHECKPOINTING = 0x80
138
+ } lcbvb_BUCKET_CAPABILITIES;
139
+
140
+ /**@volatile. ABI/API compatibility not guaranteed between versions.
141
+ * @brief Structure containing the configuration.*/
142
+ typedef struct lcbvb_CONFIG_st {
143
+ lcbvb_DISTMODE dtype; /**< Type of bucket/distribution */
144
+ unsigned nvb; /**< Number of vbuckets */
145
+ unsigned ndatasrv; /**< Number of data (memcached) servers */
146
+ unsigned nsrv; /** Number of servers */
147
+ unsigned nrepl; /**< Number of replicas */
148
+ unsigned ncontinuum; /* number of continuum points */
149
+ unsigned is3x; /* whether server 3.0 config semantics are in place */
150
+ int revid; /* revision ID from the config (-1 if not present) */
151
+ char *buuid; /* bucket UUID */
152
+ char *bname; /* bucket name */
153
+ const char *errstr; /* last error */
154
+ lcbvb_SERVER *servers; /* nodes */
155
+ lcbvb_VBUCKET *vbuckets; /* vbucket map */
156
+ lcbvb_VBUCKET *ffvbuckets; /* fast-forward map */
157
+ lcbvb_CONTINUUM *continuum; /* ketama continuums */
158
+ int *randbuf; /* Used for random server selection */
159
+ long caps; /**< Server capabilities */
160
+ } lcbvb_CONFIG;
161
+
162
+
163
+ #define LCBVB_NSERVERS(cfg) (cfg)->nsrv
164
+ #define LCBVB_NDATASERVERS(cfg) (cfg)->ndatasrv
165
+ #define LCBVB_NREPLICAS(cfg) (cfg)->nrepl
166
+ #define LCBVB_DISTTYPE(cfg) (cfg)->dtype
167
+ #define LCBVB_CAPS(cfg) (cfg)->caps
168
+ #define LCBVB_GET_SERVER(conf, ix) ((conf)->servers + ix)
169
+
170
+ /**
171
+ * @uncommitted
172
+ * @brief Allocate a new config
173
+ * This can be used to create new config object and load it with a JSON config,
174
+ * optionally retrieving the error code
175
+ * @code{.c}
176
+ * lcbvb_CONFIG *cfg = lcbvb_create();
177
+ * if (0 != lcbvb_load_json(cfg, json)) {
178
+ * printf("Got error!", lcbvb_get_error(cfg));
179
+ * lcbvb_destroy(cfg);
180
+ * }
181
+ * @endcode
182
+ */
183
+ LIBCOUCHBASE_API
184
+ lcbvb_CONFIG *
185
+ lcbvb_create(void);
186
+
187
+ /**
188
+ * @uncommitted
189
+ * Parse the configuration string in `data` and return a new config object
190
+ * @param data
191
+ * @return A new config object, or NULL on error.
192
+ */
193
+ LIBCOUCHBASE_API
194
+ lcbvb_CONFIG *
195
+ lcbvb_parse_json(const char *data);
196
+
197
+ /**
198
+ * @committed
199
+ * Load a JSON-based configuration string into a configuration object
200
+ * @param vbc Object to populate
201
+ * @param data NUL-terminated string to parse
202
+ * @param source hostname of the node, which emitted configuration. Pointer
203
+ * to NULL will disable heuristic when network argument is pointer to NULL
204
+ * string.
205
+ * @param network pointer to string, which specified key in alternative
206
+ * addresses dict. Use pointer NULL string to trigger heuristic, in this
207
+ * case, the function will try to match configuration source address to
208
+ * the list of addresses to determine best network.
209
+ * @return 0 on success, nonzero on failure
210
+ * @note it is recommended to use this function rather than lcbvb_parse_json()
211
+ * as this will contain the error string in the configuration in case of parse
212
+ * failures.
213
+ */
214
+ LIBCOUCHBASE_API
215
+ int
216
+ lcbvb_load_json(lcbvb_CONFIG *vbc, const char *data);
217
+
218
+
219
+ /**
220
+ * @uncommmitted
221
+ */
222
+ LIBCOUCHBASE_API
223
+ int
224
+ lcbvb_load_json_ex(lcbvb_CONFIG *vbc, const char *data, const char *source, char **network);
225
+
226
+ /**@brief Serialize the current config as a JSON string.
227
+ * @volatile
228
+ * Serialize the current configuration as a JSON string. The string returned is
229
+ * NUL-terminated and should be freed using the free() function.
230
+ */
231
+ LIBCOUCHBASE_API
232
+ char *
233
+ lcbvb_save_json(lcbvb_CONFIG *vbc);
234
+
235
+ /**
236
+ * @committed
237
+ * @brief Return a string indicating why parsing the configuration failed
238
+ * @return An error string. Do not free this string
239
+ */
240
+ LIBCOUCHBASE_API
241
+ const char *
242
+ lcbvb_get_error(const lcbvb_CONFIG *vbc);
243
+
244
+ /**
245
+ * @volatile
246
+ * @brief Replace hostname placeholders with specific host string
247
+ * This function shall replace hostname placeholists with the actual host string
248
+ * specified in `hoststr`.
249
+ * @param cfg the configuration
250
+ * @param hostname the actual hostname to use.
251
+ *
252
+ * Use this immediately after a successful parsing of the configuration file.
253
+ */
254
+ LIBCOUCHBASE_API
255
+ void
256
+ lcbvb_replace_host(lcbvb_CONFIG *cfg, const char *hostname);
257
+
258
+ /**
259
+ * @committed
260
+ * Destroy the configuration object
261
+ * @param conf
262
+ */
263
+ LIBCOUCHBASE_API
264
+ void
265
+ lcbvb_destroy(lcbvb_CONFIG *conf);
266
+
267
+ /**
268
+ * @committed
269
+ *
270
+ * Gets the master node index for the given vbucket
271
+ * @param cfg The configuration
272
+ * @param vbid The vbucket to query
273
+ * @return The master index. -1 if offline
274
+ * @warning This function does no bounds checking for `vbid`. Ensure it is
275
+ * within range of `0 < vbid < cfg->nvbs`
276
+ */
277
+ LIBCOUCHBASE_API
278
+ int
279
+ lcbvb_vbmaster(lcbvb_CONFIG *cfg, int vbid);
280
+
281
+ /**
282
+ * @committed
283
+ *
284
+ * Return the 0-based replica index for the given vbucket.
285
+ * @param cfg The configuration object
286
+ * @param vbid The vbucket to query
287
+ * @param ix the replica index to retrieve. This is a number ranging from
288
+ * 0 to vbc->nrepl exclusive.
289
+ * @return The replica index, or -1 if offline
290
+ *
291
+ * @warning This function does no bounds checking for `vbix` or `ix`. Ensure
292
+ * that `0 < vbid < cfg->nvbs` and `-1 < ix < cfg->nrepl`
293
+ */
294
+ LIBCOUCHBASE_API
295
+ int
296
+ lcbvb_vbreplica(lcbvb_CONFIG *cfg, int vbid, unsigned ix);
297
+
298
+ /**
299
+ * @volatile
300
+ * This allows to get the given index for a vbucket server. If the index is
301
+ * 0 then this returns the master index, if the index is greater then it
302
+ * returns the replica index
303
+ */
304
+ #define lcbvb_vbserver(cfg, vbid, ix) ( (ix == 0) ? \
305
+ lcbvb_vbmaster(cfg, vbid) : lcbvb_vbreplica(cfg, vbid, ix-1) )
306
+
307
+
308
+ /**
309
+ * uncommitted
310
+ * Equivalent to
311
+ * @code{.c}
312
+ * lcbvb_nmv_remap_ex(cfg, vbid, bad, 0);
313
+ * @endcode
314
+ */
315
+ #define lcbvb_nmv_remap(cfg, vbid, bad) lcbvb_nmv_remap_ex(cfg, vbid, bad, 0)
316
+
317
+ /**
318
+ * @uncommitted
319
+ *
320
+ * Using various guesswork and heuristics, attempt to locate an alternate node
321
+ * for the master of a given vbucket. This should be used if the master index
322
+ * is -1 or if the master index is deemed incorrect by some other means.
323
+ *
324
+ * @param cfg the configuration object
325
+ * @param vbid the vbucket index to loop up
326
+ * @param bad the index known to be bad. Passing this parameter allows the
327
+ * handler to safely call this function and be sure that a previous call's
328
+ * applied heuristics will not affect the modified map.
329
+ * @param use_heuristics whether additional heuristics should be used. If
330
+ * heuristics is off, only the fast-forward map is employed.
331
+ */
332
+ int
333
+ lcbvb_nmv_remap_ex(lcbvb_CONFIG *cfg, int vbid, int bad, int use_heuristics);
334
+
335
+ /**
336
+ * @committed
337
+ *
338
+ * Map a given string to a vbucket and server
339
+ * @param cfg The configuration object
340
+ * @param key Key to map
341
+ * @param n Length of key
342
+ * @param[out] vbid Will contain the vBucket
343
+ * @param[out] srvix Will contain the server index
344
+ * @return 0 for now
345
+ */
346
+ LIBCOUCHBASE_API
347
+ int
348
+ lcbvb_map_key(lcbvb_CONFIG *cfg, const void *key, lcb_SIZE n,
349
+ int *vbid, int *srvix);
350
+
351
+ /**
352
+ * @committed
353
+ *
354
+ * Maps a key to a vBucket ID
355
+ * @param cfg The configuration
356
+ * @param key The key to retrieve
357
+ * @param n The size of the key
358
+ * @return the vBucket for the key
359
+ */
360
+ LIBCOUCHBASE_API
361
+ int
362
+ lcbvb_k2vb(lcbvb_CONFIG *cfg, const void *key, lcb_SIZE n);
363
+
364
+ /**
365
+ * @uncommitted
366
+ * Determines if a given server index is either a master or a replica for a
367
+ * vbucket
368
+ * @param vbc the configuration
369
+ * @param vbid the vbucket number
370
+ * @param ix the server index to check against
371
+ * @returns nonzero if the server `ix` is either a master or a replica for the
372
+ * vbucket `vbid`. Returns 0 otherwise.
373
+ */
374
+ LIBCOUCHBASE_API
375
+ int
376
+ lcbvb_has_vbucket(lcbvb_CONFIG *vbc, int vbid, int ix);
377
+
378
+ /**@committed
379
+ * @brief Get the number of servers in the bucket. Note that not all servers
380
+ * may actually be available.
381
+ * @param cfg The configuration
382
+ * @return The number of servers
383
+ **/
384
+ LIBCOUCHBASE_API
385
+ unsigned
386
+ lcbvb_get_nservers(const lcbvb_CONFIG *cfg);
387
+
388
+ /**@committed
389
+ * @brief Get the number of replicas the bucket is configured with
390
+ * Note that not all replicas may necessarily be online or available.
391
+ * @param cfg the configuration
392
+ * @return the number of configured replicas
393
+ */
394
+ LIBCOUCHBASE_API
395
+ unsigned
396
+ lcbvb_get_nreplicas(const lcbvb_CONFIG *cfg);
397
+
398
+ /**@committed
399
+ * @brief Get the distribution mode (AKA bucket type) of the bucket
400
+ * @param cfg the configuration
401
+ * @return the distribution mode
402
+ */
403
+ LIBCOUCHBASE_API
404
+ lcbvb_DISTMODE
405
+ lcbvb_get_distmode(const lcbvb_CONFIG *cfg);
406
+
407
+ /**
408
+ * @committed
409
+ *
410
+ * @brief Get the revision for this configuration.
411
+ *
412
+ * The revision is an
413
+ * integer which is increased each time the cluster generates a new
414
+ * configuration. This feature is available only on configurations generated
415
+ * by nodes of Couchbase Server v2.5 or later.
416
+ *
417
+ * @param cfg the configuration
418
+ * @return The revision ID, or `-1` if the config does not have a revision
419
+ */
420
+ LIBCOUCHBASE_API
421
+ int
422
+ lcbvb_get_revision(const lcbvb_CONFIG *cfg);
423
+
424
+ /**
425
+ * @committed
426
+ * @brief Gets the port associated with a given service of a given mode on a given
427
+ * server
428
+ * @param cfg the config object
429
+ * @param ix the index of the server to query
430
+ * @param type the type of service being provided
431
+ * @param mode the mode of transport being used (e.g. plain, ssl)
432
+ * @return a number greater than zero if the port exists, 0 otherwise
433
+ */
434
+ LIBCOUCHBASE_API
435
+ unsigned
436
+ lcbvb_get_port(lcbvb_CONFIG *cfg, unsigned ix,
437
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
438
+
439
+
440
+ /**
441
+ * @committed
442
+ *
443
+ * @brief Return a string for the given service
444
+ * This is like lcbvb_get_port but returns a string in the form of `host:port`
445
+ * rather than the numeric port
446
+ *
447
+ * @param cfg
448
+ * @param ix
449
+ * @param type
450
+ * @param mode
451
+ * @return A string if the service is found, NULL otherwise. The storage
452
+ * duration of the string is valid until the configuration object is
453
+ * destroyed.
454
+ */
455
+ LIBCOUCHBASE_API
456
+ const char *
457
+ lcbvb_get_hostport(lcbvb_CONFIG *cfg, unsigned ix,
458
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
459
+
460
+ /**
461
+ * @committed
462
+ *
463
+ * @brief Get the hostname of a given server index. This may be used if all
464
+ * nodes reside on different hostnames, and can be used to answer the question
465
+ * of "which node does this index belong to" without having to perform
466
+ * additional string processing on the port of the string.
467
+ *
468
+ * @param cfg the configuration
469
+ * @param ix the index of the server to look up
470
+ * @return a hostname without a port, or NULL if the index is out of bounds
471
+ */
472
+ LIBCOUCHBASE_API
473
+ const char *
474
+ lcbvb_get_hostname(const lcbvb_CONFIG *cfg, unsigned ix);
475
+
476
+ /**
477
+ * Function to return the URL prefix for a REST service.
478
+ *
479
+ * Returns a string suitable for being passed as a URL. This is only valid
480
+ * for ::LCBVB_SVCTYPE_VIEWS and ::LCBVB_SVCTYPE_N1QL.
481
+ *
482
+ * This function is different from lcbvb_get_hostport() -- it is mainly a
483
+ * convenience, but does cache the string. Also, theoretically the cluster
484
+ * is free to choose a _different_ URL prefix for a given service. Using this
485
+ * function will guarantee the URL prefix is correct.
486
+ */
487
+ LIBCOUCHBASE_API
488
+ const char *
489
+ lcbvb_get_resturl(lcbvb_CONFIG *cfg, unsigned ix,
490
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
491
+
492
+ /**
493
+ * Convenience function to select a random node for a service.
494
+ * @return 0 or greater if a node was found; a negative number if no node
495
+ * contains a service with the given criteria.
496
+ */
497
+ LIBCOUCHBASE_API
498
+ int
499
+ lcbvb_get_randhost(const lcbvb_CONFIG *cfg,
500
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
501
+
502
+ /**
503
+ * Get random node, excluding nodes already tried
504
+ * @param cfg the config
505
+ * @param type type of service
506
+ * @param mode transport mode
507
+ * @param used an array of integers representing server indexes (should be of
508
+ * size LCBVB_NSERVERS). Servers whose indexes in the `used` array are nonzero
509
+ * will be *skipped*.
510
+ *
511
+ * @return a server index, or -1 if no server remains (either because no
512
+ * server has the service, or because all available servers are in the
513
+ * exclude list)
514
+ */
515
+ LIBCOUCHBASE_API
516
+ int
517
+ lcbvb_get_randhost_ex(const lcbvb_CONFIG *cfg,
518
+ lcbvb_SVCTYPE type, lcbvb_SVCMODE mode, int *used);
519
+
520
+ /** @brief Structure representing changes between two configurations */
521
+ typedef struct {
522
+ /** List of strings of servers added (via `host:data_port`) */
523
+ char **servers_added;
524
+ /** List of strings of servers removed (via `host:data_port`) */
525
+ char **servers_removed;
526
+ /** How many vBuckets have had an ownership change */
527
+ int n_vb_changes;
528
+ /** Whether the ordering of the nodes has changed as well */
529
+ int sequence_changed;
530
+ } lcbvb_CONFIGDIFF, VBUCKET_CONFIG_DIFF;
531
+
532
+ /** @brief Convenience enum to determine the mode of change */
533
+ typedef enum {
534
+ LCBVB_NO_CHANGES = 0, /**< No changes between configs */
535
+ LCBVB_SERVERS_MODIFIED = 1 << 0, /**< Servers have been added or removed */
536
+ LCBVB_MAP_MODIFIED = 1 << 1 /**< vBuckets have been transferred */
537
+ } lcbvb_CHANGETYPE, VBUCKET_CHANGE_STATUS;
538
+
539
+ /**
540
+ * @volatile
541
+ *
542
+ * @brief Compare two configurations and return information on the changes
543
+ * @param from the original configuration to use as the base
544
+ * @param to the new configuration
545
+ * @return an object which may be inspected, or NULL on allocation failure. The
546
+ * returned object should be freed with lcbvb_free_diff()
547
+ * @see lcbvb_get_changetype()
548
+ */
549
+ LIBCOUCHBASE_API
550
+ lcbvb_CONFIGDIFF *
551
+ lcbvb_compare(lcbvb_CONFIG *from, lcbvb_CONFIG *to);
552
+
553
+ /** @brief Free the structure returned by lcbvb_compare() */
554
+ LIBCOUCHBASE_API
555
+ void
556
+ lcbvb_free_diff(lcbvb_CONFIGDIFF *diff);
557
+
558
+ /**@brief Get a quick summary of the changes in the passed object
559
+ * @param diff the diff returned from lcbvb_compare()
560
+ */
561
+ LIBCOUCHBASE_API
562
+ lcbvb_CHANGETYPE
563
+ lcbvb_get_changetype(lcbvb_CONFIGDIFF *diff);
564
+
565
+ /**
566
+ * @volatile
567
+ *
568
+ * @brief Generate a sample configuration.
569
+ * @param vb a new configuration object returned via lcbvb_create()
570
+ * @param name the name of the bucket
571
+ * @param uuid UUID for the bucket
572
+ * @param servers an array of server objects which will serve as the basis
573
+ * for the server list within the configuration. The memory pointed to by
574
+ * servers may be released after this function has completed
575
+ * @param nservers number of servers in the array
576
+ * @param nreplica how many replicas for the bucket
577
+ * @param nvbuckets how many vbuckets for the bucket
578
+ */
579
+ LIBCOUCHBASE_API
580
+ int
581
+ lcbvb_genconfig_ex(lcbvb_CONFIG *vb,
582
+ const char *name, const char *uuid,
583
+ const lcbvb_SERVER *servers,
584
+ unsigned nservers, unsigned nreplica, unsigned nvbuckets);
585
+
586
+ /**
587
+ * @volatile
588
+ *
589
+ * @brief Generate a sample configuration used for testing.
590
+ * @param vb a new configuration object returned via lcbvb_create()
591
+ * @param nservers how many nodes to place into the configuration
592
+ * @param nreplica how many replicas should be assigned to the bucket
593
+ * @param nvbuckets how many vbuckets to create
594
+ * @return 0 on success, nonzero on error
595
+ *
596
+ * @note The base port for the lcbvb_SERVICES::data starts at 1000; the base
597
+ * port for lcbvb_SERVICES::views starts at 2000 and the base port for
598
+ * lcbvb_SERVICES::mgmt starts at 3000. The port number is incremented for
599
+ * each additional node.
600
+ */
601
+ LIBCOUCHBASE_API
602
+ int
603
+ lcbvb_genconfig(lcbvb_CONFIG *vb,
604
+ unsigned nservers, unsigned nreplica, unsigned nvbuckets);
605
+
606
+ /**
607
+ * @volatile
608
+ * Generate a fast-forward vBucket map for the configuration. This simply
609
+ * provides alternate indices.
610
+ */
611
+ LIBCOUCHBASE_API
612
+ void
613
+ lcbvb_genffmap(lcbvb_CONFIG *vb);
614
+
615
+
616
+ /**
617
+ * @volatile
618
+ * Convert the configuration to a ketama one.
619
+ * @param vb The configuration object.
620
+ */
621
+ LIBCOUCHBASE_API
622
+ void
623
+ lcbvb_make_ketama(lcbvb_CONFIG *vb);
624
+
625
+ /**
626
+ * @committed
627
+ *
628
+ * Get the views URL base.
629
+ * @param cfg The configuration
630
+ * @param ix The index of the server to fetch
631
+ * @param mode The mode, either plain or ssl
632
+ * @return A string reprenting the URL, or NULL if not available.
633
+ */
634
+ LIBCOUCHBASE_API
635
+ const char *
636
+ lcbvb_get_capibase(lcbvb_CONFIG *cfg, unsigned ix, lcbvb_SVCMODE mode);
637
+ /**@}*/
638
+
639
+ /*the rest of these symbols are deprecated and should not be touched by
640
+ * doxygen */
641
+
642
+ typedef enum {
643
+ LIBVBUCKET_SOURCE_FILE,
644
+ LIBVBUCKET_SOURCE_MEMORY
645
+ } vbucket_source_t;
646
+
647
+ typedef lcbvb_CONFIG *VBUCKET_CONFIG_HANDLE;
648
+ typedef lcbvb_DISTMODE VBUCKET_DISTRIBUTION_TYPE;
649
+ #define VBUCKET_DISTRIBUTION_VBUCKET LCBVB_DIST_VBUCKET
650
+ #define VBUCKET_DISTRIBUTION_KETAMA LCBVB_DIST_KETAMA
651
+ #define VBUCKET_NO_CHANGES LCBVB_NO_CHANGES
652
+ #define VBUCKET_SERVERS_MODIFIED LCBVB_SERVERS_MODIFIED
653
+ #define VBUCKET_MAP_MODIFIED LCVBVB_MAP_MODIFIED
654
+
655
+ LIBCOUCHBASE_API int vbucket_config_parse(lcbvb_CONFIG*,vbucket_source_t,const char*);
656
+ LIBCOUCHBASE_API const char *vbucket_get_error_message(lcbvb_CONFIG*);
657
+ LIBCOUCHBASE_API lcbvb_CONFIG* vbucket_config_create(void);
658
+ LIBCOUCHBASE_API void vbucket_config_destroy(lcbvb_CONFIG*);
659
+ LIBCOUCHBASE_API int vbucket_config_get_num_replicas(lcbvb_CONFIG*);
660
+ LIBCOUCHBASE_API int vbucket_config_get_num_vbuckets(lcbvb_CONFIG*);
661
+ LIBCOUCHBASE_API int vbucket_config_get_num_servers(lcbvb_CONFIG*);
662
+ LIBCOUCHBASE_API const char *vbucket_config_get_server(lcbvb_CONFIG*,int);
663
+ LIBCOUCHBASE_API const char *vbucket_config_get_couch_api_base(lcbvb_CONFIG*,int);
664
+ LIBCOUCHBASE_API const char *vbucket_config_get_rest_api_server(lcbvb_CONFIG*,int);
665
+ LIBCOUCHBASE_API lcbvb_DISTMODE vbucket_config_get_distribution_type(lcbvb_CONFIG*);
666
+ LIBCOUCHBASE_API int vbucket_map(lcbvb_CONFIG*,const void*,lcb_SIZE,int*,int*);
667
+ LIBCOUCHBASE_API int vbucket_get_vbucket_by_key(lcbvb_CONFIG*,const void*,lcb_SIZE);
668
+ LIBCOUCHBASE_API int vbucket_get_master(lcbvb_CONFIG*,int);
669
+ LIBCOUCHBASE_API int vbucket_get_replica(lcbvb_CONFIG*,int,int);
670
+ LIBCOUCHBASE_API lcbvb_CONFIGDIFF* vbucket_compare(lcbvb_CONFIG*,lcbvb_CONFIG*);
671
+ LIBCOUCHBASE_API void vbucket_free_diff(lcbvb_CONFIGDIFF*);
672
+ LIBCOUCHBASE_API int vbucket_config_get_revision(lcbvb_CONFIG*);
673
+ LIBCOUCHBASE_API lcbvb_CHANGETYPE vbucket_what_changed(lcbvb_CONFIGDIFF *diff);
674
+ LIBCOUCHBASE_API int vbucket_config_generate(lcbvb_CONFIG *vb, unsigned, unsigned, unsigned);
675
+
676
+
677
+ #ifdef __cplusplus
678
+ }
679
+ #endif
680
+ #endif