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,451 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2012 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#define LCB_IOPS_V12_NO_DEPRECATE
|
|
19
|
+
|
|
20
|
+
#include "internal.h"
|
|
21
|
+
#include "select_io_opts.h"
|
|
22
|
+
#include <libcouchbase/plugins/io/bsdio-inl.c>
|
|
23
|
+
|
|
24
|
+
#if defined(_WIN32) && !defined(usleep)
|
|
25
|
+
#define usleep(n) Sleep((n) / 1000)
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
typedef struct sel_EVENT sel_EVENT;
|
|
29
|
+
struct sel_EVENT {
|
|
30
|
+
lcb_list_t list;
|
|
31
|
+
lcb_socket_t sock;
|
|
32
|
+
short flags;
|
|
33
|
+
short eflags; /* effective flags */
|
|
34
|
+
void *cb_data;
|
|
35
|
+
lcb_ioE_callback handler;
|
|
36
|
+
sel_EVENT *next; /* for chaining active events */
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
typedef struct sel_TIMER sel_TIMER;
|
|
40
|
+
struct sel_TIMER {
|
|
41
|
+
lcb_list_t list;
|
|
42
|
+
int active;
|
|
43
|
+
hrtime_t exptime;
|
|
44
|
+
void *cb_data;
|
|
45
|
+
lcb_ioE_callback handler;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
typedef struct {
|
|
49
|
+
sel_EVENT events;
|
|
50
|
+
lcb_list_t timers;
|
|
51
|
+
int event_loop;
|
|
52
|
+
} sel_LOOP;
|
|
53
|
+
|
|
54
|
+
static int
|
|
55
|
+
timer_cmp_asc(lcb_list_t *a, lcb_list_t *b)
|
|
56
|
+
{
|
|
57
|
+
sel_TIMER *ta = LCB_LIST_ITEM(a, sel_TIMER, list);
|
|
58
|
+
sel_TIMER *tb = LCB_LIST_ITEM(b, sel_TIMER, list);
|
|
59
|
+
if (ta->exptime > tb->exptime) {
|
|
60
|
+
return 1;
|
|
61
|
+
} else if (ta->exptime < tb->exptime) {
|
|
62
|
+
return -1;
|
|
63
|
+
} else {
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static void *
|
|
69
|
+
sel_event_new(lcb_io_opt_t iops)
|
|
70
|
+
{
|
|
71
|
+
sel_LOOP *io = iops->v.v2.cookie;
|
|
72
|
+
sel_EVENT *ret = calloc(1, sizeof(sel_EVENT));
|
|
73
|
+
if (ret != NULL) {
|
|
74
|
+
lcb_list_append(&io->events.list, &ret->list);
|
|
75
|
+
}
|
|
76
|
+
return ret;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static int
|
|
80
|
+
sel_event_update(lcb_io_opt_t iops, lcb_socket_t sock, void *event, short flags,
|
|
81
|
+
void *cb_data, lcb_ioE_callback handler)
|
|
82
|
+
{
|
|
83
|
+
sel_EVENT *ev = event;
|
|
84
|
+
ev->sock = sock;
|
|
85
|
+
ev->handler = handler;
|
|
86
|
+
ev->cb_data = cb_data;
|
|
87
|
+
ev->flags = flags;
|
|
88
|
+
(void)iops;
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
static void
|
|
93
|
+
sel_event_free(lcb_io_opt_t iops, void *event)
|
|
94
|
+
{
|
|
95
|
+
sel_EVENT *ev = event;
|
|
96
|
+
lcb_list_delete(&ev->list);
|
|
97
|
+
free(ev);
|
|
98
|
+
(void)iops;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
static void
|
|
102
|
+
sel_event_cancel(lcb_io_opt_t iops, lcb_socket_t sock, void *event)
|
|
103
|
+
{
|
|
104
|
+
sel_EVENT *ev = event;
|
|
105
|
+
ev->flags = 0;
|
|
106
|
+
ev->cb_data = NULL;
|
|
107
|
+
ev->handler = NULL;
|
|
108
|
+
(void)iops;
|
|
109
|
+
(void)sock;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
static void *
|
|
113
|
+
sel_timer_new(lcb_io_opt_t iops)
|
|
114
|
+
{
|
|
115
|
+
sel_TIMER *ret = calloc(1, sizeof(sel_TIMER));
|
|
116
|
+
(void)iops;
|
|
117
|
+
return ret;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
static void
|
|
121
|
+
sel_timer_cancel(lcb_io_opt_t iops, void *timer)
|
|
122
|
+
{
|
|
123
|
+
sel_TIMER *tm = timer;
|
|
124
|
+
if (tm->active) {
|
|
125
|
+
tm->active = 0;
|
|
126
|
+
lcb_list_delete(&tm->list);
|
|
127
|
+
}
|
|
128
|
+
(void)iops;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
static void sel_timer_free(lcb_io_opt_t iops, void *timer)
|
|
133
|
+
{
|
|
134
|
+
sel_timer_cancel(iops, timer);
|
|
135
|
+
free(timer);
|
|
136
|
+
(void)iops;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
static int
|
|
140
|
+
sel_timer_schedule(lcb_io_opt_t iops, void *timer, lcb_U32 usec, void *cb_data,
|
|
141
|
+
lcb_ioE_callback handler)
|
|
142
|
+
{
|
|
143
|
+
sel_TIMER *tm = timer;
|
|
144
|
+
sel_LOOP *cookie = iops->v.v2.cookie;
|
|
145
|
+
lcb_assert(!tm->active);
|
|
146
|
+
tm->exptime = gethrtime() + (usec * (hrtime_t)1000);
|
|
147
|
+
tm->cb_data = cb_data;
|
|
148
|
+
tm->handler = handler;
|
|
149
|
+
tm->active = 1;
|
|
150
|
+
lcb_list_add_sorted(&cookie->timers, &tm->list, timer_cmp_asc);
|
|
151
|
+
|
|
152
|
+
(void)iops;
|
|
153
|
+
return 0;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
static void
|
|
157
|
+
sel_stop_loop(struct lcb_io_opt_st *iops)
|
|
158
|
+
{
|
|
159
|
+
sel_LOOP *io = iops->v.v2.cookie;
|
|
160
|
+
io->event_loop = 0;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
static sel_TIMER *
|
|
164
|
+
pop_next_timer(sel_LOOP *cookie, hrtime_t now)
|
|
165
|
+
{
|
|
166
|
+
sel_TIMER *ret;
|
|
167
|
+
|
|
168
|
+
if (LCB_LIST_IS_EMPTY(&cookie->timers)) {
|
|
169
|
+
return NULL;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
ret = LCB_LIST_ITEM(cookie->timers.next, sel_TIMER, list);
|
|
173
|
+
if (ret->exptime > now) {
|
|
174
|
+
return NULL;
|
|
175
|
+
}
|
|
176
|
+
lcb_list_shift(&cookie->timers);
|
|
177
|
+
ret->active = 0;
|
|
178
|
+
return ret;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
static int
|
|
182
|
+
get_next_timeout(sel_LOOP *cookie, struct timeval *tmo, hrtime_t now)
|
|
183
|
+
{
|
|
184
|
+
sel_TIMER *first;
|
|
185
|
+
hrtime_t delta;
|
|
186
|
+
|
|
187
|
+
if (LCB_LIST_IS_EMPTY(&cookie->timers)) {
|
|
188
|
+
tmo->tv_sec = 0;
|
|
189
|
+
tmo->tv_usec = 0;
|
|
190
|
+
return 0;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
first = LCB_LIST_ITEM(cookie->timers.next, sel_TIMER, list);
|
|
194
|
+
if (now < first->exptime) {
|
|
195
|
+
delta = first->exptime - now;
|
|
196
|
+
} else {
|
|
197
|
+
delta = 0;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
if (delta) {
|
|
202
|
+
delta /= 1000;
|
|
203
|
+
tmo->tv_sec = (long)(delta / 1000000);
|
|
204
|
+
tmo->tv_usec = delta % 1000000;
|
|
205
|
+
} else {
|
|
206
|
+
tmo->tv_sec = 0;
|
|
207
|
+
tmo->tv_usec = 0;
|
|
208
|
+
}
|
|
209
|
+
return 1;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
static void
|
|
213
|
+
run_loop(sel_LOOP *io, int is_tick)
|
|
214
|
+
{
|
|
215
|
+
sel_EVENT *ev;
|
|
216
|
+
lcb_list_t *ii;
|
|
217
|
+
|
|
218
|
+
fd_set readfds, writefds, exceptfds;
|
|
219
|
+
|
|
220
|
+
io->event_loop = !is_tick;
|
|
221
|
+
do {
|
|
222
|
+
struct timeval tmo, *t;
|
|
223
|
+
int ret;
|
|
224
|
+
int nevents = 0;
|
|
225
|
+
int has_timers;
|
|
226
|
+
lcb_socket_t fdmax = 0;
|
|
227
|
+
hrtime_t now;
|
|
228
|
+
|
|
229
|
+
t = NULL;
|
|
230
|
+
now = gethrtime();
|
|
231
|
+
|
|
232
|
+
FD_ZERO(&readfds);
|
|
233
|
+
FD_ZERO(&writefds);
|
|
234
|
+
FD_ZERO(&exceptfds);
|
|
235
|
+
|
|
236
|
+
LCB_LIST_FOR(ii, &io->events.list) {
|
|
237
|
+
ev = LCB_LIST_ITEM(ii, sel_EVENT, list);
|
|
238
|
+
if (ev->flags != 0) {
|
|
239
|
+
if (ev->flags & LCB_READ_EVENT) {
|
|
240
|
+
FD_SET(ev->sock, &readfds);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
if (ev->flags & LCB_WRITE_EVENT) {
|
|
244
|
+
FD_SET(ev->sock, &writefds);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
FD_SET(ev->sock, &exceptfds);
|
|
248
|
+
if (ev->sock > fdmax) {
|
|
249
|
+
fdmax = ev->sock;
|
|
250
|
+
}
|
|
251
|
+
++nevents;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
has_timers = get_next_timeout(io, &tmo, now);
|
|
256
|
+
if (has_timers && !is_tick) {
|
|
257
|
+
t = &tmo;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
if (nevents == 0 && has_timers == 0) {
|
|
262
|
+
io->event_loop = 0;
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
if (nevents) {
|
|
267
|
+
ret = select(fdmax + 1, &readfds, &writefds, &exceptfds, t);
|
|
268
|
+
if (ret == SOCKET_ERROR) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
} else {
|
|
272
|
+
ret = 0;
|
|
273
|
+
if (!is_tick) {
|
|
274
|
+
usleep((t->tv_sec * 1000000) + t->tv_usec);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
/** Always invoke the pending timers */
|
|
280
|
+
if (has_timers) {
|
|
281
|
+
sel_TIMER *tm;
|
|
282
|
+
now = gethrtime();
|
|
283
|
+
|
|
284
|
+
while ((tm = pop_next_timer(io, now))) {
|
|
285
|
+
tm->handler(-1, 0, tm->cb_data);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/* To be completely safe, we need to copy active events
|
|
290
|
+
* before handing them. Iterating over the list of
|
|
291
|
+
* registered events isn't safe, because one callback can
|
|
292
|
+
* cancel all registered events before iteration will end
|
|
293
|
+
*/
|
|
294
|
+
|
|
295
|
+
if (ret && nevents) {
|
|
296
|
+
sel_EVENT *active = NULL;
|
|
297
|
+
LCB_LIST_FOR(ii, &io->events.list) {
|
|
298
|
+
ev = LCB_LIST_ITEM(ii, sel_EVENT, list);
|
|
299
|
+
if (ev->flags != 0) {
|
|
300
|
+
ev->eflags = 0;
|
|
301
|
+
if (FD_ISSET(ev->sock, &readfds)) {
|
|
302
|
+
ev->eflags |= LCB_READ_EVENT;
|
|
303
|
+
}
|
|
304
|
+
if (FD_ISSET(ev->sock, &writefds)) {
|
|
305
|
+
ev->eflags |= LCB_WRITE_EVENT;
|
|
306
|
+
}
|
|
307
|
+
if (FD_ISSET(ev->sock, &exceptfds)) {
|
|
308
|
+
ev->eflags = LCB_ERROR_EVENT | LCB_RW_EVENT; /** It should error */
|
|
309
|
+
}
|
|
310
|
+
if (ev->eflags != 0) {
|
|
311
|
+
ev->next = active;
|
|
312
|
+
active = ev;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
ev = active;
|
|
317
|
+
while (ev) {
|
|
318
|
+
sel_EVENT *p = ev->next;
|
|
319
|
+
ev->handler(ev->sock, ev->eflags, ev->cb_data);
|
|
320
|
+
ev = p;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
} while (io->event_loop);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
static void
|
|
327
|
+
sel_run_loop(struct lcb_io_opt_st *iops)
|
|
328
|
+
{
|
|
329
|
+
run_loop(iops->v.v2.cookie, 0);
|
|
330
|
+
}
|
|
331
|
+
static void
|
|
332
|
+
sel_tick_loop(struct lcb_io_opt_st *iops)
|
|
333
|
+
{
|
|
334
|
+
run_loop(iops->v.v2.cookie, 1);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
static void
|
|
338
|
+
sel_destroy_iops(struct lcb_io_opt_st *iops)
|
|
339
|
+
{
|
|
340
|
+
sel_LOOP *io = iops->v.v2.cookie;
|
|
341
|
+
lcb_list_t *nn, *ii;
|
|
342
|
+
sel_EVENT *ev;
|
|
343
|
+
sel_TIMER *tm;
|
|
344
|
+
|
|
345
|
+
if (io->event_loop != 0) {
|
|
346
|
+
fprintf(stderr, "WARN: libcouchbase(plugin-select): the event loop might be still active, but it still try to "
|
|
347
|
+
"free resources\n");
|
|
348
|
+
}
|
|
349
|
+
LCB_LIST_SAFE_FOR(ii, nn, &io->events.list) {
|
|
350
|
+
ev = LCB_LIST_ITEM(ii, sel_EVENT, list);
|
|
351
|
+
sel_event_free(iops, ev);
|
|
352
|
+
}
|
|
353
|
+
assert(LCB_LIST_IS_EMPTY(&io->events.list));
|
|
354
|
+
LCB_LIST_SAFE_FOR(ii, nn, &io->timers) {
|
|
355
|
+
tm = LCB_LIST_ITEM(ii, sel_TIMER, list);
|
|
356
|
+
sel_timer_free(iops, tm);
|
|
357
|
+
}
|
|
358
|
+
assert(LCB_LIST_IS_EMPTY(&io->timers));
|
|
359
|
+
free(io);
|
|
360
|
+
free(iops);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
static lcb_socket_t
|
|
364
|
+
sel_socket_wrap(lcb_io_opt_t io, int domain, int type, int protocol)
|
|
365
|
+
{
|
|
366
|
+
lcb_socket_t res = socket_impl(io, domain, type, protocol);
|
|
367
|
+
#ifndef _WIN32
|
|
368
|
+
|
|
369
|
+
/* This only works on non-Windows where FD_SETSIZE is in effect wrt the
|
|
370
|
+
* actual FD number. On Windows, FD_SETSIZE is the cap on the _total_
|
|
371
|
+
* number of sockets to be used in select; not necessarily what their
|
|
372
|
+
* FD values are.
|
|
373
|
+
*
|
|
374
|
+
* TODO: Just use poll() on POSIX in the future.
|
|
375
|
+
*/
|
|
376
|
+
if (res != INVALID_SOCKET && res > FD_SETSIZE) {
|
|
377
|
+
close_impl(io, res);
|
|
378
|
+
fprintf(stderr, "COUCHBASE: too many FDs. Cannot have socket > FD_SETSIZE. Use other I/O plugin\n");
|
|
379
|
+
io->v.v3.error = EINVAL;
|
|
380
|
+
res = INVALID_SOCKET;
|
|
381
|
+
}
|
|
382
|
+
#endif
|
|
383
|
+
return res;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
static void
|
|
387
|
+
procs2_sel_callback(int version, lcb_loop_procs *loop_procs,
|
|
388
|
+
lcb_timer_procs *timer_procs, lcb_bsd_procs *bsd_procs,
|
|
389
|
+
lcb_ev_procs *ev_procs, lcb_completion_procs *completion_procs,
|
|
390
|
+
lcb_iomodel_t *iomodel)
|
|
391
|
+
{
|
|
392
|
+
ev_procs->create = sel_event_new;
|
|
393
|
+
ev_procs->destroy = sel_event_free;
|
|
394
|
+
ev_procs->watch = sel_event_update;
|
|
395
|
+
ev_procs->cancel = sel_event_cancel;
|
|
396
|
+
|
|
397
|
+
timer_procs->create = sel_timer_new;
|
|
398
|
+
timer_procs->destroy = sel_timer_free;
|
|
399
|
+
timer_procs->schedule = sel_timer_schedule;
|
|
400
|
+
timer_procs->cancel = sel_timer_cancel;
|
|
401
|
+
|
|
402
|
+
loop_procs->start = sel_run_loop;
|
|
403
|
+
loop_procs->stop = sel_stop_loop;
|
|
404
|
+
loop_procs->tick = sel_tick_loop;
|
|
405
|
+
|
|
406
|
+
*iomodel = LCB_IOMODEL_EVENT;
|
|
407
|
+
wire_lcb_bsd_impl2(bsd_procs, version);
|
|
408
|
+
|
|
409
|
+
/* Override */
|
|
410
|
+
bsd_procs->socket0 = sel_socket_wrap;
|
|
411
|
+
(void)completion_procs;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
LIBCOUCHBASE_API
|
|
415
|
+
lcb_error_t
|
|
416
|
+
lcb_create_select_io_opts(int version, lcb_io_opt_t *io, void *arg)
|
|
417
|
+
{
|
|
418
|
+
lcb_io_opt_t ret;
|
|
419
|
+
sel_LOOP *cookie;
|
|
420
|
+
|
|
421
|
+
if (version != 0) {
|
|
422
|
+
return LCB_PLUGIN_VERSION_MISMATCH;
|
|
423
|
+
}
|
|
424
|
+
ret = calloc(1, sizeof(*ret));
|
|
425
|
+
cookie = calloc(1, sizeof(*cookie));
|
|
426
|
+
if (ret == NULL || cookie == NULL) {
|
|
427
|
+
free(ret);
|
|
428
|
+
free(cookie);
|
|
429
|
+
return LCB_CLIENT_ENOMEM;
|
|
430
|
+
}
|
|
431
|
+
lcb_list_init(&cookie->events.list);
|
|
432
|
+
lcb_list_init(&cookie->timers);
|
|
433
|
+
|
|
434
|
+
/* setup io iops! */
|
|
435
|
+
ret->version = 3;
|
|
436
|
+
ret->dlhandle = NULL;
|
|
437
|
+
ret->destructor = sel_destroy_iops;
|
|
438
|
+
|
|
439
|
+
/* consider that struct isn't allocated by the library,
|
|
440
|
+
* `need_cleanup' flag might be set in lcb_create() */
|
|
441
|
+
ret->v.v3.need_cleanup = 0;
|
|
442
|
+
ret->v.v3.get_procs = procs2_sel_callback;
|
|
443
|
+
ret->v.v3.cookie = cookie;
|
|
444
|
+
|
|
445
|
+
/* For backwards compatibility */
|
|
446
|
+
wire_lcb_bsd_impl(ret);
|
|
447
|
+
|
|
448
|
+
*io = ret;
|
|
449
|
+
(void)arg;
|
|
450
|
+
return LCB_SUCCESS;
|
|
451
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2013 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 LIBCOUCHBASE_SELECT_IO_OPTS_H
|
|
19
|
+
#define LIBCOUCHBASE_SELECT_IO_OPTS_H 1
|
|
20
|
+
|
|
21
|
+
#include <libcouchbase/couchbase.h>
|
|
22
|
+
|
|
23
|
+
#ifdef __cplusplus
|
|
24
|
+
extern "C" {
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Create an instance of an event handler that utilize libev for
|
|
29
|
+
* event notification.
|
|
30
|
+
*
|
|
31
|
+
* @return status of the operation
|
|
32
|
+
*/
|
|
33
|
+
LIBCOUCHBASE_API
|
|
34
|
+
lcb_error_t lcb_create_select_io_opts(int version, lcb_io_opt_t *io, void *loop);
|
|
35
|
+
#ifdef __cplusplus
|
|
36
|
+
}
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
#endif
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Internal source code structure
|
|
2
|
+
|
|
3
|
+
This directory contains the source code for libcouchbase. Here is a brief
|
|
4
|
+
listing of the various subcomponents and what they do:
|
|
5
|
+
|
|
6
|
+
* `internal.h` contains the top level internal declarations.
|
|
7
|
+
|
|
8
|
+
* `config_static.h` contains statically inferred (via macros) platform information.
|
|
9
|
+
|
|
10
|
+
* `instance.c` contains functions related to creating and destroying the actual
|
|
11
|
+
`lcb_t` handle. It also contains some convenience functions.
|
|
12
|
+
|
|
13
|
+
* `bootstrap.{c,h}` contains the top-level logic for _retrieving_ the cluster
|
|
14
|
+
configuration
|
|
15
|
+
|
|
16
|
+
* `newconfig.c` contains the logic for _applying_ a new configuration
|
|
17
|
+
|
|
18
|
+
* `bucketconfig/*` is a directory which contains the low level transport logic used
|
|
19
|
+
to retrieve a new configuration
|
|
20
|
+
|
|
21
|
+
* `callbacks.c` contains the functions used to implement the library's `set_callback`
|
|
22
|
+
accessor functions.
|
|
23
|
+
|
|
24
|
+
* `operations/*` is a directory which contains the top level entry points for memcached
|
|
25
|
+
requests
|
|
26
|
+
|
|
27
|
+
* `handler.c` contains the response handlers for memcached.
|
|
28
|
+
|
|
29
|
+
* `getconfig.c` contains the implementation for requesting a config from an existing
|
|
30
|
+
server.
|
|
31
|
+
|
|
32
|
+
* `connspec.{c,h}` contains the connection string parsing logic
|
|
33
|
+
|
|
34
|
+
* `cntl.c` contains the handlers for the `lcb_cntl()` family of functions
|
|
35
|
+
|
|
36
|
+
* `dump.c` contains the handlers for the `lcb_dump()` function
|
|
37
|
+
|
|
38
|
+
* `gethrtime.c` contains platform-dependent implementations of a nanosecond timer
|
|
39
|
+
|
|
40
|
+
* `hashset.{c,h}` contains the implementation for a set (unique collection of pointers)
|
|
41
|
+
|
|
42
|
+
* `list.{c,h}` contains the implementation for a double-linked list
|
|
43
|
+
|
|
44
|
+
* `sllist.h, sllist-inl.h` contain the implementation for a single-linked list
|
|
45
|
+
|
|
46
|
+
* `logging.{c,h}` contains the implementation for the library's logging mechanism
|
|
47
|
+
|
|
48
|
+
* `hostlist.{c,h}` defines a list of hosts, with features for de-duping and converting
|
|
49
|
+
to other structures
|
|
50
|
+
|
|
51
|
+
* `nodeinfo.c` contains the implementation for the `lcb_get_node()` function.
|
|
52
|
+
|
|
53
|
+
* `packetutils.{c,h}` contains utilities and macros for handling partial memcached
|
|
54
|
+
response packets
|
|
55
|
+
|
|
56
|
+
* `wait.c` contains the implementation of `lcb_wait()`
|
|
57
|
+
|
|
58
|
+
* `timings.c` contains the implementation of `lcb_get_timings()`
|
|
59
|
+
|
|
60
|
+
* `trace.h` contains macros for DTrace functionality
|
|
61
|
+
|
|
62
|
+
* `utilities.c` contains cross-platform utilities (such as temporary directory,
|
|
63
|
+
getting environment variables)
|
|
64
|
+
|
|
65
|
+
* `iofactory.c` contains the plugin intialization/loading functionality for I/O
|
|
66
|
+
plugins
|
|
67
|
+
|
|
68
|
+
* `retrychk.c` contains logic which determines if a rety is necessary under certain
|
|
69
|
+
conditions
|
|
70
|
+
|
|
71
|
+
* `retryq.{c,h}` contains an internal retried operations, and are placed there if they
|
|
72
|
+
are eligible for retries.
|
|
73
|
+
|
|
74
|
+
* `aspend.h` contains definitions for pending operations which are meant to block
|
|
75
|
+
calls to `lcb_wait()` (implementation in instance.c)
|
|
76
|
+
|
|
77
|
+
* `lcbio/*` is a directory which contains the cross platform/cross model IO
|
|
78
|
+
implementation. Most I/O is done in this subdirectory
|
|
79
|
+
|
|
80
|
+
* `http/*` contains the API implementation for user-level HTTP requests
|
|
81
|
+
|
|
82
|
+
* `lcbht/*` contains an HTTP response parsing API/implementation
|
|
83
|
+
|
|
84
|
+
* `mc/*` contains the memcached/Couchbase structure and packet/buffer allocation
|
|
85
|
+
and scheduling logic.
|
|
86
|
+
|
|
87
|
+
* `mcserver/*` contains the operation/failure/IO logic for memcached connections
|
|
88
|
+
|
|
89
|
+
* `vbucket/*` contains the raw vBucket config parsing and hashing/mapping implementation
|
|
90
|
+
(formerly known as "libvbucket")
|
|
91
|
+
|
|
92
|
+
* `rdb/*` contains an extensible pooled read buffer implementation
|
|
93
|
+
|
|
94
|
+
* `netbuf/*` contains an extensible high performance output buffer implementation
|
|
95
|
+
|
|
96
|
+
* `rigbuffer.{c,h}` contains a circular buffer implementation.
|
|
97
|
+
|
|
98
|
+
* `ssl/*` contains the OpenSSL interfacing routines
|
|
99
|
+
|
|
100
|
+
* `strcodecs/*` contains utility functions to encode/decode strings to/from
|
|
101
|
+
various formats.
|
|
@@ -0,0 +1,105 @@
|
|
|
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_ASPEND_H
|
|
19
|
+
#define LCB_ASPEND_H
|
|
20
|
+
|
|
21
|
+
#ifdef __cplusplus
|
|
22
|
+
#include <set>
|
|
23
|
+
typedef std::set<void*> lcb_ASPEND_SETTYPE;
|
|
24
|
+
#else
|
|
25
|
+
typedef void lcb_ASPEND_SETTYPE;
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#ifdef __cplusplus
|
|
29
|
+
extern "C" {
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @page Asynchronous Pending Queue
|
|
34
|
+
*
|
|
35
|
+
* This defines the API for asynchronous requests which should block calls to
|
|
36
|
+
* lcb_wait() or similar. This is a replacement for the explicit hashsets used
|
|
37
|
+
* in lcb_t.
|
|
38
|
+
*
|
|
39
|
+
* Items are added to the pending queue via lcb_aspend_add(). They may be
|
|
40
|
+
* removed either explicitly via lcb_aspend_del() or implicitly when the
|
|
41
|
+
* instance is destroyed.
|
|
42
|
+
*
|
|
43
|
+
* An exception to this rule is the special LCB_PENDTYPE_COUNTER which does
|
|
44
|
+
* not associate a specific pointer with it.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/** Pending item type */
|
|
48
|
+
typedef enum {
|
|
49
|
+
LCB_PENDTYPE_TIMER = 0, /**< item is of type lcb_timer_t */
|
|
50
|
+
LCB_PENDTYPE_HTTP, /**< item is of type lcb_http_request_t */
|
|
51
|
+
LCB_PENDTYPE_DURABILITY, /**< item is of type lcb_durability_set_t */
|
|
52
|
+
LCB_PENDTYPE_COUNTER, /**< just increment/decrement the counter */
|
|
53
|
+
LCB_PENDTYPE_MAX
|
|
54
|
+
} lcb_ASPENDTYPE;
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
/** Items for pending operations */
|
|
58
|
+
typedef struct {
|
|
59
|
+
lcb_ASPEND_SETTYPE* items[LCB_PENDTYPE_MAX];
|
|
60
|
+
unsigned count;
|
|
61
|
+
} lcb_ASPEND;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Initialize the pending queues
|
|
65
|
+
* @param ops
|
|
66
|
+
*/
|
|
67
|
+
void lcb_aspend_init(lcb_ASPEND *ops);
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Clean up any resources used by the pending queues
|
|
71
|
+
* @param ops
|
|
72
|
+
*/
|
|
73
|
+
void lcb_aspend_cleanup(lcb_ASPEND *ops);
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Add an opaque pointer of a given type to a pending queue
|
|
77
|
+
* @param ops
|
|
78
|
+
* @param type The type of pointer to add
|
|
79
|
+
* @param item The item to add
|
|
80
|
+
*/
|
|
81
|
+
void lcb_aspend_add(lcb_ASPEND *ops, lcb_ASPENDTYPE type, const void *item);
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Remove an item from the queue and decrement the pending count
|
|
85
|
+
* @param ops
|
|
86
|
+
* @param type The type of item to remove
|
|
87
|
+
* @param item The item to remove
|
|
88
|
+
*
|
|
89
|
+
* @attention If the item is not found inside the queue then the count is
|
|
90
|
+
* _not_ decremented. An exception to this rule is the LCB_PENDTYPE_COUNTER
|
|
91
|
+
* type which does not have a pointer associated with it. In this case the
|
|
92
|
+
* counter is always decremented.
|
|
93
|
+
*/
|
|
94
|
+
void lcb_aspend_del(lcb_ASPEND *ops, lcb_ASPENDTYPE type, const void *item);
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Determine whether there are pending items in any of the queues
|
|
98
|
+
* @param ops
|
|
99
|
+
*/
|
|
100
|
+
#define lcb_aspend_pending(ops) ((ops)->count > 0)
|
|
101
|
+
|
|
102
|
+
#ifdef __cplusplus
|
|
103
|
+
}
|
|
104
|
+
#endif
|
|
105
|
+
#endif
|