@platformatic/rdkafka 4.0.0
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.
- package/.editorconfig +5 -0
- package/.jshintignore +1 -0
- package/.jshintrc +23 -0
- package/CONTRIBUTING.md +237 -0
- package/LICENSE.txt +21 -0
- package/Makefile +94 -0
- package/README.md +630 -0
- package/bench/consumer-raw-rdkafka.js +76 -0
- package/bench/consumer-subscribe.js +77 -0
- package/bench/kafka-consumer-stream.js +100 -0
- package/bench/producer-raw-rdkafka.js +125 -0
- package/bench/producer-rdkafka.js +117 -0
- package/bench/seed.sh +38 -0
- package/binding.gyp +155 -0
- package/ci/checks/librdkafka-correct-version.js +67 -0
- package/ci/checks/librdkafka-exists.js +13 -0
- package/ci/librdkafka-defs-generator.js +193 -0
- package/ci/prepublish.js +3 -0
- package/config.d.ts +1132 -0
- package/configure +15 -0
- package/cpplint.py +6325 -0
- package/deploy.enc +0 -0
- package/deps/librdkafka/.clang-format +136 -0
- package/deps/librdkafka/.clang-format-cpp +103 -0
- package/deps/librdkafka/.dir-locals.el +10 -0
- package/deps/librdkafka/.formatignore +33 -0
- package/deps/librdkafka/.gdbmacros +19 -0
- package/deps/librdkafka/.semaphore/project.yml +43 -0
- package/deps/librdkafka/.semaphore/project_public.yml +20 -0
- package/deps/librdkafka/.semaphore/semaphore.yml +355 -0
- package/deps/librdkafka/CHANGELOG.md +1738 -0
- package/deps/librdkafka/CMakeLists.txt +291 -0
- package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
- package/deps/librdkafka/CONFIGURATION.md +189 -0
- package/deps/librdkafka/CONTRIBUTING.md +431 -0
- package/deps/librdkafka/Doxyfile +2375 -0
- package/deps/librdkafka/INTRODUCTION.md +2173 -0
- package/deps/librdkafka/LICENSE +26 -0
- package/deps/librdkafka/LICENSE.cjson +22 -0
- package/deps/librdkafka/LICENSE.crc32c +28 -0
- package/deps/librdkafka/LICENSE.fnv1a +18 -0
- package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
- package/deps/librdkafka/LICENSE.lz4 +26 -0
- package/deps/librdkafka/LICENSE.murmur2 +25 -0
- package/deps/librdkafka/LICENSE.nanopb +22 -0
- package/deps/librdkafka/LICENSE.opentelemetry +203 -0
- package/deps/librdkafka/LICENSE.pycrc +23 -0
- package/deps/librdkafka/LICENSE.queue +31 -0
- package/deps/librdkafka/LICENSE.regexp +5 -0
- package/deps/librdkafka/LICENSE.snappy +36 -0
- package/deps/librdkafka/LICENSE.tinycthread +26 -0
- package/deps/librdkafka/LICENSE.wingetopt +49 -0
- package/deps/librdkafka/LICENSES.txt +625 -0
- package/deps/librdkafka/Makefile +124 -0
- package/deps/librdkafka/README.md +199 -0
- package/deps/librdkafka/README.win32 +26 -0
- package/deps/librdkafka/STATISTICS.md +624 -0
- package/deps/librdkafka/configure +214 -0
- package/deps/librdkafka/configure.self +331 -0
- package/deps/librdkafka/debian/changelog +111 -0
- package/deps/librdkafka/debian/compat +1 -0
- package/deps/librdkafka/debian/control +71 -0
- package/deps/librdkafka/debian/copyright +99 -0
- package/deps/librdkafka/debian/gbp.conf +9 -0
- package/deps/librdkafka/debian/librdkafka++1.install +1 -0
- package/deps/librdkafka/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/debian/librdkafka-dev.install +9 -0
- package/deps/librdkafka/debian/librdkafka1.docs +5 -0
- package/deps/librdkafka/debian/librdkafka1.install +1 -0
- package/deps/librdkafka/debian/librdkafka1.symbols +135 -0
- package/deps/librdkafka/debian/rules +19 -0
- package/deps/librdkafka/debian/source/format +1 -0
- package/deps/librdkafka/debian/watch +2 -0
- package/deps/librdkafka/dev-conf.sh +123 -0
- package/deps/librdkafka/examples/CMakeLists.txt +79 -0
- package/deps/librdkafka/examples/Makefile +167 -0
- package/deps/librdkafka/examples/README.md +42 -0
- package/deps/librdkafka/examples/alter_consumer_group_offsets.c +338 -0
- package/deps/librdkafka/examples/consumer.c +261 -0
- package/deps/librdkafka/examples/delete_records.c +233 -0
- package/deps/librdkafka/examples/describe_cluster.c +322 -0
- package/deps/librdkafka/examples/describe_consumer_groups.c +436 -0
- package/deps/librdkafka/examples/describe_topics.c +427 -0
- package/deps/librdkafka/examples/elect_leaders.c +317 -0
- package/deps/librdkafka/examples/globals.json +11 -0
- package/deps/librdkafka/examples/idempotent_producer.c +344 -0
- package/deps/librdkafka/examples/incremental_alter_configs.c +348 -0
- package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +961 -0
- package/deps/librdkafka/examples/list_consumer_group_offsets.c +359 -0
- package/deps/librdkafka/examples/list_consumer_groups.c +365 -0
- package/deps/librdkafka/examples/list_offsets.c +327 -0
- package/deps/librdkafka/examples/misc.c +287 -0
- package/deps/librdkafka/examples/openssl_engine_example.cpp +249 -0
- package/deps/librdkafka/examples/producer.c +251 -0
- package/deps/librdkafka/examples/producer.cpp +228 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.c +617 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.cpp +467 -0
- package/deps/librdkafka/examples/rdkafka_consume_batch.cpp +264 -0
- package/deps/librdkafka/examples/rdkafka_example.c +853 -0
- package/deps/librdkafka/examples/rdkafka_example.cpp +679 -0
- package/deps/librdkafka/examples/rdkafka_performance.c +1781 -0
- package/deps/librdkafka/examples/transactions-older-broker.c +668 -0
- package/deps/librdkafka/examples/transactions.c +665 -0
- package/deps/librdkafka/examples/user_scram.c +492 -0
- package/deps/librdkafka/examples/win_ssl_cert_store.cpp +395 -0
- package/deps/librdkafka/lds-gen.py +73 -0
- package/deps/librdkafka/mainpage.doxy +40 -0
- package/deps/librdkafka/mklove/Makefile.base +329 -0
- package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
- package/deps/librdkafka/mklove/modules/configure.base +2484 -0
- package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
- package/deps/librdkafka/mklove/modules/configure.cc +186 -0
- package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
- package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
- package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
- package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
- package/deps/librdkafka/mklove/modules/configure.host +132 -0
- package/deps/librdkafka/mklove/modules/configure.lib +49 -0
- package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
- package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
- package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
- package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
- package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
- package/deps/librdkafka/mklove/modules/configure.pic +16 -0
- package/deps/librdkafka/mklove/modules/configure.socket +20 -0
- package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
- package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
- package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
- package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
- package/deps/librdkafka/packaging/RELEASE.md +311 -0
- package/deps/librdkafka/packaging/alpine/build-alpine.sh +38 -0
- package/deps/librdkafka/packaging/archlinux/PKGBUILD +30 -0
- package/deps/librdkafka/packaging/cmake/Config.cmake.in +37 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindLZ4.cmake +38 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindZSTD.cmake +27 -0
- package/deps/librdkafka/packaging/cmake/Modules/LICENSE.FindZstd +178 -0
- package/deps/librdkafka/packaging/cmake/README.md +38 -0
- package/deps/librdkafka/packaging/cmake/config.h.in +52 -0
- package/deps/librdkafka/packaging/cmake/parseversion.cmake +60 -0
- package/deps/librdkafka/packaging/cmake/rdkafka.pc.in +12 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_64_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/c11threads_test.c +14 -0
- package/deps/librdkafka/packaging/cmake/try_compile/crc32c_hw_test.c +27 -0
- package/deps/librdkafka/packaging/cmake/try_compile/dlopen_test.c +11 -0
- package/deps/librdkafka/packaging/cmake/try_compile/libsasl2_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_darwin_test.c +6 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_freebsd_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_gnu_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rand_r_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rdkafka_setup.cmake +122 -0
- package/deps/librdkafka/packaging/cmake/try_compile/regex_test.c +10 -0
- package/deps/librdkafka/packaging/cmake/try_compile/strndup_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_64_test.c +8 -0
- package/deps/librdkafka/packaging/cp/README.md +13 -0
- package/deps/librdkafka/packaging/cp/check_features.c +64 -0
- package/deps/librdkafka/packaging/cp/verify-deb.sh +33 -0
- package/deps/librdkafka/packaging/cp/verify-packages.sh +48 -0
- package/deps/librdkafka/packaging/cp/verify-rpm.sh +39 -0
- package/deps/librdkafka/packaging/debian/changelog +66 -0
- package/deps/librdkafka/packaging/debian/compat +1 -0
- package/deps/librdkafka/packaging/debian/control +49 -0
- package/deps/librdkafka/packaging/debian/copyright +84 -0
- package/deps/librdkafka/packaging/debian/gbp.conf +9 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.dirs +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.install +6 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka.dsc +16 -0
- package/deps/librdkafka/packaging/debian/librdkafka1-dbg.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.dirs +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.install +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postinst.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postrm.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.symbols +64 -0
- package/deps/librdkafka/packaging/debian/rules +19 -0
- package/deps/librdkafka/packaging/debian/source/format +1 -0
- package/deps/librdkafka/packaging/debian/watch +2 -0
- package/deps/librdkafka/packaging/get_version.py +21 -0
- package/deps/librdkafka/packaging/homebrew/README.md +15 -0
- package/deps/librdkafka/packaging/homebrew/brew-update-pr.sh +31 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw-static.sh +52 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw.sh +21 -0
- package/deps/librdkafka/packaging/mingw-w64/run-tests.sh +6 -0
- package/deps/librdkafka/packaging/mingw-w64/semaphoreci-build.sh +38 -0
- package/deps/librdkafka/packaging/mingw-w64/travis-before-install.sh +20 -0
- package/deps/librdkafka/packaging/nuget/README.md +84 -0
- package/deps/librdkafka/packaging/nuget/artifact.py +177 -0
- package/deps/librdkafka/packaging/nuget/cleanup-s3.py +143 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/nugetpackage.py +278 -0
- package/deps/librdkafka/packaging/nuget/packaging.py +448 -0
- package/deps/librdkafka/packaging/nuget/push-to-nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/release.py +167 -0
- package/deps/librdkafka/packaging/nuget/requirements.txt +3 -0
- package/deps/librdkafka/packaging/nuget/staticpackage.py +178 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.nuspec +21 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.props +18 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.targets +19 -0
- package/deps/librdkafka/packaging/nuget/zfile/__init__.py +0 -0
- package/deps/librdkafka/packaging/nuget/zfile/zfile.py +98 -0
- package/deps/librdkafka/packaging/rpm/Makefile +92 -0
- package/deps/librdkafka/packaging/rpm/README.md +23 -0
- package/deps/librdkafka/packaging/rpm/el7-x86_64.cfg +40 -0
- package/deps/librdkafka/packaging/rpm/librdkafka.spec +118 -0
- package/deps/librdkafka/packaging/rpm/mock-on-docker.sh +96 -0
- package/deps/librdkafka/packaging/rpm/tests/Makefile +25 -0
- package/deps/librdkafka/packaging/rpm/tests/README.md +8 -0
- package/deps/librdkafka/packaging/rpm/tests/run-test.sh +42 -0
- package/deps/librdkafka/packaging/rpm/tests/test-on-docker.sh +56 -0
- package/deps/librdkafka/packaging/rpm/tests/test.c +77 -0
- package/deps/librdkafka/packaging/rpm/tests/test.cpp +34 -0
- package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +10 -0
- package/deps/librdkafka/packaging/tools/build-deb-package.sh +64 -0
- package/deps/librdkafka/packaging/tools/build-debian.sh +65 -0
- package/deps/librdkafka/packaging/tools/build-manylinux.sh +68 -0
- package/deps/librdkafka/packaging/tools/build-release-artifacts.sh +139 -0
- package/deps/librdkafka/packaging/tools/distro-build.sh +38 -0
- package/deps/librdkafka/packaging/tools/gh-release-checksums.py +39 -0
- package/deps/librdkafka/packaging/tools/rdutcoverage.sh +25 -0
- package/deps/librdkafka/packaging/tools/requirements.txt +2 -0
- package/deps/librdkafka/packaging/tools/style-format.sh +148 -0
- package/deps/librdkafka/service.yml +18 -0
- package/deps/librdkafka/src/CMakeLists.txt +374 -0
- package/deps/librdkafka/src/Makefile +103 -0
- package/deps/librdkafka/src/README.lz4.md +30 -0
- package/deps/librdkafka/src/cJSON.c +2834 -0
- package/deps/librdkafka/src/cJSON.h +398 -0
- package/deps/librdkafka/src/crc32c.c +430 -0
- package/deps/librdkafka/src/crc32c.h +38 -0
- package/deps/librdkafka/src/generate_proto.sh +66 -0
- package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
- package/deps/librdkafka/src/lz4.c +2727 -0
- package/deps/librdkafka/src/lz4.h +842 -0
- package/deps/librdkafka/src/lz4frame.c +2078 -0
- package/deps/librdkafka/src/lz4frame.h +692 -0
- package/deps/librdkafka/src/lz4frame_static.h +47 -0
- package/deps/librdkafka/src/lz4hc.c +1631 -0
- package/deps/librdkafka/src/lz4hc.h +413 -0
- package/deps/librdkafka/src/nanopb/pb.h +917 -0
- package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
- package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
- package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
- package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
- package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
- package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
- package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
- package/deps/librdkafka/src/queue.h +850 -0
- package/deps/librdkafka/src/rd.h +441 -0
- package/deps/librdkafka/src/rdaddr.c +255 -0
- package/deps/librdkafka/src/rdaddr.h +203 -0
- package/deps/librdkafka/src/rdatomic.h +226 -0
- package/deps/librdkafka/src/rdavg.h +259 -0
- package/deps/librdkafka/src/rdavl.c +210 -0
- package/deps/librdkafka/src/rdavl.h +250 -0
- package/deps/librdkafka/src/rdbase64.c +169 -0
- package/deps/librdkafka/src/rdbase64.h +41 -0
- package/deps/librdkafka/src/rdbuf.c +1884 -0
- package/deps/librdkafka/src/rdbuf.h +375 -0
- package/deps/librdkafka/src/rdcrc32.c +114 -0
- package/deps/librdkafka/src/rdcrc32.h +170 -0
- package/deps/librdkafka/src/rddl.c +179 -0
- package/deps/librdkafka/src/rddl.h +43 -0
- package/deps/librdkafka/src/rdendian.h +174 -0
- package/deps/librdkafka/src/rdfloat.h +67 -0
- package/deps/librdkafka/src/rdfnv1a.c +113 -0
- package/deps/librdkafka/src/rdfnv1a.h +35 -0
- package/deps/librdkafka/src/rdgz.c +120 -0
- package/deps/librdkafka/src/rdgz.h +46 -0
- package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
- package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
- package/deps/librdkafka/src/rdhttp.c +512 -0
- package/deps/librdkafka/src/rdhttp.h +83 -0
- package/deps/librdkafka/src/rdinterval.h +177 -0
- package/deps/librdkafka/src/rdkafka.c +5351 -0
- package/deps/librdkafka/src/rdkafka.h +10603 -0
- package/deps/librdkafka/src/rdkafka_admin.c +9417 -0
- package/deps/librdkafka/src/rdkafka_admin.h +619 -0
- package/deps/librdkafka/src/rdkafka_assignment.c +1010 -0
- package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
- package/deps/librdkafka/src/rdkafka_assignor.c +1786 -0
- package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
- package/deps/librdkafka/src/rdkafka_aux.c +409 -0
- package/deps/librdkafka/src/rdkafka_aux.h +174 -0
- package/deps/librdkafka/src/rdkafka_background.c +221 -0
- package/deps/librdkafka/src/rdkafka_broker.c +6186 -0
- package/deps/librdkafka/src/rdkafka_broker.h +686 -0
- package/deps/librdkafka/src/rdkafka_buf.c +540 -0
- package/deps/librdkafka/src/rdkafka_buf.h +1524 -0
- package/deps/librdkafka/src/rdkafka_cert.c +552 -0
- package/deps/librdkafka/src/rdkafka_cert.h +61 -0
- package/deps/librdkafka/src/rdkafka_cgrp.c +7262 -0
- package/deps/librdkafka/src/rdkafka_cgrp.h +443 -0
- package/deps/librdkafka/src/rdkafka_conf.c +4456 -0
- package/deps/librdkafka/src/rdkafka_conf.h +668 -0
- package/deps/librdkafka/src/rdkafka_confval.h +97 -0
- package/deps/librdkafka/src/rdkafka_coord.c +623 -0
- package/deps/librdkafka/src/rdkafka_coord.h +132 -0
- package/deps/librdkafka/src/rdkafka_error.c +228 -0
- package/deps/librdkafka/src/rdkafka_error.h +80 -0
- package/deps/librdkafka/src/rdkafka_event.c +502 -0
- package/deps/librdkafka/src/rdkafka_event.h +126 -0
- package/deps/librdkafka/src/rdkafka_feature.c +461 -0
- package/deps/librdkafka/src/rdkafka_feature.h +102 -0
- package/deps/librdkafka/src/rdkafka_fetcher.c +1402 -0
- package/deps/librdkafka/src/rdkafka_fetcher.h +44 -0
- package/deps/librdkafka/src/rdkafka_header.c +220 -0
- package/deps/librdkafka/src/rdkafka_header.h +76 -0
- package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
- package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
- package/deps/librdkafka/src/rdkafka_int.h +1222 -0
- package/deps/librdkafka/src/rdkafka_interceptor.c +819 -0
- package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
- package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
- package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
- package/deps/librdkafka/src/rdkafka_metadata.c +2124 -0
- package/deps/librdkafka/src/rdkafka_metadata.h +341 -0
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +977 -0
- package/deps/librdkafka/src/rdkafka_mock.c +2885 -0
- package/deps/librdkafka/src/rdkafka_mock.h +491 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +710 -0
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +2817 -0
- package/deps/librdkafka/src/rdkafka_mock_int.h +591 -0
- package/deps/librdkafka/src/rdkafka_msg.c +2573 -0
- package/deps/librdkafka/src/rdkafka_msg.h +614 -0
- package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
- package/deps/librdkafka/src/rdkafka_msgset.h +98 -0
- package/deps/librdkafka/src/rdkafka_msgset_reader.c +1806 -0
- package/deps/librdkafka/src/rdkafka_msgset_writer.c +1470 -0
- package/deps/librdkafka/src/rdkafka_offset.c +1537 -0
- package/deps/librdkafka/src/rdkafka_offset.h +150 -0
- package/deps/librdkafka/src/rdkafka_op.c +997 -0
- package/deps/librdkafka/src/rdkafka_op.h +834 -0
- package/deps/librdkafka/src/rdkafka_partition.c +4801 -0
- package/deps/librdkafka/src/rdkafka_partition.h +1173 -0
- package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
- package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
- package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
- package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
- package/deps/librdkafka/src/rdkafka_proto.h +733 -0
- package/deps/librdkafka/src/rdkafka_protocol.h +127 -0
- package/deps/librdkafka/src/rdkafka_queue.c +1153 -0
- package/deps/librdkafka/src/rdkafka_queue.h +1201 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
- package/deps/librdkafka/src/rdkafka_request.c +6817 -0
- package/deps/librdkafka/src/rdkafka_request.h +709 -0
- package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
- package/deps/librdkafka/src/rdkafka_sasl.c +528 -0
- package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
- package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
- package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1829 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +589 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +37 -0
- package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
- package/deps/librdkafka/src/rdkafka_sasl_scram.c +857 -0
- package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
- package/deps/librdkafka/src/rdkafka_ssl.c +1904 -0
- package/deps/librdkafka/src/rdkafka_ssl.h +64 -0
- package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4781 -0
- package/deps/librdkafka/src/rdkafka_subscription.c +278 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +703 -0
- package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1053 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.c +993 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.h +301 -0
- package/deps/librdkafka/src/rdkafka_timer.c +402 -0
- package/deps/librdkafka/src/rdkafka_timer.h +117 -0
- package/deps/librdkafka/src/rdkafka_topic.c +2078 -0
- package/deps/librdkafka/src/rdkafka_topic.h +328 -0
- package/deps/librdkafka/src/rdkafka_transport.c +1297 -0
- package/deps/librdkafka/src/rdkafka_transport.h +94 -0
- package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.c +3251 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
- package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
- package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
- package/deps/librdkafka/src/rdlist.c +576 -0
- package/deps/librdkafka/src/rdlist.h +434 -0
- package/deps/librdkafka/src/rdlog.c +89 -0
- package/deps/librdkafka/src/rdlog.h +41 -0
- package/deps/librdkafka/src/rdmap.c +503 -0
- package/deps/librdkafka/src/rdmap.h +492 -0
- package/deps/librdkafka/src/rdmurmur2.c +167 -0
- package/deps/librdkafka/src/rdmurmur2.h +35 -0
- package/deps/librdkafka/src/rdports.c +61 -0
- package/deps/librdkafka/src/rdports.h +38 -0
- package/deps/librdkafka/src/rdposix.h +250 -0
- package/deps/librdkafka/src/rdrand.c +70 -0
- package/deps/librdkafka/src/rdrand.h +43 -0
- package/deps/librdkafka/src/rdregex.c +156 -0
- package/deps/librdkafka/src/rdregex.h +43 -0
- package/deps/librdkafka/src/rdsignal.h +57 -0
- package/deps/librdkafka/src/rdstring.c +645 -0
- package/deps/librdkafka/src/rdstring.h +98 -0
- package/deps/librdkafka/src/rdsysqueue.h +404 -0
- package/deps/librdkafka/src/rdtime.h +325 -0
- package/deps/librdkafka/src/rdtypes.h +86 -0
- package/deps/librdkafka/src/rdunittest.c +532 -0
- package/deps/librdkafka/src/rdunittest.h +230 -0
- package/deps/librdkafka/src/rdvarint.c +134 -0
- package/deps/librdkafka/src/rdvarint.h +165 -0
- package/deps/librdkafka/src/rdwin32.h +382 -0
- package/deps/librdkafka/src/rdxxhash.c +1030 -0
- package/deps/librdkafka/src/rdxxhash.h +328 -0
- package/deps/librdkafka/src/regexp.c +1347 -0
- package/deps/librdkafka/src/regexp.h +41 -0
- package/deps/librdkafka/src/snappy.c +1866 -0
- package/deps/librdkafka/src/snappy.h +62 -0
- package/deps/librdkafka/src/snappy_compat.h +138 -0
- package/deps/librdkafka/src/statistics_schema.json +444 -0
- package/deps/librdkafka/src/tinycthread.c +932 -0
- package/deps/librdkafka/src/tinycthread.h +503 -0
- package/deps/librdkafka/src/tinycthread_extra.c +175 -0
- package/deps/librdkafka/src/tinycthread_extra.h +208 -0
- package/deps/librdkafka/src/win32_config.h +58 -0
- package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
- package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
- package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
- package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
- package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
- package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
- package/deps/librdkafka/src-cpp/Makefile +55 -0
- package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
- package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
- package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
- package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
- package/deps/librdkafka/src-cpp/README.md +16 -0
- package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
- package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
- package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp.h +3771 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
- package/deps/librdkafka/tests/0000-unittests.c +72 -0
- package/deps/librdkafka/tests/0001-multiobj.c +98 -0
- package/deps/librdkafka/tests/0002-unkpart.c +244 -0
- package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
- package/deps/librdkafka/tests/0004-conf.c +867 -0
- package/deps/librdkafka/tests/0005-order.c +133 -0
- package/deps/librdkafka/tests/0006-symbols.c +163 -0
- package/deps/librdkafka/tests/0007-autotopic.c +136 -0
- package/deps/librdkafka/tests/0008-reqacks.c +179 -0
- package/deps/librdkafka/tests/0009-mock_cluster.c +96 -0
- package/deps/librdkafka/tests/0011-produce_batch.c +752 -0
- package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
- package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
- package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
- package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
- package/deps/librdkafka/tests/0016-client_swname.c +166 -0
- package/deps/librdkafka/tests/0017-compression.c +142 -0
- package/deps/librdkafka/tests/0018-cgrp_term.c +333 -0
- package/deps/librdkafka/tests/0019-list_groups.c +289 -0
- package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
- package/deps/librdkafka/tests/0021-rkt_destroy.c +71 -0
- package/deps/librdkafka/tests/0022-consume_batch.c +276 -0
- package/deps/librdkafka/tests/0025-timers.c +147 -0
- package/deps/librdkafka/tests/0026-consume_pause.c +549 -0
- package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
- package/deps/librdkafka/tests/0029-assign_offset.c +204 -0
- package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
- package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
- package/deps/librdkafka/tests/0033-regex_subscribe.c +520 -0
- package/deps/librdkafka/tests/0034-offset_reset.c +377 -0
- package/deps/librdkafka/tests/0035-api_version.c +73 -0
- package/deps/librdkafka/tests/0036-partial_fetch.c +86 -0
- package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
- package/deps/librdkafka/tests/0038-performance.c +120 -0
- package/deps/librdkafka/tests/0039-event.c +284 -0
- package/deps/librdkafka/tests/0040-io_event.c +251 -0
- package/deps/librdkafka/tests/0041-fetch_max_bytes.c +96 -0
- package/deps/librdkafka/tests/0042-many_topics.c +252 -0
- package/deps/librdkafka/tests/0043-no_connection.c +77 -0
- package/deps/librdkafka/tests/0044-partition_cnt.c +93 -0
- package/deps/librdkafka/tests/0045-subscribe_update.c +746 -0
- package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
- package/deps/librdkafka/tests/0047-partial_buf_tmout.c +97 -0
- package/deps/librdkafka/tests/0048-partitioner.c +283 -0
- package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
- package/deps/librdkafka/tests/0050-subscribe_adds.c +144 -0
- package/deps/librdkafka/tests/0051-assign_adds.c +125 -0
- package/deps/librdkafka/tests/0052-msg_timestamps.c +220 -0
- package/deps/librdkafka/tests/0053-stats_cb.cpp +535 -0
- package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
- package/deps/librdkafka/tests/0055-producer_latency.c +366 -0
- package/deps/librdkafka/tests/0056-balanced_group_mt.c +311 -0
- package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
- package/deps/librdkafka/tests/0058-log.cpp +123 -0
- package/deps/librdkafka/tests/0059-bsearch.cpp +237 -0
- package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
- package/deps/librdkafka/tests/0061-consumer_lag.cpp +275 -0
- package/deps/librdkafka/tests/0062-stats_event.c +126 -0
- package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
- package/deps/librdkafka/tests/0064-interceptors.c +481 -0
- package/deps/librdkafka/tests/0065-yield.cpp +140 -0
- package/deps/librdkafka/tests/0066-plugins.cpp +129 -0
- package/deps/librdkafka/tests/0067-empty_topic.cpp +148 -0
- package/deps/librdkafka/tests/0068-produce_timeout.c +138 -0
- package/deps/librdkafka/tests/0069-consumer_add_parts.c +123 -0
- package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
- package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
- package/deps/librdkafka/tests/0073-headers.c +381 -0
- package/deps/librdkafka/tests/0074-producev.c +87 -0
- package/deps/librdkafka/tests/0075-retry.c +253 -0
- package/deps/librdkafka/tests/0076-produce_retry.c +450 -0
- package/deps/librdkafka/tests/0077-compaction.c +357 -0
- package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
- package/deps/librdkafka/tests/0079-fork.c +93 -0
- package/deps/librdkafka/tests/0080-admin_ut.c +3065 -0
- package/deps/librdkafka/tests/0081-admin.c +5333 -0
- package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +133 -0
- package/deps/librdkafka/tests/0083-cb_event.c +228 -0
- package/deps/librdkafka/tests/0084-destroy_flags.c +212 -0
- package/deps/librdkafka/tests/0085-headers.cpp +388 -0
- package/deps/librdkafka/tests/0086-purge.c +335 -0
- package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
- package/deps/librdkafka/tests/0089-max_poll_interval.c +506 -0
- package/deps/librdkafka/tests/0090-idempotence.c +172 -0
- package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +297 -0
- package/deps/librdkafka/tests/0092-mixed_msgver.c +97 -0
- package/deps/librdkafka/tests/0093-holb.c +197 -0
- package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +230 -0
- package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
- package/deps/librdkafka/tests/0097-ssl_verify.cpp +466 -0
- package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
- package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
- package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
- package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
- package/deps/librdkafka/tests/0102-static_group_rebalance.c +535 -0
- package/deps/librdkafka/tests/0103-transactions.c +1383 -0
- package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +624 -0
- package/deps/librdkafka/tests/0105-transactions_mock.c +3923 -0
- package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +297 -0
- package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
- package/deps/librdkafka/tests/0109-auto_create_topics.cpp +218 -0
- package/deps/librdkafka/tests/0110-batch_size.cpp +183 -0
- package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
- package/deps/librdkafka/tests/0112-assign_unknown_part.c +98 -0
- package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3329 -0
- package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
- package/deps/librdkafka/tests/0115-producer_auth.cpp +179 -0
- package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +214 -0
- package/deps/librdkafka/tests/0117-mock_errors.c +321 -0
- package/deps/librdkafka/tests/0118-commit_rebalance.c +121 -0
- package/deps/librdkafka/tests/0119-consumer_auth.cpp +148 -0
- package/deps/librdkafka/tests/0120-asymmetric_subscription.c +180 -0
- package/deps/librdkafka/tests/0121-clusterid.c +115 -0
- package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
- package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
- package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
- package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
- package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +213 -0
- package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
- package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +125 -0
- package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +78 -0
- package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
- package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
- package/deps/librdkafka/tests/0132-strategy_ordering.c +171 -0
- package/deps/librdkafka/tests/0133-ssl_keys.c +128 -0
- package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
- package/deps/librdkafka/tests/0135-sasl_credentials.cpp +143 -0
- package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
- package/deps/librdkafka/tests/0137-barrier_batch_consume.c +609 -0
- package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
- package/deps/librdkafka/tests/0139-offset_validation_mock.c +442 -0
- package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
- package/deps/librdkafka/tests/0142-reauthentication.c +495 -0
- package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +553 -0
- package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
- package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
- package/deps/librdkafka/tests/0146-metadata_mock.c +444 -0
- package/deps/librdkafka/tests/0150-telemetry_mock.c +648 -0
- package/deps/librdkafka/tests/1000-unktopic.c +164 -0
- package/deps/librdkafka/tests/8000-idle.cpp +60 -0
- package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
- package/deps/librdkafka/tests/CMakeLists.txt +164 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +266 -0
- package/deps/librdkafka/tests/Makefile +182 -0
- package/deps/librdkafka/tests/README.md +509 -0
- package/deps/librdkafka/tests/autotest.sh +33 -0
- package/deps/librdkafka/tests/backtrace.gdb +30 -0
- package/deps/librdkafka/tests/broker_version_tests.py +315 -0
- package/deps/librdkafka/tests/buildbox.sh +17 -0
- package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
- package/deps/librdkafka/tests/cluster_testing.py +191 -0
- package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
- package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
- package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +109 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.key +34 -0
- package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +93 -0
- package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
- package/deps/librdkafka/tests/fuzzers/README.md +31 -0
- package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
- package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
- package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
- package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
- package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
- package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
- package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
- package/deps/librdkafka/tests/java/Makefile +12 -0
- package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
- package/deps/librdkafka/tests/java/README.md +14 -0
- package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
- package/deps/librdkafka/tests/java/run-class.sh +11 -0
- package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
- package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
- package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
- package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
- package/deps/librdkafka/tests/performance_plot.py +115 -0
- package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
- package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
- package/deps/librdkafka/tests/requirements.txt +2 -0
- package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-test.sh +140 -0
- package/deps/librdkafka/tests/rusage.c +249 -0
- package/deps/librdkafka/tests/sasl_test.py +289 -0
- package/deps/librdkafka/tests/scenarios/README.md +6 -0
- package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
- package/deps/librdkafka/tests/scenarios/default.json +5 -0
- package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
- package/deps/librdkafka/tests/sockem.c +801 -0
- package/deps/librdkafka/tests/sockem.h +85 -0
- package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
- package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
- package/deps/librdkafka/tests/test.c +7318 -0
- package/deps/librdkafka/tests/test.conf.example +27 -0
- package/deps/librdkafka/tests/test.h +979 -0
- package/deps/librdkafka/tests/testcpp.cpp +126 -0
- package/deps/librdkafka/tests/testcpp.h +360 -0
- package/deps/librdkafka/tests/testshared.h +402 -0
- package/deps/librdkafka/tests/tools/README.md +4 -0
- package/deps/librdkafka/tests/tools/stats/README.md +21 -0
- package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
- package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
- package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
- package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
- package/deps/librdkafka/tests/until-fail.sh +87 -0
- package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
- package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
- package/deps/librdkafka/vcpkg.json +23 -0
- package/deps/librdkafka/win32/README.md +5 -0
- package/deps/librdkafka/win32/build-package.bat +3 -0
- package/deps/librdkafka/win32/build.bat +19 -0
- package/deps/librdkafka/win32/common.vcxproj +84 -0
- package/deps/librdkafka/win32/install-openssl.ps1 +33 -0
- package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
- package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
- package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
- package/deps/librdkafka/win32/librdkafka.sln +226 -0
- package/deps/librdkafka/win32/librdkafka.vcxproj +276 -0
- package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
- package/deps/librdkafka/win32/msbuild.ps1 +15 -0
- package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
- package/deps/librdkafka/win32/package-zip.ps1 +46 -0
- package/deps/librdkafka/win32/packages/repositories.config +4 -0
- package/deps/librdkafka/win32/push-package.bat +4 -0
- package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
- package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
- package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
- package/deps/librdkafka/win32/setup-msys2.ps1 +31 -0
- package/deps/librdkafka/win32/setup-vcpkg.ps1 +12 -0
- package/deps/librdkafka/win32/tests/test.conf.example +25 -0
- package/deps/librdkafka/win32/tests/tests.vcxproj +247 -0
- package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
- package/deps/librdkafka/win32/wingetopt.c +564 -0
- package/deps/librdkafka/win32/wingetopt.h +100 -0
- package/deps/librdkafka/win32/wintime.h +33 -0
- package/deps/librdkafka.gyp +62 -0
- package/deps/windows-install.py +73 -0
- package/docker-compose.yml +23 -0
- package/e2e/admin.spec.js +187 -0
- package/e2e/both.spec.js +726 -0
- package/e2e/consumer.spec.js +386 -0
- package/e2e/groups.spec.js +132 -0
- package/e2e/listener.js +51 -0
- package/e2e/producer-transaction.spec.js +333 -0
- package/e2e/producer.spec.js +283 -0
- package/errors.d.ts +347 -0
- package/examples/consumer-flow.md +76 -0
- package/examples/consumer.md +45 -0
- package/examples/docker-alpine.md +30 -0
- package/examples/high-level-producer.md +32 -0
- package/examples/metadata.md +27 -0
- package/examples/oauthbearer-default-flow.md +80 -0
- package/examples/producer-cluster.md +103 -0
- package/examples/producer.md +73 -0
- package/index.d.ts +357 -0
- package/lib/admin.js +233 -0
- package/lib/client.js +578 -0
- package/lib/error.js +472 -0
- package/lib/index.js +34 -0
- package/lib/kafka-consumer-stream.js +397 -0
- package/lib/kafka-consumer.js +698 -0
- package/lib/producer/high-level-producer.js +323 -0
- package/lib/producer-stream.js +307 -0
- package/lib/producer.js +375 -0
- package/lib/tools/ref-counter.js +52 -0
- package/lib/topic-partition.js +88 -0
- package/lib/topic.js +42 -0
- package/lib/util.js +29 -0
- package/librdkafka.js +12 -0
- package/make_docs.sh +59 -0
- package/package.json +53 -0
- package/renovate.json +30 -0
- package/run_docker.sh +42 -0
- package/src/admin.cc +624 -0
- package/src/admin.h +78 -0
- package/src/binding.cc +73 -0
- package/src/binding.h +25 -0
- package/src/callbacks.cc +614 -0
- package/src/callbacks.h +265 -0
- package/src/common.cc +582 -0
- package/src/common.h +134 -0
- package/src/config.cc +167 -0
- package/src/config.h +45 -0
- package/src/connection.cc +482 -0
- package/src/connection.h +108 -0
- package/src/errors.cc +96 -0
- package/src/errors.h +53 -0
- package/src/kafka-consumer.cc +1457 -0
- package/src/kafka-consumer.h +136 -0
- package/src/per-isolate-data.cc +57 -0
- package/src/per-isolate-data.h +39 -0
- package/src/producer.cc +873 -0
- package/src/producer.h +125 -0
- package/src/topic.cc +180 -0
- package/src/topic.h +56 -0
- package/src/workers.cc +1245 -0
- package/src/workers.h +511 -0
- package/test/binding.spec.js +66 -0
- package/test/consumer.spec.js +91 -0
- package/test/error.spec.js +8 -0
- package/test/index.spec.js +8 -0
- package/test/kafka-consumer-stream.spec.js +298 -0
- package/test/kafka-consumer-worker.js +51 -0
- package/test/kafka-consumer.spec.js +86 -0
- package/test/mocha.opts +1 -0
- package/test/mock.js +55 -0
- package/test/producer/high-level-producer.spec.js +496 -0
- package/test/producer-stream.spec.js +723 -0
- package/test/producer-worker.js +53 -0
- package/test/producer.spec.js +120 -0
- package/test/tools/ref-counter.spec.js +53 -0
- package/test/topic-partition.spec.js +104 -0
- package/test/util.spec.js +46 -0
- package/util/configure.js +30 -0
- package/util/get-env.js +6 -0
- package/util/test-compile.js +11 -0
- package/util/test-producer-delivery.js +100 -0
- package/win_install.ps1 +2 -0
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librd - Rapid Development C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2012-2022, Magnus Edenhill
|
|
5
|
+
* 2023, Confluent Inc.
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
12
|
+
* this list of conditions and the following disclaimer.
|
|
13
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
14
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
15
|
+
* and/or other materials provided with the distribution.
|
|
16
|
+
*
|
|
17
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
18
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
19
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
20
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
21
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
22
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
23
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
24
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
25
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
26
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
27
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
#ifndef _RD_H_
|
|
32
|
+
#define _RD_H_
|
|
33
|
+
|
|
34
|
+
#ifndef _WIN32
|
|
35
|
+
#ifndef _GNU_SOURCE
|
|
36
|
+
#define _GNU_SOURCE /* for strndup() */
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
#if defined(__APPLE__) && !defined(_DARWIN_C_SOURCE)
|
|
40
|
+
#define _DARWIN_C_SOURCE /* for strlcpy, pthread_setname_np, etc */
|
|
41
|
+
#endif
|
|
42
|
+
|
|
43
|
+
#define __need_IOV_MAX
|
|
44
|
+
#ifndef _POSIX_C_SOURCE
|
|
45
|
+
#define _POSIX_C_SOURCE 200809L /* for timespec on solaris */
|
|
46
|
+
#endif
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
#include <stdio.h>
|
|
50
|
+
#include <stdlib.h>
|
|
51
|
+
#include <string.h>
|
|
52
|
+
#include <errno.h>
|
|
53
|
+
#include <time.h>
|
|
54
|
+
#include <assert.h>
|
|
55
|
+
#include <limits.h>
|
|
56
|
+
|
|
57
|
+
#include "tinycthread.h"
|
|
58
|
+
#include "rdsysqueue.h"
|
|
59
|
+
|
|
60
|
+
#ifdef _WIN32
|
|
61
|
+
/* Visual Studio */
|
|
62
|
+
#include "win32_config.h"
|
|
63
|
+
#else
|
|
64
|
+
/* POSIX / UNIX based systems */
|
|
65
|
+
#include "../config.h" /* mklove output */
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
#ifdef _WIN32
|
|
69
|
+
/* Win32/Visual Studio */
|
|
70
|
+
#include "rdwin32.h"
|
|
71
|
+
|
|
72
|
+
#else
|
|
73
|
+
/* POSIX / UNIX based systems */
|
|
74
|
+
#include "rdposix.h"
|
|
75
|
+
#endif
|
|
76
|
+
|
|
77
|
+
#include "rdtypes.h"
|
|
78
|
+
|
|
79
|
+
#if WITH_SYSLOG
|
|
80
|
+
#include <syslog.h>
|
|
81
|
+
#else
|
|
82
|
+
#define LOG_EMERG 0
|
|
83
|
+
#define LOG_ALERT 1
|
|
84
|
+
#define LOG_CRIT 2
|
|
85
|
+
#define LOG_ERR 3
|
|
86
|
+
#define LOG_WARNING 4
|
|
87
|
+
#define LOG_NOTICE 5
|
|
88
|
+
#define LOG_INFO 6
|
|
89
|
+
#define LOG_DEBUG 7
|
|
90
|
+
#endif
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
/* Debug assert, only enabled with --enable-devel */
|
|
94
|
+
#if ENABLE_DEVEL == 1
|
|
95
|
+
#define rd_dassert(cond) rd_assert(cond)
|
|
96
|
+
#else
|
|
97
|
+
#define rd_dassert(cond) \
|
|
98
|
+
do { \
|
|
99
|
+
} while (0)
|
|
100
|
+
#endif
|
|
101
|
+
|
|
102
|
+
#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
|
|
103
|
+
/** Function attribute to indicate that a sentinel NULL is required at the
|
|
104
|
+
* end of the va-arg input list. */
|
|
105
|
+
#define RD_SENTINEL __attribute__((__sentinel__))
|
|
106
|
+
#else
|
|
107
|
+
#define RD_SENTINEL
|
|
108
|
+
#endif
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
/** Assert if reached */
|
|
112
|
+
#define RD_NOTREACHED() rd_assert(!*"/* NOTREACHED */ violated")
|
|
113
|
+
|
|
114
|
+
/** Assert if reached */
|
|
115
|
+
#define RD_BUG(...) \
|
|
116
|
+
do { \
|
|
117
|
+
fprintf(stderr, \
|
|
118
|
+
"INTERNAL ERROR: librdkafka %s:%d: ", __FUNCTION__, \
|
|
119
|
+
__LINE__); \
|
|
120
|
+
fprintf(stderr, __VA_ARGS__); \
|
|
121
|
+
fprintf(stderr, "\n"); \
|
|
122
|
+
rd_assert(!*"INTERNAL ERROR IN LIBRDKAFKA"); \
|
|
123
|
+
} while (0)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Allocator wrappers.
|
|
129
|
+
* We serve under the premise that if a (small) memory
|
|
130
|
+
* allocation fails all hope is lost and the application
|
|
131
|
+
* will fail anyway, so no need to handle it handsomely.
|
|
132
|
+
*/
|
|
133
|
+
static RD_INLINE RD_UNUSED void *rd_calloc(size_t num, size_t sz) {
|
|
134
|
+
void *p = calloc(num, sz);
|
|
135
|
+
rd_assert(p);
|
|
136
|
+
return p;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
static RD_INLINE RD_UNUSED void *rd_malloc(size_t sz) {
|
|
140
|
+
void *p = malloc(sz);
|
|
141
|
+
rd_assert(p);
|
|
142
|
+
return p;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
static RD_INLINE RD_UNUSED void *rd_realloc(void *ptr, size_t sz) {
|
|
146
|
+
void *p = realloc(ptr, sz);
|
|
147
|
+
rd_assert(p);
|
|
148
|
+
return p;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
static RD_INLINE RD_UNUSED void rd_free(void *ptr) {
|
|
152
|
+
free(ptr);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
static RD_INLINE RD_UNUSED char *rd_strdup(const char *s) {
|
|
156
|
+
#ifndef _WIN32
|
|
157
|
+
char *n = strdup(s);
|
|
158
|
+
#else
|
|
159
|
+
char *n = _strdup(s);
|
|
160
|
+
#endif
|
|
161
|
+
rd_assert(n);
|
|
162
|
+
return n;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
static RD_INLINE RD_UNUSED char *rd_strndup(const char *s, size_t len) {
|
|
166
|
+
#if HAVE_STRNDUP
|
|
167
|
+
char *n = strndup(s, len);
|
|
168
|
+
rd_assert(n);
|
|
169
|
+
#else
|
|
170
|
+
char *n = (char *)rd_malloc(len + 1);
|
|
171
|
+
rd_assert(n);
|
|
172
|
+
memcpy(n, s, len);
|
|
173
|
+
n[len] = '\0';
|
|
174
|
+
#endif
|
|
175
|
+
return n;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
/*
|
|
181
|
+
* Portability
|
|
182
|
+
*/
|
|
183
|
+
|
|
184
|
+
#ifdef strndupa
|
|
185
|
+
#define rd_strndupa(DESTPTR, PTR, LEN) (*(DESTPTR) = strndupa(PTR, LEN))
|
|
186
|
+
#else
|
|
187
|
+
#define rd_strndupa(DESTPTR, PTR, LEN) \
|
|
188
|
+
do { \
|
|
189
|
+
const char *_src = (PTR); \
|
|
190
|
+
size_t _srclen = (LEN); \
|
|
191
|
+
char *_dst = rd_alloca(_srclen + 1); \
|
|
192
|
+
memcpy(_dst, _src, _srclen); \
|
|
193
|
+
_dst[_srclen] = '\0'; \
|
|
194
|
+
*(DESTPTR) = _dst; \
|
|
195
|
+
} while (0)
|
|
196
|
+
#endif
|
|
197
|
+
|
|
198
|
+
#ifdef strdupa
|
|
199
|
+
#define rd_strdupa(DESTPTR, PTR) (*(DESTPTR) = strdupa(PTR))
|
|
200
|
+
#else
|
|
201
|
+
#define rd_strdupa(DESTPTR, PTR) \
|
|
202
|
+
do { \
|
|
203
|
+
const char *_src1 = (PTR); \
|
|
204
|
+
size_t _srclen1 = strlen(_src1); \
|
|
205
|
+
rd_strndupa(DESTPTR, _src1, _srclen1); \
|
|
206
|
+
} while (0)
|
|
207
|
+
#endif
|
|
208
|
+
|
|
209
|
+
#ifndef IOV_MAX
|
|
210
|
+
#ifdef __APPLE__
|
|
211
|
+
/* Some versions of MacOSX dont have IOV_MAX */
|
|
212
|
+
#define IOV_MAX 1024
|
|
213
|
+
#elif defined(_WIN32) || defined(__GNU__)
|
|
214
|
+
/* There is no IOV_MAX on MSVC or GNU but it is used internally in librdkafka */
|
|
215
|
+
#define IOV_MAX 1024
|
|
216
|
+
#else
|
|
217
|
+
#error "IOV_MAX not defined"
|
|
218
|
+
#endif
|
|
219
|
+
#endif
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
/* Round/align X upwards to STRIDE, which must be power of 2. */
|
|
223
|
+
#define RD_ROUNDUP(X, STRIDE) (((X) + ((STRIDE)-1)) & ~(STRIDE - 1))
|
|
224
|
+
|
|
225
|
+
#define RD_ARRAY_SIZE(A) (sizeof((A)) / sizeof(*(A)))
|
|
226
|
+
#define RD_ARRAYSIZE(A) RD_ARRAY_SIZE(A)
|
|
227
|
+
#define RD_SIZEOF(TYPE, MEMBER) sizeof(((TYPE *)NULL)->MEMBER)
|
|
228
|
+
#define RD_OFFSETOF(TYPE, MEMBER) ((size_t) & (((TYPE *)NULL)->MEMBER))
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Returns the 'I'th array element from static sized array 'A'
|
|
232
|
+
* or NULL if 'I' is out of range.
|
|
233
|
+
* var-args is an optional prefix to provide the correct return type.
|
|
234
|
+
*/
|
|
235
|
+
#define RD_ARRAY_ELEM(A, I, ...) \
|
|
236
|
+
((unsigned int)(I) < RD_ARRAY_SIZE(A) ? __VA_ARGS__(A)[(I)] : NULL)
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
#define RD_STRINGIFY(X) #X
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
#define RD_MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
244
|
+
#define RD_MAX(a, b) ((a) > (b) ? (a) : (b))
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Cap an integer (of any type) to reside within the defined limit.
|
|
249
|
+
*/
|
|
250
|
+
#define RD_INT_CAP(val, low, hi) \
|
|
251
|
+
((val) < (low) ? low : ((val) > (hi) ? (hi) : (val)))
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Allocate 'size' bytes, copy 'src', return pointer to new memory.
|
|
257
|
+
*
|
|
258
|
+
* Use rd_free() to free the returned pointer.
|
|
259
|
+
*/
|
|
260
|
+
static RD_INLINE RD_UNUSED void *rd_memdup(const void *src, size_t size) {
|
|
261
|
+
void *dst = rd_malloc(size);
|
|
262
|
+
memcpy(dst, src, size);
|
|
263
|
+
return dst;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* @brief Memset &OBJ to 0, does automatic sizeof(OBJ).
|
|
268
|
+
*/
|
|
269
|
+
#define RD_MEMZERO(OBJ) memset(&(OBJ), 0, sizeof(OBJ))
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Generic refcnt interface
|
|
274
|
+
*/
|
|
275
|
+
|
|
276
|
+
#if !HAVE_ATOMICS_32
|
|
277
|
+
#define RD_REFCNT_USE_LOCKS 1
|
|
278
|
+
#endif
|
|
279
|
+
|
|
280
|
+
#ifdef RD_REFCNT_USE_LOCKS
|
|
281
|
+
typedef struct rd_refcnt_t {
|
|
282
|
+
mtx_t lock;
|
|
283
|
+
int v;
|
|
284
|
+
} rd_refcnt_t;
|
|
285
|
+
#else
|
|
286
|
+
typedef rd_atomic32_t rd_refcnt_t;
|
|
287
|
+
#endif
|
|
288
|
+
|
|
289
|
+
#ifdef RD_REFCNT_USE_LOCKS
|
|
290
|
+
static RD_INLINE RD_UNUSED int rd_refcnt_init(rd_refcnt_t *R, int v) {
|
|
291
|
+
int r;
|
|
292
|
+
mtx_init(&R->lock, mtx_plain);
|
|
293
|
+
mtx_lock(&R->lock);
|
|
294
|
+
r = R->v = v;
|
|
295
|
+
mtx_unlock(&R->lock);
|
|
296
|
+
return r;
|
|
297
|
+
}
|
|
298
|
+
#else
|
|
299
|
+
#define rd_refcnt_init(R, v) rd_atomic32_init(R, v)
|
|
300
|
+
#endif
|
|
301
|
+
|
|
302
|
+
#ifdef RD_REFCNT_USE_LOCKS
|
|
303
|
+
static RD_INLINE RD_UNUSED void rd_refcnt_destroy(rd_refcnt_t *R) {
|
|
304
|
+
mtx_lock(&R->lock);
|
|
305
|
+
rd_assert(R->v == 0);
|
|
306
|
+
mtx_unlock(&R->lock);
|
|
307
|
+
|
|
308
|
+
mtx_destroy(&R->lock);
|
|
309
|
+
}
|
|
310
|
+
#else
|
|
311
|
+
#define rd_refcnt_destroy(R) \
|
|
312
|
+
do { \
|
|
313
|
+
} while (0)
|
|
314
|
+
#endif
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
#ifdef RD_REFCNT_USE_LOCKS
|
|
318
|
+
static RD_INLINE RD_UNUSED int rd_refcnt_set(rd_refcnt_t *R, int v) {
|
|
319
|
+
int r;
|
|
320
|
+
mtx_lock(&R->lock);
|
|
321
|
+
r = R->v = v;
|
|
322
|
+
mtx_unlock(&R->lock);
|
|
323
|
+
return r;
|
|
324
|
+
}
|
|
325
|
+
#else
|
|
326
|
+
#define rd_refcnt_set(R, v) rd_atomic32_set(R, v)
|
|
327
|
+
#endif
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
#ifdef RD_REFCNT_USE_LOCKS
|
|
331
|
+
static RD_INLINE RD_UNUSED int rd_refcnt_add0(rd_refcnt_t *R) {
|
|
332
|
+
int r;
|
|
333
|
+
mtx_lock(&R->lock);
|
|
334
|
+
r = ++(R->v);
|
|
335
|
+
mtx_unlock(&R->lock);
|
|
336
|
+
return r;
|
|
337
|
+
}
|
|
338
|
+
#else
|
|
339
|
+
#define rd_refcnt_add0(R) rd_atomic32_add(R, 1)
|
|
340
|
+
#endif
|
|
341
|
+
|
|
342
|
+
static RD_INLINE RD_UNUSED int rd_refcnt_sub0(rd_refcnt_t *R) {
|
|
343
|
+
int r;
|
|
344
|
+
#ifdef RD_REFCNT_USE_LOCKS
|
|
345
|
+
mtx_lock(&R->lock);
|
|
346
|
+
r = --(R->v);
|
|
347
|
+
mtx_unlock(&R->lock);
|
|
348
|
+
#else
|
|
349
|
+
r = rd_atomic32_sub(R, 1);
|
|
350
|
+
#endif
|
|
351
|
+
if (r < 0)
|
|
352
|
+
rd_assert(!*"refcnt sub-zero");
|
|
353
|
+
return r;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
#ifdef RD_REFCNT_USE_LOCKS
|
|
357
|
+
static RD_INLINE RD_UNUSED int rd_refcnt_get(rd_refcnt_t *R) {
|
|
358
|
+
int r;
|
|
359
|
+
mtx_lock(&R->lock);
|
|
360
|
+
r = R->v;
|
|
361
|
+
mtx_unlock(&R->lock);
|
|
362
|
+
return r;
|
|
363
|
+
}
|
|
364
|
+
#else
|
|
365
|
+
#define rd_refcnt_get(R) rd_atomic32_get(R)
|
|
366
|
+
#endif
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* A wrapper for decreasing refcount and calling a destroy function
|
|
370
|
+
* when refcnt reaches 0.
|
|
371
|
+
*/
|
|
372
|
+
#define rd_refcnt_destroywrapper(REFCNT, DESTROY_CALL) \
|
|
373
|
+
do { \
|
|
374
|
+
if (rd_refcnt_sub(REFCNT) > 0) \
|
|
375
|
+
break; \
|
|
376
|
+
DESTROY_CALL; \
|
|
377
|
+
} while (0)
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
#define rd_refcnt_destroywrapper2(REFCNT, WHAT, DESTROY_CALL) \
|
|
381
|
+
do { \
|
|
382
|
+
if (rd_refcnt_sub2(REFCNT, WHAT) > 0) \
|
|
383
|
+
break; \
|
|
384
|
+
DESTROY_CALL; \
|
|
385
|
+
} while (0)
|
|
386
|
+
|
|
387
|
+
#if ENABLE_REFCNT_DEBUG
|
|
388
|
+
#define rd_refcnt_add_fl(FUNC, LINE, R) \
|
|
389
|
+
(fprintf(stderr, "REFCNT DEBUG: %-35s %d +1: %16p: %s:%d\n", #R, \
|
|
390
|
+
rd_refcnt_get(R), (R), (FUNC), (LINE)), \
|
|
391
|
+
rd_refcnt_add0(R))
|
|
392
|
+
|
|
393
|
+
#define rd_refcnt_add(R) rd_refcnt_add_fl(__FUNCTION__, __LINE__, (R))
|
|
394
|
+
|
|
395
|
+
#define rd_refcnt_add2(R, WHAT) \
|
|
396
|
+
do { \
|
|
397
|
+
fprintf(stderr, \
|
|
398
|
+
"REFCNT DEBUG: %-35s %d +1: %16p: %16s: %s:%d\n", #R, \
|
|
399
|
+
rd_refcnt_get(R), (R), WHAT, __FUNCTION__, __LINE__), \
|
|
400
|
+
rd_refcnt_add0(R); \
|
|
401
|
+
} while (0)
|
|
402
|
+
|
|
403
|
+
#define rd_refcnt_sub2(R, WHAT) \
|
|
404
|
+
(fprintf(stderr, "REFCNT DEBUG: %-35s %d -1: %16p: %16s: %s:%d\n", #R, \
|
|
405
|
+
rd_refcnt_get(R), (R), WHAT, __FUNCTION__, __LINE__), \
|
|
406
|
+
rd_refcnt_sub0(R))
|
|
407
|
+
|
|
408
|
+
#define rd_refcnt_sub(R) \
|
|
409
|
+
(fprintf(stderr, "REFCNT DEBUG: %-35s %d -1: %16p: %s:%d\n", #R, \
|
|
410
|
+
rd_refcnt_get(R), (R), __FUNCTION__, __LINE__), \
|
|
411
|
+
rd_refcnt_sub0(R))
|
|
412
|
+
|
|
413
|
+
#else
|
|
414
|
+
#define rd_refcnt_add_fl(FUNC, LINE, R) rd_refcnt_add0(R)
|
|
415
|
+
#define rd_refcnt_add(R) rd_refcnt_add0(R)
|
|
416
|
+
#define rd_refcnt_sub(R) rd_refcnt_sub0(R)
|
|
417
|
+
#endif
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
#define RD_IF_FREE(PTR, FUNC) \
|
|
422
|
+
do { \
|
|
423
|
+
if ((PTR)) \
|
|
424
|
+
FUNC(PTR); \
|
|
425
|
+
} while (0)
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
#define RD_INTERFACE_CALL(i, name, ...) (i->name(i->opaque, __VA_ARGS__))
|
|
429
|
+
|
|
430
|
+
#define RD_CEIL_INTEGER_DIVISION(X, DEN) (((X) + ((DEN)-1)) / (DEN))
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* @brief Utility types to hold memory,size tuple.
|
|
434
|
+
*/
|
|
435
|
+
|
|
436
|
+
typedef struct rd_chariov_s {
|
|
437
|
+
char *ptr;
|
|
438
|
+
size_t size;
|
|
439
|
+
} rd_chariov_t;
|
|
440
|
+
|
|
441
|
+
#endif /* _RD_H_ */
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librd - Rapid Development C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2012-2022, Magnus Edenhill
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
#include "rd.h"
|
|
32
|
+
#include "rdaddr.h"
|
|
33
|
+
#include "rdrand.h"
|
|
34
|
+
|
|
35
|
+
#ifdef _WIN32
|
|
36
|
+
#include <ws2tcpip.h>
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
const char *rd_sockaddr2str(const void *addr, int flags) {
|
|
40
|
+
const rd_sockaddr_inx_t *a = (const rd_sockaddr_inx_t *)addr;
|
|
41
|
+
static RD_TLS char ret[32][256];
|
|
42
|
+
static RD_TLS int reti = 0;
|
|
43
|
+
char portstr[32];
|
|
44
|
+
int of = 0;
|
|
45
|
+
int niflags = NI_NUMERICSERV;
|
|
46
|
+
int r;
|
|
47
|
+
|
|
48
|
+
reti = (reti + 1) % 32;
|
|
49
|
+
|
|
50
|
+
switch (a->sinx_family) {
|
|
51
|
+
case AF_INET:
|
|
52
|
+
case AF_INET6:
|
|
53
|
+
if (flags & RD_SOCKADDR2STR_F_FAMILY)
|
|
54
|
+
of += rd_snprintf(&ret[reti][of],
|
|
55
|
+
sizeof(ret[reti]) - of, "ipv%i#",
|
|
56
|
+
a->sinx_family == AF_INET ? 4 : 6);
|
|
57
|
+
|
|
58
|
+
if ((flags & RD_SOCKADDR2STR_F_PORT) &&
|
|
59
|
+
a->sinx_family == AF_INET6)
|
|
60
|
+
ret[reti][of++] = '[';
|
|
61
|
+
|
|
62
|
+
if (!(flags & RD_SOCKADDR2STR_F_RESOLVE))
|
|
63
|
+
niflags |= NI_NUMERICHOST;
|
|
64
|
+
|
|
65
|
+
retry:
|
|
66
|
+
if ((r = getnameinfo(
|
|
67
|
+
(const struct sockaddr *)a, RD_SOCKADDR_INX_LEN(a),
|
|
68
|
+
|
|
69
|
+
ret[reti] + of, sizeof(ret[reti]) - of,
|
|
70
|
+
|
|
71
|
+
(flags & RD_SOCKADDR2STR_F_PORT) ? portstr : NULL,
|
|
72
|
+
|
|
73
|
+
(flags & RD_SOCKADDR2STR_F_PORT) ? sizeof(portstr) : 0,
|
|
74
|
+
|
|
75
|
+
niflags))) {
|
|
76
|
+
|
|
77
|
+
if (r == EAI_AGAIN && !(niflags & NI_NUMERICHOST)) {
|
|
78
|
+
/* If unable to resolve name, retry without
|
|
79
|
+
* name resolution. */
|
|
80
|
+
niflags |= NI_NUMERICHOST;
|
|
81
|
+
goto retry;
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
if (flags & RD_SOCKADDR2STR_F_PORT) {
|
|
88
|
+
size_t len = strlen(ret[reti]);
|
|
89
|
+
rd_snprintf(
|
|
90
|
+
ret[reti] + len, sizeof(ret[reti]) - len, "%s:%s",
|
|
91
|
+
a->sinx_family == AF_INET6 ? "]" : "", portstr);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return ret[reti];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
/* Error-case */
|
|
99
|
+
rd_snprintf(ret[reti], sizeof(ret[reti]), "<unsupported:%s>",
|
|
100
|
+
rd_family2str(a->sinx_family));
|
|
101
|
+
|
|
102
|
+
return ret[reti];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
const char *rd_addrinfo_prepare(const char *nodesvc, char **node, char **svc) {
|
|
107
|
+
static RD_TLS char snode[256];
|
|
108
|
+
static RD_TLS char ssvc[64];
|
|
109
|
+
const char *t;
|
|
110
|
+
const char *svct = NULL;
|
|
111
|
+
size_t nodelen = 0;
|
|
112
|
+
|
|
113
|
+
*snode = '\0';
|
|
114
|
+
*ssvc = '\0';
|
|
115
|
+
|
|
116
|
+
if (*nodesvc == '[') {
|
|
117
|
+
/* "[host]".. (enveloped node name) */
|
|
118
|
+
if (!(t = strchr(nodesvc, ']')))
|
|
119
|
+
return "Missing close-']'";
|
|
120
|
+
nodesvc++;
|
|
121
|
+
nodelen = t - nodesvc;
|
|
122
|
+
svct = t + 1;
|
|
123
|
+
|
|
124
|
+
} else if (*nodesvc == ':' && *(nodesvc + 1) != ':') {
|
|
125
|
+
/* ":".. (port only) */
|
|
126
|
+
nodelen = 0;
|
|
127
|
+
svct = nodesvc;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if ((svct = strrchr(svct ? svct : nodesvc, ':')) &&
|
|
131
|
+
(*(svct - 1) != ':') && *(++svct)) {
|
|
132
|
+
/* Optional ":service" definition. */
|
|
133
|
+
if (strlen(svct) >= sizeof(ssvc))
|
|
134
|
+
return "Service name too long";
|
|
135
|
+
strcpy(ssvc, svct);
|
|
136
|
+
if (!nodelen)
|
|
137
|
+
nodelen = svct - nodesvc - 1;
|
|
138
|
+
|
|
139
|
+
} else if (!nodelen)
|
|
140
|
+
nodelen = strlen(nodesvc);
|
|
141
|
+
|
|
142
|
+
if (nodelen) {
|
|
143
|
+
/* Truncate nodename if necessary. */
|
|
144
|
+
nodelen = RD_MIN(nodelen, sizeof(snode) - 1);
|
|
145
|
+
memcpy(snode, nodesvc, nodelen);
|
|
146
|
+
snode[nodelen] = '\0';
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
*node = snode;
|
|
150
|
+
*svc = ssvc;
|
|
151
|
+
|
|
152
|
+
return NULL;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
rd_sockaddr_list_t *
|
|
158
|
+
rd_getaddrinfo(const char *nodesvc,
|
|
159
|
+
const char *defsvc,
|
|
160
|
+
int flags,
|
|
161
|
+
int family,
|
|
162
|
+
int socktype,
|
|
163
|
+
int protocol,
|
|
164
|
+
int (*resolve_cb)(const char *node,
|
|
165
|
+
const char *service,
|
|
166
|
+
const struct addrinfo *hints,
|
|
167
|
+
struct addrinfo **res,
|
|
168
|
+
void *opaque),
|
|
169
|
+
void *opaque,
|
|
170
|
+
const char **errstr) {
|
|
171
|
+
struct addrinfo hints;
|
|
172
|
+
memset(&hints, 0, sizeof(hints));
|
|
173
|
+
hints.ai_family = family;
|
|
174
|
+
hints.ai_socktype = socktype;
|
|
175
|
+
hints.ai_protocol = protocol;
|
|
176
|
+
hints.ai_flags = flags;
|
|
177
|
+
|
|
178
|
+
struct addrinfo *ais, *ai;
|
|
179
|
+
char *node, *svc;
|
|
180
|
+
int r;
|
|
181
|
+
int cnt = 0;
|
|
182
|
+
rd_sockaddr_list_t *rsal;
|
|
183
|
+
|
|
184
|
+
if ((*errstr = rd_addrinfo_prepare(nodesvc, &node, &svc))) {
|
|
185
|
+
errno = EINVAL;
|
|
186
|
+
return NULL;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (*svc)
|
|
190
|
+
defsvc = svc;
|
|
191
|
+
|
|
192
|
+
if (resolve_cb) {
|
|
193
|
+
r = resolve_cb(node, defsvc, &hints, &ais, opaque);
|
|
194
|
+
} else {
|
|
195
|
+
r = getaddrinfo(node, defsvc, &hints, &ais);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (r) {
|
|
199
|
+
#ifdef EAI_SYSTEM
|
|
200
|
+
if (r == EAI_SYSTEM)
|
|
201
|
+
#else
|
|
202
|
+
if (0)
|
|
203
|
+
#endif
|
|
204
|
+
*errstr = rd_strerror(errno);
|
|
205
|
+
else {
|
|
206
|
+
#ifdef _WIN32
|
|
207
|
+
*errstr = gai_strerrorA(r);
|
|
208
|
+
#else
|
|
209
|
+
*errstr = gai_strerror(r);
|
|
210
|
+
#endif
|
|
211
|
+
errno = EFAULT;
|
|
212
|
+
}
|
|
213
|
+
return NULL;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* Count number of addresses */
|
|
217
|
+
for (ai = ais; ai != NULL; ai = ai->ai_next)
|
|
218
|
+
cnt++;
|
|
219
|
+
|
|
220
|
+
if (cnt == 0) {
|
|
221
|
+
/* unlikely? */
|
|
222
|
+
if (resolve_cb)
|
|
223
|
+
resolve_cb(NULL, NULL, NULL, &ais, opaque);
|
|
224
|
+
else
|
|
225
|
+
freeaddrinfo(ais);
|
|
226
|
+
errno = ENOENT;
|
|
227
|
+
*errstr = "No addresses";
|
|
228
|
+
return NULL;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
rsal = rd_calloc(1, sizeof(*rsal) + (sizeof(*rsal->rsal_addr) * cnt));
|
|
233
|
+
|
|
234
|
+
for (ai = ais; ai != NULL; ai = ai->ai_next)
|
|
235
|
+
memcpy(&rsal->rsal_addr[rsal->rsal_cnt++], ai->ai_addr,
|
|
236
|
+
ai->ai_addrlen);
|
|
237
|
+
|
|
238
|
+
if (resolve_cb)
|
|
239
|
+
resolve_cb(NULL, NULL, NULL, &ais, opaque);
|
|
240
|
+
else
|
|
241
|
+
freeaddrinfo(ais);
|
|
242
|
+
|
|
243
|
+
/* Shuffle address list for proper round-robin */
|
|
244
|
+
if (!(flags & RD_AI_NOSHUFFLE))
|
|
245
|
+
rd_array_shuffle(rsal->rsal_addr, rsal->rsal_cnt,
|
|
246
|
+
sizeof(*rsal->rsal_addr));
|
|
247
|
+
|
|
248
|
+
return rsal;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
void rd_sockaddr_list_destroy(rd_sockaddr_list_t *rsal) {
|
|
254
|
+
rd_free(rsal);
|
|
255
|
+
}
|