@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,323 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* node-rdkafka - Node.js wrapper for RdKafka C/C++ library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2016 Blizzard Entertainment
|
|
5
|
+
*
|
|
6
|
+
* This software may be modified and distributed under the terms
|
|
7
|
+
* of the MIT license. See the LICENSE.txt file for details.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
module.exports = HighLevelProducer;
|
|
11
|
+
|
|
12
|
+
var util = require('util');
|
|
13
|
+
var Producer = require('../producer');
|
|
14
|
+
var LibrdKafkaError = require('../error');
|
|
15
|
+
var EventEmitter = require('events').EventEmitter;
|
|
16
|
+
var RefCounter = require('../tools/ref-counter');
|
|
17
|
+
var shallowCopy = require('../util').shallowCopy;
|
|
18
|
+
var isObject = require('../util').isObject;
|
|
19
|
+
|
|
20
|
+
util.inherits(HighLevelProducer, Producer);
|
|
21
|
+
|
|
22
|
+
var noopSerializer = createSerializer(function (v) { return v; });
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Create a serializer
|
|
26
|
+
*
|
|
27
|
+
* Method simply wraps a serializer provided by a user
|
|
28
|
+
* so it adds context to the error
|
|
29
|
+
*
|
|
30
|
+
* @returns {function} Serialization function
|
|
31
|
+
*/
|
|
32
|
+
function createSerializer(serializer) {
|
|
33
|
+
var applyFn = function serializationWrapper(v, cb) {
|
|
34
|
+
try {
|
|
35
|
+
return cb ? serializer(v, cb) : serializer(v);
|
|
36
|
+
} catch (e) {
|
|
37
|
+
var modifiedError = new Error('Could not serialize value: ' + e.message);
|
|
38
|
+
modifiedError.value = v;
|
|
39
|
+
modifiedError.serializer = serializer;
|
|
40
|
+
throw modifiedError;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// We can check how many parameters the function has and activate the asynchronous
|
|
45
|
+
// operation if the number of parameters the function accepts is > 1
|
|
46
|
+
return {
|
|
47
|
+
apply: applyFn,
|
|
48
|
+
async: serializer.length > 1
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Producer class for sending messages to Kafka in a higher level fashion
|
|
54
|
+
*
|
|
55
|
+
* This is the main entry point for writing data to Kafka if you want more
|
|
56
|
+
* functionality than librdkafka supports out of the box. You
|
|
57
|
+
* configure this like you do any other client, with a global
|
|
58
|
+
* configuration and default topic configuration.
|
|
59
|
+
*
|
|
60
|
+
* Once you instantiate this object, you need to connect to it first.
|
|
61
|
+
* This allows you to get the metadata and make sure the connection
|
|
62
|
+
* can be made before you depend on it. After that, problems with
|
|
63
|
+
* the connection will by brought down by using poll, which automatically
|
|
64
|
+
* runs when a transaction is made on the object.
|
|
65
|
+
*
|
|
66
|
+
* This has a few restrictions, so it is not for free!
|
|
67
|
+
*
|
|
68
|
+
* 1. You may not define opaque tokens
|
|
69
|
+
* The higher level producer is powered by opaque tokens.
|
|
70
|
+
* 2. Every message ack will dispatch an event on the node thread.
|
|
71
|
+
* 3. Will use a ref counter to determine if there are outgoing produces.
|
|
72
|
+
*
|
|
73
|
+
* This will return the new object you should use instead when doing your
|
|
74
|
+
* produce calls
|
|
75
|
+
*
|
|
76
|
+
* @param {object} conf - Key value pairs to configure the producer
|
|
77
|
+
* @param {object} topicConf - Key value pairs to create a default
|
|
78
|
+
* topic configuration
|
|
79
|
+
* @extends Producer
|
|
80
|
+
* @constructor
|
|
81
|
+
*/
|
|
82
|
+
function HighLevelProducer(conf, topicConf) {
|
|
83
|
+
if (!(this instanceof HighLevelProducer)) {
|
|
84
|
+
return new HighLevelProducer(conf, topicConf);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Force this to be true for the high level producer
|
|
88
|
+
conf = shallowCopy(conf);
|
|
89
|
+
conf.dr_cb = true;
|
|
90
|
+
|
|
91
|
+
// producer is an initialized consumer object
|
|
92
|
+
// @see NodeKafka::Producer::Init
|
|
93
|
+
Producer.call(this, conf, topicConf);
|
|
94
|
+
var self = this;
|
|
95
|
+
|
|
96
|
+
// Add a delivery emitter to the producer
|
|
97
|
+
this._hl = {
|
|
98
|
+
deliveryEmitter: new EventEmitter(),
|
|
99
|
+
messageId: 0,
|
|
100
|
+
// Special logic for polling. We use a reference counter to know when we need
|
|
101
|
+
// to be doing it and when we can stop. This means when we go into fast polling
|
|
102
|
+
// mode we don't need to do multiple calls to poll since they all will yield
|
|
103
|
+
// the same result
|
|
104
|
+
pollingRefTimeout: null,
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
// Add the polling ref counter to the class which ensures we poll when we go active
|
|
108
|
+
this._hl.pollingRef = new RefCounter(function() {
|
|
109
|
+
self._hl.pollingRefTimeout = setInterval(function() {
|
|
110
|
+
try {
|
|
111
|
+
self.poll();
|
|
112
|
+
} catch (e) {
|
|
113
|
+
if (!self._isConnected) {
|
|
114
|
+
// If we got disconnected for some reason there is no point
|
|
115
|
+
// in polling anymore
|
|
116
|
+
clearInterval(self._hl.pollingRefTimeout);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}, 1);
|
|
120
|
+
}, function() {
|
|
121
|
+
clearInterval(self._hl.pollingRefTimeout);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Default poll interval. More sophisticated polling is also done in create rule method
|
|
125
|
+
this.setPollInterval(1000);
|
|
126
|
+
|
|
127
|
+
// Listen to all delivery reports to propagate elements with a _message_id to the emitter
|
|
128
|
+
this.on('delivery-report', function(err, report) {
|
|
129
|
+
if (report.opaque && report.opaque.__message_id !== undefined) {
|
|
130
|
+
self._hl.deliveryEmitter.emit(report.opaque.__message_id, err, report.offset);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// Save old produce here since we are making some modifications for it
|
|
135
|
+
this._oldProduce = this.produce;
|
|
136
|
+
this.produce = this._modifiedProduce;
|
|
137
|
+
|
|
138
|
+
// Serializer information
|
|
139
|
+
this.keySerializer = noopSerializer;
|
|
140
|
+
this.valueSerializer = noopSerializer;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Produce a message to Kafka asynchronously.
|
|
145
|
+
*
|
|
146
|
+
* This is the method mainly used in this class. Use it to produce
|
|
147
|
+
* a message to Kafka.
|
|
148
|
+
*
|
|
149
|
+
* When this is sent off, and you recieve your callback, the assurances afforded
|
|
150
|
+
* to you will be equal to those provided by your ack level.
|
|
151
|
+
*
|
|
152
|
+
* @param {string} topic - The topic name to produce to.
|
|
153
|
+
* @param {number|null} partition - The partition number to produce to.
|
|
154
|
+
* @param {Buffer|null} message - The message to produce.
|
|
155
|
+
* @param {string} key - The key associated with the message.
|
|
156
|
+
* @param {number|null} timestamp - Timestamp to send with the message.
|
|
157
|
+
* @param {object} headers - A list of custom key value pairs that provide message metadata.
|
|
158
|
+
* @param {function} callback - Callback to call when the delivery report is recieved.
|
|
159
|
+
* @throws {LibrdKafkaError} - Throws a librdkafka error if it failed.
|
|
160
|
+
* @return {boolean} - returns an error if it failed, or true if not
|
|
161
|
+
* @see Producer#produce
|
|
162
|
+
*/
|
|
163
|
+
HighLevelProducer.prototype._modifiedProduce = function(topic, partition, message, key, timestamp, headers, callback) {
|
|
164
|
+
// headers are optional
|
|
165
|
+
if (arguments.length === 6) {
|
|
166
|
+
callback = headers;
|
|
167
|
+
headers = undefined;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Add the message id
|
|
171
|
+
var opaque = {
|
|
172
|
+
__message_id: this._hl.messageId++,
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
this._hl.pollingRef.increment();
|
|
176
|
+
|
|
177
|
+
var self = this;
|
|
178
|
+
|
|
179
|
+
var resolvedSerializedValue;
|
|
180
|
+
var resolvedSerializedKey;
|
|
181
|
+
var calledBack = false;
|
|
182
|
+
|
|
183
|
+
// Actually do the produce with new key and value based on deserialized
|
|
184
|
+
// results
|
|
185
|
+
function doProduce(v, k) {
|
|
186
|
+
try {
|
|
187
|
+
var r = self._oldProduce(topic, partition,
|
|
188
|
+
v, k,
|
|
189
|
+
timestamp, opaque, headers);
|
|
190
|
+
|
|
191
|
+
self._hl.deliveryEmitter.once(opaque.__message_id, function(err, offset) {
|
|
192
|
+
self._hl.pollingRef.decrement();
|
|
193
|
+
setImmediate(function() {
|
|
194
|
+
// Offset must be greater than or equal to 0 otherwise it is a null offset
|
|
195
|
+
// Possibly because we have acks off
|
|
196
|
+
callback(err, offset >= 0 ? offset : null);
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
return r;
|
|
201
|
+
} catch (e) {
|
|
202
|
+
callback(e);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
function produceIfComplete() {
|
|
207
|
+
if (resolvedSerializedKey !== undefined && resolvedSerializedValue !== undefined) {
|
|
208
|
+
doProduce(resolvedSerializedValue, resolvedSerializedKey);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// To run on a promise if returned by the serializer
|
|
213
|
+
function finishSerializedValue(v) {
|
|
214
|
+
if (!calledBack) {
|
|
215
|
+
resolvedSerializedValue = v;
|
|
216
|
+
produceIfComplete();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// To run on a promise of returned by the serializer
|
|
221
|
+
function finishSerializedKey(k) {
|
|
222
|
+
resolvedSerializedKey = k;
|
|
223
|
+
|
|
224
|
+
if (!calledBack) {
|
|
225
|
+
produceIfComplete();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function failSerializedValue(err) {
|
|
230
|
+
if (!calledBack) {
|
|
231
|
+
calledBack = true;
|
|
232
|
+
callback(err);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function failSerializedKey(err) {
|
|
237
|
+
if (!calledBack) {
|
|
238
|
+
calledBack = true;
|
|
239
|
+
callback(err);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function valueSerializerCallback(err, v) {
|
|
244
|
+
if (err) {
|
|
245
|
+
failSerializedValue(err);
|
|
246
|
+
} else {
|
|
247
|
+
finishSerializedValue(v);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
function keySerializerCallback(err, v) {
|
|
252
|
+
if (err) {
|
|
253
|
+
failSerializedKey(err);
|
|
254
|
+
} else {
|
|
255
|
+
finishSerializedKey(v);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
try {
|
|
260
|
+
if (this.valueSerializer.async) {
|
|
261
|
+
// If this is async we need to give it a callback
|
|
262
|
+
this.valueSerializer.apply(message, valueSerializerCallback);
|
|
263
|
+
} else {
|
|
264
|
+
var serializedValue = this.valueSerializer.apply(message);
|
|
265
|
+
// Check if we were returned a promise in order to support promise behavior
|
|
266
|
+
if (serializedValue &&
|
|
267
|
+
typeof serializedValue.then === 'function' &&
|
|
268
|
+
typeof serializedValue.catch === 'function') {
|
|
269
|
+
// This is a promise. We need to hook into its then and catch
|
|
270
|
+
serializedValue.then(finishSerializedValue).catch(failSerializedValue);
|
|
271
|
+
} else {
|
|
272
|
+
resolvedSerializedValue = serializedValue;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
if (this.keySerializer.async) {
|
|
277
|
+
// If this is async we need to give it a callback
|
|
278
|
+
this.keySerializer.apply(key, keySerializerCallback);
|
|
279
|
+
} else {
|
|
280
|
+
var serializedKey = this.keySerializer.apply(key);
|
|
281
|
+
// Check if we were returned a promise in order to support promise behavior
|
|
282
|
+
if (serializedKey &&
|
|
283
|
+
typeof serializedKey.then === 'function' &&
|
|
284
|
+
typeof serializedKey.catch === 'function') {
|
|
285
|
+
// This is a promise. We need to hook into its then and catch
|
|
286
|
+
serializedKey.then(finishSerializedKey).catch(failSerializedKey);
|
|
287
|
+
} else {
|
|
288
|
+
resolvedSerializedKey = serializedKey;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Only do the produce here if we are complete. That is, if the key
|
|
293
|
+
// and value have been serialized.
|
|
294
|
+
produceIfComplete();
|
|
295
|
+
} catch (e) {
|
|
296
|
+
setImmediate(function() {
|
|
297
|
+
calledBack = true;
|
|
298
|
+
callback(e);
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Set the key serializer
|
|
305
|
+
*
|
|
306
|
+
* This allows the value inside the produce call to differ from the value of the
|
|
307
|
+
* value actually produced to kafka. Good if, for example, you want to serialize
|
|
308
|
+
* it to a particular format.
|
|
309
|
+
*/
|
|
310
|
+
HighLevelProducer.prototype.setKeySerializer = function(serializer) {
|
|
311
|
+
this.keySerializer = createSerializer(serializer);
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Set the value serializer
|
|
316
|
+
*
|
|
317
|
+
* This allows the value inside the produce call to differ from the value of the
|
|
318
|
+
* value actually produced to kafka. Good if, for example, you want to serialize
|
|
319
|
+
* it to a particular format.
|
|
320
|
+
*/
|
|
321
|
+
HighLevelProducer.prototype.setValueSerializer = function(serializer) {
|
|
322
|
+
this.valueSerializer = createSerializer(serializer);
|
|
323
|
+
};
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* node-rdkafka - Node.js wrapper for RdKafka C/C++ library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2016 Blizzard Entertainment
|
|
5
|
+
*
|
|
6
|
+
* This software may be modified and distributed under the terms
|
|
7
|
+
* of the MIT license. See the LICENSE.txt file for details.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
'use strict';
|
|
11
|
+
|
|
12
|
+
module.exports = ProducerStream;
|
|
13
|
+
|
|
14
|
+
var Writable = require('stream').Writable;
|
|
15
|
+
var util = require('util');
|
|
16
|
+
var ErrorCode = require('./error').codes;
|
|
17
|
+
|
|
18
|
+
util.inherits(ProducerStream, Writable);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Writable stream integrating with the Kafka Producer.
|
|
22
|
+
*
|
|
23
|
+
* This class is used to write data to Kafka in a streaming way. It takes
|
|
24
|
+
* buffers of data and puts them into the appropriate Kafka topic. If you need
|
|
25
|
+
* finer control over partitions or keys, this is probably not the class for
|
|
26
|
+
* you. In that situation just use the Producer itself.
|
|
27
|
+
*
|
|
28
|
+
* The stream detects if Kafka is already connected. You can safely begin
|
|
29
|
+
* writing right away.
|
|
30
|
+
*
|
|
31
|
+
* This stream does not operate in Object mode and can only be given buffers.
|
|
32
|
+
*
|
|
33
|
+
* @param {Producer} producer - The Kafka Producer object.
|
|
34
|
+
* @param {array} topics - Array of topics
|
|
35
|
+
* @param {object} options - Topic configuration.
|
|
36
|
+
* @constructor
|
|
37
|
+
* @extends stream.Writable
|
|
38
|
+
*/
|
|
39
|
+
function ProducerStream(producer, options) {
|
|
40
|
+
if (!(this instanceof ProducerStream)) {
|
|
41
|
+
return new ProducerStream(producer, options);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (options === undefined) {
|
|
45
|
+
options = {};
|
|
46
|
+
} else if (typeof options === 'string') {
|
|
47
|
+
options = { encoding: options };
|
|
48
|
+
} else if (options === null || typeof options !== 'object') {
|
|
49
|
+
throw new TypeError('"streamOptions" argument must be a string or an object');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (!options.objectMode && !options.topic) {
|
|
53
|
+
throw new TypeError('ProducerStreams not using objectMode must provide a topic to produce to.');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (options.objectMode !== true) {
|
|
57
|
+
this._write = this._write_buffer;
|
|
58
|
+
} else {
|
|
59
|
+
this._write = this._write_message;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
Writable.call(this, options);
|
|
63
|
+
|
|
64
|
+
this.producer = producer;
|
|
65
|
+
this.topicName = options.topic;
|
|
66
|
+
|
|
67
|
+
this.autoClose = options.autoClose === undefined ? true : !!options.autoClose;
|
|
68
|
+
this.connectOptions = options.connectOptions || {};
|
|
69
|
+
|
|
70
|
+
this.producer.setPollInterval(options.pollInterval || 1000);
|
|
71
|
+
|
|
72
|
+
if (options.encoding) {
|
|
73
|
+
this.setDefaultEncoding(options.encoding);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Connect to the producer. Unless we are already connected
|
|
77
|
+
if (!this.producer.isConnected()) {
|
|
78
|
+
this.connect(this.connectOptions);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var self = this;
|
|
82
|
+
|
|
83
|
+
this.once('finish', function() {
|
|
84
|
+
if (this.autoClose) {
|
|
85
|
+
this.close();
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
ProducerStream.prototype.connect = function(options) {
|
|
92
|
+
this.producer.connect(options, function(err, data) {
|
|
93
|
+
if (err) {
|
|
94
|
+
this.emit('error', err);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
}.bind(this));
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Internal stream write method for ProducerStream when writing buffers.
|
|
103
|
+
*
|
|
104
|
+
* This method should never be called externally. It has some recursion to
|
|
105
|
+
* handle cases where the producer is not yet connected.
|
|
106
|
+
*
|
|
107
|
+
* @param {buffer} chunk - Chunk to write.
|
|
108
|
+
* @param {string} encoding - Encoding for the buffer
|
|
109
|
+
* @param {Function} cb - Callback to call when the stream is done processing
|
|
110
|
+
* the data.
|
|
111
|
+
* @private
|
|
112
|
+
* @see https://github.com/nodejs/node/blob/master/lib/fs.js#L1901
|
|
113
|
+
*/
|
|
114
|
+
ProducerStream.prototype._write_buffer = function(data, encoding, cb) {
|
|
115
|
+
if (!(data instanceof Buffer)) {
|
|
116
|
+
this.emit('error', new Error('Invalid data. Can only produce buffers'));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
var self = this;
|
|
121
|
+
|
|
122
|
+
if (!this.producer.isConnected()) {
|
|
123
|
+
this.producer.once('ready', function() {
|
|
124
|
+
self._write(data, encoding, cb);
|
|
125
|
+
});
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
this.producer.produce(self.topicName, null, data, null);
|
|
131
|
+
setImmediate(cb);
|
|
132
|
+
} catch (e) {
|
|
133
|
+
if (ErrorCode.ERR__QUEUE_FULL === e.code) {
|
|
134
|
+
// Poll for good measure
|
|
135
|
+
self.producer.poll();
|
|
136
|
+
|
|
137
|
+
// Just delay this thing a bit and pass the params
|
|
138
|
+
// backpressure will get exerted this way.
|
|
139
|
+
setTimeout(function() {
|
|
140
|
+
self._write(data, encoding, cb);
|
|
141
|
+
}, 500);
|
|
142
|
+
} else {
|
|
143
|
+
if (self.autoClose) {
|
|
144
|
+
self.close();
|
|
145
|
+
}
|
|
146
|
+
setImmediate(function() {
|
|
147
|
+
cb(e);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Internal stream write method for ProducerStream when writing objects.
|
|
155
|
+
*
|
|
156
|
+
* This method should never be called externally. It has some recursion to
|
|
157
|
+
* handle cases where the producer is not yet connected.
|
|
158
|
+
*
|
|
159
|
+
* @param {object} message - Message to write.
|
|
160
|
+
* @param {string} encoding - Encoding for the buffer
|
|
161
|
+
* @param {Function} cb - Callback to call when the stream is done processing
|
|
162
|
+
* the data.
|
|
163
|
+
* @private
|
|
164
|
+
* @see https://github.com/nodejs/node/blob/master/lib/fs.js#L1901
|
|
165
|
+
*/
|
|
166
|
+
ProducerStream.prototype._write_message = function(message, encoding, cb) {
|
|
167
|
+
var self = this;
|
|
168
|
+
|
|
169
|
+
if (!this.producer.isConnected()) {
|
|
170
|
+
this.producer.once('ready', function() {
|
|
171
|
+
self._write(message, encoding, cb);
|
|
172
|
+
});
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
try {
|
|
177
|
+
this.producer.produce(message.topic, message.partition, message.value, message.key, message.timestamp, message.opaque, message.headers);
|
|
178
|
+
setImmediate(cb);
|
|
179
|
+
} catch (e) {
|
|
180
|
+
if (ErrorCode.ERR__QUEUE_FULL === e.code) {
|
|
181
|
+
// Poll for good measure
|
|
182
|
+
self.producer.poll();
|
|
183
|
+
|
|
184
|
+
// Just delay this thing a bit and pass the params
|
|
185
|
+
// backpressure will get exerted this way.
|
|
186
|
+
setTimeout(function() {
|
|
187
|
+
self._write(message, encoding, cb);
|
|
188
|
+
}, 500);
|
|
189
|
+
} else {
|
|
190
|
+
if (self.autoClose) {
|
|
191
|
+
self.close();
|
|
192
|
+
}
|
|
193
|
+
setImmediate(function() {
|
|
194
|
+
cb(e);
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
function writev(producer, topic, chunks, cb) {
|
|
201
|
+
|
|
202
|
+
// @todo maybe a produce batch method?
|
|
203
|
+
var doneCount = 0;
|
|
204
|
+
var err = null;
|
|
205
|
+
var chunk = null;
|
|
206
|
+
|
|
207
|
+
function maybeDone(e) {
|
|
208
|
+
if (e) {
|
|
209
|
+
err = e;
|
|
210
|
+
}
|
|
211
|
+
doneCount ++;
|
|
212
|
+
if (doneCount === chunks.length) {
|
|
213
|
+
cb(err);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function retry(restChunks) {
|
|
218
|
+
// Poll for good measure
|
|
219
|
+
producer.poll();
|
|
220
|
+
|
|
221
|
+
// Just delay this thing a bit and pass the params
|
|
222
|
+
// backpressure will get exerted this way.
|
|
223
|
+
setTimeout(function() {
|
|
224
|
+
writev(producer, topic, restChunks, cb);
|
|
225
|
+
}, 500);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
for (var i = 0; i < chunks.length; i++) {
|
|
229
|
+
chunk = chunks[i];
|
|
230
|
+
|
|
231
|
+
try {
|
|
232
|
+
if (Buffer.isBuffer(chunk)) {
|
|
233
|
+
producer.produce(topic, null, chunk, null);
|
|
234
|
+
} else {
|
|
235
|
+
producer.produce(chunk.topic, chunk.partition, chunk.value, chunk.key, chunk.timestamp, chunk.opaque, chunk.headers);
|
|
236
|
+
}
|
|
237
|
+
maybeDone();
|
|
238
|
+
} catch (e) {
|
|
239
|
+
if (ErrorCode.ERR__QUEUE_FULL === e.code) {
|
|
240
|
+
retry(chunks.slice(i));
|
|
241
|
+
} else {
|
|
242
|
+
cb(e);
|
|
243
|
+
}
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
ProducerStream.prototype._writev = function(data, cb) {
|
|
251
|
+
if (!this.producer.isConnected()) {
|
|
252
|
+
this.once('ready', function() {
|
|
253
|
+
this._writev(data, cb);
|
|
254
|
+
});
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
var self = this;
|
|
259
|
+
var len = data.length;
|
|
260
|
+
var chunks = new Array(len);
|
|
261
|
+
var size = 0;
|
|
262
|
+
|
|
263
|
+
for (var i = 0; i < len; i++) {
|
|
264
|
+
var chunk = data[i].chunk;
|
|
265
|
+
|
|
266
|
+
chunks[i] = chunk;
|
|
267
|
+
size += chunk.length;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
writev(this.producer, this.topicName, chunks, function(err) {
|
|
271
|
+
if (err) {
|
|
272
|
+
self.close();
|
|
273
|
+
cb(err);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
cb();
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
ProducerStream.prototype.close = function(cb) {
|
|
282
|
+
var self = this;
|
|
283
|
+
if (cb) {
|
|
284
|
+
this.once('close', cb);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Use interval variables in here
|
|
288
|
+
if (self.producer._isConnected) {
|
|
289
|
+
self.producer.disconnect(function() {
|
|
290
|
+
// Previously this set the producer to null. I'm not sure there is any benefit
|
|
291
|
+
// to that other than I guess helping flag it for GC?
|
|
292
|
+
// https://github.com/Blizzard/node-rdkafka/issues/344
|
|
293
|
+
close();
|
|
294
|
+
});
|
|
295
|
+
} else if (self.producer._isConnecting){
|
|
296
|
+
self.producer.once('ready', function() {
|
|
297
|
+
// Don't pass CB this time because it has already been passed
|
|
298
|
+
self.close();
|
|
299
|
+
});
|
|
300
|
+
} else {
|
|
301
|
+
setImmediate(close);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
function close() {
|
|
305
|
+
self.emit('close');
|
|
306
|
+
}
|
|
307
|
+
};
|