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,100 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2011-2012 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
#ifndef RINGBUFFER_H
|
|
18
|
+
#define RINGBUFFER_H 1
|
|
19
|
+
|
|
20
|
+
#ifdef __cplusplus
|
|
21
|
+
extern "C" {
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
typedef struct ringbuffer_st {
|
|
25
|
+
char *root;
|
|
26
|
+
char *read_head;
|
|
27
|
+
char *write_head;
|
|
28
|
+
lcb_size_t size;
|
|
29
|
+
lcb_size_t nbytes;
|
|
30
|
+
} ringbuffer_t;
|
|
31
|
+
|
|
32
|
+
typedef enum {
|
|
33
|
+
RINGBUFFER_READ = 0x01,
|
|
34
|
+
RINGBUFFER_WRITE = 0x02
|
|
35
|
+
} ringbuffer_direction_t;
|
|
36
|
+
|
|
37
|
+
int ringbuffer_initialize(ringbuffer_t *buffer,
|
|
38
|
+
lcb_size_t size);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Initialize a ringbuffer, taking ownership of an allocated char buffer.
|
|
42
|
+
* This function always succeeds.
|
|
43
|
+
* @param buffer a ringbuffer_t to be initialized
|
|
44
|
+
* @param buf the buffer to steal
|
|
45
|
+
* @param size the allocated size of the buffer
|
|
46
|
+
*/
|
|
47
|
+
void ringbuffer_take_buffer(ringbuffer_t *buffer,
|
|
48
|
+
char *buf,
|
|
49
|
+
lcb_size_t size);
|
|
50
|
+
|
|
51
|
+
void ringbuffer_reset(ringbuffer_t *buffer);
|
|
52
|
+
|
|
53
|
+
void ringbuffer_destruct(ringbuffer_t *buffer);
|
|
54
|
+
int ringbuffer_ensure_capacity(ringbuffer_t *buffer,
|
|
55
|
+
lcb_size_t size);
|
|
56
|
+
lcb_size_t ringbuffer_get_size(ringbuffer_t *buffer);
|
|
57
|
+
void *ringbuffer_get_start(ringbuffer_t *buffer);
|
|
58
|
+
void *ringbuffer_get_read_head(ringbuffer_t *buffer);
|
|
59
|
+
void *ringbuffer_get_write_head(ringbuffer_t *buffer);
|
|
60
|
+
lcb_size_t ringbuffer_write(ringbuffer_t *buffer,
|
|
61
|
+
const void *src,
|
|
62
|
+
lcb_size_t nb);
|
|
63
|
+
lcb_size_t ringbuffer_strcat(ringbuffer_t *buffer,
|
|
64
|
+
const char *str);
|
|
65
|
+
lcb_size_t ringbuffer_read(ringbuffer_t *buffer,
|
|
66
|
+
void *dest,
|
|
67
|
+
lcb_size_t nb);
|
|
68
|
+
lcb_size_t ringbuffer_peek(ringbuffer_t *buffer,
|
|
69
|
+
void *dest,
|
|
70
|
+
lcb_size_t nb);
|
|
71
|
+
lcb_size_t ringbuffer_peek_at(ringbuffer_t *buffer,
|
|
72
|
+
lcb_size_t offset,
|
|
73
|
+
void *dest,
|
|
74
|
+
lcb_size_t nb);
|
|
75
|
+
/* replace +nb+ bytes on +direction+ end of the buffer with src */
|
|
76
|
+
lcb_size_t ringbuffer_update(ringbuffer_t *buffer,
|
|
77
|
+
ringbuffer_direction_t direction,
|
|
78
|
+
const void *src, lcb_size_t nb);
|
|
79
|
+
void ringbuffer_get_iov(ringbuffer_t *buffer,
|
|
80
|
+
ringbuffer_direction_t direction,
|
|
81
|
+
struct lcb_iovec_st *iov);
|
|
82
|
+
void ringbuffer_produced(ringbuffer_t *buffer, lcb_size_t nb);
|
|
83
|
+
void ringbuffer_consumed(ringbuffer_t *buffer, lcb_size_t nb);
|
|
84
|
+
lcb_size_t ringbuffer_get_nbytes(ringbuffer_t *buffer);
|
|
85
|
+
int ringbuffer_is_continous(ringbuffer_t *buffer,
|
|
86
|
+
ringbuffer_direction_t direction,
|
|
87
|
+
lcb_size_t nb);
|
|
88
|
+
|
|
89
|
+
int ringbuffer_append(ringbuffer_t *src, ringbuffer_t *dest);
|
|
90
|
+
int ringbuffer_memcpy(ringbuffer_t *dst, ringbuffer_t *src,
|
|
91
|
+
lcb_size_t nbytes);
|
|
92
|
+
|
|
93
|
+
/* Align the read head of the ringbuffer for platforms where it's needed */
|
|
94
|
+
int ringbuffer_ensure_alignment(ringbuffer_t *src);
|
|
95
|
+
|
|
96
|
+
#ifdef __cplusplus
|
|
97
|
+
}
|
|
98
|
+
#endif
|
|
99
|
+
|
|
100
|
+
#endif
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2014 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#include "settings.h"
|
|
19
|
+
#include <lcbio/ssl.h>
|
|
20
|
+
#include <rdb/rope.h>
|
|
21
|
+
#include "auth.h"
|
|
22
|
+
|
|
23
|
+
LCB_INTERNAL_API
|
|
24
|
+
void lcb_default_settings(lcb_settings *settings)
|
|
25
|
+
{
|
|
26
|
+
settings->ipv6 = LCB_IPV6_DISABLED;
|
|
27
|
+
settings->operation_timeout = LCB_DEFAULT_TIMEOUT;
|
|
28
|
+
settings->config_timeout = LCB_DEFAULT_CONFIGURATION_TIMEOUT;
|
|
29
|
+
settings->config_node_timeout = LCB_DEFAULT_NODECONFIG_TIMEOUT;
|
|
30
|
+
settings->views_timeout = LCB_DEFAULT_VIEW_TIMEOUT;
|
|
31
|
+
settings->n1ql_timeout = LCB_DEFAULT_N1QL_TIMEOUT;
|
|
32
|
+
settings->durability_timeout = LCB_DEFAULT_DURABILITY_TIMEOUT;
|
|
33
|
+
settings->durability_interval = LCB_DEFAULT_DURABILITY_INTERVAL;
|
|
34
|
+
settings->http_timeout = LCB_DEFAULT_HTTP_TIMEOUT;
|
|
35
|
+
settings->weird_things_threshold = LCB_DEFAULT_CONFIG_ERRORS_THRESHOLD;
|
|
36
|
+
settings->weird_things_delay = LCB_DEFAULT_CONFIG_ERRORS_DELAY;
|
|
37
|
+
settings->max_redir = LCB_DEFAULT_CONFIG_MAXIMUM_REDIRECTS;
|
|
38
|
+
settings->grace_next_cycle = LCB_DEFAULT_CLCONFIG_GRACE_CYCLE;
|
|
39
|
+
settings->grace_next_provider = LCB_DEFAULT_CLCONFIG_GRACE_NEXT;
|
|
40
|
+
settings->bc_http_stream_time = LCB_DEFAULT_BC_HTTP_DISCONNTMO;
|
|
41
|
+
settings->retry_interval = LCB_DEFAULT_RETRY_INTERVAL;
|
|
42
|
+
settings->retry_backoff = LCB_DEFAULT_RETRY_BACKOFF;
|
|
43
|
+
settings->sslopts = 0;
|
|
44
|
+
settings->retry[LCB_RETRY_ON_SOCKERR] = LCB_DEFAULT_NETRETRY;
|
|
45
|
+
settings->retry[LCB_RETRY_ON_TOPOCHANGE] = LCB_DEFAULT_TOPORETRY;
|
|
46
|
+
settings->retry[LCB_RETRY_ON_VBMAPERR] = LCB_DEFAULT_NMVRETRY;
|
|
47
|
+
settings->retry[LCB_RETRY_ON_MISSINGNODE] = 0;
|
|
48
|
+
settings->bc_http_urltype = LCB_DEFAULT_HTCONFIG_URLTYPE;
|
|
49
|
+
settings->compressopts = LCB_DEFAULT_COMPRESSOPTS;
|
|
50
|
+
settings->allocator_factory = rdb_bigalloc_new;
|
|
51
|
+
settings->syncmode = LCB_ASYNCHRONOUS;
|
|
52
|
+
settings->detailed_neterr = 0;
|
|
53
|
+
settings->refresh_on_hterr = 1;
|
|
54
|
+
settings->sched_implicit_flush = 1;
|
|
55
|
+
settings->fetch_mutation_tokens = 0;
|
|
56
|
+
settings->dur_mutation_tokens = 1;
|
|
57
|
+
settings->nmv_retry_imm = LCB_DEFAULT_NVM_RETRY_IMM;
|
|
58
|
+
settings->tcp_nodelay = LCB_DEFAULT_TCP_NODELAY;
|
|
59
|
+
settings->retry_nmv_interval = LCB_DEFAULT_RETRY_NMV_INTERVAL;
|
|
60
|
+
settings->vb_noguess = LCB_DEFAULT_VB_NOGUESS;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
LCB_INTERNAL_API
|
|
64
|
+
lcb_settings *
|
|
65
|
+
lcb_settings_new(void)
|
|
66
|
+
{
|
|
67
|
+
lcb_settings *settings = calloc(1, sizeof(*settings));
|
|
68
|
+
lcb_default_settings(settings);
|
|
69
|
+
settings->refcount = 1;
|
|
70
|
+
settings->auth = lcbauth_new();
|
|
71
|
+
return settings;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
LCB_INTERNAL_API
|
|
75
|
+
void
|
|
76
|
+
lcb_settings_unref(lcb_settings *settings)
|
|
77
|
+
{
|
|
78
|
+
if (--settings->refcount) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
free(settings->bucket);
|
|
82
|
+
free(settings->sasl_mech_force);
|
|
83
|
+
free(settings->certpath);
|
|
84
|
+
free(settings->client_string);
|
|
85
|
+
|
|
86
|
+
lcbauth_free(settings->auth);
|
|
87
|
+
|
|
88
|
+
if (settings->ssl_ctx) {
|
|
89
|
+
lcbio_ssl_free(settings->ssl_ctx);
|
|
90
|
+
}
|
|
91
|
+
if (settings->dtorcb) {
|
|
92
|
+
settings->dtorcb(settings->dtorarg);
|
|
93
|
+
}
|
|
94
|
+
free(settings);
|
|
95
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2014 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#ifndef LCB_SETTINGS_H
|
|
19
|
+
#define LCB_SETTINGS_H
|
|
20
|
+
#include "auth.h"
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Handy macros for converting between different time resolutions
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/** Convert seconds to millis */
|
|
27
|
+
#define LCB_S2MS(s) ((lcb_uint32_t)s) * 1000
|
|
28
|
+
|
|
29
|
+
/** Convert seconds to microseconds */
|
|
30
|
+
#define LCB_S2US(s) ((lcb_uint32_t)s) * 1000000
|
|
31
|
+
|
|
32
|
+
/** Convert seconds to nanoseconds */
|
|
33
|
+
#define LCB_S2NS(s) ((hrtime_t)s) * 1000000000
|
|
34
|
+
|
|
35
|
+
/** Convert nanoseconds to microseconds */
|
|
36
|
+
#define LCB_NS2US(s) (lcb_uint32_t) ((s) / 1000)
|
|
37
|
+
|
|
38
|
+
#define LCB_MS2US(s) (s) * 1000
|
|
39
|
+
|
|
40
|
+
/** Convert microseconds to nanoseconds */
|
|
41
|
+
#define LCB_US2NS(s) ((hrtime_t)s) * 1000
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
#define LCB_DEFAULT_TIMEOUT LCB_MS2US(2500)
|
|
45
|
+
|
|
46
|
+
/** 5 seconds for total bootstrap */
|
|
47
|
+
#define LCB_DEFAULT_CONFIGURATION_TIMEOUT LCB_MS2US(5000)
|
|
48
|
+
|
|
49
|
+
/** 2 seconds per node */
|
|
50
|
+
#define LCB_DEFAULT_NODECONFIG_TIMEOUT LCB_MS2US(2000)
|
|
51
|
+
|
|
52
|
+
#define LCB_DEFAULT_VIEW_TIMEOUT LCB_MS2US(75000)
|
|
53
|
+
#define LCB_DEFAULT_N1QL_TIMEOUT LCB_MS2US(75000)
|
|
54
|
+
#define LCB_DEFAULT_DURABILITY_TIMEOUT LCB_MS2US(5000)
|
|
55
|
+
#define LCB_DEFAULT_DURABILITY_INTERVAL LCB_MS2US(100)
|
|
56
|
+
#define LCB_DEFAULT_HTTP_TIMEOUT LCB_MS2US(75000)
|
|
57
|
+
#define LCB_DEFAULT_CONFIG_MAXIMUM_REDIRECTS 3
|
|
58
|
+
#define LCB_DEFAULT_CONFIG_ERRORS_THRESHOLD 100
|
|
59
|
+
|
|
60
|
+
/* 10 seconds */
|
|
61
|
+
#define LCB_DEFAULT_CONFIG_ERRORS_DELAY LCB_MS2US(10000)
|
|
62
|
+
|
|
63
|
+
/* 1 second */
|
|
64
|
+
#define LCB_DEFAULT_CLCONFIG_GRACE_CYCLE LCB_MS2US(1000)
|
|
65
|
+
|
|
66
|
+
/* 100 ms */
|
|
67
|
+
#define LCB_DEFAULT_CLCONFIG_GRACE_NEXT LCB_MS2US(100)
|
|
68
|
+
|
|
69
|
+
/* Infinite (i.e. compat mode) */
|
|
70
|
+
#define LCB_DEFAULT_BC_HTTP_DISCONNTMO -1
|
|
71
|
+
|
|
72
|
+
/* 10ms */
|
|
73
|
+
#define LCB_DEFAULT_RETRY_INTERVAL LCB_MS2US(10)
|
|
74
|
+
|
|
75
|
+
/* 1.5x */
|
|
76
|
+
#define LCB_DEFAULT_RETRY_BACKOFF 1.5
|
|
77
|
+
|
|
78
|
+
#define LCB_DEFAULT_TOPORETRY LCB_RETRY_CMDS_ALL
|
|
79
|
+
#define LCB_DEFAULT_NETRETRY LCB_RETRY_CMDS_ALL
|
|
80
|
+
#define LCB_DEFAULT_NMVRETRY LCB_RETRY_CMDS_ALL
|
|
81
|
+
#define LCB_DEFAULT_HTCONFIG_URLTYPE LCB_HTCONFIG_URLTYPE_TRYALL
|
|
82
|
+
#define LCB_DEFAULT_COMPRESSOPTS LCB_COMPRESS_NONE
|
|
83
|
+
|
|
84
|
+
#define LCB_DEFAULT_NVM_RETRY_IMM 1
|
|
85
|
+
#define LCB_DEFAULT_RETRY_NMV_INTERVAL LCB_MS2US(100)
|
|
86
|
+
#define LCB_DEFAULT_VB_NOGUESS 1
|
|
87
|
+
#define LCB_DEFAULT_TCP_NODELAY 1
|
|
88
|
+
|
|
89
|
+
#include "config.h"
|
|
90
|
+
#include <libcouchbase/couchbase.h>
|
|
91
|
+
|
|
92
|
+
#ifdef __cplusplus
|
|
93
|
+
extern "C" {
|
|
94
|
+
#endif
|
|
95
|
+
|
|
96
|
+
struct lcb_logprocs_st;
|
|
97
|
+
struct lcbio_SSLCTX;
|
|
98
|
+
struct rdb_ALLOCATOR;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Stateless setting structure.
|
|
102
|
+
* Specifically this contains the 'environment' of the instance for things
|
|
103
|
+
* which are intended to be passed around to other objects.
|
|
104
|
+
*/
|
|
105
|
+
typedef struct lcb_settings_st {
|
|
106
|
+
lcb_U16 iid;
|
|
107
|
+
lcb_U8 compressopts;
|
|
108
|
+
lcb_U8 syncmode;
|
|
109
|
+
lcb_U32 read_chunk_size;
|
|
110
|
+
lcb_U32 operation_timeout;
|
|
111
|
+
lcb_U32 views_timeout;
|
|
112
|
+
lcb_U32 http_timeout;
|
|
113
|
+
lcb_U32 n1ql_timeout;
|
|
114
|
+
lcb_U32 durability_timeout;
|
|
115
|
+
lcb_U32 durability_interval;
|
|
116
|
+
lcb_U32 config_timeout;
|
|
117
|
+
lcb_U32 config_node_timeout;
|
|
118
|
+
lcb_U32 retry_interval;
|
|
119
|
+
lcb_U32 weird_things_threshold;
|
|
120
|
+
lcb_U32 weird_things_delay;
|
|
121
|
+
|
|
122
|
+
/** Grace period to wait between querying providers */
|
|
123
|
+
lcb_U32 grace_next_provider;
|
|
124
|
+
|
|
125
|
+
/** Grace period to wait between retrying from the beginning */
|
|
126
|
+
lcb_U32 grace_next_cycle;
|
|
127
|
+
|
|
128
|
+
/**For bc_http, the amount of type to keep the stream open, for future
|
|
129
|
+
* updates. */
|
|
130
|
+
lcb_U32 bc_http_stream_time;
|
|
131
|
+
|
|
132
|
+
unsigned bc_http_urltype : 4;
|
|
133
|
+
|
|
134
|
+
/** Don't guess next vbucket server. Mainly for testing */
|
|
135
|
+
unsigned vb_noguess : 1;
|
|
136
|
+
/** Whether lcb_destroy is synchronous. This mode will run the I/O event
|
|
137
|
+
* loop as much as possible until no outstanding events remain.*/
|
|
138
|
+
unsigned syncdtor : 1;
|
|
139
|
+
unsigned detailed_neterr : 1;
|
|
140
|
+
unsigned randomize_bootstrap_nodes : 1;
|
|
141
|
+
unsigned conntype : 1;
|
|
142
|
+
unsigned refresh_on_hterr : 1;
|
|
143
|
+
unsigned sched_implicit_flush : 1;
|
|
144
|
+
unsigned nmv_retry_imm : 1;
|
|
145
|
+
unsigned keep_guess_vbs : 1;
|
|
146
|
+
unsigned fetch_mutation_tokens : 1;
|
|
147
|
+
unsigned dur_mutation_tokens : 1;
|
|
148
|
+
unsigned sslopts : 3;
|
|
149
|
+
unsigned ipv6 : 2;
|
|
150
|
+
unsigned tcp_nodelay : 1;
|
|
151
|
+
unsigned readj_ts_wait : 1;
|
|
152
|
+
|
|
153
|
+
short max_redir;
|
|
154
|
+
unsigned refcount;
|
|
155
|
+
|
|
156
|
+
uint8_t retry[LCB_RETRY_ON_MAX];
|
|
157
|
+
float retry_backoff;
|
|
158
|
+
|
|
159
|
+
char *bucket;
|
|
160
|
+
char *sasl_mech_force;
|
|
161
|
+
char *certpath;
|
|
162
|
+
lcb_AUTHENTICATOR *auth;
|
|
163
|
+
struct rdb_ALLOCATOR* (*allocator_factory)(void);
|
|
164
|
+
struct lcbio_SSLCTX *ssl_ctx;
|
|
165
|
+
struct lcb_logprocs_st *logger;
|
|
166
|
+
void (*dtorcb)(const void *);
|
|
167
|
+
void *dtorarg;
|
|
168
|
+
char *client_string;
|
|
169
|
+
lcb_U32 retry_nmv_interval;
|
|
170
|
+
} lcb_settings;
|
|
171
|
+
|
|
172
|
+
LCB_INTERNAL_API
|
|
173
|
+
void lcb_default_settings(lcb_settings *settings);
|
|
174
|
+
|
|
175
|
+
LCB_INTERNAL_API
|
|
176
|
+
lcb_settings *
|
|
177
|
+
lcb_settings_new(void);
|
|
178
|
+
|
|
179
|
+
LCB_INTERNAL_API
|
|
180
|
+
void
|
|
181
|
+
lcb_settings_unref(lcb_settings *);
|
|
182
|
+
|
|
183
|
+
#define lcb_settings_ref(settings) (settings)->refcount++
|
|
184
|
+
|
|
185
|
+
#ifdef __cplusplus
|
|
186
|
+
}
|
|
187
|
+
#endif
|
|
188
|
+
#endif
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2014 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#include "simplestring.h"
|
|
19
|
+
#include "assert.h"
|
|
20
|
+
|
|
21
|
+
static void ensure_cstr(lcb_string *str);
|
|
22
|
+
|
|
23
|
+
int lcb_string_init(lcb_string *str)
|
|
24
|
+
{
|
|
25
|
+
str->base = NULL;
|
|
26
|
+
str->nalloc = 0;
|
|
27
|
+
str->nused = 0;
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
void lcb_string_release(lcb_string *str)
|
|
32
|
+
{
|
|
33
|
+
if (str->base == NULL) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
free(str->base);
|
|
37
|
+
memset(str, 0, sizeof(*str));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
void lcb_string_clear(lcb_string *str)
|
|
41
|
+
{
|
|
42
|
+
str->nused = 0;
|
|
43
|
+
if (str->nalloc) {
|
|
44
|
+
ensure_cstr(str);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
void lcb_string_added(lcb_string *str, lcb_size_t nused)
|
|
49
|
+
{
|
|
50
|
+
str->nused += nused;
|
|
51
|
+
lcb_assert(str->nused <= str->nalloc);
|
|
52
|
+
ensure_cstr(str);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
int lcb_string_reserve(lcb_string *str, lcb_size_t size)
|
|
56
|
+
{
|
|
57
|
+
lcb_size_t newalloc;
|
|
58
|
+
char *newbuf;
|
|
59
|
+
|
|
60
|
+
/** Set size to one greater, for the terminating NUL */
|
|
61
|
+
size++;
|
|
62
|
+
if (!size) {
|
|
63
|
+
return -1;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (str->nalloc - str->nused >= size) {
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
newalloc = str->nalloc;
|
|
71
|
+
if (!newalloc) {
|
|
72
|
+
newalloc = 1;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
while (newalloc - str->nused < size) {
|
|
76
|
+
if (newalloc * 2 < newalloc) {
|
|
77
|
+
return -1;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
newalloc *= 2;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
newbuf = realloc(str->base, newalloc);
|
|
84
|
+
if (newbuf == NULL) {
|
|
85
|
+
return -1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
str->base = newbuf;
|
|
89
|
+
str->nalloc = newalloc;
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
static void ensure_cstr(lcb_string *str)
|
|
94
|
+
{
|
|
95
|
+
str->base[str->nused] = '\0';
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
int lcb_string_append(lcb_string *str, const void *data, lcb_size_t size)
|
|
99
|
+
{
|
|
100
|
+
if (lcb_string_reserve(str, size)) {
|
|
101
|
+
return -1;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
memcpy(str->base + str->nused, data, size);
|
|
105
|
+
str->nused += size;
|
|
106
|
+
ensure_cstr(str);
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
int lcb_string_appendz(lcb_string *str, const char *s)
|
|
111
|
+
{
|
|
112
|
+
return lcb_string_append(str, s, strlen(s));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
int lcb_string_appendv(lcb_string *str, ...)
|
|
116
|
+
{
|
|
117
|
+
va_list ap;
|
|
118
|
+
va_start(ap, str);
|
|
119
|
+
|
|
120
|
+
while (1) {
|
|
121
|
+
size_t len;
|
|
122
|
+
int rc;
|
|
123
|
+
const char *ptr;
|
|
124
|
+
|
|
125
|
+
if ((ptr = va_arg(ap, const char *)) == NULL) {
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
len = va_arg(ap, size_t);
|
|
130
|
+
if (len == (size_t)-1) {
|
|
131
|
+
len = strlen(ptr);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
rc = lcb_string_append(str, ptr, len);
|
|
135
|
+
if (rc != 0) {
|
|
136
|
+
return -1;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
int lcb_string_rbappend(lcb_string *str, ringbuffer_t *rb, int rbadvance)
|
|
143
|
+
{
|
|
144
|
+
lcb_size_t expected, nw;
|
|
145
|
+
expected = rb->nbytes;
|
|
146
|
+
if (!expected) {
|
|
147
|
+
return 0;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (lcb_string_reserve(str, expected)) {
|
|
151
|
+
return -1;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
nw = ringbuffer_peek(rb, lcb_string_tail(str), expected);
|
|
155
|
+
if (nw != expected) {
|
|
156
|
+
return -1;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (rbadvance) {
|
|
160
|
+
ringbuffer_consumed(rb, nw);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
lcb_string_added(str, nw);
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
void lcb_string_erase_end(lcb_string *str, lcb_size_t to_remove)
|
|
168
|
+
{
|
|
169
|
+
lcb_assert(to_remove <= str->nused);
|
|
170
|
+
str->nused -= to_remove;
|
|
171
|
+
ensure_cstr(str);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
void lcb_string_erase_beginning(lcb_string *str, lcb_size_t to_remove)
|
|
175
|
+
{
|
|
176
|
+
lcb_assert(to_remove <= str->nused);
|
|
177
|
+
if (!to_remove) {
|
|
178
|
+
str->nused = 0;
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
memmove(str->base, str->base + to_remove, str->nused - to_remove);
|
|
183
|
+
str->nused -= to_remove;
|
|
184
|
+
ensure_cstr(str);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
int lcb_string_insert(lcb_string *str, size_t at, const char *src, size_t nsrc)
|
|
188
|
+
{
|
|
189
|
+
if (!nsrc) {
|
|
190
|
+
return 0;
|
|
191
|
+
}
|
|
192
|
+
if (at == str->nused) {
|
|
193
|
+
return lcb_string_append(str, src, nsrc);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (lcb_string_reserve(str, nsrc) != 0) {
|
|
197
|
+
return -1;
|
|
198
|
+
}
|
|
199
|
+
memmove(str->base + at + nsrc, str->base + at, str->nused - at);
|
|
200
|
+
memcpy(str->base + at, src, nsrc);
|
|
201
|
+
str->nused += nsrc;
|
|
202
|
+
ensure_cstr(str);
|
|
203
|
+
return 0;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
void lcb_string_transfer(lcb_string *from, lcb_string *to)
|
|
207
|
+
{
|
|
208
|
+
lcb_assert(to->base == NULL);
|
|
209
|
+
*to = *from;
|
|
210
|
+
memset(from, 0, sizeof(*from));
|
|
211
|
+
}
|