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,171 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2013 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#ifndef LCB_HOSTLIST_H
|
|
19
|
+
#define LCB_HOSTLIST_H
|
|
20
|
+
|
|
21
|
+
#include "config.h"
|
|
22
|
+
#include <libcouchbase/couchbase.h>
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Structure representing a host. This contains the string representation
|
|
26
|
+
* of a host and a port.
|
|
27
|
+
*/
|
|
28
|
+
typedef struct lcb_host_st {
|
|
29
|
+
char host[NI_MAXHOST + 1];
|
|
30
|
+
char port[NI_MAXSERV + 1];
|
|
31
|
+
} lcb_host_t;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Structure representing a list of hosts. This has an internal iteration
|
|
35
|
+
* index which is used to cycle between 'good' and 'bad' hosts.
|
|
36
|
+
*/
|
|
37
|
+
#ifndef __cplusplus
|
|
38
|
+
struct hostlist_st;
|
|
39
|
+
typedef struct hostlist_st *hostlist_t;
|
|
40
|
+
#else
|
|
41
|
+
#include <vector>
|
|
42
|
+
|
|
43
|
+
namespace lcb {
|
|
44
|
+
struct Hostlist {
|
|
45
|
+
Hostlist() : ix(0) {}
|
|
46
|
+
~Hostlist();
|
|
47
|
+
|
|
48
|
+
void add(const lcb_host_t&);
|
|
49
|
+
lcb_error_t add(const char *s, long len, int deflport);
|
|
50
|
+
lcb_error_t add(const char *s, int deflport) { return add(s, -1, deflport); }
|
|
51
|
+
bool exists(const lcb_host_t&) const;
|
|
52
|
+
bool exists(const char *hostport) const;
|
|
53
|
+
lcb_host_t *next(bool wrap);
|
|
54
|
+
bool finished() const;
|
|
55
|
+
|
|
56
|
+
size_t size() const { return hosts.size(); }
|
|
57
|
+
bool empty() const { return hosts.empty(); }
|
|
58
|
+
Hostlist& assign(const Hostlist& other);
|
|
59
|
+
void clear() { hosts.clear(); reset_strlist(); ix = 0; }
|
|
60
|
+
void randomize();
|
|
61
|
+
void ensure_strlist();
|
|
62
|
+
void reset_strlist();
|
|
63
|
+
unsigned int ix;
|
|
64
|
+
const lcb_host_t& operator[](size_t ix_) const { return hosts[ix_]; }
|
|
65
|
+
|
|
66
|
+
std::vector<lcb_host_t> hosts;
|
|
67
|
+
std::vector<const char *> hoststrs;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
typedef lcb::Hostlist* hostlist_t;
|
|
71
|
+
#define hostlist_st lcb::Hostlist
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
#ifdef __cplusplus
|
|
75
|
+
extern "C" {
|
|
76
|
+
#endif
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Creates a new hostlist. Returns NULL on allocation failure
|
|
80
|
+
*/
|
|
81
|
+
hostlist_t hostlist_create(void);
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Frees resources associated with the hostlist
|
|
85
|
+
*/
|
|
86
|
+
void hostlist_destroy(hostlist_t hostlist);
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Clears the hostlist
|
|
90
|
+
*/
|
|
91
|
+
void hostlist_clear(hostlist_t hostlist);
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Parses a string into a hostlist
|
|
95
|
+
* @param host the target host to populate
|
|
96
|
+
* @param spec a string to parse. This may either be an IP/host or an
|
|
97
|
+
* IP:Port pair.
|
|
98
|
+
* @param speclen the length of the string. If this is -1 then it is assumed
|
|
99
|
+
* to be NUL-terminated and strlen will be used
|
|
100
|
+
* @param deflport If a port is not found in the spec, then this port will
|
|
101
|
+
* be used
|
|
102
|
+
*
|
|
103
|
+
* @return LCB_EINVAL if the host format is invalid
|
|
104
|
+
*/
|
|
105
|
+
lcb_error_t
|
|
106
|
+
lcb_host_parse(lcb_host_t *host, const char *spec, int speclen, int deflport);
|
|
107
|
+
|
|
108
|
+
/** Wrapper around lcb_host_parse() which accepts a NUL-terminated string
|
|
109
|
+
* @param host the host to populate
|
|
110
|
+
* @param spec a NUL-terminated string to parse
|
|
111
|
+
* @param deflport the default port to use if the `spec` does not contain a port
|
|
112
|
+
* @see lcb_host_parse()
|
|
113
|
+
*/
|
|
114
|
+
#define lcb_host_parsez(host, spec, deflport) lcb_host_parse(host, spec, -1, deflport)
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Compares two hosts for equality.
|
|
118
|
+
* @param a host to compare
|
|
119
|
+
* @param b other host to compare
|
|
120
|
+
* @return true if equal, false if different.
|
|
121
|
+
*/
|
|
122
|
+
int lcb_host_equals(const lcb_host_t *a, const lcb_host_t *b);
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Adds a string to the hostlist. See lcb_host_parse for details.
|
|
126
|
+
* Note that if the host already exists (see 'lcb_host_equals') it will
|
|
127
|
+
* not be added
|
|
128
|
+
* @return LCB_EINVAL if the host string is not value, LCB_CLIENT_ENOMEM on
|
|
129
|
+
* allocation failure.
|
|
130
|
+
*/
|
|
131
|
+
lcb_error_t hostlist_add_string(hostlist_t hostlist,
|
|
132
|
+
const char *spec,
|
|
133
|
+
int speclen,
|
|
134
|
+
int deflport);
|
|
135
|
+
|
|
136
|
+
#define hostlist_add_stringz(hostlist, spec, deflport) \
|
|
137
|
+
hostlist_add_string(hostlist, spec, -1, deflport)
|
|
138
|
+
|
|
139
|
+
lcb_error_t hostlist_add_host(hostlist_t hostlist, const lcb_host_t *host);
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Return the next host in the list.
|
|
143
|
+
* @param hostlist the hostlist to use
|
|
144
|
+
* @param rollover If the internal iterator has reached its limit, this
|
|
145
|
+
* indicates whether it should be reset, or if it should return NULL
|
|
146
|
+
* @return a new host if available, or NULL if the list is empty or the
|
|
147
|
+
* iterator is finished.
|
|
148
|
+
*/
|
|
149
|
+
lcb_host_t *hostlist_shift_next(hostlist_t hostlist, int rollover);
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Randomize the hostlist
|
|
153
|
+
*/
|
|
154
|
+
void hostlist_randomize(hostlist_t hostlist);
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* String list handling functions. These are used to return the hostlist via
|
|
158
|
+
* the API where we return a char*[] terminated by a NULL pointer.
|
|
159
|
+
*/
|
|
160
|
+
void hostlist_reset_strlist(hostlist_t hostlist);
|
|
161
|
+
|
|
162
|
+
/** Whether the internal iterator has finished. */
|
|
163
|
+
int hostlist_finished(hostlist_t);
|
|
164
|
+
size_t hostlist_size(const hostlist_t hl);
|
|
165
|
+
void hostlist_assign(hostlist_t dst, const hostlist_t src);
|
|
166
|
+
const lcb_host_t *hostlist_get(const hostlist_t, size_t);
|
|
167
|
+
const char * const *hostlist_strents(const hostlist_t hl);
|
|
168
|
+
#ifdef __cplusplus
|
|
169
|
+
}
|
|
170
|
+
#endif
|
|
171
|
+
#endif
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2015 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_HTTPPRIV_H
|
|
19
|
+
#define LCB_HTTPPRIV_H
|
|
20
|
+
|
|
21
|
+
#include <libcouchbase/couchbase.h>
|
|
22
|
+
#include <lcbio/lcbio.h>
|
|
23
|
+
#include <lcbio/timer-ng.h>
|
|
24
|
+
#include <lcbht/lcbht.h>
|
|
25
|
+
#include "contrib/http_parser/http_parser.h"
|
|
26
|
+
#include "http.h"
|
|
27
|
+
#include <string>
|
|
28
|
+
#include <vector>
|
|
29
|
+
#include <set>
|
|
30
|
+
|
|
31
|
+
namespace lcb {
|
|
32
|
+
namespace http {
|
|
33
|
+
|
|
34
|
+
// Simple object for header key and value
|
|
35
|
+
struct Header {
|
|
36
|
+
std::string key;
|
|
37
|
+
std::string value;
|
|
38
|
+
Header(const std::string& key_, const std::string& value_)
|
|
39
|
+
: key(key_), value(value_) {
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
struct Request {
|
|
44
|
+
enum State {
|
|
45
|
+
/**
|
|
46
|
+
* The request is still ongoing. Callbacks are still active.
|
|
47
|
+
* Note that this essentially means the absence of any flags :)
|
|
48
|
+
*/
|
|
49
|
+
ONGOING = 0,
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* This flag is set when the on_complete callback has been invoked. This
|
|
53
|
+
* is used as a marker to prevent us from calling that callback more than
|
|
54
|
+
* once per request
|
|
55
|
+
*/
|
|
56
|
+
CBINVOKED = 1 << 0,
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* This flag is set by lcb_http_request_finish, and indicates that the
|
|
60
|
+
* request is no longer active per se. This means that while the request
|
|
61
|
+
* may still be valid in memory, it is simply waiting for any pending I/O
|
|
62
|
+
* operations to close, so the reference count can hit zero.
|
|
63
|
+
*/
|
|
64
|
+
FINISHED = 1 << 1,
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Internal flag used to indicate that finish() should not not attempt
|
|
68
|
+
* to modify any instance-level globals. This is currently used
|
|
69
|
+
* from within lcb_destroy()
|
|
70
|
+
*/
|
|
71
|
+
NOLCB = 1 << 2
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
lcb_t instance; /**< Library handle */
|
|
75
|
+
std::string url; /**<Base URL: http://host:port/path?query*/
|
|
76
|
+
std::string host; /**< Host, derived from URL */
|
|
77
|
+
std::string port; /**< Port, derived from URL */
|
|
78
|
+
|
|
79
|
+
std::string pending_redirect; /**< New redirected URL */
|
|
80
|
+
bool has_pending_redirect() const { return !pending_redirect.empty(); }
|
|
81
|
+
const std::vector<char> body; /**< Input body (for POST/PUT) */
|
|
82
|
+
|
|
83
|
+
/** Request buffer (excluding body). Reassembled from inputs */
|
|
84
|
+
std::vector<char> preamble;
|
|
85
|
+
|
|
86
|
+
struct http_parser_url url_info; /**< Parser info for the URL */
|
|
87
|
+
const lcb_http_method_t method; /**< Request method constant */
|
|
88
|
+
const bool chunked; /**< Whether to invoke callback for each data chunk */
|
|
89
|
+
bool paused; /**< See pause() and resume() */
|
|
90
|
+
const void * const command_cookie; /** User context for callback */
|
|
91
|
+
size_t refcount; /** Initialized to 1. See incref() and decref() */
|
|
92
|
+
int redircount; /** Times this request was redirected */
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Whether this request has delivered data to the user. This is relevant
|
|
96
|
+
* in cases where a retry is requested. If any data has been passed at
|
|
97
|
+
* all, we cannot retry the request.
|
|
98
|
+
*/
|
|
99
|
+
bool passed_data;
|
|
100
|
+
|
|
101
|
+
/** Sparse map indicating which nodes the request was already sent to */
|
|
102
|
+
std::vector<int> used_nodes;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Last revision ID of vBucket config. If the current revision does not
|
|
106
|
+
* match this number, the ::used_nodes field is cleared
|
|
107
|
+
*/
|
|
108
|
+
int last_vbcrev;
|
|
109
|
+
|
|
110
|
+
const lcb_http_type_t reqtype; /**< HTTP API type */
|
|
111
|
+
int status; /**< OR'd flags of ::State */
|
|
112
|
+
std::vector<Header> request_headers; /**< List of request headers */
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Response headers for callback (array of char*). Buffers are mapped to
|
|
116
|
+
* ::response_headers
|
|
117
|
+
*/
|
|
118
|
+
std::vector<const char*> response_headers_clist;
|
|
119
|
+
|
|
120
|
+
/** Backing buffers for response headers */
|
|
121
|
+
std::vector<Header> response_headers;
|
|
122
|
+
|
|
123
|
+
/** Callback to invoke */
|
|
124
|
+
lcb_RESPCALLBACK callback;
|
|
125
|
+
|
|
126
|
+
// IO variables
|
|
127
|
+
lcbio_pTABLE io;
|
|
128
|
+
lcbio_pCTX ioctx;
|
|
129
|
+
lcbio_pTIMER timer;
|
|
130
|
+
lcbio_CONNREQ creq;
|
|
131
|
+
|
|
132
|
+
/** HTTP Protocol parser */
|
|
133
|
+
lcbht_pPARSER parser;
|
|
134
|
+
|
|
135
|
+
/** overrides default timeout if nonzero */
|
|
136
|
+
const uint32_t user_timeout;
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @return The effective timeout. This is either the user timeout or the
|
|
140
|
+
* default timeout for the API type
|
|
141
|
+
*/
|
|
142
|
+
uint32_t timeout() const;
|
|
143
|
+
bool is_data_request() const {
|
|
144
|
+
return reqtype == LCB_HTTP_TYPE_N1QL ||
|
|
145
|
+
reqtype == LCB_HTTP_TYPE_VIEW ||
|
|
146
|
+
reqtype == LCB_HTTP_TYPE_FTS;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @return If this request is in an ONGOING state, meaning no I/O errors
|
|
151
|
+
* and is not finished.
|
|
152
|
+
*/
|
|
153
|
+
bool is_ongoing() const { return status == ONGOING; }
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Initializes the request. This simply copies the relevant fields from the
|
|
157
|
+
* body and initializes instance members to their default values. The static
|
|
158
|
+
* ::create() method should be used instead to construct a new object
|
|
159
|
+
*/
|
|
160
|
+
inline Request(lcb_t instance, const void *cookie, const lcb_CMDHTTP* cmd);
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Sets up inputs from the command. This should really be in the
|
|
164
|
+
* constructor, however we also need a return value. The ::create()
|
|
165
|
+
* static method creates a new object and calls this function to verify
|
|
166
|
+
* the inputs
|
|
167
|
+
*/
|
|
168
|
+
inline lcb_error_t setup_inputs(const lcb_CMDHTTP* cmd);
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Gets a target node for the destination API in the form of host:port.
|
|
172
|
+
*
|
|
173
|
+
* This function will also inspect previously used nodes and skip over ones
|
|
174
|
+
* which are problematic, in the case of retries.
|
|
175
|
+
*
|
|
176
|
+
* @param[out] rc error code
|
|
177
|
+
* @return string if there is a node, or NULL if there is an error. Check rc
|
|
178
|
+
* for error details
|
|
179
|
+
*/
|
|
180
|
+
const char *get_api_node(lcb_error_t &rc);
|
|
181
|
+
const char *get_api_node() { lcb_error_t dummy; return get_api_node(dummy); }
|
|
182
|
+
|
|
183
|
+
/** Creates a new request object and verifies the input (setup_inputs()) */
|
|
184
|
+
static Request * create(lcb_t instance, const void *cookie,
|
|
185
|
+
const lcb_CMDHTTP *cmd, lcb_error_t *rc);
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Sets the URL for the field
|
|
189
|
+
* @param base The URL base (i.e. http://foo.com)
|
|
190
|
+
* @param nbase Length of the base field
|
|
191
|
+
* @param rest User input (the path)
|
|
192
|
+
* @param nrest Length of the path
|
|
193
|
+
* @return LCB_SUCCESS on success, error if failure
|
|
194
|
+
*
|
|
195
|
+
* If all parameters are 0 then this function will use the already-contained
|
|
196
|
+
* ::url field and validate/parse the inputs
|
|
197
|
+
*/
|
|
198
|
+
inline lcb_error_t assign_url(const char *base, size_t nbase,
|
|
199
|
+
const char *rest, size_t nrest);
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Helper method to get a URL field
|
|
203
|
+
* @param field The field constant (UF_XXX)
|
|
204
|
+
* @param target The string to contain the result
|
|
205
|
+
*/
|
|
206
|
+
inline void assign_from_urlfield(http_parser_url_fields field,
|
|
207
|
+
std::string& target);
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Add a new header to the list of request headers
|
|
211
|
+
* @param key header key
|
|
212
|
+
* @param value header value
|
|
213
|
+
*/
|
|
214
|
+
void add_header(const std::string& key, const std::string& value) {
|
|
215
|
+
request_headers.push_back(Header(key, value));
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Helper methods to populate request buffer
|
|
219
|
+
inline void add_to_preamble(const char *);
|
|
220
|
+
inline void add_to_preamble(const std::string&);
|
|
221
|
+
inline void add_to_preamble(const Header&);
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Start all operations required to make this request. This should be
|
|
225
|
+
* called once all inputs have been completed. If successful, I/O operations
|
|
226
|
+
* will begin (this function calls start_io())
|
|
227
|
+
*/
|
|
228
|
+
lcb_error_t submit();
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Starts the IO on the current request. This really belongs in submit(),
|
|
232
|
+
* but submit() handles building the request while start_io() sets up
|
|
233
|
+
* the actual connection
|
|
234
|
+
*/
|
|
235
|
+
lcb_error_t start_io(lcb_host_t&);
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Release any I/O resources attached to this request.
|
|
239
|
+
*/
|
|
240
|
+
void close_io();
|
|
241
|
+
|
|
242
|
+
// Helper functions for parsing response data from network
|
|
243
|
+
inline int handle_parse_chunked(const char *buf, unsigned nbuf);
|
|
244
|
+
inline void assign_response_headers(const lcbht_RESPONSE*);
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Called when a redirect has happened. pending_redirect must not be empty.
|
|
248
|
+
* This will transfer control to the redirect call. If there is an error
|
|
249
|
+
* during redirect, the appropriate finish() API will be called by this
|
|
250
|
+
* function.
|
|
251
|
+
*
|
|
252
|
+
* Note that the new URL should be present in the ::pending_redirect
|
|
253
|
+
* field
|
|
254
|
+
*/
|
|
255
|
+
void redirect();
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Called to initialize a response object. Sets up standard boilerplate
|
|
259
|
+
* variables for the response
|
|
260
|
+
*/
|
|
261
|
+
void init_resp(lcb_RESPHTTP *resp);
|
|
262
|
+
|
|
263
|
+
/** Called by finish() to refresh the config, if necessary */
|
|
264
|
+
void maybe_refresh_config(lcb_error_t rc);
|
|
265
|
+
|
|
266
|
+
/** Finish this request, invoking the final callback if necessary */
|
|
267
|
+
void finish(lcb_error_t rc);
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Finish or retry this request, depending on the state of the response
|
|
271
|
+
* If the request can be retried, IO will begin again, otherwise it will
|
|
272
|
+
* be finished via a call to finish()
|
|
273
|
+
**/
|
|
274
|
+
void finish_or_retry(lcb_error_t rc);
|
|
275
|
+
|
|
276
|
+
/** Pause IO on this request */
|
|
277
|
+
void pause();
|
|
278
|
+
|
|
279
|
+
/** Resume previously paused IO */
|
|
280
|
+
void resume();
|
|
281
|
+
|
|
282
|
+
/** Cancel and finish this request, suppressing callbacks */
|
|
283
|
+
void cancel();
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Let the request finish its normal course, suppressing any callbacks.
|
|
287
|
+
* Unlike cancel(), this does not dispatch to finish. Finish is called
|
|
288
|
+
* when any final I/O has been completed, which may happen after the
|
|
289
|
+
* instance is already destroyed
|
|
290
|
+
*/
|
|
291
|
+
void block_callback() {
|
|
292
|
+
status |= NOLCB|CBINVOKED;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/** Decrement refcount. The object is destroyed when the refcount hits 0 */
|
|
296
|
+
void decref();
|
|
297
|
+
|
|
298
|
+
/** Increment refcount */
|
|
299
|
+
void incref() { refcount++; }
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
} // namespace: http
|
|
303
|
+
} // namespace: lcb
|
|
304
|
+
|
|
305
|
+
struct lcb_http_request_st : public lcb::http::Request {};
|
|
306
|
+
|
|
307
|
+
#endif /* HEADER GUARD */
|