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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.gitmodules +3 -0
- data/.rspec +1 -0
- data/.travis.yml +38 -0
- data/Gemfile +4 -0
- data/LICENSE +24 -0
- data/README.md +445 -0
- data/Rakefile +76 -0
- data/ext/README.md +6 -0
- data/ext/Rakefile +19 -0
- data/ext/libcouchbase/.gitignore +132 -0
- data/ext/libcouchbase/CMakeLists.txt +455 -0
- data/ext/libcouchbase/CONTRIBUTING.md +105 -0
- data/ext/libcouchbase/LICENSE +202 -0
- data/ext/libcouchbase/README.markdown +195 -0
- data/ext/libcouchbase/RELEASE_NOTES.markdown +3523 -0
- data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +52 -0
- data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
- data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
- data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +18 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +54 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +57 -0
- data/ext/libcouchbase/cmake/Modules/FindProfiler.cmake +16 -0
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +49 -0
- data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +142 -0
- data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
- data/ext/libcouchbase/cmake/config-cmake.h.in +80 -0
- data/ext/libcouchbase/cmake/configure +355 -0
- data/ext/libcouchbase/cmake/defs.mk.in +6 -0
- data/ext/libcouchbase/cmake/dtrace-instr-link.pl +51 -0
- data/ext/libcouchbase/cmake/libcouchbase.stp.in +829 -0
- data/ext/libcouchbase/cmake/source_files.cmake +104 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.c +1022 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
- data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +25 -0
- data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
- data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +259 -0
- data/ext/libcouchbase/contrib/cbsasl/src/client.c +419 -0
- data/ext/libcouchbase/contrib/cbsasl/src/common.c +50 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
- data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.c +500 -0
- data/ext/libcouchbase/contrib/cbsasl/src/scram-sha/scram_utils.h +99 -0
- data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
- data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.c +938 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.h +610 -0
- data/ext/libcouchbase/contrib/genhash/genhash.c +371 -0
- data/ext/libcouchbase/contrib/genhash/genhash.h +241 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
- data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
- data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
- data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
- data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
- data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
- data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
- data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4893 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
- data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +7 -0
- data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
- data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
- data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
- data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
- data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +75 -0
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +100 -0
- data/ext/libcouchbase/contrib/snappy/snappy.cc +1312 -0
- data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
- data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
- data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
- data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
- data/ext/libcouchbase/doc/Doxyfile +2495 -0
- data/ext/libcouchbase/doc/DoxygenLayout.xml +109 -0
- data/ext/libcouchbase/doc/Makefile +44 -0
- data/ext/libcouchbase/doc/apiattr.h +117 -0
- data/ext/libcouchbase/doc/cbc-n1qlback.markdown +88 -0
- data/ext/libcouchbase/doc/cbc-pillowfight.markdown +296 -0
- data/ext/libcouchbase/doc/cbc-subdoc.markdown +299 -0
- data/ext/libcouchbase/doc/cbc.markdown +763 -0
- data/ext/libcouchbase/doc/cbcrc.markdown +52 -0
- data/ext/libcouchbase/doc/common-additional-options.markdown +82 -0
- data/ext/libcouchbase/doc/common-options.markdown +71 -0
- data/ext/libcouchbase/doc/environment.h +93 -0
- data/ext/libcouchbase/doc/example/threads.c +77 -0
- data/ext/libcouchbase/doc/footer.html +22 -0
- data/ext/libcouchbase/doc/genman.sh +25 -0
- data/ext/libcouchbase/doc/header.html +52 -0
- data/ext/libcouchbase/doc/intro.h +130 -0
- data/ext/libcouchbase/doc/mainpage.h +136 -0
- data/ext/libcouchbase/doc/man/cbc-admin.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-bucket-create.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-bucket-delete.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-cat.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-connstr.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-cp.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-create.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-decr.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-flush.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-hash.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-incr.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-lock.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-mcflush.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-mcversion.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-n1ql.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-n1qlback.1 +198 -0
- data/ext/libcouchbase/doc/man/cbc-observe.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-pillowfight.1 +499 -0
- data/ext/libcouchbase/doc/man/cbc-ping.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-rm.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-role-list.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-stats.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-subdoc.1 +494 -0
- data/ext/libcouchbase/doc/man/cbc-unlock.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-user-delete.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-user-list.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-user-upsert.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-verbosity.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-version.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-view.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc-watch.1 +1 -0
- data/ext/libcouchbase/doc/man/cbc.1 +1035 -0
- data/ext/libcouchbase/doc/man/cbcrc.4 +71 -0
- data/ext/libcouchbase/doc/style.css +1162 -0
- data/ext/libcouchbase/example/CMakeLists.txt +52 -0
- data/ext/libcouchbase/example/README.markdown +47 -0
- data/ext/libcouchbase/example/analytics/.gitignore +1 -0
- data/ext/libcouchbase/example/analytics/analytics.c +158 -0
- data/ext/libcouchbase/example/analytics/build-queries.rb +34 -0
- data/ext/libcouchbase/example/analytics/cJSON.c +1 -0
- data/ext/libcouchbase/example/analytics/cJSON.h +1 -0
- data/ext/libcouchbase/example/analytics/queries/00-show-dataverse.json +5 -0
- data/ext/libcouchbase/example/analytics/queries/01-setup-dataset-breweries.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/02-setup-dataset-beers.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/03-initiate-shadow.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/04-list-datasets.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/05-count-breweries.json +5 -0
- data/ext/libcouchbase/example/analytics/queries/06-first-brewery.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/07-key-based-lookup.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/08-exact-match-lookup.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/09-exact-match-lookup-different-shape.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/10-other-query-filters.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/11-equijoin.json +9 -0
- data/ext/libcouchbase/example/analytics/queries/12-equijoin-select-star.json +10 -0
- data/ext/libcouchbase/example/analytics/queries/13-ansi-join.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/14-join-select-values.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/15-nested-outer-join.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/16-theta-join.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/17-existential-quantification.json +9 -0
- data/ext/libcouchbase/example/analytics/queries/18-universal-quantification.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/19-simple-aggregation.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/20-simple-aggregation-unwrapped-value.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/21-simple-aggregation-explicit.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/22-grouping-and-aggregation.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/23-grouping-and-aggregation-with-hint.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/24-grouping-and-limits.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/25-named-parameters.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/26-positional-parameters.json +7 -0
- data/ext/libcouchbase/example/analytics/queries.h +113 -0
- data/ext/libcouchbase/example/crypto/.gitignore +2 -0
- data/ext/libcouchbase/example/crypto/Makefile +13 -0
- data/ext/libcouchbase/example/crypto/common_provider.c +26 -0
- data/ext/libcouchbase/example/crypto/common_provider.h +33 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_decrypt.c +144 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_encrypt.c +146 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.c +271 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.h +29 -0
- data/ext/libcouchbase/example/db/db.c +171 -0
- data/ext/libcouchbase/example/db/vb.c +227 -0
- data/ext/libcouchbase/example/fts/.gitignore +1 -0
- data/ext/libcouchbase/example/fts/build-queries.rb +33 -0
- data/ext/libcouchbase/example/fts/fts.c +142 -0
- data/ext/libcouchbase/example/fts/queries/00-simple-text-query.json +12 -0
- data/ext/libcouchbase/example/fts/queries/01-simple-text-query-on-non-default-index.json +9 -0
- data/ext/libcouchbase/example/fts/queries/02-simple-text-query-on-stored-field.json +13 -0
- data/ext/libcouchbase/example/fts/queries/03-match-query-with-facet.json +19 -0
- data/ext/libcouchbase/example/fts/queries/04-docid-query.json +11 -0
- data/ext/libcouchbase/example/fts/queries/05-unanalyzed-term-query-with-fuzziness-level-of-0.json +13 -0
- data/ext/libcouchbase/example/fts/queries/06-unanalyzed-term-query-with-fuzziness-level-of-2.json +14 -0
- data/ext/libcouchbase/example/fts/queries/07-match-phrase-query.json +13 -0
- data/ext/libcouchbase/example/fts/queries/08-phrase-query.json +16 -0
- data/ext/libcouchbase/example/fts/queries/09-query-string-query.json +9 -0
- data/ext/libcouchbase/example/fts/queries/10-conjunction-query.json +21 -0
- data/ext/libcouchbase/example/fts/queries/11-wild-card-query.json +13 -0
- data/ext/libcouchbase/example/fts/queries/12-numeric-range-query.json +11 -0
- data/ext/libcouchbase/example/fts/queries/13-regexp-query.json +13 -0
- data/ext/libcouchbase/example/fts/queries.h +61 -0
- data/ext/libcouchbase/example/instancepool/main.cc +112 -0
- data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
- data/ext/libcouchbase/example/instancepool/pool.h +69 -0
- data/ext/libcouchbase/example/libeventdirect/main.c +222 -0
- data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
- data/ext/libcouchbase/example/minimal/.gitignore +1 -0
- data/ext/libcouchbase/example/minimal/minimal.c +132 -0
- data/ext/libcouchbase/example/minimal/query.c +185 -0
- data/ext/libcouchbase/example/observe/durability.c +102 -0
- data/ext/libcouchbase/example/observe/observe.c +159 -0
- data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +143 -0
- data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +201 -0
- data/ext/libcouchbase/example/subdoc/subdoc-xattrs.c +286 -0
- data/ext/libcouchbase/example/tick/tick.c +119 -0
- data/ext/libcouchbase/example/tracing/.gitignore +2 -0
- data/ext/libcouchbase/example/tracing/Makefile +8 -0
- data/ext/libcouchbase/example/tracing/cJSON.c +1 -0
- data/ext/libcouchbase/example/tracing/cJSON.h +1 -0
- data/ext/libcouchbase/example/tracing/tracing.c +439 -0
- data/ext/libcouchbase/example/tracing/views.c +444 -0
- data/ext/libcouchbase/example/users/README +48 -0
- data/ext/libcouchbase/example/users/users.c +147 -0
- data/ext/libcouchbase/example/views/views-example.cc +83 -0
- data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
- data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
- data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
- data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
- data/ext/libcouchbase/include/libcouchbase/auth.h +297 -0
- data/ext/libcouchbase/include/libcouchbase/cbft.h +151 -0
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +319 -0
- data/ext/libcouchbase/include/libcouchbase/cntl.h +1418 -0
- data/ext/libcouchbase/include/libcouchbase/configuration.h.in +29 -0
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +4089 -0
- data/ext/libcouchbase/include/libcouchbase/crypto.h +306 -0
- data/ext/libcouchbase/include/libcouchbase/deprecated.h +312 -0
- data/ext/libcouchbase/include/libcouchbase/error.h +680 -0
- data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
- data/ext/libcouchbase/include/libcouchbase/iops.h +1053 -0
- data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
- data/ext/libcouchbase/include/libcouchbase/kvbuf.h +137 -0
- data/ext/libcouchbase/include/libcouchbase/metrics.h +79 -0
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +539 -0
- data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +370 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
- data/ext/libcouchbase/include/libcouchbase/subdoc.h +347 -0
- data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
- data/ext/libcouchbase/include/libcouchbase/tracing.h +437 -0
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +680 -0
- data/ext/libcouchbase/include/libcouchbase/views.h +357 -0
- data/ext/libcouchbase/include/libcouchbase/visibility.h +66 -0
- data/ext/libcouchbase/include/memcached/COPYING +30 -0
- data/ext/libcouchbase/include/memcached/README +10 -0
- data/ext/libcouchbase/include/memcached/protocol_binary.h +885 -0
- data/ext/libcouchbase/packaging/README +7 -0
- data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
- data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
- data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
- data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
- data/ext/libcouchbase/packaging/deb/compat +1 -0
- data/ext/libcouchbase/packaging/deb/control +72 -0
- data/ext/libcouchbase/packaging/deb/copyright +10 -0
- data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
- data/ext/libcouchbase/packaging/deb/package.mk +31 -0
- data/ext/libcouchbase/packaging/deb/rules +46 -0
- data/ext/libcouchbase/packaging/deb/source/format +1 -0
- data/ext/libcouchbase/packaging/distinfo/README +1 -0
- data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
- data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
- data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
- data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
- data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
- data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +101 -0
- data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
- data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +467 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
- data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +31 -0
- data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +66 -0
- data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
- data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +31 -0
- data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
- data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
- data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +44 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +218 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +155 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +709 -0
- data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +13 -0
- data/ext/libcouchbase/plugins/io/select/plugin-select.c +451 -0
- data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
- data/ext/libcouchbase/src/README.md +101 -0
- data/ext/libcouchbase/src/aspend.h +105 -0
- data/ext/libcouchbase/src/auth-priv.h +85 -0
- data/ext/libcouchbase/src/auth.cc +146 -0
- data/ext/libcouchbase/src/bootstrap.cc +263 -0
- data/ext/libcouchbase/src/bootstrap.h +149 -0
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +450 -0
- data/ext/libcouchbase/src/bucketconfig/bc_file.cc +281 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.cc +527 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.h +107 -0
- data/ext/libcouchbase/src/bucketconfig/bc_static.cc +150 -0
- data/ext/libcouchbase/src/bucketconfig/clconfig.h +700 -0
- data/ext/libcouchbase/src/bucketconfig/confmon.cc +403 -0
- data/ext/libcouchbase/src/callbacks.c +380 -0
- data/ext/libcouchbase/src/cbft.cc +253 -0
- data/ext/libcouchbase/src/cntl.cc +1057 -0
- data/ext/libcouchbase/src/config_static.h +176 -0
- data/ext/libcouchbase/src/connspec.cc +555 -0
- data/ext/libcouchbase/src/connspec.h +155 -0
- data/ext/libcouchbase/src/crypto.cc +399 -0
- data/ext/libcouchbase/src/ctx-log-inl.h +44 -0
- data/ext/libcouchbase/src/dns-srv.cc +146 -0
- data/ext/libcouchbase/src/dump.cc +103 -0
- data/ext/libcouchbase/src/errmap.cc +173 -0
- data/ext/libcouchbase/src/errmap.h +271 -0
- data/ext/libcouchbase/src/getconfig.cc +72 -0
- data/ext/libcouchbase/src/gethrtime.c +109 -0
- data/ext/libcouchbase/src/handler.cc +1101 -0
- data/ext/libcouchbase/src/hashtable.c +75 -0
- data/ext/libcouchbase/src/hdr_timings.c +92 -0
- data/ext/libcouchbase/src/hostlist.cc +293 -0
- data/ext/libcouchbase/src/hostlist.h +160 -0
- data/ext/libcouchbase/src/http/http-priv.h +326 -0
- data/ext/libcouchbase/src/http/http.cc +672 -0
- data/ext/libcouchbase/src/http/http.h +1 -0
- data/ext/libcouchbase/src/http/http_io.cc +316 -0
- data/ext/libcouchbase/src/instance.cc +917 -0
- data/ext/libcouchbase/src/internal.h +285 -0
- data/ext/libcouchbase/src/iofactory.c +575 -0
- data/ext/libcouchbase/src/jsparse/parser.cc +445 -0
- data/ext/libcouchbase/src/jsparse/parser.h +159 -0
- data/ext/libcouchbase/src/lcbht/lcbht.cc +177 -0
- data/ext/libcouchbase/src/lcbht/lcbht.h +210 -0
- data/ext/libcouchbase/src/lcbio/connect.cc +603 -0
- data/ext/libcouchbase/src/lcbio/connect.h +400 -0
- data/ext/libcouchbase/src/lcbio/ctx.c +658 -0
- data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
- data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
- data/ext/libcouchbase/src/lcbio/iotable.h +169 -0
- data/ext/libcouchbase/src/lcbio/ioutils.cc +356 -0
- data/ext/libcouchbase/src/lcbio/ioutils.h +144 -0
- data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
- data/ext/libcouchbase/src/lcbio/manager.cc +579 -0
- data/ext/libcouchbase/src/lcbio/manager.h +195 -0
- data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
- data/ext/libcouchbase/src/lcbio/rw-inl.h +137 -0
- data/ext/libcouchbase/src/lcbio/ssl.h +159 -0
- data/ext/libcouchbase/src/lcbio/timer-cxx.h +87 -0
- data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
- data/ext/libcouchbase/src/lcbio/timer.c +132 -0
- data/ext/libcouchbase/src/legacy.c +431 -0
- data/ext/libcouchbase/src/list.c +144 -0
- data/ext/libcouchbase/src/list.h +127 -0
- data/ext/libcouchbase/src/logging.c +244 -0
- data/ext/libcouchbase/src/logging.h +88 -0
- data/ext/libcouchbase/src/mc/compress.cc +171 -0
- data/ext/libcouchbase/src/mc/compress.h +56 -0
- data/ext/libcouchbase/src/mc/forward.c +186 -0
- data/ext/libcouchbase/src/mc/forward.h +90 -0
- data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
- data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
- data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +115 -0
- data/ext/libcouchbase/src/mc/mcreq.c +983 -0
- data/ext/libcouchbase/src/mc/mcreq.h +1015 -0
- data/ext/libcouchbase/src/mcserver/mcserver.cc +1055 -0
- data/ext/libcouchbase/src/mcserver/mcserver.h +221 -0
- data/ext/libcouchbase/src/mcserver/negotiate.cc +757 -0
- data/ext/libcouchbase/src/mcserver/negotiate.h +128 -0
- data/ext/libcouchbase/src/mctx-helper.h +62 -0
- data/ext/libcouchbase/src/metrics.cc +132 -0
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +857 -0
- data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
- data/ext/libcouchbase/src/n1ql/n1ql.cc +830 -0
- data/ext/libcouchbase/src/n1ql/params.cc +260 -0
- data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
- data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
- data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
- data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
- data/ext/libcouchbase/src/newconfig.cc +365 -0
- data/ext/libcouchbase/src/nodeinfo.cc +184 -0
- data/ext/libcouchbase/src/operations/cbflush.cc +63 -0
- data/ext/libcouchbase/src/operations/counter.cc +117 -0
- data/ext/libcouchbase/src/operations/durability-cas.cc +251 -0
- data/ext/libcouchbase/src/operations/durability-seqno.cc +170 -0
- data/ext/libcouchbase/src/operations/durability.cc +668 -0
- data/ext/libcouchbase/src/operations/durability_internal.h +306 -0
- data/ext/libcouchbase/src/operations/get.cc +409 -0
- data/ext/libcouchbase/src/operations/observe-seqno.cc +94 -0
- data/ext/libcouchbase/src/operations/observe.cc +367 -0
- data/ext/libcouchbase/src/operations/ping.cc +496 -0
- data/ext/libcouchbase/src/operations/pktfwd.cc +86 -0
- data/ext/libcouchbase/src/operations/remove.cc +84 -0
- data/ext/libcouchbase/src/operations/stats.cc +459 -0
- data/ext/libcouchbase/src/operations/store.cc +358 -0
- data/ext/libcouchbase/src/operations/subdoc.cc +614 -0
- data/ext/libcouchbase/src/operations/touch.cc +84 -0
- data/ext/libcouchbase/src/packetutils.h +388 -0
- data/ext/libcouchbase/src/probes.d +182 -0
- data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
- data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
- data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
- data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
- data/ext/libcouchbase/src/rdb/rope.c +419 -0
- data/ext/libcouchbase/src/rdb/rope.h +488 -0
- data/ext/libcouchbase/src/retrychk.cc +113 -0
- data/ext/libcouchbase/src/retryq.cc +458 -0
- data/ext/libcouchbase/src/retryq.h +170 -0
- data/ext/libcouchbase/src/ringbuffer.c +442 -0
- data/ext/libcouchbase/src/ringbuffer.h +100 -0
- data/ext/libcouchbase/src/rnd.cc +61 -0
- data/ext/libcouchbase/src/rnd.h +39 -0
- data/ext/libcouchbase/src/settings.c +125 -0
- data/ext/libcouchbase/src/settings.h +273 -0
- data/ext/libcouchbase/src/sllist-inl.h +197 -0
- data/ext/libcouchbase/src/sllist.h +76 -0
- data/ext/libcouchbase/src/ssl/CMakeLists.txt +11 -0
- data/ext/libcouchbase/src/ssl/ssl_c.c +442 -0
- data/ext/libcouchbase/src/ssl/ssl_common.c +478 -0
- data/ext/libcouchbase/src/ssl/ssl_e.c +421 -0
- data/ext/libcouchbase/src/ssl/ssl_iot_common.h +182 -0
- data/ext/libcouchbase/src/strcodecs/base64.c +307 -0
- data/ext/libcouchbase/src/strcodecs/strcodecs.h +302 -0
- data/ext/libcouchbase/src/timings.c +207 -0
- data/ext/libcouchbase/src/trace.h +117 -0
- data/ext/libcouchbase/src/tracing/span.cc +421 -0
- data/ext/libcouchbase/src/tracing/threshold_logging_tracer.cc +213 -0
- data/ext/libcouchbase/src/tracing/tracer.cc +53 -0
- data/ext/libcouchbase/src/tracing/tracing-internal.h +198 -0
- data/ext/libcouchbase/src/utilities.c +176 -0
- data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
- data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
- data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
- data/ext/libcouchbase/src/vbucket/hash.h +30 -0
- data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
- data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
- data/ext/libcouchbase/src/vbucket/vbucket.c +1735 -0
- data/ext/libcouchbase/src/views/docreq.cc +213 -0
- data/ext/libcouchbase/src/views/docreq.h +94 -0
- data/ext/libcouchbase/src/views/viewreq.cc +381 -0
- data/ext/libcouchbase/src/views/viewreq.h +87 -0
- data/ext/libcouchbase/src/wait.cc +156 -0
- data/ext/libcouchbase/tests/CMakeLists.txt +149 -0
- data/ext/libcouchbase/tests/basic/t_base64.cc +109 -0
- data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
- data/ext/libcouchbase/tests/basic/t_connstr.cc +456 -0
- data/ext/libcouchbase/tests/basic/t_creds.cc +96 -0
- data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
- data/ext/libcouchbase/tests/basic/t_host.cc +210 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.cc +82 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
- data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
- data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
- data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
- data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +17 -0
- data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
- data/ext/libcouchbase/tests/basic/t_packet.cc +215 -0
- data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
- data/ext/libcouchbase/tests/basic/t_scram.cc +514 -0
- data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
- data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
- data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
- data/ext/libcouchbase/tests/check-all.cc +612 -0
- data/ext/libcouchbase/tests/htparse/t_basic.cc +173 -0
- data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
- data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
- data/ext/libcouchbase/tests/ioserver/ioserver.cc +117 -0
- data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
- data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
- data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
- data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
- data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
- data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
- data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.cc +632 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.h +480 -0
- data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
- data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
- data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
- data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
- data/ext/libcouchbase/tests/iotests/t_behavior.cc +220 -0
- data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
- data/ext/libcouchbase/tests/iotests/t_confmon.cc +223 -0
- data/ext/libcouchbase/tests/iotests/t_durability.cc +1108 -0
- data/ext/libcouchbase/tests/iotests/t_eerrs.cc +121 -0
- data/ext/libcouchbase/tests/iotests/t_errmap.cc +181 -0
- data/ext/libcouchbase/tests/iotests/t_forward.cc +118 -0
- data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
- data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
- data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
- data/ext/libcouchbase/tests/iotests/t_lock.cc +274 -0
- data/ext/libcouchbase/tests/iotests/t_misc.cc +777 -0
- data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
- data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
- data/ext/libcouchbase/tests/iotests/t_netfail.cc +778 -0
- data/ext/libcouchbase/tests/iotests/t_obseqno.cc +156 -0
- data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
- data/ext/libcouchbase/tests/iotests/t_sched.cc +87 -0
- data/ext/libcouchbase/tests/iotests/t_serverops.cc +231 -0
- data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
- data/ext/libcouchbase/tests/iotests/t_snappy.cc +316 -0
- data/ext/libcouchbase/tests/iotests/t_subdoc.cc +857 -0
- data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
- data/ext/libcouchbase/tests/iotests/t_views.cc +417 -0
- data/ext/libcouchbase/tests/iotests/testutil.cc +251 -0
- data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
- data/ext/libcouchbase/tests/mc/mctest.h +119 -0
- data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
- data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
- data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
- data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
- data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
- data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
- data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
- data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
- data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
- data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
- data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
- data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
- data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
- data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
- data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
- data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
- data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
- data/ext/libcouchbase/tests/socktests/socktest.cc +344 -0
- data/ext/libcouchbase/tests/socktests/socktest.h +447 -0
- data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
- data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
- data/ext/libcouchbase/tests/socktests/t_manager.cc +159 -0
- data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
- data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
- data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
- data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
- data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
- data/ext/libcouchbase/tests/start_mock.bat +15 -0
- data/ext/libcouchbase/tests/start_mock.sh +42 -0
- data/ext/libcouchbase/tests/unit_tests.cc +43 -0
- data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
- data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
- data/ext/libcouchbase/tests/vbucket/confdata/ketama_expected.json +2562 -0
- data/ext/libcouchbase/tests/vbucket/confdata/map_node_present_nodesext_missing_nodes.json +94 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_ketama_config.json +31 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/t_config.cc +386 -0
- data/ext/libcouchbase/tools/CMakeLists.txt +80 -0
- data/ext/libcouchbase/tools/cbc-handlers.h +636 -0
- data/ext/libcouchbase/tools/cbc-n1qlback.cc +496 -0
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +1230 -0
- data/ext/libcouchbase/tools/cbc-proxy.cc +534 -0
- data/ext/libcouchbase/tools/cbc-subdoc.cc +825 -0
- data/ext/libcouchbase/tools/cbc.cc +1928 -0
- data/ext/libcouchbase/tools/common/histogram.cc +44 -0
- data/ext/libcouchbase/tools/common/histogram.h +23 -0
- data/ext/libcouchbase/tools/common/options.cc +451 -0
- data/ext/libcouchbase/tools/common/options.h +90 -0
- data/ext/libcouchbase/tools/docgen/docgen.h +495 -0
- data/ext/libcouchbase/tools/docgen/loc.h +211 -0
- data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
- data/ext/libcouchbase/tools/docgen/seqgen.h +122 -0
- data/ext/libcouchbase/tools/extract-packets.rb +110 -0
- data/ext/libcouchbase/tools/linenoise/linenoise.c +1199 -0
- data/ext/libcouchbase/tools/linenoise/linenoise.h +73 -0
- data/lib/mt-libcouchbase/bucket.rb +825 -0
- data/lib/mt-libcouchbase/callbacks.rb +69 -0
- data/lib/mt-libcouchbase/connection.rb +896 -0
- data/lib/mt-libcouchbase/design_docs.rb +92 -0
- data/lib/mt-libcouchbase/error.rb +68 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdbase.rb +23 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdcounter.rb +36 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdendure.rb +26 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdfts.rb +24 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdget.rb +30 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdgetreplica.rb +49 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdhttp.rb +58 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdn1ql.rb +40 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdobseqno.rb +33 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdobserve.rb +30 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdstore.rb +40 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdstoredur.rb +45 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdsubdoc.rb +61 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdverbosity.rb +29 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/cmdviewquery.rb +61 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/contigbuf.rb +14 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st.rb +15 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st0.rb +23 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st1.rb +26 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st2.rb +32 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/create_st3.rb +26 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/crst_u.rb +20 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/durability_opts_st_v.rb +11 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/durability_opts_t.rb +14 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/durabilityopt_sv0.rb +63 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/enums.rb +1007 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/fragbuf.rb +18 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/ftshandle.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/histogram.rb +34 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/http_request_t.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/keybuf.rb +20 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/multicmd_ctx.rb +30 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/mutation_token.rb +17 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/n1qlhandle.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/n1qlparams.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respbase.rb +29 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respcounter.rb +32 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respendure.rb +49 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respfts.rb +40 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respget.rb +44 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/resphttp.rb +48 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respmcversion.rb +38 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respn1ql.rb +41 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respobseqno.rb +52 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respobserve.rb +41 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respserverbase.rb +32 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstats.rb +38 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstore.rb +32 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respstoredur.rb +38 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respsubdoc.rb +35 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/respviewquery.rb +67 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/sdentry.rb +22 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/sdspec.rb +31 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/t.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/valbuf.rb +22 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/valbuf_u_buf.rb +14 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase/viewhandle.rb +7 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase.rb +1175 -0
- data/lib/mt-libcouchbase/ext/mt-libcouchbase_libuv.rb +22 -0
- data/lib/mt-libcouchbase/ext/tasks.rb +39 -0
- data/lib/mt-libcouchbase/n1ql.rb +80 -0
- data/lib/mt-libcouchbase/query_full_text.rb +147 -0
- data/lib/mt-libcouchbase/query_n1ql.rb +123 -0
- data/lib/mt-libcouchbase/query_view.rb +135 -0
- data/lib/mt-libcouchbase/results_fiber.rb +281 -0
- data/lib/mt-libcouchbase/results_native.rb +220 -0
- data/lib/mt-libcouchbase/subdoc_request.rb +139 -0
- data/lib/mt-libcouchbase/version.rb +5 -0
- data/lib/mt-libcouchbase.rb +40 -0
- data/mt-libcouchbase.gemspec +68 -0
- data/spec/bucket_spec.rb +290 -0
- data/spec/connection_spec.rb +257 -0
- data/spec/design_docs_spec.rb +31 -0
- data/spec/error_spec.rb +26 -0
- data/spec/fts_spec.rb +135 -0
- data/spec/n1ql_spec.rb +260 -0
- data/spec/results_libuv_spec.rb +244 -0
- data/spec/results_native_spec.rb +259 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
- data/spec/subdoc_spec.rb +192 -0
- data/spec/view_spec.rb +201 -0
- data/windows_build.md +36 -0
- 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 */
|