libcouchbase 0.0.1
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 +18 -0
- data/.gitmodules +3 -0
- data/.rspec +1 -0
- data/.travis.yml +35 -0
- data/Gemfile +4 -0
- data/LICENSE +24 -0
- data/README.md +389 -0
- data/Rakefile +75 -0
- data/ext/README.md +6 -0
- data/ext/Rakefile +20 -0
- data/ext/libcouchbase/.gitignore +130 -0
- data/ext/libcouchbase/.travis.yml +19 -0
- data/ext/libcouchbase/CMakeLists.txt +429 -0
- data/ext/libcouchbase/CONTRIBUTING.md +124 -0
- data/ext/libcouchbase/LICENSE +202 -0
- data/ext/libcouchbase/README.markdown +163 -0
- data/ext/libcouchbase/RELEASE_NOTES.markdown +2691 -0
- data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +27 -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 +20 -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 +52 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +56 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake +11 -0
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +29 -0
- data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +133 -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 +60 -0
- data/ext/libcouchbase/cmake/configure +357 -0
- data/ext/libcouchbase/cmake/defs.mk.in +8 -0
- data/ext/libcouchbase/cmake/dtrace-instr-link.pl +38 -0
- data/ext/libcouchbase/cmake/source_files.cmake +73 -0
- data/ext/libcouchbase/configure.pl +1 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.c +624 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
- data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +9 -0
- data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
- data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +217 -0
- data/ext/libcouchbase/contrib/cbsasl/src/client.c +205 -0
- data/ext/libcouchbase/contrib/cbsasl/src/common.c +46 -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/util.h +31 -0
- data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.c +747 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.h +493 -0
- data/ext/libcouchbase/contrib/genhash/genhash.c +372 -0
- data/ext/libcouchbase/contrib/genhash/genhash.h +235 -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 +4892 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
- data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +8 -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 +71 -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 +98 -0
- data/ext/libcouchbase/contrib/snappy/snappy.cc +1307 -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/example/CMakeLists.txt +37 -0
- data/ext/libcouchbase/example/README.markdown +47 -0
- data/ext/libcouchbase/example/db/db.c +167 -0
- data/ext/libcouchbase/example/db/vb.c +227 -0
- data/ext/libcouchbase/example/instancepool/main.cc +102 -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 +148 -0
- data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
- data/ext/libcouchbase/example/minimal/minimal.c +130 -0
- data/ext/libcouchbase/example/observe/observe.c +146 -0
- data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +132 -0
- data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +191 -0
- data/ext/libcouchbase/example/tick/tick.c +119 -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/cbft.h +109 -0
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +356 -0
- data/ext/libcouchbase/include/libcouchbase/cntl.h +937 -0
- data/ext/libcouchbase/include/libcouchbase/configuration.h.in +23 -0
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +3677 -0
- data/ext/libcouchbase/include/libcouchbase/deprecated.h +300 -0
- data/ext/libcouchbase/include/libcouchbase/error.h +595 -0
- data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
- data/ext/libcouchbase/include/libcouchbase/iops.h +1050 -0
- data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
- data/ext/libcouchbase/include/libcouchbase/kvbuf.h +132 -0
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +364 -0
- data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +367 -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 +312 -0
- data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +643 -0
- data/ext/libcouchbase/include/libcouchbase/views.h +298 -0
- data/ext/libcouchbase/include/libcouchbase/visibility.h +65 -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 +1916 -0
- data/ext/libcouchbase/include/memcached/vbucket.h +42 -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 +73 -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 +108 -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 +466 -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 +29 -0
- data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +65 -0
- data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
- data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +29 -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 +42 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +212 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +148 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +648 -0
- data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +11 -0
- data/ext/libcouchbase/plugins/io/select/plugin-select.c +448 -0
- data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
- data/ext/libcouchbase/src/README.md +103 -0
- data/ext/libcouchbase/src/aspend.h +106 -0
- data/ext/libcouchbase/src/auth.cc +74 -0
- data/ext/libcouchbase/src/auth.h +54 -0
- data/ext/libcouchbase/src/bootstrap.c +269 -0
- data/ext/libcouchbase/src/bootstrap.h +129 -0
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.c +495 -0
- data/ext/libcouchbase/src/bucketconfig/bc_file.c +347 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.c +630 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.h +82 -0
- data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +150 -0
- data/ext/libcouchbase/src/bucketconfig/clconfig.h +681 -0
- data/ext/libcouchbase/src/bucketconfig/confmon.c +474 -0
- data/ext/libcouchbase/src/callbacks.c +378 -0
- data/ext/libcouchbase/src/cbft.cc +210 -0
- data/ext/libcouchbase/src/cntl.cc +847 -0
- data/ext/libcouchbase/src/config_static.h +159 -0
- data/ext/libcouchbase/src/connspec.cc +462 -0
- data/ext/libcouchbase/src/connspec.h +105 -0
- data/ext/libcouchbase/src/ctx-log-inl.h +27 -0
- data/ext/libcouchbase/src/dump.c +98 -0
- data/ext/libcouchbase/src/getconfig.c +100 -0
- data/ext/libcouchbase/src/gethrtime.c +109 -0
- data/ext/libcouchbase/src/handler.c +922 -0
- data/ext/libcouchbase/src/hashset.c +164 -0
- data/ext/libcouchbase/src/hashset.h +86 -0
- data/ext/libcouchbase/src/hashtable.c +75 -0
- data/ext/libcouchbase/src/hdr_timings.c +92 -0
- data/ext/libcouchbase/src/hostlist.cc +301 -0
- data/ext/libcouchbase/src/hostlist.h +171 -0
- data/ext/libcouchbase/src/http/http-priv.h +307 -0
- data/ext/libcouchbase/src/http/http.cc +633 -0
- data/ext/libcouchbase/src/http/http.h +34 -0
- data/ext/libcouchbase/src/http/http_io.cc +307 -0
- data/ext/libcouchbase/src/instance.cc +722 -0
- data/ext/libcouchbase/src/internal.h +244 -0
- data/ext/libcouchbase/src/iofactory.c +575 -0
- data/ext/libcouchbase/src/jsparse/parser.cc +519 -0
- data/ext/libcouchbase/src/jsparse/parser.h +173 -0
- data/ext/libcouchbase/src/lcbht/lcbht.c +282 -0
- data/ext/libcouchbase/src/lcbht/lcbht.h +199 -0
- data/ext/libcouchbase/src/lcbio/connect.c +557 -0
- data/ext/libcouchbase/src/lcbio/connect.h +364 -0
- data/ext/libcouchbase/src/lcbio/ctx.c +611 -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 +84 -0
- data/ext/libcouchbase/src/lcbio/ioutils.c +350 -0
- data/ext/libcouchbase/src/lcbio/ioutils.h +203 -0
- data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
- data/ext/libcouchbase/src/lcbio/manager.c +584 -0
- data/ext/libcouchbase/src/lcbio/manager.h +156 -0
- data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
- data/ext/libcouchbase/src/lcbio/rw-inl.h +115 -0
- data/ext/libcouchbase/src/lcbio/ssl.h +149 -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 +430 -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 +86 -0
- data/ext/libcouchbase/src/mc/compress.c +90 -0
- data/ext/libcouchbase/src/mc/compress.h +61 -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 +111 -0
- data/ext/libcouchbase/src/mc/mcreq.c +954 -0
- data/ext/libcouchbase/src/mc/mcreq.h +977 -0
- data/ext/libcouchbase/src/mcserver/mcserver.c +784 -0
- data/ext/libcouchbase/src/mcserver/mcserver.h +121 -0
- data/ext/libcouchbase/src/mcserver/negotiate.c +656 -0
- data/ext/libcouchbase/src/mcserver/negotiate.h +119 -0
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +860 -0
- data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
- data/ext/libcouchbase/src/n1ql/n1ql.cc +729 -0
- data/ext/libcouchbase/src/n1ql/params.cc +215 -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.c +385 -0
- data/ext/libcouchbase/src/nodeinfo.cc +194 -0
- data/ext/libcouchbase/src/operations/cbflush.c +71 -0
- data/ext/libcouchbase/src/operations/counter.c +116 -0
- data/ext/libcouchbase/src/operations/durability-cas.c +224 -0
- data/ext/libcouchbase/src/operations/durability-seqno.c +157 -0
- data/ext/libcouchbase/src/operations/durability.c +668 -0
- data/ext/libcouchbase/src/operations/durability_internal.h +199 -0
- data/ext/libcouchbase/src/operations/get.c +409 -0
- data/ext/libcouchbase/src/operations/observe-seqno.c +96 -0
- data/ext/libcouchbase/src/operations/observe.c +340 -0
- data/ext/libcouchbase/src/operations/pktfwd.c +86 -0
- data/ext/libcouchbase/src/operations/remove.c +83 -0
- data/ext/libcouchbase/src/operations/stats.c +461 -0
- data/ext/libcouchbase/src/operations/store.c +360 -0
- data/ext/libcouchbase/src/operations/subdoc.cc +510 -0
- data/ext/libcouchbase/src/operations/touch.c +81 -0
- data/ext/libcouchbase/src/packetutils.c +60 -0
- data/ext/libcouchbase/src/packetutils.h +147 -0
- data/ext/libcouchbase/src/probes.d +211 -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.c +113 -0
- data/ext/libcouchbase/src/retryq.c +424 -0
- data/ext/libcouchbase/src/retryq.h +157 -0
- data/ext/libcouchbase/src/ringbuffer.c +442 -0
- data/ext/libcouchbase/src/ringbuffer.h +100 -0
- data/ext/libcouchbase/src/settings.c +95 -0
- data/ext/libcouchbase/src/settings.h +188 -0
- data/ext/libcouchbase/src/simplestring.c +211 -0
- data/ext/libcouchbase/src/simplestring.h +228 -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 +23 -0
- data/ext/libcouchbase/src/ssl/ssl_c.c +415 -0
- data/ext/libcouchbase/src/ssl/ssl_common.c +454 -0
- data/ext/libcouchbase/src/ssl/ssl_e.c +408 -0
- data/ext/libcouchbase/src/ssl/ssl_iot_common.h +180 -0
- data/ext/libcouchbase/src/ssobuf.h +82 -0
- data/ext/libcouchbase/src/strcodecs/base64.c +123 -0
- data/ext/libcouchbase/src/strcodecs/strcodecs.h +285 -0
- data/ext/libcouchbase/src/timings.c +208 -0
- data/ext/libcouchbase/src/trace.h +105 -0
- data/ext/libcouchbase/src/utilities.c +171 -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 +1543 -0
- data/ext/libcouchbase/src/views/docreq.c +194 -0
- data/ext/libcouchbase/src/views/docreq.h +83 -0
- data/ext/libcouchbase/src/views/viewreq.c +358 -0
- data/ext/libcouchbase/src/views/viewreq.h +36 -0
- data/ext/libcouchbase/src/wait.c +161 -0
- data/ext/libcouchbase/tests/CMakeLists.txt +140 -0
- data/ext/libcouchbase/tests/basic/t_base64.cc +81 -0
- data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
- data/ext/libcouchbase/tests/basic/t_connstr.cc +404 -0
- data/ext/libcouchbase/tests/basic/t_creds.cc +32 -0
- data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
- data/ext/libcouchbase/tests/basic/t_hashset.cc +262 -0
- data/ext/libcouchbase/tests/basic/t_host.cc +198 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.cc +137 -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 +18 -0
- data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
- data/ext/libcouchbase/tests/basic/t_packet.cc +222 -0
- data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -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_string.cc +112 -0
- data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
- data/ext/libcouchbase/tests/check-all.cc +608 -0
- data/ext/libcouchbase/tests/htparse/t_basic.cc +193 -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 +104 -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 +524 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.h +385 -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 +226 -0
- data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
- data/ext/libcouchbase/tests/iotests/t_confmon.cc +241 -0
- data/ext/libcouchbase/tests/iotests/t_durability.cc +1059 -0
- data/ext/libcouchbase/tests/iotests/t_forward.cc +110 -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 +275 -0
- data/ext/libcouchbase/tests/iotests/t_misc.cc +713 -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 +654 -0
- data/ext/libcouchbase/tests/iotests/t_obseqno.cc +157 -0
- data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
- data/ext/libcouchbase/tests/iotests/t_sched.cc +88 -0
- data/ext/libcouchbase/tests/iotests/t_serverops.cc +230 -0
- data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
- data/ext/libcouchbase/tests/iotests/t_subdoc.cc +822 -0
- data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
- data/ext/libcouchbase/tests/iotests/t_views.cc +405 -0
- data/ext/libcouchbase/tests/iotests/testutil.cc +250 -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 +347 -0
- data/ext/libcouchbase/tests/socktests/socktest.h +448 -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 +179 -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/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/terse_25.json +291 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/t_config.cc +341 -0
- data/ext/libcouchbase/tools/CMakeLists.txt +51 -0
- data/ext/libcouchbase/tools/cbc-handlers.h +462 -0
- data/ext/libcouchbase/tools/cbc-n1qlback.cc +439 -0
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +822 -0
- data/ext/libcouchbase/tools/cbc.cc +1541 -0
- data/ext/libcouchbase/tools/common/histogram.cc +43 -0
- data/ext/libcouchbase/tools/common/histogram.h +23 -0
- data/ext/libcouchbase/tools/common/my_inttypes.h +22 -0
- data/ext/libcouchbase/tools/common/options.cc +420 -0
- data/ext/libcouchbase/tools/common/options.h +81 -0
- data/ext/libcouchbase/tools/docgen/docgen.h +469 -0
- data/ext/libcouchbase/tools/docgen/loc.h +210 -0
- data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
- data/ext/libcouchbase/tools/docgen/seqgen.h +94 -0
- data/lib/libcouchbase.rb +36 -0
- data/lib/libcouchbase/bucket.rb +819 -0
- data/lib/libcouchbase/callbacks.rb +72 -0
- data/lib/libcouchbase/connection.rb +790 -0
- data/lib/libcouchbase/design_docs.rb +86 -0
- data/lib/libcouchbase/error.rb +68 -0
- data/lib/libcouchbase/ext/libcouchbase.rb +1135 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdbase.rb +23 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdcounter.rb +36 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdendure.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdfts.rb +24 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdget.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdgetreplica.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdhttp.rb +58 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdn1ql.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdobseqno.rb +33 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdobserve.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdstore.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdstoredur.rb +45 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdsubdoc.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdverbosity.rb +29 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdviewquery.rb +61 -0
- data/lib/libcouchbase/ext/libcouchbase/contigbuf.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st.rb +15 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st0.rb +23 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st1.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st2.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st3.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/crst_u.rb +20 -0
- data/lib/libcouchbase/ext/libcouchbase/durability_opts_st_v.rb +11 -0
- data/lib/libcouchbase/ext/libcouchbase/durability_opts_t.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/durabilityopt_sv0.rb +63 -0
- data/lib/libcouchbase/ext/libcouchbase/enums.rb +991 -0
- data/lib/libcouchbase/ext/libcouchbase/fragbuf.rb +18 -0
- data/lib/libcouchbase/ext/libcouchbase/ftshandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/histogram.rb +34 -0
- data/lib/libcouchbase/ext/libcouchbase/http_request_t.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/keybuf.rb +20 -0
- data/lib/libcouchbase/ext/libcouchbase/multicmd_ctx.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/mutation_token.rb +17 -0
- data/lib/libcouchbase/ext/libcouchbase/n1qlhandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/n1qlparams.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/respbase.rb +29 -0
- data/lib/libcouchbase/ext/libcouchbase/respcounter.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respendure.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/respfts.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/respget.rb +44 -0
- data/lib/libcouchbase/ext/libcouchbase/resphttp.rb +48 -0
- data/lib/libcouchbase/ext/libcouchbase/respmcversion.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respn1ql.rb +41 -0
- data/lib/libcouchbase/ext/libcouchbase/respobseqno.rb +52 -0
- data/lib/libcouchbase/ext/libcouchbase/respobserve.rb +41 -0
- data/lib/libcouchbase/ext/libcouchbase/respserverbase.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respstats.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respstore.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respstoredur.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respsubdoc.rb +35 -0
- data/lib/libcouchbase/ext/libcouchbase/respviewquery.rb +67 -0
- data/lib/libcouchbase/ext/libcouchbase/sdentry.rb +22 -0
- data/lib/libcouchbase/ext/libcouchbase/sdspec.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/t.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/valbuf.rb +22 -0
- data/lib/libcouchbase/ext/libcouchbase/valbuf_u_buf.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/viewhandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase_iocp.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase_libuv.rb +18 -0
- data/lib/libcouchbase/ext/tasks.rb +87 -0
- data/lib/libcouchbase/n1ql.rb +73 -0
- data/lib/libcouchbase/query_full_text.rb +147 -0
- data/lib/libcouchbase/query_n1ql.rb +121 -0
- data/lib/libcouchbase/query_view.rb +129 -0
- data/lib/libcouchbase/results_fiber.rb +262 -0
- data/lib/libcouchbase/results_native.rb +211 -0
- data/lib/libcouchbase/version.rb +5 -0
- data/libcouchbase.gemspec +61 -0
- data/spec/bucket_spec.rb +270 -0
- data/spec/connection_spec.rb +277 -0
- data/spec/design_docs_spec.rb +23 -0
- data/spec/error_spec.rb +26 -0
- data/spec/fts_spec.rb +129 -0
- data/spec/n1ql_spec.rb +201 -0
- data/spec/results_libuv_spec.rb +229 -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/view_spec.rb +195 -0
- metadata +775 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2010-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
|
+
/**
|
|
19
|
+
* Basic platform includes.
|
|
20
|
+
*/
|
|
21
|
+
#ifndef LCB_SYSDEFS_H
|
|
22
|
+
#define LCB_SYSDEFS_H
|
|
23
|
+
|
|
24
|
+
#ifdef __cplusplus
|
|
25
|
+
extern "C" {
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#ifdef _WIN32
|
|
29
|
+
#include <stddef.h>
|
|
30
|
+
#include <winsock2.h>
|
|
31
|
+
#include <basetsd.h>
|
|
32
|
+
|
|
33
|
+
typedef __int64 lcb_int64_t;
|
|
34
|
+
typedef __int32 lcb_int32_t;
|
|
35
|
+
typedef SIZE_T lcb_size_t;
|
|
36
|
+
typedef SSIZE_T lcb_ssize_t;
|
|
37
|
+
typedef unsigned __int8 lcb_uint8_t;
|
|
38
|
+
typedef unsigned __int16 lcb_vbucket_t;
|
|
39
|
+
typedef unsigned __int16 lcb_uint16_t;
|
|
40
|
+
typedef unsigned __int32 lcb_uint32_t;
|
|
41
|
+
typedef unsigned __int64 lcb_cas_t;
|
|
42
|
+
typedef unsigned __int64 lcb_uint64_t;
|
|
43
|
+
|
|
44
|
+
/** FIXME: This should be a native type, but it's already defined here.. */
|
|
45
|
+
typedef unsigned __int32 lcb_time_t;
|
|
46
|
+
#else
|
|
47
|
+
#include <sys/types.h>
|
|
48
|
+
#include <stdint.h>
|
|
49
|
+
#include <time.h>
|
|
50
|
+
|
|
51
|
+
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
|
52
|
+
#include <stddef.h>
|
|
53
|
+
#endif
|
|
54
|
+
|
|
55
|
+
typedef int64_t lcb_int64_t;
|
|
56
|
+
typedef int32_t lcb_int32_t;
|
|
57
|
+
typedef size_t lcb_size_t;
|
|
58
|
+
typedef ssize_t lcb_ssize_t;
|
|
59
|
+
typedef uint16_t lcb_vbucket_t;
|
|
60
|
+
typedef uint8_t lcb_uint8_t;
|
|
61
|
+
typedef uint16_t lcb_uint16_t;
|
|
62
|
+
typedef uint32_t lcb_uint32_t;
|
|
63
|
+
typedef uint64_t lcb_cas_t;
|
|
64
|
+
typedef uint64_t lcb_uint64_t;
|
|
65
|
+
typedef time_t lcb_time_t;
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
typedef lcb_int64_t lcb_S64; /**< @brief Signed 64 bit type */
|
|
69
|
+
typedef lcb_uint64_t lcb_U64; /**< @brief Unsigned 64 bit type */
|
|
70
|
+
typedef lcb_uint32_t lcb_U32; /**< @brief Unsigned 32 bit type */
|
|
71
|
+
typedef lcb_int32_t lcb_S32; /**< @brief Signed 32 bit type */
|
|
72
|
+
typedef lcb_uint16_t lcb_U16; /**< @brief Unsigned 16 bit type */
|
|
73
|
+
typedef lcb_uint8_t lcb_U8; /**< @brief unsigned 8 bit type */
|
|
74
|
+
typedef lcb_size_t lcb_SIZE; /**< @brief Unsigned size type */
|
|
75
|
+
typedef lcb_ssize_t lcb_SSIZE; /**<@brief Signed size type */
|
|
76
|
+
typedef lcb_time_t lcb_SECS; /**< @brief Unsigned 'seconds time' type */
|
|
77
|
+
typedef lcb_cas_t lcb_CAS;
|
|
78
|
+
|
|
79
|
+
#ifdef __GNUC__
|
|
80
|
+
#define LCB_DEPRECATED(X) X __attribute__((deprecated))
|
|
81
|
+
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)
|
|
82
|
+
#define LCB_DEPRECATED2(X, reason) X __attribute__((deprecated(reason)))
|
|
83
|
+
#else
|
|
84
|
+
#define LCB_DEPRECATED2(X, reason) LCB_DEPRECATED(X)
|
|
85
|
+
#endif
|
|
86
|
+
#elif defined(_MSC_VER)
|
|
87
|
+
#define LCB_DEPRECATED(X) __declspec(deprecated) X
|
|
88
|
+
#define LCB_DEPRECATED2(X, reason) __declspec(deprecated(reason)) X
|
|
89
|
+
#else
|
|
90
|
+
#define LCB_DEPRECATED(X) X
|
|
91
|
+
#define LCB_DEPRECATED2(X, reason)
|
|
92
|
+
#endif
|
|
93
|
+
|
|
94
|
+
#ifdef __cplusplus
|
|
95
|
+
}
|
|
96
|
+
#endif
|
|
97
|
+
|
|
98
|
+
#endif /* LCB_SYSDEFS_H */
|
|
@@ -0,0 +1,643 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2014 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#ifndef LCB_VBUCKET_H
|
|
19
|
+
#define LCB_VBUCKET_H
|
|
20
|
+
#include <libcouchbase/visibility.h>
|
|
21
|
+
#include <libcouchbase/sysdefs.h>
|
|
22
|
+
|
|
23
|
+
#ifdef __cplusplus
|
|
24
|
+
extern "C" {
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @file
|
|
29
|
+
* @brief vBucket Mapping API
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @ingroup lcb-public-api
|
|
34
|
+
* @defgroup lcb-vbucket-api vBucket
|
|
35
|
+
* @details
|
|
36
|
+
* These routines contain functionality for parsing a cluster topology configuration
|
|
37
|
+
* and mapping keys to cluster nodes appropriately.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @addtogroup lcb-vbucket-api
|
|
42
|
+
* @{
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**@brief This enum functions as a 'key' to indicate a specific service offered
|
|
46
|
+
* by a node */
|
|
47
|
+
typedef enum {
|
|
48
|
+
LCBVB_SVCTYPE_DATA = 0, /**< memcached/Data port */
|
|
49
|
+
LCBVB_SVCTYPE_VIEWS, /**< Views/CAPI port */
|
|
50
|
+
LCBVB_SVCTYPE_MGMT, /**< Administrative/'REST' UI */
|
|
51
|
+
LCBVB_SVCTYPE_IXQUERY, /**< Index query */
|
|
52
|
+
LCBVB_SVCTYPE_IXADMIN, /**< Index administration */
|
|
53
|
+
LCBVB_SVCTYPE_N1QL, /**< N1QL Query */
|
|
54
|
+
LCBVB_SVCTYPE_FTS, /**< Fulltext */
|
|
55
|
+
LCBVB_SVCTYPE__MAX
|
|
56
|
+
} lcbvb_SVCTYPE;
|
|
57
|
+
|
|
58
|
+
/**@brief This enum functions to indicate the 'mode' of the service. Currently
|
|
59
|
+
* this is to distinguish between SSL and plain transports */
|
|
60
|
+
typedef enum {
|
|
61
|
+
LCBVB_SVCMODE_PLAIN = 0, /**< Plain transport */
|
|
62
|
+
LCBVB_SVCMODE_SSL, /**< SSL Transport */
|
|
63
|
+
LCBVB_SVCMODE__MAX
|
|
64
|
+
} lcbvb_SVCMODE;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @volatile. ABI/API compatibility not guaranteed between versions
|
|
68
|
+
* @brief Services which may be provided by a node
|
|
69
|
+
*/
|
|
70
|
+
typedef struct {
|
|
71
|
+
lcb_U16 data; /**< Data port for key-value operations (memcached protocol) */
|
|
72
|
+
lcb_U16 mgmt; /**< Port for adminsitrative operations (HTTP) */
|
|
73
|
+
lcb_U16 views; /**< Port for view queries (HTTP) */
|
|
74
|
+
lcb_U16 ixquery; /**< Indexing query port */
|
|
75
|
+
lcb_U16 ixadmin; /**< Indexing admin port (HTTP) */
|
|
76
|
+
lcb_U16 n1ql; /**< Query port */
|
|
77
|
+
lcb_U16 fts; /**< CBFT */
|
|
78
|
+
char *views_base_; /**< Views base URL */
|
|
79
|
+
char *query_base_; /**< N1QL base URL */
|
|
80
|
+
char *fts_base_;
|
|
81
|
+
char *hoststrs[LCBVB_SVCTYPE__MAX];
|
|
82
|
+
} lcbvb_SERVICES;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @volatile. ABI/API compatibility not guaranteed between versions.
|
|
86
|
+
*
|
|
87
|
+
* @brief Node in the cluster
|
|
88
|
+
* This structure represents a node in the cluster. The node has a hostname
|
|
89
|
+
* (@ref #hostname), and various services.
|
|
90
|
+
*/
|
|
91
|
+
typedef struct {
|
|
92
|
+
lcbvb_SERVICES svc; /**< Plain services */
|
|
93
|
+
lcbvb_SERVICES svc_ssl; /**< SSL Services */
|
|
94
|
+
char *authority; /**< host:dataport for comparison */
|
|
95
|
+
char *hostname; /**< Hostname for the node */
|
|
96
|
+
char *viewpath; /**< Path prefix for view queries */
|
|
97
|
+
char *querypath; /**< Path prefix for n1ql queries */
|
|
98
|
+
char *ftspath; /**< Path prefix for fulltext queries */
|
|
99
|
+
unsigned nvbs; /**< Total number of vbuckets the server has assigned */
|
|
100
|
+
} lcbvb_SERVER;
|
|
101
|
+
|
|
102
|
+
/**@volatile. ABI/API compatibility not guaranteed between versions */
|
|
103
|
+
typedef struct {
|
|
104
|
+
int servers[4];
|
|
105
|
+
} lcbvb_VBUCKET;
|
|
106
|
+
|
|
107
|
+
/**@volatile*/
|
|
108
|
+
typedef struct {
|
|
109
|
+
lcb_U32 index;
|
|
110
|
+
lcb_U32 point;
|
|
111
|
+
} lcbvb_CONTINUUM;
|
|
112
|
+
|
|
113
|
+
/** @brief Type of algorithm used to distribute keys.
|
|
114
|
+
* This also indicates the type of bucket */
|
|
115
|
+
typedef enum {
|
|
116
|
+
LCBVB_DIST_VBUCKET = 0, /**< vBucket hashing ("couchbase") bucket */
|
|
117
|
+
LCBVB_DIST_KETAMA = 1 /**< Ketama hashing ("memcached") bucket */
|
|
118
|
+
} lcbvb_DISTMODE;
|
|
119
|
+
|
|
120
|
+
/**@volatile. ABI/API compatibility not guaranteed between versions.
|
|
121
|
+
* @brief Structure containing the configuration.*/
|
|
122
|
+
typedef struct lcbvb_CONFIG_st {
|
|
123
|
+
lcbvb_DISTMODE dtype; /**< Type of bucket/distribution */
|
|
124
|
+
unsigned nvb; /**< Number of vbuckets */
|
|
125
|
+
unsigned ndatasrv; /**< Number of data (memcached) servers */
|
|
126
|
+
unsigned nsrv; /** Number of servers */
|
|
127
|
+
unsigned nrepl; /**< Number of replicas */
|
|
128
|
+
unsigned ncontinuum; /* number of continuum points */
|
|
129
|
+
unsigned is3x; /* whether server 3.0 config semantics are in place */
|
|
130
|
+
int revid; /* revision ID from the config (-1 if not present) */
|
|
131
|
+
char *buuid; /* bucket UUID */
|
|
132
|
+
char *bname; /* bucket name */
|
|
133
|
+
const char *errstr; /* last error */
|
|
134
|
+
lcbvb_SERVER *servers; /* nodes */
|
|
135
|
+
lcbvb_VBUCKET *vbuckets; /* vbucket map */
|
|
136
|
+
lcbvb_VBUCKET *ffvbuckets; /* fast-forward map */
|
|
137
|
+
lcbvb_CONTINUUM *continuum; /* ketama continuums */
|
|
138
|
+
int *randbuf; /* Used for random server selection */
|
|
139
|
+
} lcbvb_CONFIG;
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
#define LCBVB_NSERVERS(cfg) (cfg)->nsrv
|
|
143
|
+
#define LCBVB_NDATASERVERS(cfg) (cfg)->ndatasrv
|
|
144
|
+
#define LCBVB_NREPLICAS(cfg) (cfg)->nrepl
|
|
145
|
+
#define LCBVB_DISTTYPE(cfg) (cfg)->dtype
|
|
146
|
+
#define LCBVB_GET_SERVER(conf, ix) ((conf)->servers + ix)
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @uncommitted
|
|
150
|
+
* @brief Allocate a new config
|
|
151
|
+
* This can be used to create new config object and load it with a JSON config,
|
|
152
|
+
* optionally retrieving the error code
|
|
153
|
+
* @code{.c}
|
|
154
|
+
* lcbvb_CONFIG *cfg = lcbvb_create();
|
|
155
|
+
* if (0 != lcbvb_load_json(cfg, json)) {
|
|
156
|
+
* printf("Got error!", lcbvb_get_error(cfg));
|
|
157
|
+
* lcbvb_destroy(cfg);
|
|
158
|
+
* }
|
|
159
|
+
* @endcode
|
|
160
|
+
*/
|
|
161
|
+
LIBCOUCHBASE_API
|
|
162
|
+
lcbvb_CONFIG *
|
|
163
|
+
lcbvb_create(void);
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @uncommitted
|
|
167
|
+
* Parse the configuration string in `data` and return a new config object
|
|
168
|
+
* @param data
|
|
169
|
+
* @return A new config object, or NULL on error.
|
|
170
|
+
*/
|
|
171
|
+
LIBCOUCHBASE_API
|
|
172
|
+
lcbvb_CONFIG *
|
|
173
|
+
lcbvb_parse_json(const char *data);
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @committed
|
|
177
|
+
* Load a JSON-based configuration string into a configuration object
|
|
178
|
+
* @param vbc Object to populate
|
|
179
|
+
* @param data NUL-terminated string to parse
|
|
180
|
+
* @return 0 on success, nonzero on failure
|
|
181
|
+
* @note it is recommended to use this function rather than lcbvb_parse_json()
|
|
182
|
+
* as this will contain the error string in the configuration in case of parse
|
|
183
|
+
* failures.
|
|
184
|
+
*/
|
|
185
|
+
LIBCOUCHBASE_API
|
|
186
|
+
int
|
|
187
|
+
lcbvb_load_json(lcbvb_CONFIG *vbc, const char *data);
|
|
188
|
+
|
|
189
|
+
/**@brief Serialize the current config as a JSON string.
|
|
190
|
+
* @volatile
|
|
191
|
+
* Serialize the current configuration as a JSON string. The string returned is
|
|
192
|
+
* NUL-terminated and should be freed using the free() function.
|
|
193
|
+
*/
|
|
194
|
+
LIBCOUCHBASE_API
|
|
195
|
+
char *
|
|
196
|
+
lcbvb_save_json(lcbvb_CONFIG *vbc);
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* @committed
|
|
200
|
+
* @brief Return a string indicating why parsing the configuration failed
|
|
201
|
+
* @return An error string. Do not free this string
|
|
202
|
+
*/
|
|
203
|
+
LIBCOUCHBASE_API
|
|
204
|
+
const char *
|
|
205
|
+
lcbvb_get_error(const lcbvb_CONFIG *vbc);
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* @volatile
|
|
209
|
+
* @brief Replace hostname placeholders with specific host string
|
|
210
|
+
* This function shall replace hostname placeholists with the actual host string
|
|
211
|
+
* specified in `hoststr`.
|
|
212
|
+
* @param cfg the configuration
|
|
213
|
+
* @param hostname the actual hostname to use.
|
|
214
|
+
*
|
|
215
|
+
* Use this immediately after a successful parsing of the configuration file.
|
|
216
|
+
*/
|
|
217
|
+
LIBCOUCHBASE_API
|
|
218
|
+
void
|
|
219
|
+
lcbvb_replace_host(lcbvb_CONFIG *cfg, const char *hostname);
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* @committed
|
|
223
|
+
* Destroy the configuration object
|
|
224
|
+
* @param conf
|
|
225
|
+
*/
|
|
226
|
+
LIBCOUCHBASE_API
|
|
227
|
+
void
|
|
228
|
+
lcbvb_destroy(lcbvb_CONFIG *conf);
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* @committed
|
|
232
|
+
*
|
|
233
|
+
* Gets the master node index for the given vbucket
|
|
234
|
+
* @param cfg The configuration
|
|
235
|
+
* @param vbid The vbucket to query
|
|
236
|
+
* @return The master index. -1 if offline
|
|
237
|
+
* @warning This function does no bounds checking for `vbid`. Ensure it is
|
|
238
|
+
* within range of `0 < vbid < cfg->nvbs`
|
|
239
|
+
*/
|
|
240
|
+
LIBCOUCHBASE_API
|
|
241
|
+
int
|
|
242
|
+
lcbvb_vbmaster(lcbvb_CONFIG *cfg, int vbid);
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* @committed
|
|
246
|
+
*
|
|
247
|
+
* Return the 0-based replica index for the given vbucket.
|
|
248
|
+
* @param cfg The configuration object
|
|
249
|
+
* @param vbid The vbucket to query
|
|
250
|
+
* @param ix the replica index to retrieve. This is a number ranging from
|
|
251
|
+
* 0 to vbc->nrepl exclusive.
|
|
252
|
+
* @return The replica index, or -1 if offline
|
|
253
|
+
*
|
|
254
|
+
* @warning This function does no bounds checking for `vbix` or `ix`. Ensure
|
|
255
|
+
* that `0 < vbid < cfg->nvbs` and `-1 < ix < cfg->nrepl`
|
|
256
|
+
*/
|
|
257
|
+
LIBCOUCHBASE_API
|
|
258
|
+
int
|
|
259
|
+
lcbvb_vbreplica(lcbvb_CONFIG *cfg, int vbid, unsigned ix);
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* @volatile
|
|
263
|
+
* This allows to get the given index for a vbucket server. If the index is
|
|
264
|
+
* 0 then this returns the master index, if the index is greater then it
|
|
265
|
+
* returns the replica index
|
|
266
|
+
*/
|
|
267
|
+
#define lcbvb_vbserver(cfg, vbid, ix) ( (ix == 0) ? \
|
|
268
|
+
lcbvb_vbmaster(cfg, vbid) : lcbvb_vbreplica(cfg, vbid, ix-1) )
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* uncommitted
|
|
273
|
+
* Equivalent to
|
|
274
|
+
* @code{.c}
|
|
275
|
+
* lcbvb_nmv_remap_ex(cfg, vbid, bad, 0);
|
|
276
|
+
* @endcode
|
|
277
|
+
*/
|
|
278
|
+
#define lcbvb_nmv_remap(cfg, vbid, bad) lcbvb_nmv_remap_ex(cfg, vbid, bad, 0)
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* @uncommitted
|
|
282
|
+
*
|
|
283
|
+
* Using various guesswork and heuristics, attempt to locate an alternate node
|
|
284
|
+
* for the master of a given vbucket. This should be used if the master index
|
|
285
|
+
* is -1 or if the master index is deemed incorrect by some other means.
|
|
286
|
+
*
|
|
287
|
+
* @param cfg the configuration object
|
|
288
|
+
* @param vbid the vbucket index to loop up
|
|
289
|
+
* @param bad the index known to be bad. Passing this parameter allows the
|
|
290
|
+
* handler to safely call this function and be sure that a previous call's
|
|
291
|
+
* applied heuristics will not affect the modified map.
|
|
292
|
+
* @param use_heuristics whether additional heuristics should be used. If
|
|
293
|
+
* heuristics is off, only the fast-forward map is employed.
|
|
294
|
+
*/
|
|
295
|
+
int
|
|
296
|
+
lcbvb_nmv_remap_ex(lcbvb_CONFIG *cfg, int vbid, int bad, int use_heuristics);
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* @committed
|
|
300
|
+
*
|
|
301
|
+
* Map a given string to a vbucket and server
|
|
302
|
+
* @param cfg The configuration object
|
|
303
|
+
* @param key Key to map
|
|
304
|
+
* @param n Length of key
|
|
305
|
+
* @param[out] vbid Will contain the vBucket
|
|
306
|
+
* @param[out] srvix Will contain the server index
|
|
307
|
+
* @return 0 for now
|
|
308
|
+
*/
|
|
309
|
+
LIBCOUCHBASE_API
|
|
310
|
+
int
|
|
311
|
+
lcbvb_map_key(lcbvb_CONFIG *cfg, const void *key, lcb_SIZE n,
|
|
312
|
+
int *vbid, int *srvix);
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* @committed
|
|
316
|
+
*
|
|
317
|
+
* Maps a key to a vBucket ID
|
|
318
|
+
* @param cfg The configuration
|
|
319
|
+
* @param key The key to retrieve
|
|
320
|
+
* @param n The size of the key
|
|
321
|
+
* @return the vBucket for the key
|
|
322
|
+
*/
|
|
323
|
+
LIBCOUCHBASE_API
|
|
324
|
+
int
|
|
325
|
+
lcbvb_k2vb(lcbvb_CONFIG *cfg, const void *key, lcb_SIZE n);
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* @uncomitted
|
|
329
|
+
* Determines if a given server index is either a master or a replica for a
|
|
330
|
+
* vbucket
|
|
331
|
+
* @param vbc the configuration
|
|
332
|
+
* @param vbid the vbucket number
|
|
333
|
+
* @param ix the server index to check against
|
|
334
|
+
* @returns nonzero if the server `ix` is either a master or a replica for the
|
|
335
|
+
* vbucket `vbid`. Returns 0 otherwise.
|
|
336
|
+
*/
|
|
337
|
+
LIBCOUCHBASE_API
|
|
338
|
+
int
|
|
339
|
+
lcbvb_has_vbucket(lcbvb_CONFIG *vbc, int vbid, int ix);
|
|
340
|
+
|
|
341
|
+
/**@committed
|
|
342
|
+
* @brief Get the number of servers in the bucket. Note that not all servers
|
|
343
|
+
* may actually be available.
|
|
344
|
+
* @param cfg The configuration
|
|
345
|
+
* @return The number of servers
|
|
346
|
+
**/
|
|
347
|
+
LIBCOUCHBASE_API
|
|
348
|
+
unsigned
|
|
349
|
+
lcbvb_get_nservers(const lcbvb_CONFIG *cfg);
|
|
350
|
+
|
|
351
|
+
/**@committed
|
|
352
|
+
* @brief Get the number of replicas the bucket is configured with
|
|
353
|
+
* Note that not all replicas may necessarily be online or available.
|
|
354
|
+
* @param cfg the configuration
|
|
355
|
+
* @return the number of configured replicas
|
|
356
|
+
*/
|
|
357
|
+
LIBCOUCHBASE_API
|
|
358
|
+
unsigned
|
|
359
|
+
lcbvb_get_nreplicas(const lcbvb_CONFIG *cfg);
|
|
360
|
+
|
|
361
|
+
/**@committed
|
|
362
|
+
* @brief Get the distribution mode (AKA bucket type) of the bucket
|
|
363
|
+
* @param cfg the configuration
|
|
364
|
+
* @return the distribution mode
|
|
365
|
+
*/
|
|
366
|
+
LIBCOUCHBASE_API
|
|
367
|
+
lcbvb_DISTMODE
|
|
368
|
+
lcbvb_get_distmode(const lcbvb_CONFIG *cfg);
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* @committed
|
|
372
|
+
*
|
|
373
|
+
* @brief Get the revision for this configuration.
|
|
374
|
+
*
|
|
375
|
+
* The revision is an
|
|
376
|
+
* integer which is increased each time the cluster generates a new
|
|
377
|
+
* configuration. This feature is available only on configurations generated
|
|
378
|
+
* by nodes of Couchbase Server v2.5 or later.
|
|
379
|
+
*
|
|
380
|
+
* @param cfg the configuration
|
|
381
|
+
* @return The revision ID, or `-1` if the config does not have a revision
|
|
382
|
+
*/
|
|
383
|
+
LIBCOUCHBASE_API
|
|
384
|
+
int
|
|
385
|
+
lcbvb_get_revision(const lcbvb_CONFIG *cfg);
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* @committed
|
|
389
|
+
* @brief Gets the port associated with a given service of a given mode on a given
|
|
390
|
+
* server
|
|
391
|
+
* @param cfg the config object
|
|
392
|
+
* @param ix the index of the server to query
|
|
393
|
+
* @param type the type of service being provided
|
|
394
|
+
* @param mode the mode of transport being used (e.g. plain, ssl)
|
|
395
|
+
* @return a number greater than zero if the port exists, 0 otherwise
|
|
396
|
+
*/
|
|
397
|
+
LIBCOUCHBASE_API
|
|
398
|
+
unsigned
|
|
399
|
+
lcbvb_get_port(lcbvb_CONFIG *cfg, unsigned ix,
|
|
400
|
+
lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* @committed
|
|
405
|
+
*
|
|
406
|
+
* @brief Return a string for the given service
|
|
407
|
+
* This is like lcbvb_get_port but returns a string in the form of `host:port`
|
|
408
|
+
* rather than the numeric port
|
|
409
|
+
*
|
|
410
|
+
* @param cfg
|
|
411
|
+
* @param ix
|
|
412
|
+
* @param type
|
|
413
|
+
* @param mode
|
|
414
|
+
* @return A string if the service is found, NULL otherwise. The storage
|
|
415
|
+
* duration of the string is valid until the configuration object is
|
|
416
|
+
* destroyed.
|
|
417
|
+
*/
|
|
418
|
+
LIBCOUCHBASE_API
|
|
419
|
+
const char *
|
|
420
|
+
lcbvb_get_hostport(lcbvb_CONFIG *cfg, unsigned ix,
|
|
421
|
+
lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* @committed
|
|
425
|
+
*
|
|
426
|
+
* @brief Get the hostname of a given server index. This may be used if all
|
|
427
|
+
* nodes reside on different hostnames, and can be used to answer the question
|
|
428
|
+
* of "which node does this index belong to" without having to perform
|
|
429
|
+
* additional string processing on the port of the string.
|
|
430
|
+
*
|
|
431
|
+
* @param cfg the configuration
|
|
432
|
+
* @param ix the index of the server to look up
|
|
433
|
+
* @return a hostname without a port, or NULL if the index is out of bounds
|
|
434
|
+
*/
|
|
435
|
+
LIBCOUCHBASE_API
|
|
436
|
+
const char *
|
|
437
|
+
lcbvb_get_hostname(const lcbvb_CONFIG *cfg, unsigned ix);
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* Function to return the URL prefix for a REST service.
|
|
441
|
+
*
|
|
442
|
+
* Returns a string suitable for being passed as a URL. This is only valid
|
|
443
|
+
* for ::LCBVB_SVCTYPE_VIEWS and ::LCBVB_SVCTYPE_N1QL.
|
|
444
|
+
*
|
|
445
|
+
* This function is different from lcbvb_get_hostport() -- it is mainly a
|
|
446
|
+
* convenience, but does cache the string. Also, theoretically the cluster
|
|
447
|
+
* is free to choose a _different_ URL prefix for a given service. Using this
|
|
448
|
+
* function will guarantee the URL prefix is correct.
|
|
449
|
+
*/
|
|
450
|
+
LIBCOUCHBASE_API
|
|
451
|
+
const char *
|
|
452
|
+
lcbvb_get_resturl(lcbvb_CONFIG *cfg, unsigned ix,
|
|
453
|
+
lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* Convenience function to select a random node for a service.
|
|
457
|
+
* @return 0 or greater if a node was found; a negative number if no node
|
|
458
|
+
* contains a service with the given criteria.
|
|
459
|
+
*/
|
|
460
|
+
LIBCOUCHBASE_API
|
|
461
|
+
int
|
|
462
|
+
lcbvb_get_randhost(const lcbvb_CONFIG *cfg,
|
|
463
|
+
lcbvb_SVCTYPE type, lcbvb_SVCMODE mode);
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Get random node, excluding nodes already tried
|
|
467
|
+
* @param cfg the config
|
|
468
|
+
* @param type type of service
|
|
469
|
+
* @param mode transport mode
|
|
470
|
+
* @param used an array of integers representing server indexes (should be of
|
|
471
|
+
* size LCBVB_NSERVERS). Servers whose indexes in the `used` array are nonzero
|
|
472
|
+
* will be *skipped*.
|
|
473
|
+
*
|
|
474
|
+
* @return a server index, or -1 if no server remains (either because no
|
|
475
|
+
* server has the service, or because all available servers are in the
|
|
476
|
+
* exclude list)
|
|
477
|
+
*/
|
|
478
|
+
LIBCOUCHBASE_API
|
|
479
|
+
int
|
|
480
|
+
lcbvb_get_randhost_ex(const lcbvb_CONFIG *cfg,
|
|
481
|
+
lcbvb_SVCTYPE type, lcbvb_SVCMODE mode, int *used);
|
|
482
|
+
|
|
483
|
+
/** @brief Structure representing changes between two configurations */
|
|
484
|
+
typedef struct {
|
|
485
|
+
/** List of strings of servers added (via `host:data_port`) */
|
|
486
|
+
char **servers_added;
|
|
487
|
+
/** List of strings of servers removed (via `host:data_port`) */
|
|
488
|
+
char **servers_removed;
|
|
489
|
+
/** How many vBuckets have had an ownership change */
|
|
490
|
+
int n_vb_changes;
|
|
491
|
+
/** Whether the ordering of the nodes has changed as well */
|
|
492
|
+
int sequence_changed;
|
|
493
|
+
} lcbvb_CONFIGDIFF, VBUCKET_CONFIG_DIFF;
|
|
494
|
+
|
|
495
|
+
/** @brief Convenience enum to determine the mode of change */
|
|
496
|
+
typedef enum {
|
|
497
|
+
LCBVB_NO_CHANGES = 0, /**< No changes between configs */
|
|
498
|
+
LCBVB_SERVERS_MODIFIED = 1 << 0, /**< Servers have been added or removed */
|
|
499
|
+
LCBVB_MAP_MODIFIED = 1 << 1 /**< vBuckets have been transferred */
|
|
500
|
+
} lcbvb_CHANGETYPE, VBUCKET_CHANGE_STATUS;
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* @volatile
|
|
504
|
+
*
|
|
505
|
+
* @brief Compare two configurations and return information on the changes
|
|
506
|
+
* @param from the original configuration to use as the base
|
|
507
|
+
* @param to the new configuration
|
|
508
|
+
* @return an object which may be inspected, or NULL on allocation failure. The
|
|
509
|
+
* returned object should be freed with lcbvb_free_diff()
|
|
510
|
+
* @see lcbvb_get_changetype()
|
|
511
|
+
*/
|
|
512
|
+
LIBCOUCHBASE_API
|
|
513
|
+
lcbvb_CONFIGDIFF *
|
|
514
|
+
lcbvb_compare(lcbvb_CONFIG *from, lcbvb_CONFIG *to);
|
|
515
|
+
|
|
516
|
+
/** @brief Free the structure returned by lcbvb_compare() */
|
|
517
|
+
LIBCOUCHBASE_API
|
|
518
|
+
void
|
|
519
|
+
lcbvb_free_diff(lcbvb_CONFIGDIFF *diff);
|
|
520
|
+
|
|
521
|
+
/**@brief Get a quick summary of the changes in the passed object
|
|
522
|
+
* @param diff the diff returned from lcbvb_compare()
|
|
523
|
+
*/
|
|
524
|
+
LIBCOUCHBASE_API
|
|
525
|
+
lcbvb_CHANGETYPE
|
|
526
|
+
lcbvb_get_changetype(lcbvb_CONFIGDIFF *diff);
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* @volatile
|
|
530
|
+
*
|
|
531
|
+
* @brief Generate a sample configuration.
|
|
532
|
+
* @param vb a new configuration object returned via lcbvb_create()
|
|
533
|
+
* @param name the name of the bucket
|
|
534
|
+
* @param uuid UUID for the bucket
|
|
535
|
+
* @param servers an array of server objects which will serve as the basis
|
|
536
|
+
* for the server list within the configuration. The memory pointed to by
|
|
537
|
+
* servers may be released after this function has completed
|
|
538
|
+
* @param nservers number of servers in the array
|
|
539
|
+
* @param nreplica how many replicas for the bucket
|
|
540
|
+
* @param nvbuckets how many vbuckets for the bucket
|
|
541
|
+
*/
|
|
542
|
+
LIBCOUCHBASE_API
|
|
543
|
+
int
|
|
544
|
+
lcbvb_genconfig_ex(lcbvb_CONFIG *vb,
|
|
545
|
+
const char *name, const char *uuid,
|
|
546
|
+
const lcbvb_SERVER *servers,
|
|
547
|
+
unsigned nservers, unsigned nreplica, unsigned nvbuckets);
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* @volatile
|
|
551
|
+
*
|
|
552
|
+
* @brief Generate a sample configuration used for testing.
|
|
553
|
+
* @param vb a new configuration object returned via lcbvb_create()
|
|
554
|
+
* @param nservers how many nodes to place into the configuration
|
|
555
|
+
* @param nreplica how many replicas should be assigned to the bucket
|
|
556
|
+
* @param nvbuckets how many vbuckets to create
|
|
557
|
+
* @return 0 on success, nonzero on error
|
|
558
|
+
*
|
|
559
|
+
* @note The base port for the lcbvb_SERVICES::data starts at 1000; the base
|
|
560
|
+
* port for lcbvb_SERVICES::views starts at 2000 and the base port for
|
|
561
|
+
* lcbvb_SERVICES::mgmt starts at 3000. The port number is incremented for
|
|
562
|
+
* each additional node.
|
|
563
|
+
*/
|
|
564
|
+
LIBCOUCHBASE_API
|
|
565
|
+
int
|
|
566
|
+
lcbvb_genconfig(lcbvb_CONFIG *vb,
|
|
567
|
+
unsigned nservers, unsigned nreplica, unsigned nvbuckets);
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* @volatile
|
|
571
|
+
* Generate a fast-forward vBucket map for the configuration. This simply
|
|
572
|
+
* provides alternate indices.
|
|
573
|
+
*/
|
|
574
|
+
LIBCOUCHBASE_API
|
|
575
|
+
void
|
|
576
|
+
lcbvb_genffmap(lcbvb_CONFIG *vb);
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
/**
|
|
580
|
+
* @volatile
|
|
581
|
+
* Convert the configuration to a ketama one.
|
|
582
|
+
* @param vb The configuration object.
|
|
583
|
+
*/
|
|
584
|
+
LIBCOUCHBASE_API
|
|
585
|
+
void
|
|
586
|
+
lcbvb_make_ketama(lcbvb_CONFIG *vb);
|
|
587
|
+
|
|
588
|
+
/**
|
|
589
|
+
* @committed
|
|
590
|
+
*
|
|
591
|
+
* Get the views URL base.
|
|
592
|
+
* @param cfg The configuration
|
|
593
|
+
* @param ix The index of the server to fetch
|
|
594
|
+
* @param mode The mode, either plain or ssl
|
|
595
|
+
* @return A string reprenting the URL, or NULL if not available.
|
|
596
|
+
*/
|
|
597
|
+
LIBCOUCHBASE_API
|
|
598
|
+
const char *
|
|
599
|
+
lcbvb_get_capibase(lcbvb_CONFIG *cfg, unsigned ix, lcbvb_SVCMODE mode);
|
|
600
|
+
/**@}*/
|
|
601
|
+
|
|
602
|
+
/*the rest of these symbols are deprecated and should not be touched by
|
|
603
|
+
* doxygen */
|
|
604
|
+
|
|
605
|
+
typedef enum {
|
|
606
|
+
LIBVBUCKET_SOURCE_FILE,
|
|
607
|
+
LIBVBUCKET_SOURCE_MEMORY
|
|
608
|
+
} vbucket_source_t;
|
|
609
|
+
|
|
610
|
+
typedef lcbvb_CONFIG *VBUCKET_CONFIG_HANDLE;
|
|
611
|
+
typedef lcbvb_DISTMODE VBUCKET_DISTRIBUTION_TYPE;
|
|
612
|
+
#define VBUCKET_DISTRIBUTION_VBUCKET LCBVB_DIST_VBUCKET
|
|
613
|
+
#define VBUCKET_DISTRIBUTION_KETAMA LCBVB_DIST_KETAMA
|
|
614
|
+
#define VBUCKET_NO_CHANGES LCBVB_NO_CHANGES
|
|
615
|
+
#define VBUCKET_SERVERS_MODIFIED LCBVB_SERVERS_MODIFIED
|
|
616
|
+
#define VBUCKET_MAP_MODIFIED LCVBVB_MAP_MODIFIED
|
|
617
|
+
|
|
618
|
+
LIBCOUCHBASE_API int vbucket_config_parse(lcbvb_CONFIG*,vbucket_source_t,const char*);
|
|
619
|
+
LIBCOUCHBASE_API const char *vbucket_get_error_message(lcbvb_CONFIG*);
|
|
620
|
+
LIBCOUCHBASE_API lcbvb_CONFIG* vbucket_config_create(void);
|
|
621
|
+
LIBCOUCHBASE_API void vbucket_config_destroy(lcbvb_CONFIG*);
|
|
622
|
+
LIBCOUCHBASE_API int vbucket_config_get_num_replicas(lcbvb_CONFIG*);
|
|
623
|
+
LIBCOUCHBASE_API int vbucket_config_get_num_vbuckets(lcbvb_CONFIG*);
|
|
624
|
+
LIBCOUCHBASE_API int vbucket_config_get_num_servers(lcbvb_CONFIG*);
|
|
625
|
+
LIBCOUCHBASE_API const char *vbucket_config_get_server(lcbvb_CONFIG*,int);
|
|
626
|
+
LIBCOUCHBASE_API const char *vbucket_config_get_couch_api_base(lcbvb_CONFIG*,int);
|
|
627
|
+
LIBCOUCHBASE_API const char *vbucket_config_get_rest_api_server(lcbvb_CONFIG*,int);
|
|
628
|
+
LIBCOUCHBASE_API lcbvb_DISTMODE vbucket_config_get_distribution_type(lcbvb_CONFIG*);
|
|
629
|
+
LIBCOUCHBASE_API int vbucket_map(lcbvb_CONFIG*,const void*,lcb_SIZE,int*,int*);
|
|
630
|
+
LIBCOUCHBASE_API int vbucket_get_vbucket_by_key(lcbvb_CONFIG*,const void*,lcb_SIZE);
|
|
631
|
+
LIBCOUCHBASE_API int vbucket_get_master(lcbvb_CONFIG*,int);
|
|
632
|
+
LIBCOUCHBASE_API int vbucket_get_replica(lcbvb_CONFIG*,int,int);
|
|
633
|
+
LIBCOUCHBASE_API lcbvb_CONFIGDIFF* vbucket_compare(lcbvb_CONFIG*,lcbvb_CONFIG*);
|
|
634
|
+
LIBCOUCHBASE_API void vbucket_free_diff(lcbvb_CONFIGDIFF*);
|
|
635
|
+
LIBCOUCHBASE_API int vbucket_config_get_revision(lcbvb_CONFIG*);
|
|
636
|
+
LIBCOUCHBASE_API lcbvb_CHANGETYPE vbucket_what_changed(lcbvb_CONFIGDIFF *diff);
|
|
637
|
+
LIBCOUCHBASE_API int vbucket_config_generate(lcbvb_CONFIG *vb, unsigned, unsigned, unsigned);
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
#ifdef __cplusplus
|
|
641
|
+
}
|
|
642
|
+
#endif
|
|
643
|
+
#endif
|