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,215 @@
|
|
|
1
|
+
#include <libcouchbase/couchbase.h>
|
|
2
|
+
#include <libcouchbase/n1ql.h>
|
|
3
|
+
#include <libcouchbase/vbucket.h>
|
|
4
|
+
#include "contrib/lcb-jsoncpp/lcb-jsoncpp.h"
|
|
5
|
+
#include <string>
|
|
6
|
+
|
|
7
|
+
#define SCANVEC_NONE 0
|
|
8
|
+
#define SCANVEC_PARTIAL 1
|
|
9
|
+
#define SCANVEC_FULL 2
|
|
10
|
+
|
|
11
|
+
struct lcb_N1QLPARAMS_st {
|
|
12
|
+
Json::Value root;
|
|
13
|
+
std::string encoded;
|
|
14
|
+
|
|
15
|
+
lcb_N1QLPARAMS_st() : root(Json::objectValue) {
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
extern "C" {
|
|
20
|
+
static size_t get_strlen(const char *s, size_t n)
|
|
21
|
+
{
|
|
22
|
+
if (n == (size_t)-1) {
|
|
23
|
+
return strlen(s);
|
|
24
|
+
} else {
|
|
25
|
+
return n;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static lcb_error_t
|
|
30
|
+
setopt(lcb_N1QLPARAMS *params, const char *k, size_t nk, const char *v, size_t nv)
|
|
31
|
+
{
|
|
32
|
+
nv = get_strlen(v, nv);
|
|
33
|
+
nk = get_strlen(k, nk);
|
|
34
|
+
Json::Reader rdr;
|
|
35
|
+
Json::Value value;
|
|
36
|
+
bool rv = rdr.parse(v, v + nv, value);
|
|
37
|
+
if (!rv) {
|
|
38
|
+
return LCB_EINVAL;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
params->root[std::string(k, nk)] = value;
|
|
42
|
+
return LCB_SUCCESS;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
lcb_error_t
|
|
46
|
+
lcb_n1p_setopt(lcb_N1QLPARAMS *params,
|
|
47
|
+
const char *k, size_t nk, const char *v, size_t nv)
|
|
48
|
+
{
|
|
49
|
+
return setopt(params, k, nk, v, nv);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
lcb_error_t
|
|
53
|
+
lcb_n1p_setquery(lcb_N1QLPARAMS *params,
|
|
54
|
+
const char *qstr, size_t nqstr, int type)
|
|
55
|
+
{
|
|
56
|
+
if (type == LCB_N1P_QUERY_STATEMENT) {
|
|
57
|
+
size_t nstmt = get_strlen(qstr, nqstr);
|
|
58
|
+
params->root["statement"] = std::string(qstr, nstmt);
|
|
59
|
+
return LCB_SUCCESS;
|
|
60
|
+
} else if (type == LCB_N1P_QUERY_PREPARED) {
|
|
61
|
+
return lcb_n1p_setopt(params, "prepared", -1, qstr, nqstr);
|
|
62
|
+
} else {
|
|
63
|
+
return LCB_EINVAL;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
lcb_error_t
|
|
68
|
+
lcb_n1p_namedparam(lcb_N1QLPARAMS *params,
|
|
69
|
+
const char *name, size_t nname, const char *value, size_t nvalue)
|
|
70
|
+
{
|
|
71
|
+
return lcb_n1p_setopt(params, name, nname, value, nvalue);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
lcb_error_t
|
|
75
|
+
lcb_n1p_posparam(lcb_N1QLPARAMS *params, const char *value, size_t nvalue)
|
|
76
|
+
{
|
|
77
|
+
nvalue = get_strlen(value, nvalue);
|
|
78
|
+
Json::Value jval;
|
|
79
|
+
Json::Reader rdr;
|
|
80
|
+
if (!rdr.parse(value, value + nvalue, jval)) {
|
|
81
|
+
return LCB_EINVAL;
|
|
82
|
+
}
|
|
83
|
+
params->root["args"].append(jval);
|
|
84
|
+
return LCB_SUCCESS;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static void
|
|
88
|
+
encode_mutation_token(Json::Value& sparse, const lcb_MUTATION_TOKEN *sv)
|
|
89
|
+
{
|
|
90
|
+
char buf[64] = { 0 };
|
|
91
|
+
sprintf(buf, "%u", sv->vbid_);
|
|
92
|
+
Json::Value& cur_sv = sparse[buf];
|
|
93
|
+
|
|
94
|
+
cur_sv[0] = static_cast<Json::UInt64>(sv->seqno_);
|
|
95
|
+
sprintf(buf, "%llu", sv->uuid_);
|
|
96
|
+
cur_sv[1] = buf;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
lcb_error_t
|
|
100
|
+
lcb_n1p_setconsistent_token(lcb_N1QLPARAMS *params,
|
|
101
|
+
const char *keyspace, const lcb_MUTATION_TOKEN *sv)
|
|
102
|
+
{
|
|
103
|
+
if (!LCB_MUTATION_TOKEN_ISVALID(sv)) {
|
|
104
|
+
return LCB_EINVAL;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
params->root["scan_consistency"] = "at_plus";
|
|
108
|
+
encode_mutation_token(params->root["scan_vector"][keyspace], sv);
|
|
109
|
+
return LCB_SUCCESS;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
lcb_error_t
|
|
113
|
+
lcb_n1p_setconsistent_handle(lcb_N1QLPARAMS *params, lcb_t instance)
|
|
114
|
+
{
|
|
115
|
+
lcbvb_CONFIG *vbc;
|
|
116
|
+
lcb_error_t rc = lcb_cntl(instance, LCB_CNTL_GET, LCB_CNTL_VBCONFIG, &vbc);
|
|
117
|
+
if (rc != LCB_SUCCESS) {
|
|
118
|
+
return rc;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const char *bucketname;
|
|
122
|
+
rc = lcb_cntl(instance, LCB_CNTL_GET, LCB_CNTL_BUCKETNAME, &bucketname);
|
|
123
|
+
if (rc != LCB_SUCCESS) {
|
|
124
|
+
return rc;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
Json::Value* sv_json = NULL;
|
|
128
|
+
|
|
129
|
+
size_t vbmax = vbc->nvb;
|
|
130
|
+
for (size_t ii = 0; ii < vbmax; ++ii) {
|
|
131
|
+
lcb_KEYBUF kb;
|
|
132
|
+
kb.type = LCB_KV_VBID;
|
|
133
|
+
kb.contig.nbytes = ii;
|
|
134
|
+
kb.contig.bytes = NULL;
|
|
135
|
+
const lcb_MUTATION_TOKEN *mt = lcb_get_mutation_token(instance, &kb, &rc);
|
|
136
|
+
if (rc == LCB_SUCCESS && mt != NULL) {
|
|
137
|
+
if (sv_json == NULL) {
|
|
138
|
+
sv_json = ¶ms->root["scan_vectors"][bucketname];
|
|
139
|
+
params->root["scan_consistency"] = "at_plus";
|
|
140
|
+
}
|
|
141
|
+
encode_mutation_token(*sv_json, mt);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (!sv_json) {
|
|
146
|
+
return LCB_KEY_ENOENT;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return LCB_SUCCESS;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
lcb_error_t
|
|
153
|
+
lcb_n1p_setconsistency(lcb_N1QLPARAMS *params, int mode)
|
|
154
|
+
{
|
|
155
|
+
if (mode == LCB_N1P_CONSISTENCY_NONE) {
|
|
156
|
+
params->root.removeMember("scan_consistency");
|
|
157
|
+
} else if (mode == LCB_N1P_CONSISTENCY_REQUEST) {
|
|
158
|
+
params->root["scan_consistency"] = "request_plus";
|
|
159
|
+
} else if (mode == LCB_N1P_CONSISTENCY_STATEMENT) {
|
|
160
|
+
params->root["scan_consistency"] = "statement_plus";
|
|
161
|
+
}
|
|
162
|
+
return LCB_SUCCESS;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
LIBCOUCHBASE_API
|
|
166
|
+
const char *
|
|
167
|
+
lcb_n1p_encode(lcb_N1QLPARAMS *params, lcb_error_t *err)
|
|
168
|
+
{
|
|
169
|
+
lcb_error_t err_s = LCB_SUCCESS;
|
|
170
|
+
if (!err) {
|
|
171
|
+
err = &err_s;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
*err = LCB_SUCCESS;
|
|
175
|
+
/* Build the query */
|
|
176
|
+
Json::FastWriter w;
|
|
177
|
+
params->encoded = w.write(params->root);
|
|
178
|
+
return params->encoded.c_str();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
LIBCOUCHBASE_API
|
|
182
|
+
lcb_error_t
|
|
183
|
+
lcb_n1p_mkcmd(lcb_N1QLPARAMS *params, lcb_CMDN1QL *cmd)
|
|
184
|
+
{
|
|
185
|
+
lcb_error_t rc = LCB_SUCCESS;
|
|
186
|
+
lcb_n1p_encode(params, &rc);
|
|
187
|
+
if (rc != LCB_SUCCESS) {
|
|
188
|
+
return rc;
|
|
189
|
+
}
|
|
190
|
+
cmd->content_type = "application/json";
|
|
191
|
+
cmd->query = params->encoded.c_str();
|
|
192
|
+
cmd->nquery = params->encoded.size();
|
|
193
|
+
return LCB_SUCCESS;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
lcb_N1QLPARAMS *
|
|
197
|
+
lcb_n1p_new(void)
|
|
198
|
+
{
|
|
199
|
+
return new lcb_N1QLPARAMS;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
void
|
|
203
|
+
lcb_n1p_reset(lcb_N1QLPARAMS *params)
|
|
204
|
+
{
|
|
205
|
+
params->encoded.clear();
|
|
206
|
+
params->root.clear();
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
void
|
|
210
|
+
lcb_n1p_free(lcb_N1QLPARAMS *params)
|
|
211
|
+
{
|
|
212
|
+
delete params;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
} // extern C
|
|
@@ -0,0 +1,89 @@
|
|
|
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 NETBUF_DEFS_H
|
|
19
|
+
#define NETBUF_DEFS_H
|
|
20
|
+
|
|
21
|
+
typedef struct netbuf_st nb_MGR;
|
|
22
|
+
typedef unsigned int nb_SIZE;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @file
|
|
26
|
+
* Netbuf Core Structures
|
|
27
|
+
* @addtogroup netbufs
|
|
28
|
+
* @{
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @name Cache Allocation
|
|
33
|
+
* @{
|
|
34
|
+
*
|
|
35
|
+
* The following settings control the default allocation policy.
|
|
36
|
+
* Each allocator pool has both blocks and the amount of data per block.
|
|
37
|
+
*
|
|
38
|
+
* Multiple blocks help with cache locality when traversing, while large
|
|
39
|
+
* data segements allow each individual element to be spaced near the next.
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/** @brief How many blocks to preallocate for SNDQ elements, per manager */
|
|
43
|
+
#define NB_SNDQ_CACHEBLOCKS 4
|
|
44
|
+
/** @brief How many SNDQELEM structures per block */
|
|
45
|
+
#define NB_SNDQ_BASEALLOC 128
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
/** @brief How many dealloc blocks to allocated per MBLOCK */
|
|
49
|
+
#define NB_MBDEALLOC_CACHEBLOCKS 0
|
|
50
|
+
/** @brief Number of dealloc structures per block */
|
|
51
|
+
#define NB_MBDEALLOC_BASEALLOC 24
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
/** @brief How many data blocks to allocate per manager */
|
|
55
|
+
#define NB_DATA_CACHEBLOCKS 16
|
|
56
|
+
/** @brief Default data allocation size */
|
|
57
|
+
#define NB_DATA_BASEALLOC 32768
|
|
58
|
+
/**@}*/
|
|
59
|
+
|
|
60
|
+
typedef struct {
|
|
61
|
+
nb_SIZE sndq_cacheblocks;
|
|
62
|
+
nb_SIZE sndq_basealloc;
|
|
63
|
+
nb_SIZE dea_cacheblocks;
|
|
64
|
+
nb_SIZE dea_basealloc;
|
|
65
|
+
nb_SIZE data_cacheblocks;
|
|
66
|
+
nb_SIZE data_basealloc;
|
|
67
|
+
} nb_SETTINGS;
|
|
68
|
+
|
|
69
|
+
#ifndef _WIN32
|
|
70
|
+
typedef struct {
|
|
71
|
+
void *iov_base;
|
|
72
|
+
size_t iov_len;
|
|
73
|
+
} nb_IOV;
|
|
74
|
+
|
|
75
|
+
/**Macro which serves as a static initializer for an nb_IOV. This works
|
|
76
|
+
* on both Windows and Unix despite the layout of the structure being different
|
|
77
|
+
*/
|
|
78
|
+
#define NETBUF_IOV_INIT(base, len) { base, len }
|
|
79
|
+
#else
|
|
80
|
+
typedef struct {
|
|
81
|
+
ULONG iov_len;
|
|
82
|
+
void *iov_base;
|
|
83
|
+
} nb_IOV;
|
|
84
|
+
#define NETBUF_IOV_INIT(base, len) { len, base }
|
|
85
|
+
#endif
|
|
86
|
+
|
|
87
|
+
/**@}*/
|
|
88
|
+
|
|
89
|
+
#endif /* NETBUF_DEFS_H */
|
|
@@ -0,0 +1,235 @@
|
|
|
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 NETBUF_MBLOCK_H
|
|
19
|
+
#define NETBUF_MBLOCK_H
|
|
20
|
+
|
|
21
|
+
#include "netbuf-defs.h"
|
|
22
|
+
|
|
23
|
+
#ifdef __cplusplus
|
|
24
|
+
extern "C" {
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @file
|
|
29
|
+
*
|
|
30
|
+
* @ingroup netbufs
|
|
31
|
+
* @defgroup netbufs-mblock Netbuf Block Allocator
|
|
32
|
+
* @details
|
|
33
|
+
*
|
|
34
|
+
* Managed block in-order allocator.
|
|
35
|
+
*
|
|
36
|
+
* This allocator attempts to provide unaligned segments of memory in the
|
|
37
|
+
* order they were allocated in contiguous memory
|
|
38
|
+
*
|
|
39
|
+
* @verbatim
|
|
40
|
+
*
|
|
41
|
+
* LEGEND
|
|
42
|
+
* In the following comments (and within the source as well) we will try to
|
|
43
|
+
* display diagrams of blocks. The following symbols will be used:
|
|
44
|
+
*
|
|
45
|
+
* {$:NN} = This represents a position marker, $ will be the position type,
|
|
46
|
+
* and NN is the offset value.
|
|
47
|
+
*
|
|
48
|
+
* The following are the position types:
|
|
49
|
+
*
|
|
50
|
+
* [S]tart Start of the buffer (block->start)
|
|
51
|
+
* [W]rap Wrapping and end of the first segment (block->wrap)
|
|
52
|
+
* [C]ursor End of the current segment (block->cursor)
|
|
53
|
+
* [A]lloc Allocation limit of the buffer (block->nalloc)
|
|
54
|
+
* [F]lush Flush cursor (block->flushcur)
|
|
55
|
+
*
|
|
56
|
+
* Note that in some cases two position types may share the same offset.
|
|
57
|
+
*
|
|
58
|
+
* Between any of the offsets, there are data bytes (or just "Data"). These
|
|
59
|
+
* may be one of the following:
|
|
60
|
+
*
|
|
61
|
+
* [x] Used data. This data is owned by a span
|
|
62
|
+
* [o] Unused data, but available for usage
|
|
63
|
+
* [-] Unreachable data. This is not used but cannot be reserved
|
|
64
|
+
*
|
|
65
|
+
* A block contains a single allocated buffer. The buffer itself may be
|
|
66
|
+
* divided among multiple spans. We divide our buffers like so:
|
|
67
|
+
*
|
|
68
|
+
* Initially:
|
|
69
|
+
*
|
|
70
|
+
* [ {FS:0}xxxxxxx{CW:10}ooo{A:12} ]
|
|
71
|
+
*
|
|
72
|
+
* After flushing some data:
|
|
73
|
+
*
|
|
74
|
+
* [ {S:0}xx{F:5}xxxx{CW:10}oo{A:12} ]
|
|
75
|
+
* Note how the flush cursor is incremented
|
|
76
|
+
*
|
|
77
|
+
*
|
|
78
|
+
* Typically, once data is flushed, the user will release the segment, and thus
|
|
79
|
+
* will look something like this:
|
|
80
|
+
*
|
|
81
|
+
* [ ooo{SF:6}xxxx{CW:10}oooo{A:12} ]
|
|
82
|
+
*
|
|
83
|
+
* Appending data to a buffer (or reserving a span) depends on the span
|
|
84
|
+
* size requirements. In this case, if a span's size is 2 bytes or lower,
|
|
85
|
+
* it is appended at the end of the first segment, like so:
|
|
86
|
+
* [ ooo{SF:16}xxxxxx{CWA:12} ]
|
|
87
|
+
*
|
|
88
|
+
* Otherwise, it is wrapped around, like so:
|
|
89
|
+
*
|
|
90
|
+
* [ xx{C:3}oo{SF:6}xxxx{W:10}--{A:12} ]
|
|
91
|
+
*
|
|
92
|
+
* Note that [C] has been wrapped around to start at 3.
|
|
93
|
+
*
|
|
94
|
+
*
|
|
95
|
+
* The total size of the block's used portion is as follows:
|
|
96
|
+
*
|
|
97
|
+
* (1) The number of bytes between [S]tart and [Wrap]
|
|
98
|
+
* (2) If [C] != [W], then also add the value of [C]
|
|
99
|
+
* @endverbatim
|
|
100
|
+
* @addtogroup netbufs-mblock
|
|
101
|
+
* @{
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
struct netbuf_mblock_st;
|
|
105
|
+
struct netbuf_st;
|
|
106
|
+
struct netbuf_mblock_dealloc_queue_st;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Small header for larger structures to more efficiently find the block
|
|
110
|
+
* they were allocated in.
|
|
111
|
+
*
|
|
112
|
+
* Note that it is possible to also determine this information by traversing
|
|
113
|
+
* the list of all blocks, but this is naturally less efficient.
|
|
114
|
+
*/
|
|
115
|
+
typedef struct {
|
|
116
|
+
/** The parent block */
|
|
117
|
+
struct netbuf_mblock_st *parent;
|
|
118
|
+
/** The allocation offset */
|
|
119
|
+
nb_SIZE offset;
|
|
120
|
+
} nb_ALLOCINFO;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* @brief Structure for an out-of-order dealloc
|
|
124
|
+
*/
|
|
125
|
+
typedef struct {
|
|
126
|
+
sllist_node slnode;
|
|
127
|
+
nb_SIZE offset; /**< Offset into the nb_MBLOCK to release */
|
|
128
|
+
nb_SIZE size; /**< Size to release */
|
|
129
|
+
} nb_QDEALLOC;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @brief Data Block
|
|
133
|
+
* This structure represents the head of an `MBLOCK`.
|
|
134
|
+
*/
|
|
135
|
+
typedef struct {
|
|
136
|
+
sllist_node slnode;
|
|
137
|
+
|
|
138
|
+
/** Start position for data */
|
|
139
|
+
nb_SIZE start;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Wrap/End position for data. If the block has only one segment,
|
|
143
|
+
* this is always equal to cursor (see below)
|
|
144
|
+
* and will mark the position at which the unused portion of the
|
|
145
|
+
* buffer begins.
|
|
146
|
+
*
|
|
147
|
+
* If the block has two segments, this marks the end of the first segment.
|
|
148
|
+
*
|
|
149
|
+
* In both cases
|
|
150
|
+
* 1. `wrap` is always `> start`
|
|
151
|
+
* 2. `wrap-start` is the length of the first segment of data
|
|
152
|
+
*/
|
|
153
|
+
nb_SIZE wrap;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* End position for data. This always contains the position at which
|
|
157
|
+
* the unused data begins.
|
|
158
|
+
*
|
|
159
|
+
* If the block only has a single segment then both the following are true:
|
|
160
|
+
*
|
|
161
|
+
* 1. `cursor == wrap`
|
|
162
|
+
* 2. `cursor > start` (if not empty)
|
|
163
|
+
*
|
|
164
|
+
* If the block has two segments, then both the following are true:
|
|
165
|
+
*
|
|
166
|
+
* 1. `cursor != wrap`
|
|
167
|
+
* 2. `cursor < start`
|
|
168
|
+
*
|
|
169
|
+
* If the block is empty:
|
|
170
|
+
* - `cursor == start`
|
|
171
|
+
*/
|
|
172
|
+
nb_SIZE cursor;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Total number of bytes allocated in `root`. This represents the absolute
|
|
176
|
+
* limit on how much data can be supplied
|
|
177
|
+
*/
|
|
178
|
+
nb_SIZE nalloc;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Actual allocated buffer. This remains constant for the duration of the
|
|
182
|
+
* block's lifetime
|
|
183
|
+
*/
|
|
184
|
+
char *root;
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Pointer to a nb_DEALLOC_QUEUE structure. This is only valid if an
|
|
188
|
+
* out-of-order dealloc has been performed on this block.
|
|
189
|
+
*/
|
|
190
|
+
struct netbuf_mblock_dealloc_queue_st *deallocs;
|
|
191
|
+
struct netbuf_mblock_st *parent;
|
|
192
|
+
} nb_MBLOCK;
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @brief pool of nb_MBLOCK structures
|
|
196
|
+
*/
|
|
197
|
+
typedef struct netbuf_mblock_st {
|
|
198
|
+
/** Active blocks that have at least one reserved span */
|
|
199
|
+
sllist_root active;
|
|
200
|
+
|
|
201
|
+
/** Available blocks with data */
|
|
202
|
+
sllist_root avail;
|
|
203
|
+
|
|
204
|
+
/** Allocation size */
|
|
205
|
+
nb_SIZE basealloc;
|
|
206
|
+
|
|
207
|
+
/** Maximum number of non-cached blocks */
|
|
208
|
+
unsigned int maxblocks;
|
|
209
|
+
|
|
210
|
+
/** Current number of non-cached blocks */
|
|
211
|
+
unsigned int curblocks;
|
|
212
|
+
|
|
213
|
+
nb_MBLOCK *cacheblocks;
|
|
214
|
+
nb_SIZE ncacheblocks;
|
|
215
|
+
|
|
216
|
+
struct netbuf_st *mgr;
|
|
217
|
+
} nb_MBPOOL;
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @brief List of out-of-order deallocs
|
|
221
|
+
* This is attached to an nb_MBLOCK structure if allocations have been performed
|
|
222
|
+
* on it in an out-of-order fashion
|
|
223
|
+
*/
|
|
224
|
+
typedef struct netbuf_mblock_dealloc_queue_st {
|
|
225
|
+
sllist_root pending;
|
|
226
|
+
nb_SIZE min_offset; /**< The first offset contained in the list */
|
|
227
|
+
nb_MBPOOL qpool; /**< Used to allcate the nb_QDEALLOC structures themselves*/
|
|
228
|
+
} nb_DEALLOC_QUEUE;
|
|
229
|
+
|
|
230
|
+
/**@}*/
|
|
231
|
+
|
|
232
|
+
#ifdef __cplusplus
|
|
233
|
+
}
|
|
234
|
+
#endif
|
|
235
|
+
#endif
|