@point3/node-rdkafka 3.6.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.
- package/LICENSE.txt +20 -0
- package/README.md +636 -0
- package/binding.gyp +154 -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/.github/CODEOWNERS +1 -0
- package/deps/librdkafka/.github/ISSUE_TEMPLATE +34 -0
- package/deps/librdkafka/.semaphore/run-all-tests.yml +77 -0
- package/deps/librdkafka/.semaphore/semaphore-integration.yml +250 -0
- package/deps/librdkafka/.semaphore/semaphore.yml +378 -0
- package/deps/librdkafka/.semaphore/verify-linux-packages.yml +41 -0
- package/deps/librdkafka/CHANGELOG.md +2208 -0
- package/deps/librdkafka/CMakeLists.txt +291 -0
- package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
- package/deps/librdkafka/CONFIGURATION.md +209 -0
- package/deps/librdkafka/CONTRIBUTING.md +431 -0
- package/deps/librdkafka/Doxyfile +2375 -0
- package/deps/librdkafka/INTRODUCTION.md +2481 -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 +125 -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 +271 -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 +455 -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 +347 -0
- package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +945 -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 +248 -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 +491 -0
- package/deps/librdkafka/examples/win_ssl_cert_store.cpp +396 -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 +319 -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 +16 -0
- package/deps/librdkafka/packaging/cp/check_features.c +72 -0
- package/deps/librdkafka/packaging/cp/verify-deb.sh +33 -0
- package/deps/librdkafka/packaging/cp/verify-packages.sh +69 -0
- package/deps/librdkafka/packaging/cp/verify-rpm.sh +32 -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/docs +5 -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/export-variables.sh +13 -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/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/Dockerfile +31 -0
- package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +12 -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/run-in-docker.sh +28 -0
- package/deps/librdkafka/packaging/tools/run-integration-tests.sh +31 -0
- package/deps/librdkafka/packaging/tools/run-style-check.sh +4 -0
- package/deps/librdkafka/packaging/tools/style-format.sh +149 -0
- package/deps/librdkafka/packaging/tools/update_rpcs_max_versions.py +100 -0
- package/deps/librdkafka/service.yml +172 -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 +584 -0
- package/deps/librdkafka/src/rdaddr.c +255 -0
- package/deps/librdkafka/src/rdaddr.h +202 -0
- package/deps/librdkafka/src/rdatomic.h +230 -0
- package/deps/librdkafka/src/rdavg.h +260 -0
- package/deps/librdkafka/src/rdavl.c +210 -0
- package/deps/librdkafka/src/rdavl.h +250 -0
- package/deps/librdkafka/src/rdbase64.c +200 -0
- package/deps/librdkafka/src/rdbase64.h +43 -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 +175 -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 +830 -0
- package/deps/librdkafka/src/rdhttp.h +101 -0
- package/deps/librdkafka/src/rdinterval.h +177 -0
- package/deps/librdkafka/src/rdkafka.c +5505 -0
- package/deps/librdkafka/src/rdkafka.h +10686 -0
- package/deps/librdkafka/src/rdkafka_admin.c +9794 -0
- package/deps/librdkafka/src/rdkafka_admin.h +661 -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 +6337 -0
- package/deps/librdkafka/src/rdkafka_broker.h +744 -0
- package/deps/librdkafka/src/rdkafka_buf.c +543 -0
- package/deps/librdkafka/src/rdkafka_buf.h +1525 -0
- package/deps/librdkafka/src/rdkafka_cert.c +576 -0
- package/deps/librdkafka/src/rdkafka_cert.h +62 -0
- package/deps/librdkafka/src/rdkafka_cgrp.c +7587 -0
- package/deps/librdkafka/src/rdkafka_cgrp.h +477 -0
- package/deps/librdkafka/src/rdkafka_conf.c +4880 -0
- package/deps/librdkafka/src/rdkafka_conf.h +732 -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 +898 -0
- package/deps/librdkafka/src/rdkafka_feature.h +104 -0
- package/deps/librdkafka/src/rdkafka_fetcher.c +1422 -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 +1260 -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 +2209 -0
- package/deps/librdkafka/src/rdkafka_metadata.h +345 -0
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
- package/deps/librdkafka/src/rdkafka_mock.c +3661 -0
- package/deps/librdkafka/src/rdkafka_mock.h +610 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1876 -0
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +3113 -0
- package/deps/librdkafka/src/rdkafka_mock_int.h +710 -0
- package/deps/librdkafka/src/rdkafka_msg.c +2589 -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 +1474 -0
- package/deps/librdkafka/src/rdkafka_offset.c +1565 -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 +858 -0
- package/deps/librdkafka/src/rdkafka_partition.c +4896 -0
- package/deps/librdkafka/src/rdkafka_partition.h +1182 -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 +736 -0
- package/deps/librdkafka/src/rdkafka_protocol.h +128 -0
- package/deps/librdkafka/src/rdkafka_queue.c +1230 -0
- package/deps/librdkafka/src/rdkafka_queue.h +1220 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
- package/deps/librdkafka/src/rdkafka_request.c +7089 -0
- package/deps/librdkafka/src/rdkafka_request.h +732 -0
- package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
- package/deps/librdkafka/src/rdkafka_sasl.c +530 -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 +1833 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1666 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +47 -0
- package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
- package/deps/librdkafka/src/rdkafka_sasl_scram.c +858 -0
- package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
- package/deps/librdkafka/src/rdkafka_ssl.c +2129 -0
- package/deps/librdkafka/src/rdkafka_ssl.h +86 -0
- package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4785 -0
- package/deps/librdkafka/src/rdkafka_subscription.c +278 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +760 -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 +997 -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 +2161 -0
- package/deps/librdkafka/src/rdkafka_topic.h +334 -0
- package/deps/librdkafka/src/rdkafka_transport.c +1309 -0
- package/deps/librdkafka/src/rdkafka_transport.h +99 -0
- package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.c +3256 -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 +508 -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 +80 -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 +356 -0
- package/deps/librdkafka/src/rdtypes.h +86 -0
- package/deps/librdkafka/src/rdunittest.c +549 -0
- package/deps/librdkafka/src/rdunittest.h +232 -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 +1352 -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 +199 -0
- package/deps/librdkafka/src/tinycthread_extra.h +212 -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 +3797 -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 +102 -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 +934 -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 +97 -0
- package/deps/librdkafka/tests/0011-produce_batch.c +753 -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 +181 -0
- package/deps/librdkafka/tests/0017-compression.c +140 -0
- package/deps/librdkafka/tests/0018-cgrp_term.c +338 -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 +72 -0
- package/deps/librdkafka/tests/0022-consume_batch.c +279 -0
- package/deps/librdkafka/tests/0025-timers.c +147 -0
- package/deps/librdkafka/tests/0026-consume_pause.c +547 -0
- package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
- package/deps/librdkafka/tests/0029-assign_offset.c +202 -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 +536 -0
- package/deps/librdkafka/tests/0034-offset_reset.c +398 -0
- package/deps/librdkafka/tests/0035-api_version.c +73 -0
- package/deps/librdkafka/tests/0036-partial_fetch.c +87 -0
- package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
- package/deps/librdkafka/tests/0038-performance.c +121 -0
- package/deps/librdkafka/tests/0039-event.c +284 -0
- package/deps/librdkafka/tests/0040-io_event.c +257 -0
- package/deps/librdkafka/tests/0041-fetch_max_bytes.c +97 -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 +94 -0
- package/deps/librdkafka/tests/0045-subscribe_update.c +1010 -0
- package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
- package/deps/librdkafka/tests/0047-partial_buf_tmout.c +98 -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 +145 -0
- package/deps/librdkafka/tests/0051-assign_adds.c +126 -0
- package/deps/librdkafka/tests/0052-msg_timestamps.c +238 -0
- package/deps/librdkafka/tests/0053-stats_cb.cpp +527 -0
- package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
- package/deps/librdkafka/tests/0055-producer_latency.c +539 -0
- package/deps/librdkafka/tests/0056-balanced_group_mt.c +315 -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 +241 -0
- package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
- package/deps/librdkafka/tests/0061-consumer_lag.cpp +295 -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 +151 -0
- package/deps/librdkafka/tests/0068-produce_timeout.c +136 -0
- package/deps/librdkafka/tests/0069-consumer_add_parts.c +119 -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 +290 -0
- package/deps/librdkafka/tests/0076-produce_retry.c +452 -0
- package/deps/librdkafka/tests/0077-compaction.c +363 -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 +3095 -0
- package/deps/librdkafka/tests/0081-admin.c +5633 -0
- package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +137 -0
- package/deps/librdkafka/tests/0083-cb_event.c +233 -0
- package/deps/librdkafka/tests/0084-destroy_flags.c +208 -0
- package/deps/librdkafka/tests/0085-headers.cpp +392 -0
- package/deps/librdkafka/tests/0086-purge.c +368 -0
- package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
- package/deps/librdkafka/tests/0089-max_poll_interval.c +511 -0
- package/deps/librdkafka/tests/0090-idempotence.c +171 -0
- package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +295 -0
- package/deps/librdkafka/tests/0092-mixed_msgver.c +103 -0
- package/deps/librdkafka/tests/0093-holb.c +200 -0
- package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +231 -0
- package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
- package/deps/librdkafka/tests/0097-ssl_verify.cpp +658 -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 +836 -0
- package/deps/librdkafka/tests/0103-transactions.c +1383 -0
- package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +625 -0
- package/deps/librdkafka/tests/0105-transactions_mock.c +3930 -0
- package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +318 -0
- package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
- package/deps/librdkafka/tests/0109-auto_create_topics.cpp +278 -0
- package/deps/librdkafka/tests/0110-batch_size.cpp +182 -0
- package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
- package/deps/librdkafka/tests/0112-assign_unknown_part.c +87 -0
- package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3473 -0
- package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
- package/deps/librdkafka/tests/0115-producer_auth.cpp +182 -0
- package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +216 -0
- package/deps/librdkafka/tests/0117-mock_errors.c +331 -0
- package/deps/librdkafka/tests/0118-commit_rebalance.c +154 -0
- package/deps/librdkafka/tests/0119-consumer_auth.cpp +167 -0
- package/deps/librdkafka/tests/0120-asymmetric_subscription.c +185 -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 +528 -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 +79 -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 +179 -0
- package/deps/librdkafka/tests/0133-ssl_keys.c +150 -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 +619 -0
- package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
- package/deps/librdkafka/tests/0139-offset_validation_mock.c +950 -0
- package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
- package/deps/librdkafka/tests/0142-reauthentication.c +515 -0
- package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +552 -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 +505 -0
- package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +952 -0
- package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +563 -0
- package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
- package/deps/librdkafka/tests/0150-telemetry_mock.c +651 -0
- package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
- package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
- package/deps/librdkafka/tests/0153-memberid.c +128 -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 +170 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -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/oauthbearer/jwt_assertion_template.json +10 -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.intermediate.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +50 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +168 -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 +13 -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-all-tests.sh +79 -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-batches.py +157 -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 +7778 -0
- package/deps/librdkafka/tests/test.conf.example +27 -0
- package/deps/librdkafka/tests/test.h +1028 -0
- package/deps/librdkafka/tests/testcpp.cpp +131 -0
- package/deps/librdkafka/tests/testcpp.h +388 -0
- package/deps/librdkafka/tests/testshared.h +416 -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/trivup/trivup-0.14.0.tar.gz +0 -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/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 +47 -0
- package/deps/librdkafka/win32/setup-vcpkg.ps1 +34 -0
- package/deps/librdkafka/win32/tests/test.conf.example +25 -0
- package/deps/librdkafka/win32/tests/tests.vcxproj +253 -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 +101 -0
- package/deps/librdkafka/win32/wintime.h +33 -0
- package/deps/librdkafka.gyp +62 -0
- package/lib/admin.js +233 -0
- package/lib/client.js +573 -0
- package/lib/error.js +500 -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/package.json +61 -0
- package/prebuilds/darwin-arm64/@point3+node-rdkafka.node +0 -0
- package/prebuilds/linux-x64/@point3+node-rdkafka.node +0 -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
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - The Apache Kafka C/C++ library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2015-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
|
+
#include "rdkafka_int.h"
|
|
29
|
+
#include "rdkafka_assignor.h"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Source:
|
|
34
|
+
* https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/consumer/RoundRobinAssignor.java
|
|
35
|
+
*
|
|
36
|
+
* The roundrobin assignor lays out all the available partitions and all the
|
|
37
|
+
* available consumers. It then proceeds to do a roundrobin assignment from
|
|
38
|
+
* partition to consumer. If the subscriptions of all consumer instances are
|
|
39
|
+
* identical, then the partitions will be uniformly distributed. (i.e., the
|
|
40
|
+
* partition ownership counts will be within a delta of exactly one across all
|
|
41
|
+
* consumers.)
|
|
42
|
+
*
|
|
43
|
+
* For example, suppose there are two consumers C0 and C1, two topics t0 and
|
|
44
|
+
* t1, and each topic has 3 partitions, resulting in partitions t0p0, t0p1,
|
|
45
|
+
* t0p2, t1p0, t1p1, and t1p2.
|
|
46
|
+
*
|
|
47
|
+
* The assignment will be:
|
|
48
|
+
* C0: [t0p0, t0p2, t1p1]
|
|
49
|
+
* C1: [t0p1, t1p0, t1p2]
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
rd_kafka_resp_err_t rd_kafka_roundrobin_assignor_assign_cb(
|
|
53
|
+
rd_kafka_t *rk,
|
|
54
|
+
const rd_kafka_assignor_t *rkas,
|
|
55
|
+
const char *member_id,
|
|
56
|
+
const rd_kafka_metadata_t *metadata,
|
|
57
|
+
rd_kafka_group_member_t *members,
|
|
58
|
+
size_t member_cnt,
|
|
59
|
+
rd_kafka_assignor_topic_t **eligible_topics,
|
|
60
|
+
size_t eligible_topic_cnt,
|
|
61
|
+
char *errstr,
|
|
62
|
+
size_t errstr_size,
|
|
63
|
+
void *opaque) {
|
|
64
|
+
unsigned int ti;
|
|
65
|
+
int next = -1; /* Next member id */
|
|
66
|
+
|
|
67
|
+
/* Sort topics by name */
|
|
68
|
+
qsort(eligible_topics, eligible_topic_cnt, sizeof(*eligible_topics),
|
|
69
|
+
rd_kafka_assignor_topic_cmp);
|
|
70
|
+
|
|
71
|
+
/* Sort members by name */
|
|
72
|
+
qsort(members, member_cnt, sizeof(*members), rd_kafka_group_member_cmp);
|
|
73
|
+
|
|
74
|
+
for (ti = 0; ti < eligible_topic_cnt; ti++) {
|
|
75
|
+
rd_kafka_assignor_topic_t *eligible_topic = eligible_topics[ti];
|
|
76
|
+
int partition;
|
|
77
|
+
|
|
78
|
+
/* For each topic+partition, assign one member (in a cyclic
|
|
79
|
+
* iteration) per partition until the partitions are exhausted*/
|
|
80
|
+
for (partition = 0;
|
|
81
|
+
partition < eligible_topic->metadata->partition_cnt;
|
|
82
|
+
partition++) {
|
|
83
|
+
rd_kafka_group_member_t *rkgm;
|
|
84
|
+
|
|
85
|
+
/* Scan through members until we find one with a
|
|
86
|
+
* subscription to this topic. */
|
|
87
|
+
do {
|
|
88
|
+
next = (next + 1) % member_cnt;
|
|
89
|
+
} while (!rd_kafka_group_member_find_subscription(
|
|
90
|
+
rk, &members[next],
|
|
91
|
+
eligible_topic->metadata->topic));
|
|
92
|
+
|
|
93
|
+
rkgm = &members[next];
|
|
94
|
+
|
|
95
|
+
rd_kafka_dbg(rk, CGRP, "ASSIGN",
|
|
96
|
+
"roundrobin: Member \"%s\": "
|
|
97
|
+
"assigned topic %s partition %d",
|
|
98
|
+
rkgm->rkgm_member_id->str,
|
|
99
|
+
eligible_topic->metadata->topic,
|
|
100
|
+
partition);
|
|
101
|
+
|
|
102
|
+
rd_kafka_topic_partition_list_add(
|
|
103
|
+
rkgm->rkgm_assignment,
|
|
104
|
+
eligible_topic->metadata->topic, partition);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @brief Initialzie and add roundrobin assignor.
|
|
116
|
+
*/
|
|
117
|
+
rd_kafka_resp_err_t rd_kafka_roundrobin_assignor_init(rd_kafka_t *rk) {
|
|
118
|
+
return rd_kafka_assignor_add(
|
|
119
|
+
rk, "consumer", "roundrobin", RD_KAFKA_REBALANCE_PROTOCOL_EAGER,
|
|
120
|
+
rd_kafka_roundrobin_assignor_assign_cb,
|
|
121
|
+
rd_kafka_assignor_get_metadata_with_empty_userdata, NULL, NULL,
|
|
122
|
+
NULL, NULL);
|
|
123
|
+
}
|
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - The Apache Kafka C/C++ library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2015-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
|
+
#include "rdkafka_int.h"
|
|
31
|
+
#include "rdkafka_transport.h"
|
|
32
|
+
#include "rdkafka_transport_int.h"
|
|
33
|
+
#include "rdkafka_request.h"
|
|
34
|
+
#include "rdkafka_sasl.h"
|
|
35
|
+
#include "rdkafka_sasl_int.h"
|
|
36
|
+
#include "rdkafka_request.h"
|
|
37
|
+
#include "rdkafka_queue.h"
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @brief Send SASL auth data using legacy directly on socket framing.
|
|
41
|
+
*
|
|
42
|
+
* @warning This is a blocking call.
|
|
43
|
+
*/
|
|
44
|
+
static int rd_kafka_sasl_send_legacy(rd_kafka_transport_t *rktrans,
|
|
45
|
+
const void *payload,
|
|
46
|
+
int len,
|
|
47
|
+
char *errstr,
|
|
48
|
+
size_t errstr_size) {
|
|
49
|
+
rd_buf_t buf;
|
|
50
|
+
rd_slice_t slice;
|
|
51
|
+
int32_t hdr;
|
|
52
|
+
|
|
53
|
+
rd_buf_init(&buf, 1 + 1, sizeof(hdr));
|
|
54
|
+
|
|
55
|
+
hdr = htobe32(len);
|
|
56
|
+
rd_buf_write(&buf, &hdr, sizeof(hdr));
|
|
57
|
+
if (payload)
|
|
58
|
+
rd_buf_push(&buf, payload, len, NULL);
|
|
59
|
+
|
|
60
|
+
rd_slice_init_full(&slice, &buf);
|
|
61
|
+
|
|
62
|
+
/* Simulate blocking behaviour on non-blocking socket..
|
|
63
|
+
* FIXME: This isn't optimal but is highly unlikely to stall since
|
|
64
|
+
* the socket buffer will most likely not be exceeded. */
|
|
65
|
+
do {
|
|
66
|
+
int r;
|
|
67
|
+
|
|
68
|
+
r = (int)rd_kafka_transport_send(rktrans, &slice, errstr,
|
|
69
|
+
errstr_size);
|
|
70
|
+
if (r == -1) {
|
|
71
|
+
rd_rkb_dbg(rktrans->rktrans_rkb, SECURITY, "SASL",
|
|
72
|
+
"SASL send failed: %s", errstr);
|
|
73
|
+
rd_buf_destroy(&buf);
|
|
74
|
+
return -1;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (rd_slice_remains(&slice) == 0)
|
|
78
|
+
break;
|
|
79
|
+
|
|
80
|
+
/* Avoid busy-looping */
|
|
81
|
+
rd_usleep(10 * 1000, NULL);
|
|
82
|
+
|
|
83
|
+
} while (1);
|
|
84
|
+
|
|
85
|
+
rd_buf_destroy(&buf);
|
|
86
|
+
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @brief Send auth message with framing (either legacy or Kafka framing).
|
|
92
|
+
*
|
|
93
|
+
* @warning This is a blocking call when used with the legacy framing.
|
|
94
|
+
*/
|
|
95
|
+
int rd_kafka_sasl_send(rd_kafka_transport_t *rktrans,
|
|
96
|
+
const void *payload,
|
|
97
|
+
int len,
|
|
98
|
+
char *errstr,
|
|
99
|
+
size_t errstr_size) {
|
|
100
|
+
rd_kafka_broker_t *rkb = rktrans->rktrans_rkb;
|
|
101
|
+
|
|
102
|
+
rd_rkb_dbg(
|
|
103
|
+
rkb, SECURITY, "SASL", "Send SASL %s frame to broker (%d bytes)",
|
|
104
|
+
(rkb->rkb_features & RD_KAFKA_FEATURE_SASL_AUTH_REQ) ? "Kafka"
|
|
105
|
+
: "legacy",
|
|
106
|
+
len);
|
|
107
|
+
|
|
108
|
+
/* Blocking legacy framed send directly on the socket */
|
|
109
|
+
if (!(rkb->rkb_features & RD_KAFKA_FEATURE_SASL_AUTH_REQ))
|
|
110
|
+
return rd_kafka_sasl_send_legacy(rktrans, payload, len, errstr,
|
|
111
|
+
errstr_size);
|
|
112
|
+
|
|
113
|
+
/* Kafka-framed asynchronous send */
|
|
114
|
+
rd_kafka_SaslAuthenticateRequest(
|
|
115
|
+
rkb, payload, (size_t)len, RD_KAFKA_NO_REPLYQ,
|
|
116
|
+
rd_kafka_handle_SaslAuthenticate, NULL);
|
|
117
|
+
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* @brief Authentication succesful
|
|
124
|
+
*
|
|
125
|
+
* Transition to next connect state.
|
|
126
|
+
*/
|
|
127
|
+
void rd_kafka_sasl_auth_done(rd_kafka_transport_t *rktrans) {
|
|
128
|
+
/* Authenticated */
|
|
129
|
+
rd_kafka_broker_connect_up(rktrans->rktrans_rkb);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @brief Handle SASL auth data from broker.
|
|
135
|
+
*
|
|
136
|
+
* @locality broker thread
|
|
137
|
+
*
|
|
138
|
+
* @returns -1 on error, else 0.
|
|
139
|
+
*/
|
|
140
|
+
int rd_kafka_sasl_recv(rd_kafka_transport_t *rktrans,
|
|
141
|
+
const void *buf,
|
|
142
|
+
size_t len,
|
|
143
|
+
char *errstr,
|
|
144
|
+
size_t errstr_size) {
|
|
145
|
+
|
|
146
|
+
rd_rkb_dbg(rktrans->rktrans_rkb, SECURITY, "SASL",
|
|
147
|
+
"Received SASL frame from broker (%" PRIusz " bytes)", len);
|
|
148
|
+
|
|
149
|
+
return rktrans->rktrans_rkb->rkb_rk->rk_conf.sasl.provider->recv(
|
|
150
|
+
rktrans, buf, len, errstr, errstr_size);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @brief Non-kafka-protocol framed SASL auth data receive event.
|
|
155
|
+
*
|
|
156
|
+
* @locality broker thread
|
|
157
|
+
*
|
|
158
|
+
* @returns -1 on error, else 0.
|
|
159
|
+
*/
|
|
160
|
+
int rd_kafka_sasl_io_event(rd_kafka_transport_t *rktrans,
|
|
161
|
+
int events,
|
|
162
|
+
char *errstr,
|
|
163
|
+
size_t errstr_size) {
|
|
164
|
+
rd_kafka_buf_t *rkbuf;
|
|
165
|
+
int r;
|
|
166
|
+
const void *buf;
|
|
167
|
+
size_t len;
|
|
168
|
+
|
|
169
|
+
if (!(events & POLLIN))
|
|
170
|
+
return 0;
|
|
171
|
+
|
|
172
|
+
r = rd_kafka_transport_framed_recv(rktrans, &rkbuf, errstr,
|
|
173
|
+
errstr_size);
|
|
174
|
+
if (r == -1) {
|
|
175
|
+
if (rd_kafka_transport_error_disconnected(errstr)) {
|
|
176
|
+
int curr_len = strlen(errstr);
|
|
177
|
+
rd_snprintf(errstr + curr_len, errstr_size - curr_len,
|
|
178
|
+
": check client %s credentials "
|
|
179
|
+
"and broker logs",
|
|
180
|
+
rktrans->rktrans_rkb->rkb_rk->rk_conf.sasl
|
|
181
|
+
.mechanisms);
|
|
182
|
+
}
|
|
183
|
+
return -1;
|
|
184
|
+
} else if (r == 0) /* not fully received yet */
|
|
185
|
+
return 0;
|
|
186
|
+
|
|
187
|
+
if (rkbuf) {
|
|
188
|
+
rd_slice_init_full(&rkbuf->rkbuf_reader, &rkbuf->rkbuf_buf);
|
|
189
|
+
/* Seek past framing header */
|
|
190
|
+
rd_slice_seek(&rkbuf->rkbuf_reader, 4);
|
|
191
|
+
len = rd_slice_remains(&rkbuf->rkbuf_reader);
|
|
192
|
+
buf = rd_slice_ensure_contig(&rkbuf->rkbuf_reader, len);
|
|
193
|
+
} else {
|
|
194
|
+
buf = NULL;
|
|
195
|
+
len = 0;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
r = rd_kafka_sasl_recv(rktrans, buf, len, errstr, errstr_size);
|
|
199
|
+
|
|
200
|
+
if (rkbuf)
|
|
201
|
+
rd_kafka_buf_destroy(rkbuf);
|
|
202
|
+
|
|
203
|
+
return r;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* @brief Close SASL session (from transport code)
|
|
209
|
+
* @remark May be called on non-SASL transports (no-op)
|
|
210
|
+
*/
|
|
211
|
+
void rd_kafka_sasl_close(rd_kafka_transport_t *rktrans) {
|
|
212
|
+
/* The broker might not be up, and the transport might not exist in that
|
|
213
|
+
* case.*/
|
|
214
|
+
if (!rktrans)
|
|
215
|
+
return;
|
|
216
|
+
|
|
217
|
+
const struct rd_kafka_sasl_provider *provider =
|
|
218
|
+
rktrans->rktrans_rkb->rkb_rk->rk_conf.sasl.provider;
|
|
219
|
+
|
|
220
|
+
if (provider && provider->close)
|
|
221
|
+
provider->close(rktrans);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Initialize and start SASL authentication.
|
|
228
|
+
*
|
|
229
|
+
* Returns 0 on successful init and -1 on error.
|
|
230
|
+
*
|
|
231
|
+
* Locality: broker thread
|
|
232
|
+
*/
|
|
233
|
+
int rd_kafka_sasl_client_new(rd_kafka_transport_t *rktrans,
|
|
234
|
+
char *errstr,
|
|
235
|
+
size_t errstr_size) {
|
|
236
|
+
int r;
|
|
237
|
+
rd_kafka_broker_t *rkb = rktrans->rktrans_rkb;
|
|
238
|
+
rd_kafka_t *rk = rkb->rkb_rk;
|
|
239
|
+
char *hostname, *t;
|
|
240
|
+
const struct rd_kafka_sasl_provider *provider =
|
|
241
|
+
rk->rk_conf.sasl.provider;
|
|
242
|
+
|
|
243
|
+
/* Verify broker support:
|
|
244
|
+
* - RD_KAFKA_FEATURE_SASL_GSSAPI - GSSAPI supported
|
|
245
|
+
* - RD_KAFKA_FEATURE_SASL_HANDSHAKE - GSSAPI, PLAIN and possibly
|
|
246
|
+
* other mechanisms supported. */
|
|
247
|
+
if (!strcmp(rk->rk_conf.sasl.mechanisms, "GSSAPI")) {
|
|
248
|
+
if (!(rkb->rkb_features & RD_KAFKA_FEATURE_SASL_GSSAPI)) {
|
|
249
|
+
rd_snprintf(errstr, errstr_size,
|
|
250
|
+
"SASL GSSAPI authentication not supported "
|
|
251
|
+
"by broker");
|
|
252
|
+
return -1;
|
|
253
|
+
}
|
|
254
|
+
} else if (!(rkb->rkb_features & RD_KAFKA_FEATURE_SASL_HANDSHAKE)) {
|
|
255
|
+
rd_snprintf(errstr, errstr_size,
|
|
256
|
+
"SASL Handshake not supported by broker "
|
|
257
|
+
"(required by mechanism %s)%s",
|
|
258
|
+
rk->rk_conf.sasl.mechanisms,
|
|
259
|
+
rk->rk_conf.api_version_request
|
|
260
|
+
? ""
|
|
261
|
+
: ": try api.version.request=true");
|
|
262
|
+
return -1;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
rd_kafka_broker_lock(rktrans->rktrans_rkb);
|
|
266
|
+
rd_strdupa(&hostname, rktrans->rktrans_rkb->rkb_nodename);
|
|
267
|
+
rd_kafka_broker_unlock(rktrans->rktrans_rkb);
|
|
268
|
+
|
|
269
|
+
if ((t = strchr(hostname, ':')))
|
|
270
|
+
*t = '\0'; /* remove ":port" */
|
|
271
|
+
|
|
272
|
+
rd_rkb_dbg(rkb, SECURITY, "SASL",
|
|
273
|
+
"Initializing SASL client: service name %s, "
|
|
274
|
+
"hostname %s, mechanisms %s, provider %s",
|
|
275
|
+
rk->rk_conf.sasl.service_name, hostname,
|
|
276
|
+
rk->rk_conf.sasl.mechanisms, provider->name);
|
|
277
|
+
|
|
278
|
+
r = provider->client_new(rktrans, hostname, errstr, errstr_size);
|
|
279
|
+
if (r != -1)
|
|
280
|
+
rd_kafka_transport_poll_set(rktrans, POLLIN);
|
|
281
|
+
|
|
282
|
+
return r;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
rd_kafka_queue_t *rd_kafka_queue_get_sasl(rd_kafka_t *rk) {
|
|
288
|
+
if (!rk->rk_sasl.callback_q)
|
|
289
|
+
return NULL;
|
|
290
|
+
|
|
291
|
+
return rd_kafka_queue_new0(rk, rk->rk_sasl.callback_q);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Per handle SASL term.
|
|
297
|
+
*
|
|
298
|
+
* Locality: broker thread
|
|
299
|
+
*/
|
|
300
|
+
void rd_kafka_sasl_broker_term(rd_kafka_broker_t *rkb) {
|
|
301
|
+
const struct rd_kafka_sasl_provider *provider =
|
|
302
|
+
rkb->rkb_rk->rk_conf.sasl.provider;
|
|
303
|
+
if (provider->broker_term)
|
|
304
|
+
provider->broker_term(rkb);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Broker SASL init.
|
|
309
|
+
*
|
|
310
|
+
* Locality: broker thread
|
|
311
|
+
*/
|
|
312
|
+
void rd_kafka_sasl_broker_init(rd_kafka_broker_t *rkb) {
|
|
313
|
+
const struct rd_kafka_sasl_provider *provider =
|
|
314
|
+
rkb->rkb_rk->rk_conf.sasl.provider;
|
|
315
|
+
if (provider->broker_init)
|
|
316
|
+
provider->broker_init(rkb);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* @brief Per-instance initializer using the selected provider
|
|
322
|
+
*
|
|
323
|
+
* @returns 0 on success or -1 on error.
|
|
324
|
+
*
|
|
325
|
+
* @locality app thread (from rd_kafka_new())
|
|
326
|
+
*/
|
|
327
|
+
int rd_kafka_sasl_init(rd_kafka_t *rk, char *errstr, size_t errstr_size) {
|
|
328
|
+
const struct rd_kafka_sasl_provider *provider =
|
|
329
|
+
rk->rk_conf.sasl.provider;
|
|
330
|
+
|
|
331
|
+
if (provider && provider->init)
|
|
332
|
+
return provider->init(rk, errstr, errstr_size);
|
|
333
|
+
|
|
334
|
+
return 0;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* @brief Per-instance destructor for the selected provider
|
|
340
|
+
*
|
|
341
|
+
* @locality app thread (from rd_kafka_new()) or rdkafka main thread
|
|
342
|
+
*/
|
|
343
|
+
void rd_kafka_sasl_term(rd_kafka_t *rk) {
|
|
344
|
+
const struct rd_kafka_sasl_provider *provider =
|
|
345
|
+
rk->rk_conf.sasl.provider;
|
|
346
|
+
|
|
347
|
+
if (provider && provider->term)
|
|
348
|
+
provider->term(rk);
|
|
349
|
+
|
|
350
|
+
RD_IF_FREE(rk->rk_sasl.callback_q, rd_kafka_q_destroy_owner);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* @returns rd_true if provider is ready to be used or SASL not configured,
|
|
356
|
+
* else rd_false.
|
|
357
|
+
*
|
|
358
|
+
* @locks none
|
|
359
|
+
* @locality any thread
|
|
360
|
+
*/
|
|
361
|
+
rd_bool_t rd_kafka_sasl_ready(rd_kafka_t *rk) {
|
|
362
|
+
const struct rd_kafka_sasl_provider *provider =
|
|
363
|
+
rk->rk_conf.sasl.provider;
|
|
364
|
+
|
|
365
|
+
if (provider && provider->ready)
|
|
366
|
+
return provider->ready(rk);
|
|
367
|
+
|
|
368
|
+
return rd_true;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* @brief Select SASL provider for configured mechanism (singularis)
|
|
374
|
+
* @returns 0 on success or -1 on failure.
|
|
375
|
+
*/
|
|
376
|
+
int rd_kafka_sasl_select_provider(rd_kafka_t *rk,
|
|
377
|
+
char *errstr,
|
|
378
|
+
size_t errstr_size) {
|
|
379
|
+
const struct rd_kafka_sasl_provider *provider = NULL;
|
|
380
|
+
|
|
381
|
+
if (!strcmp(rk->rk_conf.sasl.mechanisms, "GSSAPI")) {
|
|
382
|
+
/* GSSAPI / Kerberos */
|
|
383
|
+
#ifdef _WIN32
|
|
384
|
+
provider = &rd_kafka_sasl_win32_provider;
|
|
385
|
+
#elif WITH_SASL_CYRUS
|
|
386
|
+
provider = &rd_kafka_sasl_cyrus_provider;
|
|
387
|
+
#endif
|
|
388
|
+
|
|
389
|
+
} else if (!strcmp(rk->rk_conf.sasl.mechanisms, "PLAIN")) {
|
|
390
|
+
/* SASL PLAIN */
|
|
391
|
+
provider = &rd_kafka_sasl_plain_provider;
|
|
392
|
+
|
|
393
|
+
} else if (!strncmp(rk->rk_conf.sasl.mechanisms, "SCRAM-SHA-",
|
|
394
|
+
strlen("SCRAM-SHA-"))) {
|
|
395
|
+
/* SASL SCRAM */
|
|
396
|
+
#if WITH_SASL_SCRAM
|
|
397
|
+
provider = &rd_kafka_sasl_scram_provider;
|
|
398
|
+
#endif
|
|
399
|
+
|
|
400
|
+
} else if (!strcmp(rk->rk_conf.sasl.mechanisms, "OAUTHBEARER")) {
|
|
401
|
+
/* SASL OAUTHBEARER */
|
|
402
|
+
#if WITH_SASL_OAUTHBEARER
|
|
403
|
+
provider = &rd_kafka_sasl_oauthbearer_provider;
|
|
404
|
+
#endif
|
|
405
|
+
} else {
|
|
406
|
+
/* Unsupported mechanism */
|
|
407
|
+
rd_snprintf(errstr, errstr_size,
|
|
408
|
+
"Unsupported SASL mechanism: %s",
|
|
409
|
+
rk->rk_conf.sasl.mechanisms);
|
|
410
|
+
return -1;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
if (!provider) {
|
|
414
|
+
rd_snprintf(errstr, errstr_size,
|
|
415
|
+
"No provider for SASL mechanism %s"
|
|
416
|
+
": recompile librdkafka with "
|
|
417
|
+
#ifndef _WIN32
|
|
418
|
+
"libsasl2 or "
|
|
419
|
+
#endif
|
|
420
|
+
"openssl support. "
|
|
421
|
+
"Current build options:"
|
|
422
|
+
" PLAIN"
|
|
423
|
+
#ifdef _WIN32
|
|
424
|
+
" WindowsSSPI(GSSAPI)"
|
|
425
|
+
#endif
|
|
426
|
+
#if WITH_SASL_CYRUS
|
|
427
|
+
" SASL_CYRUS"
|
|
428
|
+
#endif
|
|
429
|
+
#if WITH_SASL_SCRAM
|
|
430
|
+
" SASL_SCRAM"
|
|
431
|
+
#endif
|
|
432
|
+
#if WITH_SASL_OAUTHBEARER
|
|
433
|
+
" OAUTHBEARER"
|
|
434
|
+
#endif
|
|
435
|
+
,
|
|
436
|
+
rk->rk_conf.sasl.mechanisms);
|
|
437
|
+
return -1;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
rd_kafka_dbg(rk, SECURITY, "SASL",
|
|
441
|
+
"Selected provider %s for SASL mechanism %s",
|
|
442
|
+
provider->name, rk->rk_conf.sasl.mechanisms);
|
|
443
|
+
|
|
444
|
+
/* Validate SASL config */
|
|
445
|
+
if (provider->conf_validate &&
|
|
446
|
+
provider->conf_validate(rk, errstr, errstr_size) == -1)
|
|
447
|
+
return -1;
|
|
448
|
+
|
|
449
|
+
rk->rk_conf.sasl.provider = provider;
|
|
450
|
+
|
|
451
|
+
return 0;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
rd_kafka_error_t *rd_kafka_sasl_background_callbacks_enable(rd_kafka_t *rk) {
|
|
456
|
+
rd_kafka_queue_t *saslq, *bgq;
|
|
457
|
+
|
|
458
|
+
if (!(saslq = rd_kafka_queue_get_sasl(rk)))
|
|
459
|
+
return rd_kafka_error_new(
|
|
460
|
+
RD_KAFKA_RESP_ERR__NOT_CONFIGURED,
|
|
461
|
+
"No SASL mechanism using callbacks is configured");
|
|
462
|
+
|
|
463
|
+
if (!(bgq = rd_kafka_queue_get_background(rk))) {
|
|
464
|
+
rd_kafka_queue_destroy(saslq);
|
|
465
|
+
return rd_kafka_error_new(
|
|
466
|
+
RD_KAFKA_RESP_ERR__CRIT_SYS_RESOURCE,
|
|
467
|
+
"The background thread is not available");
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
rd_kafka_queue_forward(saslq, bgq);
|
|
471
|
+
|
|
472
|
+
rd_kafka_queue_destroy(saslq);
|
|
473
|
+
rd_kafka_queue_destroy(bgq);
|
|
474
|
+
|
|
475
|
+
return NULL;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Global SASL termination.
|
|
481
|
+
*/
|
|
482
|
+
void rd_kafka_sasl_global_term(void) {
|
|
483
|
+
#if WITH_SASL_CYRUS
|
|
484
|
+
rd_kafka_sasl_cyrus_global_term();
|
|
485
|
+
#endif
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Global SASL init, called once per runtime.
|
|
491
|
+
*/
|
|
492
|
+
int rd_kafka_sasl_global_init(void) {
|
|
493
|
+
#if WITH_SASL_CYRUS
|
|
494
|
+
return rd_kafka_sasl_cyrus_global_init();
|
|
495
|
+
#else
|
|
496
|
+
return 0;
|
|
497
|
+
#endif
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* Sets or resets the SASL (PLAIN or SCRAM) credentials used by this
|
|
502
|
+
* client when making new connections to brokers.
|
|
503
|
+
*
|
|
504
|
+
* @returns NULL on success or an error object on error.
|
|
505
|
+
*/
|
|
506
|
+
rd_kafka_error_t *rd_kafka_sasl_set_credentials(rd_kafka_t *rk,
|
|
507
|
+
const char *username,
|
|
508
|
+
const char *password) {
|
|
509
|
+
|
|
510
|
+
if (!username || !password)
|
|
511
|
+
return rd_kafka_error_new(RD_KAFKA_RESP_ERR__INVALID_ARG,
|
|
512
|
+
"Username and password are required");
|
|
513
|
+
|
|
514
|
+
mtx_lock(&rk->rk_conf.sasl.lock);
|
|
515
|
+
|
|
516
|
+
if (rk->rk_conf.sasl.username)
|
|
517
|
+
rd_free(rk->rk_conf.sasl.username);
|
|
518
|
+
rk->rk_conf.sasl.username = rd_strdup(username);
|
|
519
|
+
|
|
520
|
+
if (rk->rk_conf.sasl.password)
|
|
521
|
+
rd_free(rk->rk_conf.sasl.password);
|
|
522
|
+
rk->rk_conf.sasl.password = rd_strdup(password);
|
|
523
|
+
|
|
524
|
+
mtx_unlock(&rk->rk_conf.sasl.lock);
|
|
525
|
+
|
|
526
|
+
rd_kafka_all_brokers_wakeup(rk, RD_KAFKA_BROKER_STATE_INIT,
|
|
527
|
+
"SASL credentials updated");
|
|
528
|
+
|
|
529
|
+
return NULL;
|
|
530
|
+
}
|