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,885 @@
1
+ /* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (c) <2008>, Sun Microsystems, Inc.
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions are met:
8
+ * * Redistributions of source code must retain the above copyright
9
+ * notice, this list of conditions and the following disclaimer.
10
+ * * Redistributions in binary form must reproduce the above copyright
11
+ * notice, this list of conditions and the following disclaimer in the
12
+ * documentation and/or other materials provided with the distribution.
13
+ * * Neither the name of the nor the
14
+ * names of its contributors may be used to endorse or promote products
15
+ * derived from this software without specific prior written permission.
16
+ *
17
+ * THIS SOFTWARE IS PROVIDED BY SUN MICROSYSTEMS, INC. ``AS IS'' AND ANY
18
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20
+ * DISCLAIMED. IN NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY
21
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ */
28
+ /*
29
+ * Summary: Constants used by to implement the binary protocol.
30
+ *
31
+ * Copy: See Copyright for the status of this software.
32
+ *
33
+ * Author: Trond Norbye <trond.norbye@sun.com>
34
+ */
35
+
36
+ /**
37
+ * THIS IS A SLIMMED DOWN VERSION FOR LIBCOUCHBASE!
38
+ * It only contains constants used by the library. The header in the
39
+ * memcached source code contains all of the commands actually used.
40
+ */
41
+
42
+ #ifndef PROTOCOL_BINARY_H
43
+ #define PROTOCOL_BINARY_H
44
+
45
+ #if !defined HAVE_STDINT_H && defined _WIN32 && defined(_MSC_VER)
46
+ # include "win_stdint.h"
47
+ #else
48
+ # include <stdint.h>
49
+ #endif
50
+
51
+ /**
52
+ * \addtogroup Protocol
53
+ * @{
54
+ */
55
+
56
+ /**
57
+ * This file contains definitions of the constants and packet formats
58
+ * defined in the binary specification. Please note that you _MUST_ remember
59
+ * to convert each multibyte field to / from network byte order to / from
60
+ * host order.
61
+ */
62
+ #ifdef __cplusplus
63
+ extern "C"
64
+ {
65
+ #endif
66
+
67
+ /**
68
+ * Definition of the legal "magic" values used in a packet.
69
+ * See section 3.1 Magic byte
70
+ */
71
+ typedef enum {
72
+ /* Request packet from client to server */
73
+ PROTOCOL_BINARY_REQ = 0x80,
74
+ /* Response packet from server to client */
75
+ PROTOCOL_BINARY_RES = 0x81,
76
+ /* Response packet from server to client containing frame extras */
77
+ PROTOCOL_BINARY_ARES = 0x18,
78
+ /* Request packet from server to client */
79
+ PROTOCOL_BINARY_SREQ = 0x82,
80
+ /* Response packet from client to server */
81
+ PROTOCOL_BINARY_SRES = 0x83
82
+ } protocol_binary_magic;
83
+
84
+ /**
85
+ * Definition of the valid response status numbers.
86
+ *
87
+ * A well written client should be "future proof" by handling new
88
+ * error codes to be defined. Note that new error codes means that
89
+ * the requested operation wasn't performed.
90
+ */
91
+ typedef enum {
92
+ /** The operation completed successfully */
93
+ PROTOCOL_BINARY_RESPONSE_SUCCESS = 0x00,
94
+ /** The key does not exists */
95
+ PROTOCOL_BINARY_RESPONSE_KEY_ENOENT = 0x01,
96
+ /** The key exists in the cluster (with another CAS value) */
97
+ PROTOCOL_BINARY_RESPONSE_KEY_EEXISTS = 0x02,
98
+ /** The document exceeds the maximum size */
99
+ PROTOCOL_BINARY_RESPONSE_E2BIG = 0x03,
100
+ /** Invalid request */
101
+ PROTOCOL_BINARY_RESPONSE_EINVAL = 0x04,
102
+ /** The document was not stored for some reason. This is
103
+ * currently a "catch all" for number or error situations, and
104
+ * should be split into multiple error codes. */
105
+ PROTOCOL_BINARY_RESPONSE_NOT_STORED = 0x05,
106
+ /** Non-numeric server-side value for incr or decr */
107
+ PROTOCOL_BINARY_RESPONSE_DELTA_BADVAL = 0x06,
108
+ /** The server is not responsible for the requested vbucket */
109
+ PROTOCOL_BINARY_RESPONSE_NOT_MY_VBUCKET = 0x07,
110
+ /** Not connected to a bucket */
111
+ PROTOCOL_BINARY_RESPONSE_NO_BUCKET = 0x08,
112
+ /** The requested resource is locked */
113
+ PROTOCOL_BINARY_RESPONSE_LOCKED = 0x09,
114
+
115
+ /** The authentication context is stale. You should reauthenticate*/
116
+ PROTOCOL_BINARY_RESPONSE_AUTH_STALE = 0x1f,
117
+ /** Authentication failure (invalid user/password combination,
118
+ * OR an internal error in the authentication library. Could
119
+ * be a misconfigured SASL configuration. See server logs for
120
+ * more information.) */
121
+ PROTOCOL_BINARY_RESPONSE_AUTH_ERROR = 0x20,
122
+ /** Authentication OK so far, please continue */
123
+ PROTOCOL_BINARY_RESPONSE_AUTH_CONTINUE = 0x21,
124
+ /** The requested value is outside the legal range
125
+ * (similar to EINVAL, but more specific) */
126
+ PROTOCOL_BINARY_RESPONSE_ERANGE = 0x22,
127
+
128
+ /** No access (could be opcode, value, bucket etc) */
129
+ PROTOCOL_BINARY_RESPONSE_EACCESS = 0x24,
130
+ /** The Couchbase cluster is currently initializing this
131
+ * node, and the Cluster manager has not yet granted all
132
+ * users access to the cluster. */
133
+ PROTOCOL_BINARY_RESPONSE_NOT_INITIALIZED = 0x25,
134
+
135
+ /** The server have no idea what this command is for */
136
+ PROTOCOL_BINARY_RESPONSE_UNKNOWN_COMMAND = 0x81,
137
+ /** Not enough memory */
138
+ PROTOCOL_BINARY_RESPONSE_ENOMEM = 0x82,
139
+ /** The server does not support this command */
140
+ PROTOCOL_BINARY_RESPONSE_NOT_SUPPORTED = 0x83,
141
+ /** An internal error in the server */
142
+ PROTOCOL_BINARY_RESPONSE_EINTERNAL = 0x84,
143
+ /** The system is currently too busy to handle the request.
144
+ * it is _currently_ only being used by the scrubber in
145
+ * default_engine to run a task there may only be one of
146
+ * (subsequent requests to start it would return ebusy until
147
+ * it's done). */
148
+ PROTOCOL_BINARY_RESPONSE_EBUSY = 0x85,
149
+ /** A temporary error condition occurred. Retrying the
150
+ * operation may resolve the problem. This could be that the
151
+ * server is in a degraded situation (like running warmup on
152
+ * the node), the vbucket could be in an "incorrect" state, a
153
+ * temporary failure from the underlying persistence layer,
154
+ * etc).
155
+ */
156
+ PROTOCOL_BINARY_RESPONSE_ETMPFAIL = 0x86,
157
+ /**
158
+ * There is something wrong with the syntax of the provided
159
+ * XATTR.
160
+ */
161
+ PROTOCOL_BINARY_RESPONSE_XATTR_EINVAL = 0x87,
162
+
163
+ /**
164
+ * Operation attempted with an unknown collection.
165
+ */
166
+ PROTOCOL_BINARY_RESPONSE_UNKNOWN_COLLECTION = 0x88,
167
+
168
+ /*
169
+ * Sub-document specific responses.
170
+ */
171
+
172
+ /** The provided path does not exist in the document. */
173
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_PATH_ENOENT = 0xc0,
174
+
175
+ /** One of path components treats a non-dictionary as a dictionary, or
176
+ * a non-array as an array.
177
+ * [Arithmetic operations only] The value the path points to is not
178
+ * a number. */
179
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_PATH_MISMATCH = 0xc1,
180
+
181
+ /** The path’s syntax was incorrect. */
182
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_PATH_EINVAL = 0xc2,
183
+
184
+ /** The path provided is too large; either the string is too long,
185
+ * or it contains too many components. */
186
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_PATH_E2BIG = 0xc3,
187
+
188
+ /** The document has too many levels to parse. */
189
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_DOC_E2DEEP = 0xc4,
190
+
191
+ /** [For mutations only] The value provided will invalidate the JSON if
192
+ * inserted. */
193
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_VALUE_CANTINSERT = 0xc5,
194
+
195
+ /** The existing document is not valid JSON. */
196
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_DOC_NOTJSON = 0xc6,
197
+
198
+ /** [For arithmetic ops] The existing number is out of the valid range
199
+ * for arithmetic ops (cannot be represented as an int64_t). */
200
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_NUM_ERANGE = 0xc7,
201
+
202
+ /** [For arithmetic ops] The operation would result in a number
203
+ * outside the valid range (cannot be represented as an int64_t). */
204
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_DELTA_ERANGE = 0xc8,
205
+
206
+ /** [For mutations only] The requested operation requires the path to
207
+ * not already exist, but it exists. */
208
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_PATH_EEXISTS = 0xc9,
209
+
210
+ /** [For mutations only] Inserting the value would cause the document
211
+ * to be too deep. */
212
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_VALUE_ETOODEEP = 0xca,
213
+
214
+ /** [For multi-path commands only] An invalid combination of commands
215
+ * was specified. */
216
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_INVALID_COMBO = 0xcb,
217
+
218
+ /** [For multi-path commands only] Specified key was successfully
219
+ * found, but one or more path operations failed. Examine the individual
220
+ * lookup_result (MULTI_LOOKUP) / mutation_result (MULTI_MUTATION)
221
+ * structures for details. */
222
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_MULTI_PATH_FAILURE = 0xcc,
223
+
224
+ /**
225
+ * The operation completed successfully, but operated on a deleted
226
+ * document.
227
+ */
228
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_SUCCESS_DELETED = 0xcd,
229
+
230
+ /**
231
+ * The combination of the subdoc flags for the xattrs doesn't make
232
+ * any sense
233
+ */
234
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_INVALID_FLAG_COMBO = 0xce,
235
+
236
+ /**
237
+ * Only a single xattr key may be accessed at the same time.
238
+ */
239
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_INVALID_KEY_COMBO = 0xcf,
240
+
241
+ /**
242
+ * The server has no knowledge of the requested macro
243
+ */
244
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_UNKNOWN_MACRO = 0xd0,
245
+
246
+ /**
247
+ * The server has no knowledge of the requested virtual xattr
248
+ */
249
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_UNKNOWN_VATTR = 0xd1,
250
+
251
+ /**
252
+ * Virtual xattrs can't be modified
253
+ */
254
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_XATTR_CANT_MODIFY_VATTR = 0xd2,
255
+
256
+ /**
257
+ * [For multi-path commands only] Specified key was found as a
258
+ * Deleted document, but one or more path operations
259
+ * failed. Examine the individual lookup_result (MULTI_LOOKUP) /
260
+ * mutation_result (MULTI_MUTATION) structures for details.
261
+ */
262
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_MULTI_PATH_FAILURE_DELETED = 0xd3,
263
+
264
+ /**
265
+ * According to the spec all xattr commands should come first,
266
+ * followed by the commands for the document body
267
+ */
268
+ PROTOCOL_BINARY_RESPONSE_SUBDOC_INVALID_XATTR_ORDER = 0xd4
269
+ } protocol_binary_response_status;
270
+
271
+ /**
272
+ * Defintion of the different command opcodes.
273
+ * See section 3.3 Command Opcodes
274
+ */
275
+ typedef enum {
276
+ PROTOCOL_BINARY_CMD_GET = 0x00,
277
+ PROTOCOL_BINARY_CMD_SET = 0x01,
278
+ PROTOCOL_BINARY_CMD_ADD = 0x02,
279
+ PROTOCOL_BINARY_CMD_REPLACE = 0x03,
280
+ PROTOCOL_BINARY_CMD_DELETE = 0x04,
281
+ PROTOCOL_BINARY_CMD_INCREMENT = 0x05,
282
+ PROTOCOL_BINARY_CMD_DECREMENT = 0x06,
283
+ PROTOCOL_BINARY_CMD_FLUSH = 0x08,
284
+ PROTOCOL_BINARY_CMD_GETQ = 0x09 /* Used in tests */,
285
+ PROTOCOL_BINARY_CMD_NOOP = 0x0a,
286
+ PROTOCOL_BINARY_CMD_VERSION = 0x0b,
287
+ PROTOCOL_BINARY_CMD_APPEND = 0x0e,
288
+ PROTOCOL_BINARY_CMD_PREPEND = 0x0f,
289
+ PROTOCOL_BINARY_CMD_STAT = 0x10,
290
+ PROTOCOL_BINARY_CMD_VERBOSITY = 0x1b,
291
+ PROTOCOL_BINARY_CMD_TOUCH = 0x1c,
292
+ PROTOCOL_BINARY_CMD_GAT = 0x1d,
293
+ PROTOCOL_BINARY_CMD_HELLO = 0x1f,
294
+
295
+ PROTOCOL_BINARY_CMD_SASL_LIST_MECHS = 0x20,
296
+ PROTOCOL_BINARY_CMD_SASL_AUTH = 0x21,
297
+ PROTOCOL_BINARY_CMD_SASL_STEP = 0x22,
298
+
299
+ PROTOCOL_BINARY_CMD_GET_REPLICA = 0x83,
300
+
301
+ PROTOCOL_BINARY_CMD_SELECT_BUCKET = 0x89,
302
+
303
+ PROTOCOL_BINARY_CMD_OBSERVE_SEQNO = 0x91,
304
+ PROTOCOL_BINARY_CMD_OBSERVE = 0x92,
305
+
306
+ PROTOCOL_BINARY_CMD_GET_LOCKED = 0x94,
307
+ PROTOCOL_BINARY_CMD_UNLOCK_KEY = 0x95,
308
+
309
+ PROTOCOL_BINARY_CMD_GET_CLUSTER_CONFIG = 0xb5,
310
+
311
+ /**
312
+ * Commands for the Sub-document API.
313
+ */
314
+
315
+ /* Retrieval commands */
316
+ PROTOCOL_BINARY_CMD_SUBDOC_GET = 0xc5,
317
+ PROTOCOL_BINARY_CMD_SUBDOC_EXISTS = 0xc6,
318
+
319
+ /* Dictionary commands */
320
+ PROTOCOL_BINARY_CMD_SUBDOC_DICT_ADD = 0xc7,
321
+ PROTOCOL_BINARY_CMD_SUBDOC_DICT_UPSERT = 0xc8,
322
+
323
+ /* Generic modification commands */
324
+ PROTOCOL_BINARY_CMD_SUBDOC_DELETE = 0xc9,
325
+ PROTOCOL_BINARY_CMD_SUBDOC_REPLACE = 0xca,
326
+
327
+ /* Array commands */
328
+ PROTOCOL_BINARY_CMD_SUBDOC_ARRAY_PUSH_LAST = 0xcb,
329
+ PROTOCOL_BINARY_CMD_SUBDOC_ARRAY_PUSH_FIRST = 0xcc,
330
+ PROTOCOL_BINARY_CMD_SUBDOC_ARRAY_INSERT = 0xcd,
331
+ PROTOCOL_BINARY_CMD_SUBDOC_ARRAY_ADD_UNIQUE = 0xce,
332
+
333
+ /* Arithmetic commands */
334
+ PROTOCOL_BINARY_CMD_SUBDOC_COUNTER = 0xcf,
335
+
336
+ /* Multi-Path commands */
337
+ PROTOCOL_BINARY_CMD_SUBDOC_MULTI_LOOKUP = 0xd0,
338
+ PROTOCOL_BINARY_CMD_SUBDOC_MULTI_MUTATION = 0xd1,
339
+
340
+ /* Subdoc additions for Spock: */
341
+ PROTOCOL_BINARY_CMD_SUBDOC_GET_COUNT = 0xd2,
342
+
343
+ /* get error code mappings */
344
+ PROTOCOL_BINARY_CMD_GET_ERROR_MAP = 0xfe,
345
+
346
+ /* Reserved for being able to signal invalid opcode */
347
+ PROTOCOL_BINARY_CMD_INVALID = 0xff
348
+ } protocol_binary_command;
349
+
350
+ /**
351
+ * Definition of the data types in the packet
352
+ * See section 3.4 Data Types
353
+ */
354
+ typedef enum {
355
+ PROTOCOL_BINARY_RAW_BYTES = 0x00,
356
+ PROTOCOL_BINARY_DATATYPE_JSON = 0x01,
357
+ PROTOCOL_BINARY_DATATYPE_COMPRESSED = 0x02
358
+ } protocol_binary_datatypes;
359
+
360
+ /**
361
+ * Definition of the header structure for a request packet.
362
+ * See section 2
363
+ */
364
+ typedef union {
365
+ struct {
366
+ uint8_t magic;
367
+ uint8_t opcode;
368
+ uint16_t keylen;
369
+ uint8_t extlen;
370
+ uint8_t datatype;
371
+ uint16_t vbucket;
372
+ uint32_t bodylen;
373
+ uint32_t opaque;
374
+ uint64_t cas;
375
+ } request;
376
+ uint8_t bytes[24];
377
+ } protocol_binary_request_header;
378
+
379
+ /**
380
+ * Definition of the header structure for a response packet.
381
+ * See section 2
382
+ */
383
+ typedef union {
384
+ struct {
385
+ uint8_t magic;
386
+ uint8_t opcode;
387
+ uint16_t keylen;
388
+ uint8_t extlen;
389
+ uint8_t datatype;
390
+ uint16_t status;
391
+ uint32_t bodylen;
392
+ uint32_t opaque;
393
+ uint64_t cas;
394
+ } response;
395
+ uint8_t bytes[24];
396
+ } protocol_binary_response_header;
397
+
398
+ /**
399
+ * Definition of a request-packet containing no extras
400
+ */
401
+ typedef union {
402
+ struct {
403
+ protocol_binary_request_header header;
404
+ } message;
405
+ uint8_t bytes[sizeof(protocol_binary_request_header)];
406
+ } protocol_binary_request_no_extras;
407
+
408
+ /**
409
+ * Definition of a response-packet containing no extras
410
+ */
411
+ typedef union {
412
+ struct {
413
+ protocol_binary_response_header header;
414
+ } message;
415
+ uint8_t bytes[sizeof(protocol_binary_response_header)];
416
+ } protocol_binary_response_no_extras;
417
+
418
+
419
+ /**
420
+ * Definition of the packet returned from a successful get, getq, getk and
421
+ * getkq.
422
+ * See section 4
423
+ */
424
+ typedef union {
425
+ struct {
426
+ protocol_binary_response_header header;
427
+ struct {
428
+ uint32_t flags;
429
+ } body;
430
+ } message;
431
+ uint8_t bytes[sizeof(protocol_binary_response_header) + 4];
432
+ } protocol_binary_response_get;
433
+
434
+ /* used by tests */
435
+ typedef protocol_binary_response_get protocol_binary_response_getq;
436
+
437
+ /**
438
+ * Definition of the packet used by the delete command
439
+ * See section 4
440
+ */
441
+ typedef protocol_binary_request_no_extras protocol_binary_request_delete;
442
+
443
+ /**
444
+ * Definition of the packet returned by the delete command
445
+ * See section 4
446
+ *
447
+ * extlen should be either zero, or 16 if the client has enabled the
448
+ * MUTATION_SEQNO feature, with the following format:
449
+ *
450
+ * Header: (0-23): <protocol_binary_response_header>
451
+ * Extras:
452
+ * Vbucket UUID (24-31): 0x0000000000003039
453
+ * Seqno (32-39): 0x000000000000002D
454
+ */
455
+ typedef protocol_binary_response_no_extras protocol_binary_response_delete;
456
+
457
+ /**
458
+ * Definition of the packet used by set, add and replace
459
+ * See section 4
460
+ */
461
+ typedef union {
462
+ struct {
463
+ protocol_binary_request_header header;
464
+ struct {
465
+ uint32_t flags;
466
+ uint32_t expiration;
467
+ } body;
468
+ } message;
469
+ uint8_t bytes[sizeof(protocol_binary_request_header) + 8];
470
+ } protocol_binary_request_set;
471
+
472
+ /**
473
+ * Definition of the structure used by the increment and decrement
474
+ * command.
475
+ * See section 4
476
+ */
477
+ typedef union {
478
+ struct {
479
+ protocol_binary_request_header header;
480
+ struct {
481
+ uint64_t delta;
482
+ uint64_t initial;
483
+ uint32_t expiration;
484
+ } body;
485
+ } message;
486
+ uint8_t bytes[sizeof(protocol_binary_request_header) + 20];
487
+ } protocol_binary_request_incr;
488
+ typedef protocol_binary_request_incr protocol_binary_request_decr;
489
+
490
+ /**
491
+ * Definition of the response from an incr or decr command
492
+ * command.
493
+ *
494
+ * The result of the incr/decr is a uint64_t placed at header + extlen.
495
+ *
496
+ * extlen should be either zero, or 16 if the client has enabled the
497
+ * MUTATION_SEQNO feature, with the following format:
498
+ *
499
+ * Header: (0-23): <protocol_binary_response_header>
500
+ * Extras:
501
+ * Vbucket UUID (24-31): 0x0000000000003039
502
+ * Seqno (32-39): 0x000000000000002D
503
+ * Value: (40-47): ....
504
+ *
505
+ */
506
+ typedef protocol_binary_response_no_extras protocol_binary_response_incr;
507
+ typedef protocol_binary_response_no_extras protocol_binary_response_decr;
508
+
509
+ /**
510
+ * Definition of the packet returned from a successful version command
511
+ * See section 4
512
+ */
513
+ typedef protocol_binary_response_no_extras protocol_binary_response_version;
514
+
515
+
516
+ /**
517
+ * Definition of the packet used by the stats command.
518
+ * See section 4
519
+ */
520
+ typedef protocol_binary_request_no_extras protocol_binary_request_stats;
521
+
522
+ /**
523
+ * Definition of the packet returned from a successful stats command
524
+ * See section 4
525
+ */
526
+ typedef protocol_binary_response_no_extras protocol_binary_response_stats;
527
+
528
+ /**
529
+ * Definition of the packet used by the verbosity command
530
+ */
531
+ typedef union {
532
+ struct {
533
+ protocol_binary_request_header header;
534
+ struct {
535
+ uint32_t level;
536
+ } body;
537
+ } message;
538
+ uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
539
+ } protocol_binary_request_verbosity;
540
+
541
+ /**
542
+ * Definition of the packet returned from the verbosity command
543
+ */
544
+ typedef protocol_binary_response_no_extras protocol_binary_response_verbosity;
545
+
546
+ /**
547
+ * Definition of the packet used by the touch command.
548
+ */
549
+ typedef union {
550
+ struct {
551
+ protocol_binary_request_header header;
552
+ struct {
553
+ uint32_t expiration;
554
+ } body;
555
+ } message;
556
+ uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
557
+ } protocol_binary_request_touch;
558
+
559
+ /**
560
+ * Definition of the packet returned from the touch command
561
+ */
562
+ typedef protocol_binary_response_no_extras protocol_binary_response_touch;
563
+
564
+ /**
565
+ * Definition of the packet used by the GAT(Q) command.
566
+ */
567
+ typedef union {
568
+ struct {
569
+ protocol_binary_request_header header;
570
+ struct {
571
+ uint32_t expiration;
572
+ } body;
573
+ } message;
574
+ uint8_t bytes[sizeof(protocol_binary_request_header) + 4];
575
+ } protocol_binary_request_gat;
576
+
577
+
578
+ /**
579
+ * Definition of the packet used by SUBDOCUMENT single-path commands.
580
+ *
581
+ * The path, which is always required, is in the Body, after the Key.
582
+ *
583
+ * Header: 24 @0: <protocol_binary_request_header>
584
+ * Extras:
585
+ * Sub-document flags 1 @24: <protocol_binary_subdoc_flag>
586
+ * Sub-document pathlen 2 @25: <variable>
587
+ * Body:
588
+ * Key keylen @27: <variable>
589
+ * Path pathlen @27+keylen: <variable>
590
+ * Value to insert/replace
591
+ * vallen-keylen-pathlen @27+keylen+pathlen: [variable]
592
+ */
593
+ typedef union {
594
+ struct {
595
+ protocol_binary_request_header header;
596
+ struct {
597
+ uint16_t pathlen; // Length in bytes of the sub-doc path.
598
+ uint8_t subdoc_flags; // See protocol_binary_subdoc_flag
599
+ } extras;
600
+ } message;
601
+ uint8_t bytes[sizeof(protocol_binary_request_header) + 3];
602
+ } protocol_binary_request_subdocument;
603
+
604
+
605
+ /** Definition of the packet used by SUBDOCUMENT responses.
606
+ */
607
+ typedef union {
608
+ struct {
609
+ protocol_binary_response_header header;
610
+ } message;
611
+ uint8_t bytes[sizeof(protocol_binary_response_header)];
612
+ } protocol_binary_response_subdocument;
613
+
614
+ /**
615
+ * Definition of the request packets used by SUBDOCUMENT multi-path commands.
616
+ *
617
+ * Multi-path sub-document commands differ from single-path in that they
618
+ * encode a series of multiple paths to operate on (from a single key).
619
+ * There are two multi-path commands - MULTI_LOOKUP and MULTI_MUTATION.
620
+ * - MULTI_LOOKUP consists of variable number of subdoc lookup commands
621
+ * (SUBDOC_GET or SUBDOC_EXISTS).
622
+ * - MULTI_MUTATION consists of a variable number of subdoc mutation
623
+ * commands (i.e. all subdoc commands apart from
624
+ * SUBDOC_{GET,EXISTS}).
625
+ *
626
+ * Each path to be operated on is specified by an Operation Spec, which are
627
+ * contained in the body. This defines the opcode, path, and value
628
+ * (for mutations).
629
+ *
630
+ * A maximum of MULTI_MAX_PATHS paths (operations) can be encoded in a
631
+ * single multi-path command.
632
+ *
633
+ * SUBDOC_MULTI_LOOKUP:
634
+ * Header: 24 @0: <protocol_binary_request_header>
635
+ * Extras: 0 @24: no extras
636
+ * Body: <variable> @24:
637
+ * Key keylen @24: <variable>
638
+ * 1..MULTI_MAX_PATHS [Lookup Operation Spec]
639
+ *
640
+ * Lookup Operation Spec:
641
+ * 1 @0 : Opcode
642
+ * 1 @1 : Flags
643
+ * 2 @2 : Path Length
644
+ * pathlen @4 : Path
645
+ */
646
+ static const int PROTOCOL_BINARY_SUBDOC_MULTI_MAX_PATHS = 16;
647
+
648
+ typedef struct {
649
+ uint8_t opcode;
650
+ uint8_t flags;
651
+ uint16_t pathlen;
652
+ /* uint8_t path[pathlen] */
653
+ } protocol_binary_subdoc_multi_lookup_spec;
654
+
655
+ typedef protocol_binary_request_no_extras protocol_binary_request_subdocument_multi_lookup;
656
+
657
+ /*
658
+ *
659
+ * SUBDOC_MULTI_MUTATION
660
+ * Header: 24 @0: <protocol_binary_request_header>
661
+ * Extras: 0 @24:
662
+ * Body: variable @24:
663
+ * Key keylen @24: <variable>
664
+ * 1..MULTI_MAX_PATHS [Mutation Operation Spec]
665
+ *
666
+ * Mutation Operation Spec:
667
+ * 1 @0 : Opcode
668
+ * 1 @1 : Flags
669
+ * 2 @2 : Path Length
670
+ * 4 @4 : Value Length
671
+ * pathlen @8 : Path
672
+ * vallen @8+pathlen : Value
673
+ */
674
+ typedef struct {
675
+ uint8_t opcode;
676
+ uint8_t flags;
677
+ uint16_t pathlen;
678
+ uint32_t valuelen;
679
+ /* uint8_t path[pathlen] */
680
+ /* uint8_t value[valuelen] */
681
+ } protocol_binary_subdoc_multi_mutation_spec;
682
+
683
+ typedef protocol_binary_request_no_extras protocol_binary_request_subdocument_multi_mutation;
684
+
685
+ /**
686
+ * Definition of the response packets used by SUBDOCUMENT multi-path
687
+ * commands.
688
+ *
689
+ * SUBDOC_MULTI_LOOKUP - Body consists of a series of lookup_result structs,
690
+ * one per lookup_spec in the request.
691
+ *
692
+ * Lookup Result:
693
+ * 2 @0 : status
694
+ * 4 @2 : resultlen
695
+ * resultlen @6 : result
696
+ */
697
+ typedef struct {
698
+ protocol_binary_request_header header;
699
+ /* Variable-length 1..PROTOCOL_BINARY_SUBDOC_MULTI_MAX_PATHS */
700
+ protocol_binary_subdoc_multi_lookup_spec body[1];
701
+ } protocol_binary_response_subdoc_multi_lookup;
702
+
703
+ /**
704
+ * SUBDOC_MULTI_MUTATION - Body is either empty (if all mutations
705
+ * successful), or contains the sub-code and
706
+ * index of the first failed mutation spec..
707
+ * Mutation Result (failure):
708
+ * 2 @0 : Status code of first spec which failed.
709
+ * 1 @2 : 0-based index of the first spec which failed.
710
+ */
711
+ typedef union {
712
+ struct {
713
+ protocol_binary_response_header header;
714
+ } message;
715
+ uint8_t bytes[sizeof(protocol_binary_response_header)];
716
+ } protocol_binary_response_subdoc_multi_mutation;
717
+
718
+ /**
719
+ * Definition of hello's features.
720
+ */
721
+ typedef enum {
722
+ PROTOCOL_BINARY_FEATURE_INVALID = 0x01,
723
+ PROTOCOL_BINARY_FEATURE_TLS = 0x2,
724
+ PROTOCOL_BINARY_FEATURE_TCPNODELAY = 0x03,
725
+ PROTOCOL_BINARY_FEATURE_MUTATION_SEQNO = 0x04,
726
+ PROTOCOL_BINARY_FEATURE_TCPDELAY = 0x05,
727
+ PROTOCOL_BINARY_FEATURE_XATTR = 0x06,
728
+ PROTOCOL_BINARY_FEATURE_XERROR = 0x07,
729
+ PROTOCOL_BINARY_FEATURE_SELECT_BUCKET = 0x08,
730
+ PROTOCOL_BINARY_FEATURE_COLLECTIONS = 0x09,
731
+ PROTOCOL_BINARY_FEATURE_SNAPPY = 0x0a,
732
+ PROTOCOL_BINARY_FEATURE_JSON = 0x0b,
733
+ PROTOCOL_BINARY_FEATURE_DUPLEX = 0x0c,
734
+ PROTOCOL_BINARY_FEATURE_CLUSTERMAP_CHANGE_NOTIFICATION = 0x0d,
735
+ PROTOCOL_BINARY_FEATURE_UNORDERED_EXECUTION = 0x0e,
736
+ PROTOCOL_BINARY_FEATURE_TRACING = 0x0f
737
+ } protocol_binary_hello_features;
738
+
739
+ #define MEMCACHED_FIRST_HELLO_FEATURE 0x01
740
+ #define MEMCACHED_TOTAL_HELLO_FEATURES 15
741
+
742
+ // clang-format off
743
+ #define protocol_feature_2_text(a) \
744
+ (a == PROTOCOL_BINARY_FEATURE_INVALID) ? "Invalid" : \
745
+ (a == PROTOCOL_BINARY_FEATURE_TLS) ? "TLS" : \
746
+ (a == PROTOCOL_BINARY_FEATURE_TCPNODELAY) ? "TCP nodelay" : \
747
+ (a == PROTOCOL_BINARY_FEATURE_MUTATION_SEQNO) ? "Mutation seqno" : \
748
+ (a == PROTOCOL_BINARY_FEATURE_TCPDELAY) ? "TCP delay" : \
749
+ (a == PROTOCOL_BINARY_FEATURE_XATTR) ? "XATTR" : \
750
+ (a == PROTOCOL_BINARY_FEATURE_XERROR) ? "XERROR": \
751
+ (a == PROTOCOL_BINARY_FEATURE_SELECT_BUCKET) ? "Select bucket": \
752
+ (a == PROTOCOL_BINARY_FEATURE_COLLECTIONS) ? "Collections": \
753
+ (a == PROTOCOL_BINARY_FEATURE_SNAPPY) ? "Snappy": \
754
+ (a == PROTOCOL_BINARY_FEATURE_JSON) ? "JSON": \
755
+ (a == PROTOCOL_BINARY_FEATURE_DUPLEX) ? "Duplex": \
756
+ (a == PROTOCOL_BINARY_FEATURE_CLUSTERMAP_CHANGE_NOTIFICATION) ? "Clustermap change notification": \
757
+ (a == PROTOCOL_BINARY_FEATURE_UNORDERED_EXECUTION) ? "Unordered execution": \
758
+ (a == PROTOCOL_BINARY_FEATURE_TRACING) ? "Tracing": \
759
+ "Unknown"
760
+ // clang-format on
761
+
762
+ /**
763
+ * The HELLO command is used by the client and the server to agree
764
+ * upon the set of features the other end supports. It is initiated
765
+ * by the client by sending its agent string and the list of features
766
+ * it would like to use. The server will then reply with the list
767
+ * of the requested features it supports.
768
+ *
769
+ * ex:
770
+ * Client -> HELLO [myclient 2.0] datatype, tls
771
+ * Server -> HELLO SUCCESS datatype
772
+ *
773
+ * In this example the server responds that it allows the client to
774
+ * use the datatype extension, but not the tls extension.
775
+ */
776
+
777
+
778
+ /**
779
+ * Definition of the packet requested by hello cmd.
780
+ * Key: This is a client-specific identifier (not really used by
781
+ * the server, except for logging the HELLO and may therefore
782
+ * be used to identify the client at a later time)
783
+ * Body: Contains all features supported by client. Each feature is
784
+ * specified as an uint16_t in network byte order.
785
+ */
786
+ typedef protocol_binary_request_no_extras protocol_binary_request_hello;
787
+
788
+
789
+ /**
790
+ * Definition of the packet returned by hello cmd.
791
+ * Body: Contains all features requested by the client that the
792
+ * server agrees to ssupport. Each feature is
793
+ * specified as an uint16_t in network byte order.
794
+ */
795
+ typedef protocol_binary_response_no_extras protocol_binary_response_hello;
796
+
797
+ /**
798
+ * The message format for getLocked engine API
799
+ */
800
+ typedef protocol_binary_request_gat protocol_binary_request_getl;
801
+
802
+ /**
803
+ * Message format for CMD_GET_CONFIG
804
+ */
805
+ typedef protocol_binary_request_no_extras protocol_binary_request_get_cluster_config;
806
+
807
+ #define OBS_STATE_NOT_PERSISTED 0x00
808
+ #define OBS_STATE_PERSISTED 0x01
809
+ #define OBS_STATE_NOT_FOUND 0x80
810
+ #define OBS_STATE_LOGICAL_DEL 0x81
811
+
812
+ /**
813
+ * The PROTOCOL_BINARY_CMD_OBSERVE_SEQNO command is used by the
814
+ * client to retrieve information about the vbucket in order to
815
+ * find out if a particular mutation has been persisted or
816
+ * replicated at the server side. In order to do so, the client
817
+ * would pass the vbucket uuid of the vbucket that it wishes to
818
+ * observe to the serve. The response would contain the last
819
+ * persisted sequence number and the latest sequence number in the
820
+ * vbucket. For example, if a client sends a request to observe
821
+ * the vbucket 0 with uuid 12345 and if the response contains the
822
+ * values <58, 65> and then the client can infer that sequence
823
+ * number 56 has been persisted, 60 has only been replicated and
824
+ * not been persisted yet and 68 has not been replicated yet.
825
+ */
826
+
827
+ /**
828
+ * Definition of the request packet for the observe_seqno command.
829
+ *
830
+ * Header: Contains the vbucket id of the vbucket that the client
831
+ * wants to observe.
832
+ *
833
+ * Body: Contains the vbucket uuid of the vbucket that the client
834
+ * wants to observe. The vbucket uuid is of type uint64_t.
835
+ *
836
+ */
837
+ typedef union {
838
+ struct {
839
+ protocol_binary_request_header header;
840
+ struct {
841
+ uint64_t uuid;
842
+ } body;
843
+ } message;
844
+ uint8_t bytes[sizeof(protocol_binary_request_header) + 8];
845
+ } protocol_binary_request_observe_seqno;
846
+
847
+ /**
848
+ * Definition of the response packet for the observe_seqno command.
849
+ * Body: Contains a tuple of the form
850
+ * <format_type, vbucket id, vbucket uuid, last_persisted_seqno, current_seqno>
851
+ *
852
+ * - format_type is of type uint8_t and it describes whether
853
+ * the vbucket has failed over or not. 1 indicates a hard
854
+ * failover, 0 indicates otherwise.
855
+ * - vbucket id is of type uint16_t and it is the identifier for
856
+ * the vbucket.
857
+ * - vbucket uuid is of type uint64_t and it represents a UUID for
858
+ * the vbucket.
859
+ * - last_persisted_seqno is of type uint64_t and it is the
860
+ * last sequence number that was persisted for this
861
+ * vbucket.
862
+ * - current_seqno is of the type uint64_t and it is the
863
+ * sequence number of the latest mutation in the vbucket.
864
+ *
865
+ * In the case of a hard failover, the tuple is of the form
866
+ * <format_type, vbucket id, vbucket uuid, last_persisted_seqno, current_seqno,
867
+ * old vbucket uuid, last_received_seqno>
868
+ *
869
+ * - old vbucket uuid is of type uint64_t and it is the
870
+ * vbucket UUID of the vbucket prior to the hard failover.
871
+ *
872
+ * - last_received_seqno is of type uint64_t and it is the
873
+ * last received sequence number in the old vbucket uuid.
874
+ *
875
+ * The other fields are the same as that mentioned in the normal case.
876
+ */
877
+ typedef protocol_binary_response_no_extras protocol_binary_response_observe_seqno;
878
+
879
+ /**
880
+ * @}
881
+ */
882
+ #ifdef __cplusplus
883
+ }
884
+ #endif
885
+ #endif /* PROTOCOL_BINARY_H */