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,270 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2014 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#ifndef LCB_PKTFWD_H
|
|
19
|
+
#define LCB_PKTFWD_H
|
|
20
|
+
#ifdef __cplusplus
|
|
21
|
+
extern "C" {
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @ingroup lcb-public-api
|
|
26
|
+
* @defgroup lcb-pktfwd Raw packet forwarding and dispatch routines
|
|
27
|
+
* @brief These functions perform packet forwarding functions to send and
|
|
28
|
+
* receive raw packets
|
|
29
|
+
*
|
|
30
|
+
* @addtogroup lcb-pktfwd
|
|
31
|
+
* @{
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
typedef struct rdb_ROPESEG *lcb_BACKBUF;
|
|
35
|
+
|
|
36
|
+
/**@brief Request for forwarding a packet
|
|
37
|
+
* This structure is passed to the lcb_pktfwd3() function.
|
|
38
|
+
*/
|
|
39
|
+
typedef struct {
|
|
40
|
+
int version;
|
|
41
|
+
/**This structure should be initialized to a packet. The packet may be
|
|
42
|
+
* in the form of a contiguous buffer to be copied (lcb_VALBUF::vtype should
|
|
43
|
+
* be LCB_KV_COPY), a contiguous buffer to be maintained by the user
|
|
44
|
+
* (lcb_VALBUF::vtype should be LCB_KV_CONTIG) or an array of lcb_IOV
|
|
45
|
+
* structures (which should not be copied; lcb_VALBUF::vtype should be
|
|
46
|
+
* LCB_KV_IOV).
|
|
47
|
+
*
|
|
48
|
+
* This field must contain a complete packet including any extras and body
|
|
49
|
+
* associated with it.
|
|
50
|
+
*
|
|
51
|
+
* If the buffer(s) passed are not copied, you must wait for the
|
|
52
|
+
* lcb_pktflushed_callback to be invoked to signal that the buffer is no
|
|
53
|
+
* longer needed and may be released back to the application.
|
|
54
|
+
*
|
|
55
|
+
* @warning
|
|
56
|
+
* The first 24 bytes of the buffer (i.e. the memcached header)
|
|
57
|
+
* **will be modified**. Currently this is used to modify the `opaque` field
|
|
58
|
+
* within the header.
|
|
59
|
+
*/
|
|
60
|
+
lcb_VALBUF vb;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Whether to direct this command to a specific server. This should be
|
|
64
|
+
* set if the packet itself doesn't contain any mapping information; and
|
|
65
|
+
* should _not_ be used on normal key access commands, since key access
|
|
66
|
+
* commands should be mapped to the appropriate server via the vbucket
|
|
67
|
+
* mappet.
|
|
68
|
+
*
|
|
69
|
+
* The server should be specified in the #server_index field */
|
|
70
|
+
char nomap;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @brief Specify server index for the command.
|
|
74
|
+
* Only valid if #nomap is specified. */
|
|
75
|
+
lcb_U16 server_index;
|
|
76
|
+
} lcb_CMDPKTFWD;
|
|
77
|
+
|
|
78
|
+
/**@brief Response structure containing the response for a packet */
|
|
79
|
+
typedef struct {
|
|
80
|
+
/** Version of the response structure */
|
|
81
|
+
int version;
|
|
82
|
+
|
|
83
|
+
/**Pointer to the memcached header. This pointer is guaranteed to be
|
|
84
|
+
* properly aligned as a protocol_binary_response_header structure and will
|
|
85
|
+
* typically be quicker to access than analyzing the header as found
|
|
86
|
+
* inside the #iovs field.
|
|
87
|
+
*
|
|
88
|
+
* This field may be NULL if the callback is invoked with an error.*/
|
|
89
|
+
const lcb_U8 *header;
|
|
90
|
+
|
|
91
|
+
/**Array of lcb_IOV structures containing the response packet. The number
|
|
92
|
+
* of items in this array is contained in the #nitems field.
|
|
93
|
+
*
|
|
94
|
+
* Note that you may modify the contents of the buffers themselves (i.e.
|
|
95
|
+
* the memory pointed to by lcb_IOV::iov_base.
|
|
96
|
+
*
|
|
97
|
+
* When a buffer is no longer needed, lcb_backbuf_unref() should be called
|
|
98
|
+
* on its associated lcb_BACKBUF structure - which is located at the same
|
|
99
|
+
* array index within the #bufs field (for example, `iovs[n]` will have
|
|
100
|
+
* its associated lcb_BACKBUF structure at `bufs[n]`.
|
|
101
|
+
*/
|
|
102
|
+
lcb_IOV *iovs;
|
|
103
|
+
|
|
104
|
+
/**Contains the backing lcb_BACKBUF objects which control the allocation
|
|
105
|
+
* lifespan of their associated elements in the #iovs field. */
|
|
106
|
+
lcb_BACKBUF *bufs;
|
|
107
|
+
|
|
108
|
+
/** The number of items in the #iovs and #bufs array. Currently this is
|
|
109
|
+
* always `1` but may change in the future.*/
|
|
110
|
+
unsigned nitems;
|
|
111
|
+
} lcb_PKTFWDRESP;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @uncommitted
|
|
115
|
+
*
|
|
116
|
+
* @brief Forward a raw memcached packet to the cluster.
|
|
117
|
+
*
|
|
118
|
+
* @details
|
|
119
|
+
* This function will process a buffer containing a raw complete memcached packet
|
|
120
|
+
* to the cluster. Once the reply for the packet has been received, the
|
|
121
|
+
* lcb_pktfwd_callback will be invoked with the `cookie` argument and the
|
|
122
|
+
* response data.
|
|
123
|
+
*
|
|
124
|
+
* If using user-allocated buffers, an additional lcb_pktflushed_callback will
|
|
125
|
+
* be invoked once the library no longer needs the buffers for the packet. Note
|
|
126
|
+
* that no assumption should be made on the order of invocation for these two
|
|
127
|
+
* callbacks - thus it is recommended to implement a reference counting scheme
|
|
128
|
+
* on the buffer and decrement the count for each invocation of the callback.
|
|
129
|
+
*
|
|
130
|
+
* Note that not all memcached commands may be forwarded to this function.
|
|
131
|
+
* Specifically, any packet passed to this function:
|
|
132
|
+
*
|
|
133
|
+
* 1. Must contain a single key after the `header` and `extras` fields. This
|
|
134
|
+
* means that commands like _OBSERVE_ and _GET_CLUSTER_CONFIG_ are not
|
|
135
|
+
* currently supported.
|
|
136
|
+
* 2. The key must be mappable via the vBucket mapping algorithm. This means
|
|
137
|
+
* that commands such as _STATS_ are not currently supported.
|
|
138
|
+
* 3. Must receive exactly one reply from the server. This means that "quiet"
|
|
139
|
+
* versions of commands, such as _GETQ_ and _SETQ_ are not currently
|
|
140
|
+
* supported.
|
|
141
|
+
*
|
|
142
|
+
* If you wish to forward one of the unsupported commands you may use the
|
|
143
|
+
* higher level entry points (i.e. lcb_stats3(), lcb_observe3_ctxnew(), etc)
|
|
144
|
+
* and manually reconstruct the output packet based on the callbacks received.
|
|
145
|
+
*
|
|
146
|
+
* Note additionally that the _opaque_ field within the packet will be modified
|
|
147
|
+
* by the library. You should store the current opaque value in the structure
|
|
148
|
+
* pointed to by the `cookie` parameter and then re-assign it once the packet
|
|
149
|
+
* callback has been delivered.
|
|
150
|
+
*
|
|
151
|
+
* Forwarded packets are subject to the same lifecycle as normal commands. This
|
|
152
|
+
* means they may be retried and remapped to other nodes upon topology changes,
|
|
153
|
+
* and that they are subject to the same operation timeout semantics.
|
|
154
|
+
*
|
|
155
|
+
* @param instance the handle
|
|
156
|
+
* @param cookie a pointer to be passed to the callbacks for this packet
|
|
157
|
+
* @param cmd the command structure containing the buffer mappings for this
|
|
158
|
+
* packet.
|
|
159
|
+
*
|
|
160
|
+
* @return LCB_SUCCESS on success, LCB_INCOMPLETE_PACKET if the packet passed
|
|
161
|
+
* does not contain the full body. Other error codes may be returned as well
|
|
162
|
+
*
|
|
163
|
+
* @see lcb_set_pktfwd_callback lcb_set_pktflushed_callback, mc_forward_packet
|
|
164
|
+
*/
|
|
165
|
+
LIBCOUCHBASE_API
|
|
166
|
+
lcb_error_t
|
|
167
|
+
lcb_pktfwd3(lcb_t instance, const void *cookie, const lcb_CMDPKTFWD *cmd);
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Callback invoked when a response packet has arrived for a request
|
|
171
|
+
* @param instance
|
|
172
|
+
* @param cookie Opaque pointer associated with the request
|
|
173
|
+
* @param err If a response packet could not be obtained, this contains the reason
|
|
174
|
+
* @param resp Response structure. This is always present if there is a reply
|
|
175
|
+
* from the server.
|
|
176
|
+
*
|
|
177
|
+
* The lcb_PKTFWDRESP::bufs structures are considered to be invalid after the
|
|
178
|
+
* callback has exited because lcb_backbuf_unref() will be called on each of
|
|
179
|
+
* them. To ensure they remain valid in your application outside the callback,
|
|
180
|
+
* invoke lcb_backbuf_ref() on the required lcb_BACKBUF structures and then
|
|
181
|
+
* once they are no longer needed use lcb_backbuf_unref()
|
|
182
|
+
*/
|
|
183
|
+
typedef void (*lcb_pktfwd_callback)
|
|
184
|
+
(lcb_t instance, const void *cookie, lcb_error_t err, lcb_PKTFWDRESP *resp);
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Callback invoked when the request buffer for a packet is no longer required.
|
|
188
|
+
* @param instance
|
|
189
|
+
* @param cookie The cookie associated with the request data
|
|
190
|
+
*/
|
|
191
|
+
typedef void (*lcb_pktflushed_callback) (lcb_t instance, const void *cookie);
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @uncommitted
|
|
195
|
+
* @brief Set the callback to be invoked when a response to a
|
|
196
|
+
* forwarded packet has been received.
|
|
197
|
+
*
|
|
198
|
+
* @param instance the handle
|
|
199
|
+
* @param callback the callback to install
|
|
200
|
+
* @return the old callback. If `callback` is NULL, this function just returns
|
|
201
|
+
* the existing callback
|
|
202
|
+
*/
|
|
203
|
+
LIBCOUCHBASE_API
|
|
204
|
+
lcb_pktfwd_callback
|
|
205
|
+
lcb_set_pktfwd_callback(lcb_t instance, lcb_pktfwd_callback callback);
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* @uncommitted
|
|
209
|
+
*
|
|
210
|
+
* @brief Set the callback to be invoked when the buffer data supplied to the
|
|
211
|
+
* packet forwarding function is no longer needed.
|
|
212
|
+
*
|
|
213
|
+
* @param instance the handle
|
|
214
|
+
* @param callback the callback to install
|
|
215
|
+
* @return the old callback. If `callback` is NULL then this function just
|
|
216
|
+
* returns the existing callback.
|
|
217
|
+
*/
|
|
218
|
+
LIBCOUCHBASE_API
|
|
219
|
+
lcb_pktflushed_callback
|
|
220
|
+
lcb_set_pktflushed_callback(lcb_t instance, lcb_pktflushed_callback callback);
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* @name Response Buffer Handling
|
|
225
|
+
*
|
|
226
|
+
* @details
|
|
227
|
+
*
|
|
228
|
+
* The data received as part of a response buffer is _mapped_ by an lcb_IOV
|
|
229
|
+
* structure, however the actual allocated data is held together by an
|
|
230
|
+
* opaque lcb_BACKBUF structure. This structure allows multiple IOVs to exist
|
|
231
|
+
* concurrently within the same block of allocated memory (with different
|
|
232
|
+
* offsets and sizes). The lcb_BACKBUF structure functions as an opaque
|
|
233
|
+
* reference counted object which controls the duration of the memmory to which
|
|
234
|
+
* the IOV is mapped.
|
|
235
|
+
*
|
|
236
|
+
* From an API perspective, there is a one-to-one correlation between an IOV
|
|
237
|
+
* and an lcb_BACKBUF
|
|
238
|
+
*
|
|
239
|
+
* @{
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Indicate that the lcb_BACKBUF object which provides storage for an IOV's
|
|
244
|
+
* data pointer will need to remain valid until lcb_backbuf_unref() is called.
|
|
245
|
+
*
|
|
246
|
+
* This function may be called from an lcb_pktfwd_callback handler to allow
|
|
247
|
+
* the contents of the buffer to persist outside the specific callback
|
|
248
|
+
* invocation.
|
|
249
|
+
*/
|
|
250
|
+
LIBCOUCHBASE_API
|
|
251
|
+
void
|
|
252
|
+
lcb_backbuf_ref(lcb_BACKBUF buf);
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Indicate that the IOV backed by the specified `buf` is no longer required
|
|
256
|
+
* @param buf the buffer which backs the IOV
|
|
257
|
+
* After the buffer has been unreferenced, the relating IOV may no longer be
|
|
258
|
+
* accessed
|
|
259
|
+
*/
|
|
260
|
+
LIBCOUCHBASE_API
|
|
261
|
+
void
|
|
262
|
+
lcb_backbuf_unref(lcb_BACKBUF buf);
|
|
263
|
+
/**@}*/
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
/**@}*/
|
|
267
|
+
#ifdef __cplusplus
|
|
268
|
+
}
|
|
269
|
+
#endif
|
|
270
|
+
#endif
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2014 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Inline routines for common 'BSD'-style I/O for plugins.
|
|
20
|
+
*
|
|
21
|
+
* Include this file in your plugin and then call wire_lcb_bsd_impl2 on the
|
|
22
|
+
* plugin instance.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
#ifndef _WIN32
|
|
26
|
+
#include <netinet/in.h>
|
|
27
|
+
#include <netinet/tcp.h>
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
static void wire_lcb_bsd_impl2(lcb_bsd_procs*,int);
|
|
31
|
+
|
|
32
|
+
#ifdef _WIN32
|
|
33
|
+
#include "wsaerr-inl.c"
|
|
34
|
+
static int
|
|
35
|
+
get_wserr(lcb_socket_t sock)
|
|
36
|
+
{
|
|
37
|
+
DWORD error = WSAGetLastError();
|
|
38
|
+
int ext = 0;
|
|
39
|
+
int len = sizeof(ext);
|
|
40
|
+
|
|
41
|
+
/* Retrieves extended error status and clear */
|
|
42
|
+
getsockopt(sock, SOL_SOCKET, SO_ERROR, (char *)&ext, &len);
|
|
43
|
+
return wsaerr_map_impl(error);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static lcb_ssize_t
|
|
47
|
+
recvv_impl(lcb_io_opt_t iops, lcb_socket_t sock,
|
|
48
|
+
struct lcb_iovec_st *iov, lcb_size_t niov)
|
|
49
|
+
{
|
|
50
|
+
DWORD flags = 0, nr;
|
|
51
|
+
WSABUF *bufptr = (WSABUF *)iov;
|
|
52
|
+
|
|
53
|
+
if (WSARecv(sock, bufptr, niov, &nr, &flags, NULL, NULL) == SOCKET_ERROR) {
|
|
54
|
+
LCB_IOPS_ERRNO(iops) = get_wserr(sock);
|
|
55
|
+
if (LCB_IOPS_ERRNO(iops) == ECONNRESET) {
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
return -1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
(void)iops;
|
|
62
|
+
return (lcb_ssize_t)nr;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static lcb_ssize_t
|
|
66
|
+
recv_impl(lcb_io_opt_t iops, lcb_socket_t sock, void *buf, lcb_size_t nbuf,
|
|
67
|
+
int fl_unused)
|
|
68
|
+
{
|
|
69
|
+
WSABUF iov;
|
|
70
|
+
iov.len = nbuf;
|
|
71
|
+
iov.buf = buf;
|
|
72
|
+
(void)fl_unused;
|
|
73
|
+
return recvv_impl(iops, sock, (struct lcb_iovec_st *)&iov, 1);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static lcb_ssize_t
|
|
77
|
+
sendv_impl(lcb_io_opt_t iops, lcb_socket_t sock, struct lcb_iovec_st *iov,
|
|
78
|
+
lcb_size_t niov)
|
|
79
|
+
{
|
|
80
|
+
DWORD nw, fl = 0;
|
|
81
|
+
WSABUF *bufptr = (WSABUF *)iov;
|
|
82
|
+
if (WSASend(sock, bufptr, niov, &nw, fl, NULL, NULL) == SOCKET_ERROR) {
|
|
83
|
+
LCB_IOPS_ERRNO(iops) = get_wserr(sock);
|
|
84
|
+
return -1;
|
|
85
|
+
}
|
|
86
|
+
return (lcb_ssize_t)nw;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
static lcb_ssize_t
|
|
90
|
+
send_impl(lcb_io_opt_t iops, lcb_socket_t sock, const void *buf, lcb_size_t nbuf,
|
|
91
|
+
int flags)
|
|
92
|
+
{
|
|
93
|
+
WSABUF iov;
|
|
94
|
+
iov.buf = (void *)buf;
|
|
95
|
+
iov.len = nbuf;
|
|
96
|
+
(void)flags;
|
|
97
|
+
return sendv_impl(iops, sock, (struct lcb_iovec_st *)&iov, 1);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
#else
|
|
101
|
+
static lcb_ssize_t
|
|
102
|
+
recvv_impl(lcb_io_opt_t iops, lcb_socket_t sock, struct lcb_iovec_st *iov,
|
|
103
|
+
lcb_size_t niov)
|
|
104
|
+
{
|
|
105
|
+
struct msghdr mh;
|
|
106
|
+
lcb_ssize_t ret;
|
|
107
|
+
|
|
108
|
+
memset(&mh, 0, sizeof(mh));
|
|
109
|
+
mh.msg_iov = (struct iovec *)iov;
|
|
110
|
+
mh.msg_iovlen = niov;
|
|
111
|
+
ret = recvmsg(sock, &mh, 0);
|
|
112
|
+
if (ret < 0) {
|
|
113
|
+
LCB_IOPS_ERRNO(iops) = errno;
|
|
114
|
+
}
|
|
115
|
+
return ret;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
static lcb_ssize_t
|
|
119
|
+
recv_impl(lcb_io_opt_t iops, lcb_socket_t sock, void *buf, lcb_size_t nbuf,
|
|
120
|
+
int flags)
|
|
121
|
+
{
|
|
122
|
+
lcb_ssize_t ret = recv(sock, buf, nbuf, flags);
|
|
123
|
+
if (ret < 0) {
|
|
124
|
+
LCB_IOPS_ERRNO(iops) = errno;
|
|
125
|
+
}
|
|
126
|
+
return ret;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
static lcb_ssize_t
|
|
130
|
+
sendv_impl(lcb_io_opt_t iops, lcb_socket_t sock, struct lcb_iovec_st *iov,
|
|
131
|
+
lcb_size_t niov)
|
|
132
|
+
{
|
|
133
|
+
struct msghdr mh;
|
|
134
|
+
lcb_ssize_t ret;
|
|
135
|
+
|
|
136
|
+
memset(&mh, 0, sizeof(mh));
|
|
137
|
+
mh.msg_iov = (struct iovec *)iov;
|
|
138
|
+
mh.msg_iovlen = niov;
|
|
139
|
+
ret = sendmsg(sock, &mh, 0);
|
|
140
|
+
if (ret < 0) {
|
|
141
|
+
LCB_IOPS_ERRNO(iops) = errno;
|
|
142
|
+
}
|
|
143
|
+
return ret;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
static lcb_ssize_t
|
|
147
|
+
send_impl(lcb_io_opt_t iops, lcb_socket_t sock, const void *buf, lcb_size_t nbuf,
|
|
148
|
+
int flags)
|
|
149
|
+
{
|
|
150
|
+
lcb_ssize_t ret = send(sock, buf, nbuf, flags);
|
|
151
|
+
if (ret < 0) {
|
|
152
|
+
LCB_IOPS_ERRNO(iops) = errno;
|
|
153
|
+
}
|
|
154
|
+
return ret;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
#endif
|
|
158
|
+
|
|
159
|
+
static int make_socket_nonblocking(lcb_socket_t sock)
|
|
160
|
+
{
|
|
161
|
+
#ifdef _WIN32
|
|
162
|
+
u_long nonblocking = 1;
|
|
163
|
+
if (ioctlsocket(sock, FIONBIO, &nonblocking) == SOCKET_ERROR) {
|
|
164
|
+
return -1;
|
|
165
|
+
}
|
|
166
|
+
#else
|
|
167
|
+
int flags;
|
|
168
|
+
if ((flags = fcntl(sock, F_GETFL, NULL)) < 0) {
|
|
169
|
+
return -1;
|
|
170
|
+
}
|
|
171
|
+
if (fcntl(sock, F_SETFL, flags | O_NONBLOCK) == -1) {
|
|
172
|
+
return -1;
|
|
173
|
+
}
|
|
174
|
+
#endif
|
|
175
|
+
return 0;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* Declare */
|
|
179
|
+
static void close_impl(lcb_io_opt_t,lcb_socket_t);
|
|
180
|
+
|
|
181
|
+
static lcb_socket_t
|
|
182
|
+
socket_impl(lcb_io_opt_t iops, int domain, int type, int protocol)
|
|
183
|
+
{
|
|
184
|
+
lcb_socket_t sock;
|
|
185
|
+
#ifdef _WIN32
|
|
186
|
+
sock = (lcb_socket_t)WSASocket(domain, type, protocol, NULL, 0, 0);
|
|
187
|
+
#else
|
|
188
|
+
sock = socket(domain, type, protocol);
|
|
189
|
+
#endif
|
|
190
|
+
if (sock == INVALID_SOCKET) {
|
|
191
|
+
LCB_IOPS_ERRNO(iops) = errno;
|
|
192
|
+
} else {
|
|
193
|
+
if (make_socket_nonblocking(sock) != 0) {
|
|
194
|
+
#ifdef _WIN32
|
|
195
|
+
LCB_IOPS_ERRNO(iops) = get_wserr(sock);
|
|
196
|
+
#else
|
|
197
|
+
LCB_IOPS_ERRNO(iops) = errno;
|
|
198
|
+
#endif
|
|
199
|
+
close_impl(iops, sock);
|
|
200
|
+
sock = INVALID_SOCKET;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return sock;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
static void
|
|
207
|
+
close_impl(lcb_io_opt_t iops, lcb_socket_t sock)
|
|
208
|
+
{
|
|
209
|
+
(void)iops;
|
|
210
|
+
#ifdef _WIN32
|
|
211
|
+
closesocket(sock);
|
|
212
|
+
#else
|
|
213
|
+
close(sock);
|
|
214
|
+
#endif
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
static int
|
|
218
|
+
connect_impl(lcb_io_opt_t iops, lcb_socket_t sock, const struct sockaddr *name,
|
|
219
|
+
unsigned int namelen)
|
|
220
|
+
{
|
|
221
|
+
int ret;
|
|
222
|
+
|
|
223
|
+
#ifdef _WIN32
|
|
224
|
+
ret = WSAConnect(sock, name, (int)namelen, NULL, NULL, NULL, NULL);
|
|
225
|
+
if (ret == SOCKET_ERROR) {
|
|
226
|
+
LCB_IOPS_ERRNO(iops) = get_wserr(sock);
|
|
227
|
+
}
|
|
228
|
+
#else
|
|
229
|
+
ret = connect(sock, name, (socklen_t)namelen);
|
|
230
|
+
if (ret < 0) {
|
|
231
|
+
LCB_IOPS_ERRNO(iops) = errno;
|
|
232
|
+
}
|
|
233
|
+
#endif
|
|
234
|
+
return ret;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
#if LCB_IOPROCS_VERSION >= 3
|
|
238
|
+
|
|
239
|
+
static int
|
|
240
|
+
chkclosed_impl(lcb_io_opt_t iops, lcb_socket_t sock, int flags)
|
|
241
|
+
{
|
|
242
|
+
char buf = 0;
|
|
243
|
+
int rv = 0;
|
|
244
|
+
|
|
245
|
+
(void)iops;
|
|
246
|
+
|
|
247
|
+
GT_RETRY:
|
|
248
|
+
/* We can ignore flags for now, since both Windows and POSIX support MSG_PEEK */
|
|
249
|
+
rv = recv(sock, &buf, 1, MSG_PEEK);
|
|
250
|
+
if (rv == 1) {
|
|
251
|
+
if (flags & LCB_IO_SOCKCHECK_PEND_IS_ERROR) {
|
|
252
|
+
return LCB_IO_SOCKCHECK_STATUS_CLOSED;
|
|
253
|
+
} else {
|
|
254
|
+
return LCB_IO_SOCKCHECK_STATUS_OK;
|
|
255
|
+
}
|
|
256
|
+
} else if (rv == 0) {
|
|
257
|
+
/* Really closed! */
|
|
258
|
+
return LCB_IO_SOCKCHECK_STATUS_CLOSED;
|
|
259
|
+
} else {
|
|
260
|
+
int last_err;
|
|
261
|
+
#ifdef _WIN32
|
|
262
|
+
last_err = get_wserr(sock);
|
|
263
|
+
#else
|
|
264
|
+
last_err = errno;
|
|
265
|
+
#endif
|
|
266
|
+
|
|
267
|
+
if (last_err == EINTR) {
|
|
268
|
+
goto GT_RETRY;
|
|
269
|
+
} else if (last_err == EWOULDBLOCK || last_err == EAGAIN) {
|
|
270
|
+
return LCB_IO_SOCKCHECK_STATUS_OK; /* Nothing to report. So we're good */
|
|
271
|
+
} else {
|
|
272
|
+
return LCB_IO_SOCKCHECK_STATUS_CLOSED;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
#endif /* LCB_IOPROCS_VERSION >= 3 */
|
|
277
|
+
|
|
278
|
+
#if LCB_IOPROCS_VERSION >= 4
|
|
279
|
+
static int
|
|
280
|
+
cntl_getset_impl(lcb_io_opt_t io, lcb_socket_t sock, int mode, int oslevel,
|
|
281
|
+
int osopt, int optsize, void *optval)
|
|
282
|
+
{
|
|
283
|
+
int rv;
|
|
284
|
+
#ifndef _WIN32
|
|
285
|
+
socklen_t dummy = optsize;
|
|
286
|
+
#else
|
|
287
|
+
char dummy = optsize;
|
|
288
|
+
#endif
|
|
289
|
+
|
|
290
|
+
if (mode == LCB_IO_CNTL_GET) {
|
|
291
|
+
rv = getsockopt(sock, oslevel, osopt, &dummy, optval);
|
|
292
|
+
} else {
|
|
293
|
+
rv = setsockopt(sock, oslevel, osopt, optval, optsize);
|
|
294
|
+
}
|
|
295
|
+
if (rv == 0) {
|
|
296
|
+
return 0;
|
|
297
|
+
} else {
|
|
298
|
+
int lasterr;
|
|
299
|
+
#ifdef _WIN32
|
|
300
|
+
lasterr = get_wserr(sock);
|
|
301
|
+
#else
|
|
302
|
+
lasterr = errno;
|
|
303
|
+
#endif
|
|
304
|
+
LCB_IOPS_ERRNO(io) = lasterr;
|
|
305
|
+
return -1;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
static int
|
|
310
|
+
cntl_impl(lcb_io_opt_t io, lcb_socket_t sock, int mode, int option, void *arg)
|
|
311
|
+
{
|
|
312
|
+
switch (option) {
|
|
313
|
+
case LCB_IO_CNTL_TCP_NODELAY:
|
|
314
|
+
return cntl_getset_impl(io,
|
|
315
|
+
sock, mode, IPPROTO_TCP, TCP_NODELAY, sizeof(int), arg);
|
|
316
|
+
case LCB_IO_CNTL_TCP_KEEPALIVE:
|
|
317
|
+
return cntl_getset_impl(io,
|
|
318
|
+
sock, mode, SOL_SOCKET, SO_KEEPALIVE, sizeof(int), arg);
|
|
319
|
+
default:
|
|
320
|
+
LCB_IOPS_ERRNO(io) = ENOTSUP;
|
|
321
|
+
return -1;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
#endif
|
|
325
|
+
|
|
326
|
+
#if !defined(LIBCOUCHBASE_INTERNAL) || defined(LCB_IOPS_V12_NO_DEPRECATE)
|
|
327
|
+
static void
|
|
328
|
+
wire_lcb_bsd_impl(lcb_io_opt_t io)
|
|
329
|
+
{
|
|
330
|
+
io->v.v0.recv = recv_impl;
|
|
331
|
+
io->v.v0.recvv = recvv_impl;
|
|
332
|
+
io->v.v0.send = send_impl;
|
|
333
|
+
io->v.v0.sendv = sendv_impl;
|
|
334
|
+
io->v.v0.socket = socket_impl;
|
|
335
|
+
io->v.v0.connect = connect_impl;
|
|
336
|
+
io->v.v0.close = close_impl;
|
|
337
|
+
|
|
338
|
+
/* Avoid annoying 'unused' warnings */
|
|
339
|
+
if (0) { wire_lcb_bsd_impl2(NULL,0); }
|
|
340
|
+
}
|
|
341
|
+
#define lcb__wire0_nowarn() if (0) { wire_lcb_bsd_impl(NULL); }
|
|
342
|
+
#else
|
|
343
|
+
#define lcb__wire0_nowarn()
|
|
344
|
+
#endif
|
|
345
|
+
|
|
346
|
+
/** For plugins which use v2 or higher */
|
|
347
|
+
static void
|
|
348
|
+
wire_lcb_bsd_impl2(lcb_bsd_procs *procs, int version)
|
|
349
|
+
{
|
|
350
|
+
procs->recv = recv_impl;
|
|
351
|
+
procs->recvv = recvv_impl;
|
|
352
|
+
procs->send = send_impl;
|
|
353
|
+
procs->sendv = sendv_impl;
|
|
354
|
+
procs->socket0 = socket_impl;
|
|
355
|
+
procs->connect0 = connect_impl;
|
|
356
|
+
procs->close = close_impl;
|
|
357
|
+
|
|
358
|
+
/* Check that this field exists at compile-time */
|
|
359
|
+
#if LCB_IOPROCS_VERSION >= 3
|
|
360
|
+
if (version >= 3) {
|
|
361
|
+
procs->is_closed = chkclosed_impl;
|
|
362
|
+
}
|
|
363
|
+
#endif
|
|
364
|
+
#if LCB_IOPROCS_VERSION >= 4
|
|
365
|
+
if (version >= 4) {
|
|
366
|
+
procs->cntl = cntl_impl;
|
|
367
|
+
}
|
|
368
|
+
#endif
|
|
369
|
+
lcb__wire0_nowarn();
|
|
370
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2014 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#include "wsaerr.h"
|
|
19
|
+
|
|
20
|
+
static int
|
|
21
|
+
wsaerr_map_impl(DWORD in)
|
|
22
|
+
{
|
|
23
|
+
switch (in) {
|
|
24
|
+
case WSAECONNRESET:
|
|
25
|
+
return ECONNRESET;
|
|
26
|
+
|
|
27
|
+
case WSAECONNABORTED:
|
|
28
|
+
case WSA_OPERATION_ABORTED:
|
|
29
|
+
return ECONNABORTED;
|
|
30
|
+
|
|
31
|
+
case WSA_NOT_ENOUGH_MEMORY:
|
|
32
|
+
return ENOMEM;
|
|
33
|
+
|
|
34
|
+
case WSAEWOULDBLOCK:
|
|
35
|
+
case WSA_IO_PENDING:
|
|
36
|
+
return EWOULDBLOCK;
|
|
37
|
+
|
|
38
|
+
case WSAEINVAL:
|
|
39
|
+
return EINVAL;
|
|
40
|
+
|
|
41
|
+
case WSAEINPROGRESS:
|
|
42
|
+
return EINPROGRESS;
|
|
43
|
+
|
|
44
|
+
case WSAEALREADY:
|
|
45
|
+
return EALREADY;
|
|
46
|
+
|
|
47
|
+
case WSAEISCONN:
|
|
48
|
+
return EISCONN;
|
|
49
|
+
|
|
50
|
+
case WSAENOTCONN:
|
|
51
|
+
case WSAESHUTDOWN:
|
|
52
|
+
return ENOTCONN;
|
|
53
|
+
|
|
54
|
+
case WSAECONNREFUSED:
|
|
55
|
+
return ECONNREFUSED;
|
|
56
|
+
|
|
57
|
+
case WSAEINTR:
|
|
58
|
+
return EINTR;
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
case WSAENETDOWN:
|
|
62
|
+
case WSAENETUNREACH:
|
|
63
|
+
case WSAEHOSTUNREACH:
|
|
64
|
+
case WSAEHOSTDOWN:
|
|
65
|
+
return ENETUNREACH;
|
|
66
|
+
|
|
67
|
+
case WSAETIMEDOUT:
|
|
68
|
+
return ETIMEDOUT;
|
|
69
|
+
|
|
70
|
+
case WSAENOTSOCK:
|
|
71
|
+
return ENOTSOCK;
|
|
72
|
+
|
|
73
|
+
default:
|
|
74
|
+
return EINVAL;
|
|
75
|
+
}
|
|
76
|
+
}
|