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,29 @@
|
|
|
1
|
+
INSTALL(
|
|
2
|
+
FILES
|
|
3
|
+
libevent_io_opts.h
|
|
4
|
+
DESTINATION
|
|
5
|
+
include/libcouchbase)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
IF(NOT (HAVE_LIBEVENT OR HAVE_LIBEVENT2))
|
|
9
|
+
RETURN()
|
|
10
|
+
ENDIF()
|
|
11
|
+
|
|
12
|
+
IF(HAVE_LIBEVENT2)
|
|
13
|
+
ADD_DEFINITIONS(-DHAVE_LIBEVENT2)
|
|
14
|
+
INCLUDE_DIRECTORIES(AFTER ${LIBEVENT_INCLUDE_DIR})
|
|
15
|
+
ELSE()
|
|
16
|
+
INCLUDE_DIRECTORIES(AFTER ${LIBEVENT_INCLUDE_DIR})
|
|
17
|
+
ADD_DEFINITIONS(-DHAVE_LIBEVENT)
|
|
18
|
+
ENDIF()
|
|
19
|
+
|
|
20
|
+
IF(LCB_EMBED_PLUGIN_LIBEVENT)
|
|
21
|
+
ADD_LIBRARY(couchbase_libevent OBJECT plugin-libevent.c)
|
|
22
|
+
SET(LCB_LINK_SPEC "${LCB_LINKS_SPEC} ${LIBEVENT_LIBRARIES}")
|
|
23
|
+
ELSE()
|
|
24
|
+
ADD_LIBRARY(couchbase_libevent SHARED plugin-libevent.c)
|
|
25
|
+
INSTALL(TARGETS couchbase_libevent LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
26
|
+
TARGET_LINK_LIBRARIES(couchbase_libevent ${LIBEVENT_LIBRARIES})
|
|
27
|
+
ENDIF()
|
|
28
|
+
|
|
29
|
+
LCB_UTIL(couchbase_libevent)
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @file
|
|
20
|
+
* libevent integration with libcouchbase
|
|
21
|
+
* @author Trond Norbye
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @ingroup lcb-io-plugin-api
|
|
26
|
+
* @defgroup lcb-libevent libevent
|
|
27
|
+
* @brief libev integration
|
|
28
|
+
*
|
|
29
|
+
* lcb_create_libevent_io_opts() allows you to create an instance
|
|
30
|
+
* of the ioopts that will utilize libevent. You may either supply an event
|
|
31
|
+
* base (if you'd like to add your own events into the loop), or it will
|
|
32
|
+
* create its own.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @addtogroup lcb-libevent
|
|
37
|
+
* @{
|
|
38
|
+
*/
|
|
39
|
+
#ifndef LIBCOUCHBASE_LIBEVENT_IO_OPTS_H
|
|
40
|
+
#define LIBCOUCHBASE_LIBEVENT_IO_OPTS_H 1
|
|
41
|
+
|
|
42
|
+
#include <libcouchbase/couchbase.h>
|
|
43
|
+
|
|
44
|
+
#ifdef __cplusplus
|
|
45
|
+
extern "C" {
|
|
46
|
+
#endif
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Create an instance of an event handler that utilize libevent for
|
|
50
|
+
* event notification.
|
|
51
|
+
*
|
|
52
|
+
* @param version the API version to use
|
|
53
|
+
* @param base the event base (struct event_base *) to hook use (please
|
|
54
|
+
* note that you shouldn't reference the event base from
|
|
55
|
+
* multiple threads)
|
|
56
|
+
* @param io a pointer to a newly created and initialized event handler
|
|
57
|
+
* @return status of the operation
|
|
58
|
+
*/
|
|
59
|
+
LIBCOUCHBASE_API
|
|
60
|
+
lcb_error_t lcb_create_libevent_io_opts(int version, lcb_io_opt_t *io, void *base);
|
|
61
|
+
|
|
62
|
+
#ifdef __cplusplus
|
|
63
|
+
}
|
|
64
|
+
#endif
|
|
65
|
+
|
|
66
|
+
/**@}*/
|
|
67
|
+
#endif
|
|
@@ -0,0 +1,292 @@
|
|
|
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
|
+
|
|
18
|
+
/**
|
|
19
|
+
* This file contains IO operations that use libevent
|
|
20
|
+
*
|
|
21
|
+
* @author Trond Norbye
|
|
22
|
+
* @todo add more documentation
|
|
23
|
+
*/
|
|
24
|
+
#define LCB_IOPS_V12_NO_DEPRECATE
|
|
25
|
+
#include "config.h"
|
|
26
|
+
#include <event.h>
|
|
27
|
+
#include "libevent_io_opts.h"
|
|
28
|
+
#include <errno.h>
|
|
29
|
+
#include <sys/types.h>
|
|
30
|
+
#include <sys/socket.h>
|
|
31
|
+
#include <libcouchbase/plugins/io/bsdio-inl.c>
|
|
32
|
+
|
|
33
|
+
struct libevent_cookie {
|
|
34
|
+
struct event_base *base;
|
|
35
|
+
int allocated;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
#ifndef HAVE_LIBEVENT2
|
|
40
|
+
/* libevent 1.x compatibility layer */
|
|
41
|
+
#ifndef evutil_socket_t
|
|
42
|
+
#define evutil_socket_t int
|
|
43
|
+
#endif
|
|
44
|
+
|
|
45
|
+
typedef void (*event_callback_fn)(evutil_socket_t, short, void *);
|
|
46
|
+
|
|
47
|
+
static int
|
|
48
|
+
event_assign(struct event *ev,
|
|
49
|
+
struct event_base *base,
|
|
50
|
+
evutil_socket_t fd,
|
|
51
|
+
short events,
|
|
52
|
+
event_callback_fn callback,
|
|
53
|
+
void *arg)
|
|
54
|
+
{
|
|
55
|
+
ev->ev_callback = callback;
|
|
56
|
+
ev->ev_arg = arg;
|
|
57
|
+
ev->ev_fd = fd;
|
|
58
|
+
ev->ev_events = events;
|
|
59
|
+
ev->ev_res = 0;
|
|
60
|
+
ev->ev_flags = EVLIST_INIT;
|
|
61
|
+
ev->ev_ncalls = 0;
|
|
62
|
+
ev->ev_pncalls = NULL;
|
|
63
|
+
event_base_set(base, ev);
|
|
64
|
+
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static struct event *
|
|
69
|
+
event_new(struct event_base *base,
|
|
70
|
+
evutil_socket_t fd,
|
|
71
|
+
short events,
|
|
72
|
+
event_callback_fn cb,
|
|
73
|
+
void *arg) {
|
|
74
|
+
struct event *ev;
|
|
75
|
+
ev = malloc(sizeof(struct event));
|
|
76
|
+
if (ev == NULL) {
|
|
77
|
+
return NULL;
|
|
78
|
+
}
|
|
79
|
+
if (event_assign(ev, base, fd, events, cb, arg) < 0) {
|
|
80
|
+
free(ev);
|
|
81
|
+
return NULL;
|
|
82
|
+
}
|
|
83
|
+
return ev;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static void
|
|
87
|
+
event_free(struct event *ev)
|
|
88
|
+
{
|
|
89
|
+
/* make sure that this event won't be coming back to haunt us. */
|
|
90
|
+
free(ev);
|
|
91
|
+
|
|
92
|
+
}
|
|
93
|
+
static short
|
|
94
|
+
event_get_events(const struct event *ev)
|
|
95
|
+
{
|
|
96
|
+
return ev->ev_events;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
static event_callback_fn
|
|
100
|
+
event_get_callback(const struct event *ev)
|
|
101
|
+
{
|
|
102
|
+
return ev->ev_callback;
|
|
103
|
+
}
|
|
104
|
+
#endif
|
|
105
|
+
|
|
106
|
+
static void *lcb_io_create_event(struct lcb_io_opt_st *iops)
|
|
107
|
+
{
|
|
108
|
+
return event_new(((struct libevent_cookie *)iops->v.v2.cookie)->base,
|
|
109
|
+
INVALID_SOCKET, 0, NULL, NULL);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
static int lcb_io_update_event(struct lcb_io_opt_st *iops,
|
|
113
|
+
lcb_socket_t sock,
|
|
114
|
+
void *event,
|
|
115
|
+
short flags,
|
|
116
|
+
void *cb_data,
|
|
117
|
+
void (*handler)(lcb_socket_t sock,
|
|
118
|
+
short which,
|
|
119
|
+
void *cb_data))
|
|
120
|
+
{
|
|
121
|
+
flags |= EV_PERSIST;
|
|
122
|
+
if (flags == event_get_events(event) &&
|
|
123
|
+
handler == event_get_callback(event)) {
|
|
124
|
+
/* no change! */
|
|
125
|
+
return 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (event_pending(event, EV_READ | EV_WRITE, 0)) {
|
|
129
|
+
event_del(event);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
event_assign(event, ((struct libevent_cookie *)iops->v.v2.cookie)->base, sock, flags, handler, cb_data);
|
|
133
|
+
return event_add(event, NULL);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
static void lcb_io_delete_timer(struct lcb_io_opt_st *iops,
|
|
138
|
+
void *event)
|
|
139
|
+
{
|
|
140
|
+
(void)iops;
|
|
141
|
+
if (event_pending(event, EV_TIMEOUT, 0) != 0 && event_del(event) == -1) {
|
|
142
|
+
iops->v.v2.error = EINVAL;
|
|
143
|
+
}
|
|
144
|
+
event_assign(event, ((struct libevent_cookie *)iops->v.v2.cookie)->base, -1, 0, NULL, NULL);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
static int lcb_io_update_timer(struct lcb_io_opt_st *iops,
|
|
148
|
+
void *timer,
|
|
149
|
+
lcb_uint32_t usec,
|
|
150
|
+
void *cb_data,
|
|
151
|
+
void (*handler)(lcb_socket_t sock,
|
|
152
|
+
short which,
|
|
153
|
+
void *cb_data))
|
|
154
|
+
{
|
|
155
|
+
short flags = EV_TIMEOUT | EV_PERSIST;
|
|
156
|
+
struct timeval tmo;
|
|
157
|
+
if (flags == event_get_events(timer) &&
|
|
158
|
+
handler == event_get_callback(timer)) {
|
|
159
|
+
/* no change! */
|
|
160
|
+
return 0;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (event_pending(timer, EV_TIMEOUT, 0)) {
|
|
164
|
+
event_del(timer);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
event_assign(timer, ((struct libevent_cookie *)iops->v.v2.cookie)->base, -1, flags, handler, cb_data);
|
|
168
|
+
tmo.tv_sec = usec / 1000000;
|
|
169
|
+
tmo.tv_usec = usec % 1000000;
|
|
170
|
+
return event_add(timer, &tmo);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
static void lcb_io_destroy_event(struct lcb_io_opt_st *iops,
|
|
174
|
+
void *event)
|
|
175
|
+
{
|
|
176
|
+
(void)iops;
|
|
177
|
+
if (event_pending(event, EV_READ | EV_WRITE | EV_TIMEOUT, 0)) {
|
|
178
|
+
event_del(event);
|
|
179
|
+
}
|
|
180
|
+
event_free(event);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
static void lcb_io_delete_event(struct lcb_io_opt_st *iops,
|
|
184
|
+
lcb_socket_t sock,
|
|
185
|
+
void *event)
|
|
186
|
+
{
|
|
187
|
+
(void)iops;
|
|
188
|
+
(void)sock;
|
|
189
|
+
if (event_del(event) == -1) {
|
|
190
|
+
iops->v.v2.error = EINVAL;
|
|
191
|
+
}
|
|
192
|
+
event_assign(event, ((struct libevent_cookie *)iops->v.v2.cookie)->base, -1, 0, NULL, NULL);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
static void lcb_io_stop_event_loop(struct lcb_io_opt_st *iops)
|
|
196
|
+
{
|
|
197
|
+
event_base_loopbreak(((struct libevent_cookie *)iops->v.v2.cookie)->base);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
static void lcb_io_run_event_loop(struct lcb_io_opt_st *iops)
|
|
201
|
+
{
|
|
202
|
+
event_base_loop(((struct libevent_cookie *)iops->v.v2.cookie)->base, 0);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
static void lcb_io_tick_event_loop(struct lcb_io_opt_st *iops)
|
|
206
|
+
{
|
|
207
|
+
event_base_loop(((struct libevent_cookie *)iops->v.v2.cookie)->base,
|
|
208
|
+
EVLOOP_NONBLOCK);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
static void lcb_destroy_io_opts(struct lcb_io_opt_st *iops)
|
|
212
|
+
{
|
|
213
|
+
if (((struct libevent_cookie *)iops->v.v2.cookie)->allocated) {
|
|
214
|
+
event_base_free(((struct libevent_cookie *)iops->v.v2.cookie)->base);
|
|
215
|
+
}
|
|
216
|
+
free(iops->v.v2.cookie);
|
|
217
|
+
free(iops);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
static void
|
|
221
|
+
procs2_lnt_callback(int version, lcb_loop_procs *loop_procs,
|
|
222
|
+
lcb_timer_procs *timer_procs, lcb_bsd_procs *bsd_procs,
|
|
223
|
+
lcb_ev_procs *ev_procs, lcb_completion_procs *completion_procs,
|
|
224
|
+
lcb_iomodel_t *iomodel)
|
|
225
|
+
{
|
|
226
|
+
ev_procs->create = lcb_io_create_event;
|
|
227
|
+
ev_procs->destroy = lcb_io_destroy_event;
|
|
228
|
+
ev_procs->watch = lcb_io_update_event;
|
|
229
|
+
ev_procs->cancel = lcb_io_delete_event;
|
|
230
|
+
|
|
231
|
+
timer_procs->create = lcb_io_create_event;
|
|
232
|
+
timer_procs->destroy = lcb_io_destroy_event;
|
|
233
|
+
timer_procs->schedule = lcb_io_update_timer;
|
|
234
|
+
timer_procs->cancel = lcb_io_delete_timer;
|
|
235
|
+
|
|
236
|
+
loop_procs->start = lcb_io_run_event_loop;
|
|
237
|
+
loop_procs->stop = lcb_io_stop_event_loop;
|
|
238
|
+
loop_procs->tick = lcb_io_tick_event_loop;
|
|
239
|
+
|
|
240
|
+
*iomodel = LCB_IOMODEL_EVENT;
|
|
241
|
+
|
|
242
|
+
wire_lcb_bsd_impl2(bsd_procs, version);
|
|
243
|
+
(void)completion_procs;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
LIBCOUCHBASE_API
|
|
247
|
+
lcb_error_t lcb_create_libevent_io_opts(int version, lcb_io_opt_t *io, void *arg)
|
|
248
|
+
{
|
|
249
|
+
struct event_base *base = arg;
|
|
250
|
+
struct lcb_io_opt_st *ret;
|
|
251
|
+
struct libevent_cookie *cookie;
|
|
252
|
+
if (version != 0) {
|
|
253
|
+
return LCB_PLUGIN_VERSION_MISMATCH;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
ret = calloc(1, sizeof(*ret));
|
|
257
|
+
cookie = calloc(1, sizeof(*cookie));
|
|
258
|
+
if (ret == NULL || cookie == NULL) {
|
|
259
|
+
free(ret);
|
|
260
|
+
free(cookie);
|
|
261
|
+
return LCB_CLIENT_ENOMEM;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/* setup io iops! */
|
|
265
|
+
ret->version = 3;
|
|
266
|
+
ret->dlhandle = NULL;
|
|
267
|
+
ret->destructor = lcb_destroy_io_opts;
|
|
268
|
+
/* consider that struct isn't allocated by the library,
|
|
269
|
+
* `need_cleanup' flag might be set in lcb_create() */
|
|
270
|
+
ret->v.v3.need_cleanup = 0;
|
|
271
|
+
|
|
272
|
+
if (base == NULL) {
|
|
273
|
+
if ((cookie->base = event_base_new()) == NULL) {
|
|
274
|
+
free(ret);
|
|
275
|
+
free(cookie);
|
|
276
|
+
return LCB_CLIENT_ENOMEM;
|
|
277
|
+
}
|
|
278
|
+
cookie->allocated = 1;
|
|
279
|
+
} else {
|
|
280
|
+
cookie->base = base;
|
|
281
|
+
cookie->allocated = 0;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
ret->v.v3.cookie = cookie;
|
|
285
|
+
ret->v.v3.get_procs = procs2_lnt_callback;
|
|
286
|
+
|
|
287
|
+
/* For back-compat */
|
|
288
|
+
wire_lcb_bsd_impl(ret);
|
|
289
|
+
|
|
290
|
+
*io = ret;
|
|
291
|
+
return LCB_SUCCESS;
|
|
292
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
INSTALL(
|
|
2
|
+
FILES
|
|
3
|
+
plugin-libuv.c
|
|
4
|
+
plugin-internal.h
|
|
5
|
+
libuv_compat.h
|
|
6
|
+
DESTINATION
|
|
7
|
+
include/libcouchbase/plugins/io/libuv)
|
|
8
|
+
|
|
9
|
+
INSTALL(
|
|
10
|
+
FILES
|
|
11
|
+
libuv_io_opts.h
|
|
12
|
+
DESTINATION
|
|
13
|
+
include/libcouchbase)
|
|
14
|
+
|
|
15
|
+
IF(NOT HAVE_LIBUV OR LCB_NO_PLUGINS OR NOT LCB_BUILD_LIBUV)
|
|
16
|
+
RETURN()
|
|
17
|
+
ENDIF()
|
|
18
|
+
|
|
19
|
+
ADD_LIBRARY(couchbase_libuv SHARED plugin-libuv.c)
|
|
20
|
+
|
|
21
|
+
# The macros abstracting UV versions dynamically inject special signatures. We
|
|
22
|
+
# can't have the compiler whine about that.
|
|
23
|
+
|
|
24
|
+
# Unfortunately, Older GCC (EL5) barfs at this option.
|
|
25
|
+
#IF(CMAKE_COMPILER_IS_GNUCC)
|
|
26
|
+
# SET(_lcbuv_cflags "-Wno-unused-parameters")
|
|
27
|
+
#ELSE()
|
|
28
|
+
# SET(_lcbuv_cflags "")
|
|
29
|
+
#ENDIF()
|
|
30
|
+
SET_TARGET_PROPERTIES(couchbase_libuv
|
|
31
|
+
PROPERTIES
|
|
32
|
+
PREFIX "lib"
|
|
33
|
+
IMPORT_PREFIX "lib"
|
|
34
|
+
COMPILE_FLAGS "${CMAKE_C_FLAGS} ${LCB_CORE_FLAGS} ${_lcbuv_cflags}")
|
|
35
|
+
|
|
36
|
+
TARGET_LINK_LIBRARIES(couchbase_libuv ${LIBUV_LIBRARIES} couchbase)
|
|
37
|
+
INCLUDE_DIRECTORIES(AFTER ${LIBUV_INCLUDE_DIR})
|
|
38
|
+
ADD_DEFINITIONS(-DLIBCOUCHBASE_INTERNAL=1)
|
|
39
|
+
INSTALL(TARGETS
|
|
40
|
+
couchbase_libuv
|
|
41
|
+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
42
|
+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
@@ -0,0 +1,212 @@
|
|
|
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 LIBUV_COMPAT_H
|
|
19
|
+
#define LIBUV_COMPAT_H
|
|
20
|
+
|
|
21
|
+
#ifdef UV_VERSION_MAJOR
|
|
22
|
+
#ifndef UV_VERSION_PATCH
|
|
23
|
+
#define UV_VERSION_PATCH 0
|
|
24
|
+
#endif
|
|
25
|
+
#define UV_VERSION ((UV_VERSION_MAJOR << 16) | \
|
|
26
|
+
(UV_VERSION_MINOR << 8) | \
|
|
27
|
+
(UV_VERSION_PATCH))
|
|
28
|
+
#else
|
|
29
|
+
#define UV_VERSION 0x000b00
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#if defined(_WIN32) && defined(LIBCOUCHBASE_INTERNAL)
|
|
33
|
+
#include <libcouchbase/plugins/io/wsaerr.h>
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
#ifndef UNKNOWN
|
|
37
|
+
#define UNKNOWN -1
|
|
38
|
+
#endif
|
|
39
|
+
|
|
40
|
+
#ifndef EAIFAMNOSUPPORT
|
|
41
|
+
#define EAIFAMNOSUPPORT EAI_FAMILY
|
|
42
|
+
#endif
|
|
43
|
+
|
|
44
|
+
#ifndef EAISERVICE
|
|
45
|
+
#define EAISERVICE EAI_SERVICE
|
|
46
|
+
#endif
|
|
47
|
+
|
|
48
|
+
#ifndef EAI_SYSTEM
|
|
49
|
+
#define EAI_SYSTEM -11
|
|
50
|
+
#endif
|
|
51
|
+
#ifndef EADDRINFO
|
|
52
|
+
#define EADDRINFO EAI_SYSTEM
|
|
53
|
+
#endif
|
|
54
|
+
|
|
55
|
+
#ifndef EAISOCKTYPE
|
|
56
|
+
#define EAISOCKTYPE EAI_SOCKTYPE
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
#ifndef ECHARSET
|
|
60
|
+
#define ECHARSET 0
|
|
61
|
+
#endif
|
|
62
|
+
|
|
63
|
+
#ifndef EOF
|
|
64
|
+
#define EOF -1
|
|
65
|
+
#endif
|
|
66
|
+
|
|
67
|
+
#ifndef ENONET
|
|
68
|
+
#define ENONET ENETDOWN
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
#ifndef ESHUTDOWN
|
|
72
|
+
#define ESHUTDOWN WSAESHUTDOWN
|
|
73
|
+
#endif
|
|
74
|
+
|
|
75
|
+
#ifndef EHOSTDOWN
|
|
76
|
+
/* missing only on Windows */
|
|
77
|
+
#define EHOSTDOWN WSAEHOSTDOWN
|
|
78
|
+
#endif
|
|
79
|
+
|
|
80
|
+
/* Not all systems have these error codes */
|
|
81
|
+
#ifndef EAI_FAIL
|
|
82
|
+
#define EAI_FAIL (-1)
|
|
83
|
+
#endif
|
|
84
|
+
#ifndef EAI_CANCELED
|
|
85
|
+
#define EAI_CANCELED -101
|
|
86
|
+
#endif
|
|
87
|
+
#ifndef EAI_ADDRFAMILY
|
|
88
|
+
#define EAI_ADDRFAMILY -9
|
|
89
|
+
#endif
|
|
90
|
+
#ifndef EAI_BADHINTS
|
|
91
|
+
#define EAI_BADHINTS EAI_FAIL
|
|
92
|
+
#endif
|
|
93
|
+
#ifndef EAI_NODATA
|
|
94
|
+
#define EAI_NODATA EAI_FAIL
|
|
95
|
+
#endif
|
|
96
|
+
#ifndef EAI_PROTOCOL
|
|
97
|
+
#define EAI_PROTOCOL EAI_FAIL
|
|
98
|
+
#endif
|
|
99
|
+
#ifndef EAI_AGAIN
|
|
100
|
+
#define EAI_AGAIN EAI_FAIL
|
|
101
|
+
#endif
|
|
102
|
+
#ifndef EAI_BADFLAGS
|
|
103
|
+
#define EAI_BADFLAGS EAI_FAIL
|
|
104
|
+
#endif
|
|
105
|
+
#ifndef EAI_MEMORY
|
|
106
|
+
#define EAI_MEMORY EAI_FAIL
|
|
107
|
+
#endif
|
|
108
|
+
#ifndef EAI_OVERFLOW
|
|
109
|
+
#define EAI_OVERFLOW EAI_FAIL
|
|
110
|
+
#endif
|
|
111
|
+
|
|
112
|
+
#define OK 0
|
|
113
|
+
|
|
114
|
+
#if UV_VERSION < 0x000900
|
|
115
|
+
#define UVC_RUN_ONCE(l) uv_run_once(l)
|
|
116
|
+
#define UVC_RUN_DEFAULT(l) uv_run(l)
|
|
117
|
+
#else
|
|
118
|
+
#define UVC_RUN_ONCE(l) uv_run(l, UV_RUN_ONCE)
|
|
119
|
+
#define UVC_RUN_DEFAULT(l) uv_run(l, UV_RUN_DEFAULT)
|
|
120
|
+
#endif
|
|
121
|
+
|
|
122
|
+
#if UV_VERSION < 0x000b00
|
|
123
|
+
|
|
124
|
+
#define UVC_TCP_CONNECT(req, handle, addr, cb) \
|
|
125
|
+
uv_tcp_connect(req, handle, *(struct sockaddr_in *)addr, cb);
|
|
126
|
+
|
|
127
|
+
#define UVC_TCP_CONNECT6(req, handle, addr, cb) \
|
|
128
|
+
uv_tcp_connect6(req, handle, *(struct sockaddr_in6 *)addr, cb);
|
|
129
|
+
|
|
130
|
+
#define UVC_ALLOC_CB(func) \
|
|
131
|
+
uv_buf_t func(uv_handle_t *handle, size_t suggested_size)
|
|
132
|
+
|
|
133
|
+
#define UVC_ALLOC_CB_VARS() \
|
|
134
|
+
uv_buf_t _buf; uv_buf_t *buf = &_buf;
|
|
135
|
+
|
|
136
|
+
#define UVC_ALLOC_CB_RETURN() \
|
|
137
|
+
return _buf;
|
|
138
|
+
|
|
139
|
+
#define UVC_READ_CB(func) \
|
|
140
|
+
void func(uv_stream_t *stream, ssize_t nread, const uv_buf_t _buf)
|
|
141
|
+
|
|
142
|
+
#define UVC_READ_CB_VARS() \
|
|
143
|
+
const uv_buf_t *buf = &_buf;
|
|
144
|
+
|
|
145
|
+
#define UVC_TIMER_CB(func) \
|
|
146
|
+
void func(uv_timer_t *timer, int status)
|
|
147
|
+
|
|
148
|
+
static int uvc_uv2syserr(int status) {
|
|
149
|
+
#define X(errnum,errname,errdesc) \
|
|
150
|
+
if (status == UV_##errname) { return errname; }
|
|
151
|
+
UV_ERRNO_MAP(X);
|
|
152
|
+
#undef X
|
|
153
|
+
return 0;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
static int uvc_is_eof(uv_loop_t *loop, int error) {
|
|
157
|
+
error = uv_last_error(loop).code;
|
|
158
|
+
return error == UV_EOF;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
static int uvc_last_errno(uv_loop_t *loop, int error) {
|
|
162
|
+
int uverr = 0;
|
|
163
|
+
|
|
164
|
+
if (!error) {
|
|
165
|
+
return 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
uverr = uv_last_error(loop).code;
|
|
169
|
+
return uvc_uv2syserr(uverr);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
#else
|
|
173
|
+
|
|
174
|
+
#define UVC_TCP_CONNECT(req, handle, addr, cb) \
|
|
175
|
+
uv_tcp_connect(req, handle, addr, cb);
|
|
176
|
+
|
|
177
|
+
#define UVC_TCP_CONNECT6(req, handle, addr, cb) \
|
|
178
|
+
uv_tcp_connect(req, handle, addr, cb);
|
|
179
|
+
|
|
180
|
+
#define UVC_ALLOC_CB(func) \
|
|
181
|
+
void func(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf)
|
|
182
|
+
|
|
183
|
+
#define UVC_ALLOC_CB_VARS()
|
|
184
|
+
|
|
185
|
+
#define UVC_ALLOC_CB_RETURN()
|
|
186
|
+
|
|
187
|
+
#define UVC_READ_CB(func) \
|
|
188
|
+
void func(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf)
|
|
189
|
+
|
|
190
|
+
#define UVC_READ_CB_VARS()
|
|
191
|
+
|
|
192
|
+
#define UVC_TIMER_CB(func) \
|
|
193
|
+
void func(uv_timer_t *timer)
|
|
194
|
+
|
|
195
|
+
static int uv_uv2syserr(int status) {
|
|
196
|
+
#define X(name, desc) if (status == UV_##name) { return name; }
|
|
197
|
+
UV_ERRNO_MAP(X)
|
|
198
|
+
#undef X
|
|
199
|
+
return 0;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
static int uvc_last_errno(uv_loop_t *loop, int error) {
|
|
203
|
+
return uv_uv2syserr(error);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
static int uvc_is_eof(uv_loop_t *loop, int error) {
|
|
207
|
+
(void) loop;
|
|
208
|
+
return error == UV_EOF;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
#endif
|
|
212
|
+
#endif
|