@platformatic/rdkafka 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +5 -0
- package/.jshintignore +1 -0
- package/.jshintrc +23 -0
- package/CONTRIBUTING.md +237 -0
- package/LICENSE.txt +21 -0
- package/Makefile +94 -0
- package/README.md +630 -0
- package/bench/consumer-raw-rdkafka.js +76 -0
- package/bench/consumer-subscribe.js +77 -0
- package/bench/kafka-consumer-stream.js +100 -0
- package/bench/producer-raw-rdkafka.js +125 -0
- package/bench/producer-rdkafka.js +117 -0
- package/bench/seed.sh +38 -0
- package/binding.gyp +155 -0
- package/ci/checks/librdkafka-correct-version.js +67 -0
- package/ci/checks/librdkafka-exists.js +13 -0
- package/ci/librdkafka-defs-generator.js +193 -0
- package/ci/prepublish.js +3 -0
- package/config.d.ts +1132 -0
- package/configure +15 -0
- package/cpplint.py +6325 -0
- package/deploy.enc +0 -0
- package/deps/librdkafka/.clang-format +136 -0
- package/deps/librdkafka/.clang-format-cpp +103 -0
- package/deps/librdkafka/.dir-locals.el +10 -0
- package/deps/librdkafka/.formatignore +33 -0
- package/deps/librdkafka/.gdbmacros +19 -0
- package/deps/librdkafka/.semaphore/project.yml +43 -0
- package/deps/librdkafka/.semaphore/project_public.yml +20 -0
- package/deps/librdkafka/.semaphore/semaphore.yml +355 -0
- package/deps/librdkafka/CHANGELOG.md +1738 -0
- package/deps/librdkafka/CMakeLists.txt +291 -0
- package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
- package/deps/librdkafka/CONFIGURATION.md +189 -0
- package/deps/librdkafka/CONTRIBUTING.md +431 -0
- package/deps/librdkafka/Doxyfile +2375 -0
- package/deps/librdkafka/INTRODUCTION.md +2173 -0
- package/deps/librdkafka/LICENSE +26 -0
- package/deps/librdkafka/LICENSE.cjson +22 -0
- package/deps/librdkafka/LICENSE.crc32c +28 -0
- package/deps/librdkafka/LICENSE.fnv1a +18 -0
- package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
- package/deps/librdkafka/LICENSE.lz4 +26 -0
- package/deps/librdkafka/LICENSE.murmur2 +25 -0
- package/deps/librdkafka/LICENSE.nanopb +22 -0
- package/deps/librdkafka/LICENSE.opentelemetry +203 -0
- package/deps/librdkafka/LICENSE.pycrc +23 -0
- package/deps/librdkafka/LICENSE.queue +31 -0
- package/deps/librdkafka/LICENSE.regexp +5 -0
- package/deps/librdkafka/LICENSE.snappy +36 -0
- package/deps/librdkafka/LICENSE.tinycthread +26 -0
- package/deps/librdkafka/LICENSE.wingetopt +49 -0
- package/deps/librdkafka/LICENSES.txt +625 -0
- package/deps/librdkafka/Makefile +124 -0
- package/deps/librdkafka/README.md +199 -0
- package/deps/librdkafka/README.win32 +26 -0
- package/deps/librdkafka/STATISTICS.md +624 -0
- package/deps/librdkafka/configure +214 -0
- package/deps/librdkafka/configure.self +331 -0
- package/deps/librdkafka/debian/changelog +111 -0
- package/deps/librdkafka/debian/compat +1 -0
- package/deps/librdkafka/debian/control +71 -0
- package/deps/librdkafka/debian/copyright +99 -0
- package/deps/librdkafka/debian/gbp.conf +9 -0
- package/deps/librdkafka/debian/librdkafka++1.install +1 -0
- package/deps/librdkafka/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/debian/librdkafka-dev.install +9 -0
- package/deps/librdkafka/debian/librdkafka1.docs +5 -0
- package/deps/librdkafka/debian/librdkafka1.install +1 -0
- package/deps/librdkafka/debian/librdkafka1.symbols +135 -0
- package/deps/librdkafka/debian/rules +19 -0
- package/deps/librdkafka/debian/source/format +1 -0
- package/deps/librdkafka/debian/watch +2 -0
- package/deps/librdkafka/dev-conf.sh +123 -0
- package/deps/librdkafka/examples/CMakeLists.txt +79 -0
- package/deps/librdkafka/examples/Makefile +167 -0
- package/deps/librdkafka/examples/README.md +42 -0
- package/deps/librdkafka/examples/alter_consumer_group_offsets.c +338 -0
- package/deps/librdkafka/examples/consumer.c +261 -0
- package/deps/librdkafka/examples/delete_records.c +233 -0
- package/deps/librdkafka/examples/describe_cluster.c +322 -0
- package/deps/librdkafka/examples/describe_consumer_groups.c +436 -0
- package/deps/librdkafka/examples/describe_topics.c +427 -0
- package/deps/librdkafka/examples/elect_leaders.c +317 -0
- package/deps/librdkafka/examples/globals.json +11 -0
- package/deps/librdkafka/examples/idempotent_producer.c +344 -0
- package/deps/librdkafka/examples/incremental_alter_configs.c +348 -0
- package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +961 -0
- package/deps/librdkafka/examples/list_consumer_group_offsets.c +359 -0
- package/deps/librdkafka/examples/list_consumer_groups.c +365 -0
- package/deps/librdkafka/examples/list_offsets.c +327 -0
- package/deps/librdkafka/examples/misc.c +287 -0
- package/deps/librdkafka/examples/openssl_engine_example.cpp +249 -0
- package/deps/librdkafka/examples/producer.c +251 -0
- package/deps/librdkafka/examples/producer.cpp +228 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.c +617 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.cpp +467 -0
- package/deps/librdkafka/examples/rdkafka_consume_batch.cpp +264 -0
- package/deps/librdkafka/examples/rdkafka_example.c +853 -0
- package/deps/librdkafka/examples/rdkafka_example.cpp +679 -0
- package/deps/librdkafka/examples/rdkafka_performance.c +1781 -0
- package/deps/librdkafka/examples/transactions-older-broker.c +668 -0
- package/deps/librdkafka/examples/transactions.c +665 -0
- package/deps/librdkafka/examples/user_scram.c +492 -0
- package/deps/librdkafka/examples/win_ssl_cert_store.cpp +395 -0
- package/deps/librdkafka/lds-gen.py +73 -0
- package/deps/librdkafka/mainpage.doxy +40 -0
- package/deps/librdkafka/mklove/Makefile.base +329 -0
- package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
- package/deps/librdkafka/mklove/modules/configure.base +2484 -0
- package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
- package/deps/librdkafka/mklove/modules/configure.cc +186 -0
- package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
- package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
- package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
- package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
- package/deps/librdkafka/mklove/modules/configure.host +132 -0
- package/deps/librdkafka/mklove/modules/configure.lib +49 -0
- package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
- package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
- package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
- package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
- package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
- package/deps/librdkafka/mklove/modules/configure.pic +16 -0
- package/deps/librdkafka/mklove/modules/configure.socket +20 -0
- package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
- package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
- package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
- package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
- package/deps/librdkafka/packaging/RELEASE.md +311 -0
- package/deps/librdkafka/packaging/alpine/build-alpine.sh +38 -0
- package/deps/librdkafka/packaging/archlinux/PKGBUILD +30 -0
- package/deps/librdkafka/packaging/cmake/Config.cmake.in +37 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindLZ4.cmake +38 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindZSTD.cmake +27 -0
- package/deps/librdkafka/packaging/cmake/Modules/LICENSE.FindZstd +178 -0
- package/deps/librdkafka/packaging/cmake/README.md +38 -0
- package/deps/librdkafka/packaging/cmake/config.h.in +52 -0
- package/deps/librdkafka/packaging/cmake/parseversion.cmake +60 -0
- package/deps/librdkafka/packaging/cmake/rdkafka.pc.in +12 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_64_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/c11threads_test.c +14 -0
- package/deps/librdkafka/packaging/cmake/try_compile/crc32c_hw_test.c +27 -0
- package/deps/librdkafka/packaging/cmake/try_compile/dlopen_test.c +11 -0
- package/deps/librdkafka/packaging/cmake/try_compile/libsasl2_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_darwin_test.c +6 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_freebsd_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_gnu_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rand_r_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rdkafka_setup.cmake +122 -0
- package/deps/librdkafka/packaging/cmake/try_compile/regex_test.c +10 -0
- package/deps/librdkafka/packaging/cmake/try_compile/strndup_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_64_test.c +8 -0
- package/deps/librdkafka/packaging/cp/README.md +13 -0
- package/deps/librdkafka/packaging/cp/check_features.c +64 -0
- package/deps/librdkafka/packaging/cp/verify-deb.sh +33 -0
- package/deps/librdkafka/packaging/cp/verify-packages.sh +48 -0
- package/deps/librdkafka/packaging/cp/verify-rpm.sh +39 -0
- package/deps/librdkafka/packaging/debian/changelog +66 -0
- package/deps/librdkafka/packaging/debian/compat +1 -0
- package/deps/librdkafka/packaging/debian/control +49 -0
- package/deps/librdkafka/packaging/debian/copyright +84 -0
- package/deps/librdkafka/packaging/debian/gbp.conf +9 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.dirs +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.install +6 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka.dsc +16 -0
- package/deps/librdkafka/packaging/debian/librdkafka1-dbg.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.dirs +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.install +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postinst.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postrm.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.symbols +64 -0
- package/deps/librdkafka/packaging/debian/rules +19 -0
- package/deps/librdkafka/packaging/debian/source/format +1 -0
- package/deps/librdkafka/packaging/debian/watch +2 -0
- package/deps/librdkafka/packaging/get_version.py +21 -0
- package/deps/librdkafka/packaging/homebrew/README.md +15 -0
- package/deps/librdkafka/packaging/homebrew/brew-update-pr.sh +31 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw-static.sh +52 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw.sh +21 -0
- package/deps/librdkafka/packaging/mingw-w64/run-tests.sh +6 -0
- package/deps/librdkafka/packaging/mingw-w64/semaphoreci-build.sh +38 -0
- package/deps/librdkafka/packaging/mingw-w64/travis-before-install.sh +20 -0
- package/deps/librdkafka/packaging/nuget/README.md +84 -0
- package/deps/librdkafka/packaging/nuget/artifact.py +177 -0
- package/deps/librdkafka/packaging/nuget/cleanup-s3.py +143 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/nugetpackage.py +278 -0
- package/deps/librdkafka/packaging/nuget/packaging.py +448 -0
- package/deps/librdkafka/packaging/nuget/push-to-nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/release.py +167 -0
- package/deps/librdkafka/packaging/nuget/requirements.txt +3 -0
- package/deps/librdkafka/packaging/nuget/staticpackage.py +178 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.nuspec +21 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.props +18 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.targets +19 -0
- package/deps/librdkafka/packaging/nuget/zfile/__init__.py +0 -0
- package/deps/librdkafka/packaging/nuget/zfile/zfile.py +98 -0
- package/deps/librdkafka/packaging/rpm/Makefile +92 -0
- package/deps/librdkafka/packaging/rpm/README.md +23 -0
- package/deps/librdkafka/packaging/rpm/el7-x86_64.cfg +40 -0
- package/deps/librdkafka/packaging/rpm/librdkafka.spec +118 -0
- package/deps/librdkafka/packaging/rpm/mock-on-docker.sh +96 -0
- package/deps/librdkafka/packaging/rpm/tests/Makefile +25 -0
- package/deps/librdkafka/packaging/rpm/tests/README.md +8 -0
- package/deps/librdkafka/packaging/rpm/tests/run-test.sh +42 -0
- package/deps/librdkafka/packaging/rpm/tests/test-on-docker.sh +56 -0
- package/deps/librdkafka/packaging/rpm/tests/test.c +77 -0
- package/deps/librdkafka/packaging/rpm/tests/test.cpp +34 -0
- package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +10 -0
- package/deps/librdkafka/packaging/tools/build-deb-package.sh +64 -0
- package/deps/librdkafka/packaging/tools/build-debian.sh +65 -0
- package/deps/librdkafka/packaging/tools/build-manylinux.sh +68 -0
- package/deps/librdkafka/packaging/tools/build-release-artifacts.sh +139 -0
- package/deps/librdkafka/packaging/tools/distro-build.sh +38 -0
- package/deps/librdkafka/packaging/tools/gh-release-checksums.py +39 -0
- package/deps/librdkafka/packaging/tools/rdutcoverage.sh +25 -0
- package/deps/librdkafka/packaging/tools/requirements.txt +2 -0
- package/deps/librdkafka/packaging/tools/style-format.sh +148 -0
- package/deps/librdkafka/service.yml +18 -0
- package/deps/librdkafka/src/CMakeLists.txt +374 -0
- package/deps/librdkafka/src/Makefile +103 -0
- package/deps/librdkafka/src/README.lz4.md +30 -0
- package/deps/librdkafka/src/cJSON.c +2834 -0
- package/deps/librdkafka/src/cJSON.h +398 -0
- package/deps/librdkafka/src/crc32c.c +430 -0
- package/deps/librdkafka/src/crc32c.h +38 -0
- package/deps/librdkafka/src/generate_proto.sh +66 -0
- package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
- package/deps/librdkafka/src/lz4.c +2727 -0
- package/deps/librdkafka/src/lz4.h +842 -0
- package/deps/librdkafka/src/lz4frame.c +2078 -0
- package/deps/librdkafka/src/lz4frame.h +692 -0
- package/deps/librdkafka/src/lz4frame_static.h +47 -0
- package/deps/librdkafka/src/lz4hc.c +1631 -0
- package/deps/librdkafka/src/lz4hc.h +413 -0
- package/deps/librdkafka/src/nanopb/pb.h +917 -0
- package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
- package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
- package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
- package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
- package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
- package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
- package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
- package/deps/librdkafka/src/queue.h +850 -0
- package/deps/librdkafka/src/rd.h +441 -0
- package/deps/librdkafka/src/rdaddr.c +255 -0
- package/deps/librdkafka/src/rdaddr.h +203 -0
- package/deps/librdkafka/src/rdatomic.h +226 -0
- package/deps/librdkafka/src/rdavg.h +259 -0
- package/deps/librdkafka/src/rdavl.c +210 -0
- package/deps/librdkafka/src/rdavl.h +250 -0
- package/deps/librdkafka/src/rdbase64.c +169 -0
- package/deps/librdkafka/src/rdbase64.h +41 -0
- package/deps/librdkafka/src/rdbuf.c +1884 -0
- package/deps/librdkafka/src/rdbuf.h +375 -0
- package/deps/librdkafka/src/rdcrc32.c +114 -0
- package/deps/librdkafka/src/rdcrc32.h +170 -0
- package/deps/librdkafka/src/rddl.c +179 -0
- package/deps/librdkafka/src/rddl.h +43 -0
- package/deps/librdkafka/src/rdendian.h +174 -0
- package/deps/librdkafka/src/rdfloat.h +67 -0
- package/deps/librdkafka/src/rdfnv1a.c +113 -0
- package/deps/librdkafka/src/rdfnv1a.h +35 -0
- package/deps/librdkafka/src/rdgz.c +120 -0
- package/deps/librdkafka/src/rdgz.h +46 -0
- package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
- package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
- package/deps/librdkafka/src/rdhttp.c +512 -0
- package/deps/librdkafka/src/rdhttp.h +83 -0
- package/deps/librdkafka/src/rdinterval.h +177 -0
- package/deps/librdkafka/src/rdkafka.c +5351 -0
- package/deps/librdkafka/src/rdkafka.h +10603 -0
- package/deps/librdkafka/src/rdkafka_admin.c +9417 -0
- package/deps/librdkafka/src/rdkafka_admin.h +619 -0
- package/deps/librdkafka/src/rdkafka_assignment.c +1010 -0
- package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
- package/deps/librdkafka/src/rdkafka_assignor.c +1786 -0
- package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
- package/deps/librdkafka/src/rdkafka_aux.c +409 -0
- package/deps/librdkafka/src/rdkafka_aux.h +174 -0
- package/deps/librdkafka/src/rdkafka_background.c +221 -0
- package/deps/librdkafka/src/rdkafka_broker.c +6186 -0
- package/deps/librdkafka/src/rdkafka_broker.h +686 -0
- package/deps/librdkafka/src/rdkafka_buf.c +540 -0
- package/deps/librdkafka/src/rdkafka_buf.h +1524 -0
- package/deps/librdkafka/src/rdkafka_cert.c +552 -0
- package/deps/librdkafka/src/rdkafka_cert.h +61 -0
- package/deps/librdkafka/src/rdkafka_cgrp.c +7262 -0
- package/deps/librdkafka/src/rdkafka_cgrp.h +443 -0
- package/deps/librdkafka/src/rdkafka_conf.c +4456 -0
- package/deps/librdkafka/src/rdkafka_conf.h +668 -0
- package/deps/librdkafka/src/rdkafka_confval.h +97 -0
- package/deps/librdkafka/src/rdkafka_coord.c +623 -0
- package/deps/librdkafka/src/rdkafka_coord.h +132 -0
- package/deps/librdkafka/src/rdkafka_error.c +228 -0
- package/deps/librdkafka/src/rdkafka_error.h +80 -0
- package/deps/librdkafka/src/rdkafka_event.c +502 -0
- package/deps/librdkafka/src/rdkafka_event.h +126 -0
- package/deps/librdkafka/src/rdkafka_feature.c +461 -0
- package/deps/librdkafka/src/rdkafka_feature.h +102 -0
- package/deps/librdkafka/src/rdkafka_fetcher.c +1402 -0
- package/deps/librdkafka/src/rdkafka_fetcher.h +44 -0
- package/deps/librdkafka/src/rdkafka_header.c +220 -0
- package/deps/librdkafka/src/rdkafka_header.h +76 -0
- package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
- package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
- package/deps/librdkafka/src/rdkafka_int.h +1222 -0
- package/deps/librdkafka/src/rdkafka_interceptor.c +819 -0
- package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
- package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
- package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
- package/deps/librdkafka/src/rdkafka_metadata.c +2124 -0
- package/deps/librdkafka/src/rdkafka_metadata.h +341 -0
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +977 -0
- package/deps/librdkafka/src/rdkafka_mock.c +2885 -0
- package/deps/librdkafka/src/rdkafka_mock.h +491 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +710 -0
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +2817 -0
- package/deps/librdkafka/src/rdkafka_mock_int.h +591 -0
- package/deps/librdkafka/src/rdkafka_msg.c +2573 -0
- package/deps/librdkafka/src/rdkafka_msg.h +614 -0
- package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
- package/deps/librdkafka/src/rdkafka_msgset.h +98 -0
- package/deps/librdkafka/src/rdkafka_msgset_reader.c +1806 -0
- package/deps/librdkafka/src/rdkafka_msgset_writer.c +1470 -0
- package/deps/librdkafka/src/rdkafka_offset.c +1537 -0
- package/deps/librdkafka/src/rdkafka_offset.h +150 -0
- package/deps/librdkafka/src/rdkafka_op.c +997 -0
- package/deps/librdkafka/src/rdkafka_op.h +834 -0
- package/deps/librdkafka/src/rdkafka_partition.c +4801 -0
- package/deps/librdkafka/src/rdkafka_partition.h +1173 -0
- package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
- package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
- package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
- package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
- package/deps/librdkafka/src/rdkafka_proto.h +733 -0
- package/deps/librdkafka/src/rdkafka_protocol.h +127 -0
- package/deps/librdkafka/src/rdkafka_queue.c +1153 -0
- package/deps/librdkafka/src/rdkafka_queue.h +1201 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
- package/deps/librdkafka/src/rdkafka_request.c +6817 -0
- package/deps/librdkafka/src/rdkafka_request.h +709 -0
- package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
- package/deps/librdkafka/src/rdkafka_sasl.c +528 -0
- package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
- package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
- package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1829 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +589 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +37 -0
- package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
- package/deps/librdkafka/src/rdkafka_sasl_scram.c +857 -0
- package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
- package/deps/librdkafka/src/rdkafka_ssl.c +1904 -0
- package/deps/librdkafka/src/rdkafka_ssl.h +64 -0
- package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4781 -0
- package/deps/librdkafka/src/rdkafka_subscription.c +278 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +703 -0
- package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1053 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.c +993 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.h +301 -0
- package/deps/librdkafka/src/rdkafka_timer.c +402 -0
- package/deps/librdkafka/src/rdkafka_timer.h +117 -0
- package/deps/librdkafka/src/rdkafka_topic.c +2078 -0
- package/deps/librdkafka/src/rdkafka_topic.h +328 -0
- package/deps/librdkafka/src/rdkafka_transport.c +1297 -0
- package/deps/librdkafka/src/rdkafka_transport.h +94 -0
- package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.c +3251 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
- package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
- package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
- package/deps/librdkafka/src/rdlist.c +576 -0
- package/deps/librdkafka/src/rdlist.h +434 -0
- package/deps/librdkafka/src/rdlog.c +89 -0
- package/deps/librdkafka/src/rdlog.h +41 -0
- package/deps/librdkafka/src/rdmap.c +503 -0
- package/deps/librdkafka/src/rdmap.h +492 -0
- package/deps/librdkafka/src/rdmurmur2.c +167 -0
- package/deps/librdkafka/src/rdmurmur2.h +35 -0
- package/deps/librdkafka/src/rdports.c +61 -0
- package/deps/librdkafka/src/rdports.h +38 -0
- package/deps/librdkafka/src/rdposix.h +250 -0
- package/deps/librdkafka/src/rdrand.c +70 -0
- package/deps/librdkafka/src/rdrand.h +43 -0
- package/deps/librdkafka/src/rdregex.c +156 -0
- package/deps/librdkafka/src/rdregex.h +43 -0
- package/deps/librdkafka/src/rdsignal.h +57 -0
- package/deps/librdkafka/src/rdstring.c +645 -0
- package/deps/librdkafka/src/rdstring.h +98 -0
- package/deps/librdkafka/src/rdsysqueue.h +404 -0
- package/deps/librdkafka/src/rdtime.h +325 -0
- package/deps/librdkafka/src/rdtypes.h +86 -0
- package/deps/librdkafka/src/rdunittest.c +532 -0
- package/deps/librdkafka/src/rdunittest.h +230 -0
- package/deps/librdkafka/src/rdvarint.c +134 -0
- package/deps/librdkafka/src/rdvarint.h +165 -0
- package/deps/librdkafka/src/rdwin32.h +382 -0
- package/deps/librdkafka/src/rdxxhash.c +1030 -0
- package/deps/librdkafka/src/rdxxhash.h +328 -0
- package/deps/librdkafka/src/regexp.c +1347 -0
- package/deps/librdkafka/src/regexp.h +41 -0
- package/deps/librdkafka/src/snappy.c +1866 -0
- package/deps/librdkafka/src/snappy.h +62 -0
- package/deps/librdkafka/src/snappy_compat.h +138 -0
- package/deps/librdkafka/src/statistics_schema.json +444 -0
- package/deps/librdkafka/src/tinycthread.c +932 -0
- package/deps/librdkafka/src/tinycthread.h +503 -0
- package/deps/librdkafka/src/tinycthread_extra.c +175 -0
- package/deps/librdkafka/src/tinycthread_extra.h +208 -0
- package/deps/librdkafka/src/win32_config.h +58 -0
- package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
- package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
- package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
- package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
- package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
- package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
- package/deps/librdkafka/src-cpp/Makefile +55 -0
- package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
- package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
- package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
- package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
- package/deps/librdkafka/src-cpp/README.md +16 -0
- package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
- package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
- package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp.h +3771 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
- package/deps/librdkafka/tests/0000-unittests.c +72 -0
- package/deps/librdkafka/tests/0001-multiobj.c +98 -0
- package/deps/librdkafka/tests/0002-unkpart.c +244 -0
- package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
- package/deps/librdkafka/tests/0004-conf.c +867 -0
- package/deps/librdkafka/tests/0005-order.c +133 -0
- package/deps/librdkafka/tests/0006-symbols.c +163 -0
- package/deps/librdkafka/tests/0007-autotopic.c +136 -0
- package/deps/librdkafka/tests/0008-reqacks.c +179 -0
- package/deps/librdkafka/tests/0009-mock_cluster.c +96 -0
- package/deps/librdkafka/tests/0011-produce_batch.c +752 -0
- package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
- package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
- package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
- package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
- package/deps/librdkafka/tests/0016-client_swname.c +166 -0
- package/deps/librdkafka/tests/0017-compression.c +142 -0
- package/deps/librdkafka/tests/0018-cgrp_term.c +333 -0
- package/deps/librdkafka/tests/0019-list_groups.c +289 -0
- package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
- package/deps/librdkafka/tests/0021-rkt_destroy.c +71 -0
- package/deps/librdkafka/tests/0022-consume_batch.c +276 -0
- package/deps/librdkafka/tests/0025-timers.c +147 -0
- package/deps/librdkafka/tests/0026-consume_pause.c +549 -0
- package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
- package/deps/librdkafka/tests/0029-assign_offset.c +204 -0
- package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
- package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
- package/deps/librdkafka/tests/0033-regex_subscribe.c +520 -0
- package/deps/librdkafka/tests/0034-offset_reset.c +377 -0
- package/deps/librdkafka/tests/0035-api_version.c +73 -0
- package/deps/librdkafka/tests/0036-partial_fetch.c +86 -0
- package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
- package/deps/librdkafka/tests/0038-performance.c +120 -0
- package/deps/librdkafka/tests/0039-event.c +284 -0
- package/deps/librdkafka/tests/0040-io_event.c +251 -0
- package/deps/librdkafka/tests/0041-fetch_max_bytes.c +96 -0
- package/deps/librdkafka/tests/0042-many_topics.c +252 -0
- package/deps/librdkafka/tests/0043-no_connection.c +77 -0
- package/deps/librdkafka/tests/0044-partition_cnt.c +93 -0
- package/deps/librdkafka/tests/0045-subscribe_update.c +746 -0
- package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
- package/deps/librdkafka/tests/0047-partial_buf_tmout.c +97 -0
- package/deps/librdkafka/tests/0048-partitioner.c +283 -0
- package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
- package/deps/librdkafka/tests/0050-subscribe_adds.c +144 -0
- package/deps/librdkafka/tests/0051-assign_adds.c +125 -0
- package/deps/librdkafka/tests/0052-msg_timestamps.c +220 -0
- package/deps/librdkafka/tests/0053-stats_cb.cpp +535 -0
- package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
- package/deps/librdkafka/tests/0055-producer_latency.c +366 -0
- package/deps/librdkafka/tests/0056-balanced_group_mt.c +311 -0
- package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
- package/deps/librdkafka/tests/0058-log.cpp +123 -0
- package/deps/librdkafka/tests/0059-bsearch.cpp +237 -0
- package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
- package/deps/librdkafka/tests/0061-consumer_lag.cpp +275 -0
- package/deps/librdkafka/tests/0062-stats_event.c +126 -0
- package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
- package/deps/librdkafka/tests/0064-interceptors.c +481 -0
- package/deps/librdkafka/tests/0065-yield.cpp +140 -0
- package/deps/librdkafka/tests/0066-plugins.cpp +129 -0
- package/deps/librdkafka/tests/0067-empty_topic.cpp +148 -0
- package/deps/librdkafka/tests/0068-produce_timeout.c +138 -0
- package/deps/librdkafka/tests/0069-consumer_add_parts.c +123 -0
- package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
- package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
- package/deps/librdkafka/tests/0073-headers.c +381 -0
- package/deps/librdkafka/tests/0074-producev.c +87 -0
- package/deps/librdkafka/tests/0075-retry.c +253 -0
- package/deps/librdkafka/tests/0076-produce_retry.c +450 -0
- package/deps/librdkafka/tests/0077-compaction.c +357 -0
- package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
- package/deps/librdkafka/tests/0079-fork.c +93 -0
- package/deps/librdkafka/tests/0080-admin_ut.c +3065 -0
- package/deps/librdkafka/tests/0081-admin.c +5333 -0
- package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +133 -0
- package/deps/librdkafka/tests/0083-cb_event.c +228 -0
- package/deps/librdkafka/tests/0084-destroy_flags.c +212 -0
- package/deps/librdkafka/tests/0085-headers.cpp +388 -0
- package/deps/librdkafka/tests/0086-purge.c +335 -0
- package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
- package/deps/librdkafka/tests/0089-max_poll_interval.c +506 -0
- package/deps/librdkafka/tests/0090-idempotence.c +172 -0
- package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +297 -0
- package/deps/librdkafka/tests/0092-mixed_msgver.c +97 -0
- package/deps/librdkafka/tests/0093-holb.c +197 -0
- package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +230 -0
- package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
- package/deps/librdkafka/tests/0097-ssl_verify.cpp +466 -0
- package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
- package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
- package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
- package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
- package/deps/librdkafka/tests/0102-static_group_rebalance.c +535 -0
- package/deps/librdkafka/tests/0103-transactions.c +1383 -0
- package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +624 -0
- package/deps/librdkafka/tests/0105-transactions_mock.c +3923 -0
- package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +297 -0
- package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
- package/deps/librdkafka/tests/0109-auto_create_topics.cpp +218 -0
- package/deps/librdkafka/tests/0110-batch_size.cpp +183 -0
- package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
- package/deps/librdkafka/tests/0112-assign_unknown_part.c +98 -0
- package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3329 -0
- package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
- package/deps/librdkafka/tests/0115-producer_auth.cpp +179 -0
- package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +214 -0
- package/deps/librdkafka/tests/0117-mock_errors.c +321 -0
- package/deps/librdkafka/tests/0118-commit_rebalance.c +121 -0
- package/deps/librdkafka/tests/0119-consumer_auth.cpp +148 -0
- package/deps/librdkafka/tests/0120-asymmetric_subscription.c +180 -0
- package/deps/librdkafka/tests/0121-clusterid.c +115 -0
- package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
- package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
- package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
- package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
- package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +213 -0
- package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
- package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +125 -0
- package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +78 -0
- package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
- package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
- package/deps/librdkafka/tests/0132-strategy_ordering.c +171 -0
- package/deps/librdkafka/tests/0133-ssl_keys.c +128 -0
- package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
- package/deps/librdkafka/tests/0135-sasl_credentials.cpp +143 -0
- package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
- package/deps/librdkafka/tests/0137-barrier_batch_consume.c +609 -0
- package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
- package/deps/librdkafka/tests/0139-offset_validation_mock.c +442 -0
- package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
- package/deps/librdkafka/tests/0142-reauthentication.c +495 -0
- package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +553 -0
- package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
- package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
- package/deps/librdkafka/tests/0146-metadata_mock.c +444 -0
- package/deps/librdkafka/tests/0150-telemetry_mock.c +648 -0
- package/deps/librdkafka/tests/1000-unktopic.c +164 -0
- package/deps/librdkafka/tests/8000-idle.cpp +60 -0
- package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
- package/deps/librdkafka/tests/CMakeLists.txt +164 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +266 -0
- package/deps/librdkafka/tests/Makefile +182 -0
- package/deps/librdkafka/tests/README.md +509 -0
- package/deps/librdkafka/tests/autotest.sh +33 -0
- package/deps/librdkafka/tests/backtrace.gdb +30 -0
- package/deps/librdkafka/tests/broker_version_tests.py +315 -0
- package/deps/librdkafka/tests/buildbox.sh +17 -0
- package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
- package/deps/librdkafka/tests/cluster_testing.py +191 -0
- package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
- package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
- package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +109 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.key +34 -0
- package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +93 -0
- package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
- package/deps/librdkafka/tests/fuzzers/README.md +31 -0
- package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
- package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
- package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
- package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
- package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
- package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
- package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
- package/deps/librdkafka/tests/java/Makefile +12 -0
- package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
- package/deps/librdkafka/tests/java/README.md +14 -0
- package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
- package/deps/librdkafka/tests/java/run-class.sh +11 -0
- package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
- package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
- package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
- package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
- package/deps/librdkafka/tests/performance_plot.py +115 -0
- package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
- package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
- package/deps/librdkafka/tests/requirements.txt +2 -0
- package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-test.sh +140 -0
- package/deps/librdkafka/tests/rusage.c +249 -0
- package/deps/librdkafka/tests/sasl_test.py +289 -0
- package/deps/librdkafka/tests/scenarios/README.md +6 -0
- package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
- package/deps/librdkafka/tests/scenarios/default.json +5 -0
- package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
- package/deps/librdkafka/tests/sockem.c +801 -0
- package/deps/librdkafka/tests/sockem.h +85 -0
- package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
- package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
- package/deps/librdkafka/tests/test.c +7318 -0
- package/deps/librdkafka/tests/test.conf.example +27 -0
- package/deps/librdkafka/tests/test.h +979 -0
- package/deps/librdkafka/tests/testcpp.cpp +126 -0
- package/deps/librdkafka/tests/testcpp.h +360 -0
- package/deps/librdkafka/tests/testshared.h +402 -0
- package/deps/librdkafka/tests/tools/README.md +4 -0
- package/deps/librdkafka/tests/tools/stats/README.md +21 -0
- package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
- package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
- package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
- package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
- package/deps/librdkafka/tests/until-fail.sh +87 -0
- package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
- package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
- package/deps/librdkafka/vcpkg.json +23 -0
- package/deps/librdkafka/win32/README.md +5 -0
- package/deps/librdkafka/win32/build-package.bat +3 -0
- package/deps/librdkafka/win32/build.bat +19 -0
- package/deps/librdkafka/win32/common.vcxproj +84 -0
- package/deps/librdkafka/win32/install-openssl.ps1 +33 -0
- package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
- package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
- package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
- package/deps/librdkafka/win32/librdkafka.sln +226 -0
- package/deps/librdkafka/win32/librdkafka.vcxproj +276 -0
- package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
- package/deps/librdkafka/win32/msbuild.ps1 +15 -0
- package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
- package/deps/librdkafka/win32/package-zip.ps1 +46 -0
- package/deps/librdkafka/win32/packages/repositories.config +4 -0
- package/deps/librdkafka/win32/push-package.bat +4 -0
- package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
- package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
- package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
- package/deps/librdkafka/win32/setup-msys2.ps1 +31 -0
- package/deps/librdkafka/win32/setup-vcpkg.ps1 +12 -0
- package/deps/librdkafka/win32/tests/test.conf.example +25 -0
- package/deps/librdkafka/win32/tests/tests.vcxproj +247 -0
- package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
- package/deps/librdkafka/win32/wingetopt.c +564 -0
- package/deps/librdkafka/win32/wingetopt.h +100 -0
- package/deps/librdkafka/win32/wintime.h +33 -0
- package/deps/librdkafka.gyp +62 -0
- package/deps/windows-install.py +73 -0
- package/docker-compose.yml +23 -0
- package/e2e/admin.spec.js +187 -0
- package/e2e/both.spec.js +726 -0
- package/e2e/consumer.spec.js +386 -0
- package/e2e/groups.spec.js +132 -0
- package/e2e/listener.js +51 -0
- package/e2e/producer-transaction.spec.js +333 -0
- package/e2e/producer.spec.js +283 -0
- package/errors.d.ts +347 -0
- package/examples/consumer-flow.md +76 -0
- package/examples/consumer.md +45 -0
- package/examples/docker-alpine.md +30 -0
- package/examples/high-level-producer.md +32 -0
- package/examples/metadata.md +27 -0
- package/examples/oauthbearer-default-flow.md +80 -0
- package/examples/producer-cluster.md +103 -0
- package/examples/producer.md +73 -0
- package/index.d.ts +357 -0
- package/lib/admin.js +233 -0
- package/lib/client.js +578 -0
- package/lib/error.js +472 -0
- package/lib/index.js +34 -0
- package/lib/kafka-consumer-stream.js +397 -0
- package/lib/kafka-consumer.js +698 -0
- package/lib/producer/high-level-producer.js +323 -0
- package/lib/producer-stream.js +307 -0
- package/lib/producer.js +375 -0
- package/lib/tools/ref-counter.js +52 -0
- package/lib/topic-partition.js +88 -0
- package/lib/topic.js +42 -0
- package/lib/util.js +29 -0
- package/librdkafka.js +12 -0
- package/make_docs.sh +59 -0
- package/package.json +53 -0
- package/renovate.json +30 -0
- package/run_docker.sh +42 -0
- package/src/admin.cc +624 -0
- package/src/admin.h +78 -0
- package/src/binding.cc +73 -0
- package/src/binding.h +25 -0
- package/src/callbacks.cc +614 -0
- package/src/callbacks.h +265 -0
- package/src/common.cc +582 -0
- package/src/common.h +134 -0
- package/src/config.cc +167 -0
- package/src/config.h +45 -0
- package/src/connection.cc +482 -0
- package/src/connection.h +108 -0
- package/src/errors.cc +96 -0
- package/src/errors.h +53 -0
- package/src/kafka-consumer.cc +1457 -0
- package/src/kafka-consumer.h +136 -0
- package/src/per-isolate-data.cc +57 -0
- package/src/per-isolate-data.h +39 -0
- package/src/producer.cc +873 -0
- package/src/producer.h +125 -0
- package/src/topic.cc +180 -0
- package/src/topic.h +56 -0
- package/src/workers.cc +1245 -0
- package/src/workers.h +511 -0
- package/test/binding.spec.js +66 -0
- package/test/consumer.spec.js +91 -0
- package/test/error.spec.js +8 -0
- package/test/index.spec.js +8 -0
- package/test/kafka-consumer-stream.spec.js +298 -0
- package/test/kafka-consumer-worker.js +51 -0
- package/test/kafka-consumer.spec.js +86 -0
- package/test/mocha.opts +1 -0
- package/test/mock.js +55 -0
- package/test/producer/high-level-producer.spec.js +496 -0
- package/test/producer-stream.spec.js +723 -0
- package/test/producer-worker.js +53 -0
- package/test/producer.spec.js +120 -0
- package/test/tools/ref-counter.spec.js +53 -0
- package/test/topic-partition.spec.js +104 -0
- package/test/util.spec.js +46 -0
- package/util/configure.js +30 -0
- package/util/get-env.js +6 -0
- package/util/test-compile.js +11 -0
- package/util/test-producer-delivery.js +100 -0
- package/win_install.ps1 +2 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librd - Rapid Development C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2012-2022, Magnus Edenhill
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
#ifndef _RDADDR_H_
|
|
30
|
+
#define _RDADDR_H_
|
|
31
|
+
|
|
32
|
+
#ifndef _WIN32
|
|
33
|
+
#include <netinet/in.h>
|
|
34
|
+
#include <arpa/inet.h>
|
|
35
|
+
#include <netdb.h>
|
|
36
|
+
#else
|
|
37
|
+
#define WIN32_MEAN_AND_LEAN
|
|
38
|
+
#include <winsock2.h>
|
|
39
|
+
#include <ws2ipdef.h>
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
#if defined(__FreeBSD__) || defined(_AIX) || defined(__OpenBSD__)
|
|
43
|
+
#include <sys/socket.h>
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* rd_sockaddr_inx_t is a union for either ipv4 or ipv6 sockaddrs.
|
|
48
|
+
* It provides conveniant abstraction of AF_INET* agnostic operations.
|
|
49
|
+
*/
|
|
50
|
+
typedef union {
|
|
51
|
+
struct sockaddr_in in;
|
|
52
|
+
struct sockaddr_in6 in6;
|
|
53
|
+
} rd_sockaddr_inx_t;
|
|
54
|
+
#define sinx_family in.sin_family
|
|
55
|
+
#define sinx_addr in.sin_addr
|
|
56
|
+
#define RD_SOCKADDR_INX_LEN(sinx) \
|
|
57
|
+
((sinx)->sinx_family == AF_INET \
|
|
58
|
+
? sizeof(struct sockaddr_in) \
|
|
59
|
+
: (sinx)->sinx_family == AF_INET6 ? sizeof(struct sockaddr_in6) \
|
|
60
|
+
: sizeof(rd_sockaddr_inx_t))
|
|
61
|
+
#define RD_SOCKADDR_INX_PORT(sinx) \
|
|
62
|
+
((sinx)->sinx_family == AF_INET \
|
|
63
|
+
? (sinx)->in.sin_port \
|
|
64
|
+
: (sinx)->sinx_family == AF_INET6 ? (sinx)->in6.sin6_port : 0)
|
|
65
|
+
|
|
66
|
+
#define RD_SOCKADDR_INX_PORT_SET(sinx, port) \
|
|
67
|
+
do { \
|
|
68
|
+
if ((sinx)->sinx_family == AF_INET) \
|
|
69
|
+
(sinx)->in.sin_port = port; \
|
|
70
|
+
else if ((sinx)->sinx_family == AF_INET6) \
|
|
71
|
+
(sinx)->in6.sin6_port = port; \
|
|
72
|
+
} while (0)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Returns a thread-local temporary string (may be called up to 32 times
|
|
78
|
+
* without buffer wrapping) containing the human string representation
|
|
79
|
+
* of the sockaddr (which should be AF_INET or AF_INET6 at this point).
|
|
80
|
+
* If the RD_SOCKADDR2STR_F_PORT is provided the port number will be
|
|
81
|
+
* appended to the string.
|
|
82
|
+
* IPv6 address enveloping ("[addr]:port") will also be performed
|
|
83
|
+
* if .._F_PORT is set.
|
|
84
|
+
*/
|
|
85
|
+
#define RD_SOCKADDR2STR_F_PORT 0x1 /* Append the port. */
|
|
86
|
+
#define RD_SOCKADDR2STR_F_RESOLVE \
|
|
87
|
+
0x2 /* Try to resolve address to hostname. \
|
|
88
|
+
*/
|
|
89
|
+
#define RD_SOCKADDR2STR_F_FAMILY 0x4 /* Prepend address family. */
|
|
90
|
+
#define RD_SOCKADDR2STR_F_NICE /* Nice and friendly output */ \
|
|
91
|
+
(RD_SOCKADDR2STR_F_PORT | RD_SOCKADDR2STR_F_RESOLVE)
|
|
92
|
+
const char *rd_sockaddr2str(const void *addr, int flags);
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Splits a node:service definition up into their node and svc counterparts
|
|
97
|
+
* suitable for passing to getaddrinfo().
|
|
98
|
+
* Returns NULL on success (and temporarily available pointers in '*node'
|
|
99
|
+
* and '*svc') or error string on failure.
|
|
100
|
+
*
|
|
101
|
+
* Thread-safe but returned buffers in '*node' and '*svc' are only
|
|
102
|
+
* usable until the next call to rd_addrinfo_prepare() in the same thread.
|
|
103
|
+
*/
|
|
104
|
+
const char *rd_addrinfo_prepare(const char *nodesvc, char **node, char **svc);
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
typedef struct rd_sockaddr_list_s {
|
|
109
|
+
int rsal_cnt;
|
|
110
|
+
int rsal_curr;
|
|
111
|
+
rd_sockaddr_inx_t rsal_addr[];
|
|
112
|
+
} rd_sockaddr_list_t;
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Returns the next address from a sockaddr list and updates
|
|
117
|
+
* the current-index to point to it.
|
|
118
|
+
*
|
|
119
|
+
* Typical usage is for round-robin connection attempts or similar:
|
|
120
|
+
* while (1) {
|
|
121
|
+
* rd_sockaddr_inx_t *sinx = rd_sockaddr_list_next(my_server_list);
|
|
122
|
+
* if (do_connect((struct sockaddr *)sinx) == -1) {
|
|
123
|
+
* sleep(1);
|
|
124
|
+
* continue;
|
|
125
|
+
* }
|
|
126
|
+
* ...
|
|
127
|
+
* }
|
|
128
|
+
*
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
static RD_INLINE rd_sockaddr_inx_t *
|
|
132
|
+
rd_sockaddr_list_next(rd_sockaddr_list_t *rsal) RD_UNUSED;
|
|
133
|
+
static RD_INLINE rd_sockaddr_inx_t *
|
|
134
|
+
rd_sockaddr_list_next(rd_sockaddr_list_t *rsal) {
|
|
135
|
+
rsal->rsal_curr = (rsal->rsal_curr + 1) % rsal->rsal_cnt;
|
|
136
|
+
return &rsal->rsal_addr[rsal->rsal_curr];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
#define RD_SOCKADDR_LIST_FOREACH(sinx, rsal) \
|
|
141
|
+
for ((sinx) = &(rsal)->rsal_addr[0]; \
|
|
142
|
+
(sinx) < &(rsal)->rsal_addr[(rsal)->rsal_cnt]; (sinx)++)
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Wrapper for getaddrinfo(3) that performs these additional tasks:
|
|
146
|
+
* - Input is a combined "<node>[:<svc>]" string, with support for
|
|
147
|
+
* IPv6 enveloping ("[addr]:port").
|
|
148
|
+
* - Returns a rd_sockaddr_list_t which must be freed with
|
|
149
|
+
* rd_sockaddr_list_destroy() when done with it.
|
|
150
|
+
* - Automatically shuffles the returned address list to provide
|
|
151
|
+
* round-robin (unless RD_AI_NOSHUFFLE is provided in 'flags').
|
|
152
|
+
*
|
|
153
|
+
* Thread-safe.
|
|
154
|
+
*/
|
|
155
|
+
#define RD_AI_NOSHUFFLE \
|
|
156
|
+
0x10000000 /* Dont shuffle returned address list. \
|
|
157
|
+
* FIXME: Guessing non-used bits like this \
|
|
158
|
+
* is a bad idea. */
|
|
159
|
+
|
|
160
|
+
struct addrinfo;
|
|
161
|
+
|
|
162
|
+
rd_sockaddr_list_t *
|
|
163
|
+
rd_getaddrinfo(const char *nodesvc,
|
|
164
|
+
const char *defsvc,
|
|
165
|
+
int flags,
|
|
166
|
+
int family,
|
|
167
|
+
int socktype,
|
|
168
|
+
int protocol,
|
|
169
|
+
int (*resolve_cb)(const char *node,
|
|
170
|
+
const char *service,
|
|
171
|
+
const struct addrinfo *hints,
|
|
172
|
+
struct addrinfo **res,
|
|
173
|
+
void *opaque),
|
|
174
|
+
void *opaque,
|
|
175
|
+
const char **errstr);
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Frees a sockaddr list.
|
|
181
|
+
*
|
|
182
|
+
* Thread-safe.
|
|
183
|
+
*/
|
|
184
|
+
void rd_sockaddr_list_destroy(rd_sockaddr_list_t *rsal);
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Returns the human readable name of a socket family.
|
|
190
|
+
*/
|
|
191
|
+
static const char *rd_family2str(int af) RD_UNUSED;
|
|
192
|
+
static const char *rd_family2str(int af) {
|
|
193
|
+
switch (af) {
|
|
194
|
+
case AF_INET:
|
|
195
|
+
return "inet";
|
|
196
|
+
case AF_INET6:
|
|
197
|
+
return "inet6";
|
|
198
|
+
default:
|
|
199
|
+
return "af?";
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
#endif /* _RDADDR_H_ */
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - The Apache Kafka C/C++ library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2014-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
|
+
#ifndef _RDATOMIC_H_
|
|
29
|
+
#define _RDATOMIC_H_
|
|
30
|
+
|
|
31
|
+
#include "tinycthread.h"
|
|
32
|
+
|
|
33
|
+
typedef struct {
|
|
34
|
+
int32_t val;
|
|
35
|
+
#if !defined(_WIN32) && !HAVE_ATOMICS_32
|
|
36
|
+
mtx_t lock;
|
|
37
|
+
#endif
|
|
38
|
+
} rd_atomic32_t;
|
|
39
|
+
|
|
40
|
+
typedef struct {
|
|
41
|
+
int64_t val;
|
|
42
|
+
#if !defined(_WIN32) && !HAVE_ATOMICS_64
|
|
43
|
+
mtx_t lock;
|
|
44
|
+
#endif
|
|
45
|
+
} rd_atomic64_t;
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
static RD_INLINE RD_UNUSED void rd_atomic32_init(rd_atomic32_t *ra, int32_t v) {
|
|
49
|
+
ra->val = v;
|
|
50
|
+
#if !defined(_WIN32) && !HAVE_ATOMICS_32
|
|
51
|
+
mtx_init(&ra->lock, mtx_plain);
|
|
52
|
+
#endif
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
static RD_INLINE int32_t RD_UNUSED rd_atomic32_add(rd_atomic32_t *ra,
|
|
57
|
+
int32_t v) {
|
|
58
|
+
#ifdef __SUNPRO_C
|
|
59
|
+
return atomic_add_32_nv(&ra->val, v);
|
|
60
|
+
#elif defined(_WIN32)
|
|
61
|
+
return InterlockedAdd((LONG *)&ra->val, v);
|
|
62
|
+
#elif !HAVE_ATOMICS_32
|
|
63
|
+
int32_t r;
|
|
64
|
+
mtx_lock(&ra->lock);
|
|
65
|
+
ra->val += v;
|
|
66
|
+
r = ra->val;
|
|
67
|
+
mtx_unlock(&ra->lock);
|
|
68
|
+
return r;
|
|
69
|
+
#else
|
|
70
|
+
return ATOMIC_OP32(add, fetch, &ra->val, v);
|
|
71
|
+
#endif
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static RD_INLINE int32_t RD_UNUSED rd_atomic32_sub(rd_atomic32_t *ra,
|
|
75
|
+
int32_t v) {
|
|
76
|
+
#ifdef __SUNPRO_C
|
|
77
|
+
return atomic_add_32_nv(&ra->val, -v);
|
|
78
|
+
#elif defined(_WIN32)
|
|
79
|
+
return InterlockedAdd((LONG *)&ra->val, -v);
|
|
80
|
+
#elif !HAVE_ATOMICS_32
|
|
81
|
+
int32_t r;
|
|
82
|
+
mtx_lock(&ra->lock);
|
|
83
|
+
ra->val -= v;
|
|
84
|
+
r = ra->val;
|
|
85
|
+
mtx_unlock(&ra->lock);
|
|
86
|
+
return r;
|
|
87
|
+
#else
|
|
88
|
+
return ATOMIC_OP32(sub, fetch, &ra->val, v);
|
|
89
|
+
#endif
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @warning The returned value is the nominal value and will be outdated
|
|
94
|
+
* by the time the application reads it.
|
|
95
|
+
* It should not be used for exact arithmetics, any correlation
|
|
96
|
+
* with other data is unsynchronized, meaning that two atomics,
|
|
97
|
+
* or one atomic and a mutex-protected piece of data have no
|
|
98
|
+
* common synchronization and can't be relied on.
|
|
99
|
+
*/
|
|
100
|
+
static RD_INLINE int32_t RD_UNUSED rd_atomic32_get(rd_atomic32_t *ra) {
|
|
101
|
+
#if defined(_WIN32) || defined(__SUNPRO_C)
|
|
102
|
+
return ra->val;
|
|
103
|
+
#elif !HAVE_ATOMICS_32
|
|
104
|
+
int32_t r;
|
|
105
|
+
mtx_lock(&ra->lock);
|
|
106
|
+
r = ra->val;
|
|
107
|
+
mtx_unlock(&ra->lock);
|
|
108
|
+
return r;
|
|
109
|
+
#else
|
|
110
|
+
return ATOMIC_OP32(fetch, add, &ra->val, 0);
|
|
111
|
+
#endif
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
static RD_INLINE int32_t RD_UNUSED rd_atomic32_set(rd_atomic32_t *ra,
|
|
115
|
+
int32_t v) {
|
|
116
|
+
#ifdef _WIN32
|
|
117
|
+
return InterlockedExchange((LONG *)&ra->val, v);
|
|
118
|
+
#elif !HAVE_ATOMICS_32
|
|
119
|
+
int32_t r;
|
|
120
|
+
mtx_lock(&ra->lock);
|
|
121
|
+
r = ra->val = v;
|
|
122
|
+
mtx_unlock(&ra->lock);
|
|
123
|
+
return r;
|
|
124
|
+
#elif HAVE_ATOMICS_32_ATOMIC
|
|
125
|
+
__atomic_store_n(&ra->val, v, __ATOMIC_SEQ_CST);
|
|
126
|
+
return v;
|
|
127
|
+
#elif HAVE_ATOMICS_32_SYNC
|
|
128
|
+
(void)__sync_lock_test_and_set(&ra->val, v);
|
|
129
|
+
return v;
|
|
130
|
+
#else
|
|
131
|
+
return ra->val = v; // FIXME
|
|
132
|
+
#endif
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
static RD_INLINE RD_UNUSED void rd_atomic64_init(rd_atomic64_t *ra, int64_t v) {
|
|
138
|
+
ra->val = v;
|
|
139
|
+
#if !defined(_WIN32) && !HAVE_ATOMICS_64
|
|
140
|
+
mtx_init(&ra->lock, mtx_plain);
|
|
141
|
+
#endif
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
static RD_INLINE int64_t RD_UNUSED rd_atomic64_add(rd_atomic64_t *ra,
|
|
145
|
+
int64_t v) {
|
|
146
|
+
#ifdef __SUNPRO_C
|
|
147
|
+
return atomic_add_64_nv(&ra->val, v);
|
|
148
|
+
#elif defined(_WIN32)
|
|
149
|
+
return InterlockedAdd64(&ra->val, v);
|
|
150
|
+
#elif !HAVE_ATOMICS_64
|
|
151
|
+
int64_t r;
|
|
152
|
+
mtx_lock(&ra->lock);
|
|
153
|
+
ra->val += v;
|
|
154
|
+
r = ra->val;
|
|
155
|
+
mtx_unlock(&ra->lock);
|
|
156
|
+
return r;
|
|
157
|
+
#else
|
|
158
|
+
return ATOMIC_OP64(add, fetch, &ra->val, v);
|
|
159
|
+
#endif
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
static RD_INLINE int64_t RD_UNUSED rd_atomic64_sub(rd_atomic64_t *ra,
|
|
163
|
+
int64_t v) {
|
|
164
|
+
#ifdef __SUNPRO_C
|
|
165
|
+
return atomic_add_64_nv(&ra->val, -v);
|
|
166
|
+
#elif defined(_WIN32)
|
|
167
|
+
return InterlockedAdd64(&ra->val, -v);
|
|
168
|
+
#elif !HAVE_ATOMICS_64
|
|
169
|
+
int64_t r;
|
|
170
|
+
mtx_lock(&ra->lock);
|
|
171
|
+
ra->val -= v;
|
|
172
|
+
r = ra->val;
|
|
173
|
+
mtx_unlock(&ra->lock);
|
|
174
|
+
return r;
|
|
175
|
+
#else
|
|
176
|
+
return ATOMIC_OP64(sub, fetch, &ra->val, v);
|
|
177
|
+
#endif
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @warning The returned value is the nominal value and will be outdated
|
|
182
|
+
* by the time the application reads it.
|
|
183
|
+
* It should not be used for exact arithmetics, any correlation
|
|
184
|
+
* with other data is unsynchronized, meaning that two atomics,
|
|
185
|
+
* or one atomic and a mutex-protected piece of data have no
|
|
186
|
+
* common synchronization and can't be relied on.
|
|
187
|
+
* Use with care.
|
|
188
|
+
*/
|
|
189
|
+
static RD_INLINE int64_t RD_UNUSED rd_atomic64_get(rd_atomic64_t *ra) {
|
|
190
|
+
#if defined(_WIN32) || defined(__SUNPRO_C)
|
|
191
|
+
return InterlockedCompareExchange64(&ra->val, 0, 0);
|
|
192
|
+
#elif !HAVE_ATOMICS_64
|
|
193
|
+
int64_t r;
|
|
194
|
+
mtx_lock(&ra->lock);
|
|
195
|
+
r = ra->val;
|
|
196
|
+
mtx_unlock(&ra->lock);
|
|
197
|
+
return r;
|
|
198
|
+
#else
|
|
199
|
+
return ATOMIC_OP64(fetch, add, &ra->val, 0);
|
|
200
|
+
#endif
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
static RD_INLINE int64_t RD_UNUSED rd_atomic64_set(rd_atomic64_t *ra,
|
|
205
|
+
int64_t v) {
|
|
206
|
+
#ifdef _WIN32
|
|
207
|
+
return InterlockedExchange64(&ra->val, v);
|
|
208
|
+
#elif !HAVE_ATOMICS_64
|
|
209
|
+
int64_t r;
|
|
210
|
+
mtx_lock(&ra->lock);
|
|
211
|
+
ra->val = v;
|
|
212
|
+
r = ra->val;
|
|
213
|
+
mtx_unlock(&ra->lock);
|
|
214
|
+
return r;
|
|
215
|
+
#elif HAVE_ATOMICS_64_ATOMIC
|
|
216
|
+
__atomic_store_n(&ra->val, v, __ATOMIC_SEQ_CST);
|
|
217
|
+
return v;
|
|
218
|
+
#elif HAVE_ATOMICS_64_SYNC
|
|
219
|
+
(void)__sync_lock_test_and_set(&ra->val, v);
|
|
220
|
+
return v;
|
|
221
|
+
#else
|
|
222
|
+
return ra->val = v; // FIXME
|
|
223
|
+
#endif
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
#endif /* _RDATOMIC_H_ */
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2018-2022, Magnus Edenhill
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
#ifndef _RDAVG_H_
|
|
30
|
+
#define _RDAVG_H_
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
#if WITH_HDRHISTOGRAM
|
|
34
|
+
#include "rdhdrhistogram.h"
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
typedef struct rd_avg_s {
|
|
38
|
+
struct {
|
|
39
|
+
int64_t maxv;
|
|
40
|
+
int64_t minv;
|
|
41
|
+
int64_t avg;
|
|
42
|
+
int64_t sum;
|
|
43
|
+
int cnt;
|
|
44
|
+
rd_ts_t start;
|
|
45
|
+
} ra_v;
|
|
46
|
+
mtx_t ra_lock;
|
|
47
|
+
int ra_enabled;
|
|
48
|
+
enum { RD_AVG_GAUGE,
|
|
49
|
+
RD_AVG_COUNTER,
|
|
50
|
+
} ra_type;
|
|
51
|
+
#if WITH_HDRHISTOGRAM
|
|
52
|
+
rd_hdr_histogram_t *ra_hdr;
|
|
53
|
+
#endif
|
|
54
|
+
/* Histogram results, calculated for dst in rollover().
|
|
55
|
+
* Will be all zeroes if histograms are not supported. */
|
|
56
|
+
struct {
|
|
57
|
+
/* Quantiles */
|
|
58
|
+
int64_t p50;
|
|
59
|
+
int64_t p75;
|
|
60
|
+
int64_t p90;
|
|
61
|
+
int64_t p95;
|
|
62
|
+
int64_t p99;
|
|
63
|
+
int64_t p99_99;
|
|
64
|
+
|
|
65
|
+
int64_t oor; /**< Values out of range */
|
|
66
|
+
int32_t hdrsize; /**< hdr.allocatedSize */
|
|
67
|
+
double stddev;
|
|
68
|
+
double mean;
|
|
69
|
+
} ra_hist;
|
|
70
|
+
} rd_avg_t;
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @brief Add value \p v to averager \p ra.
|
|
75
|
+
*/
|
|
76
|
+
static RD_UNUSED void rd_avg_add(rd_avg_t *ra, int64_t v) {
|
|
77
|
+
mtx_lock(&ra->ra_lock);
|
|
78
|
+
if (!ra->ra_enabled) {
|
|
79
|
+
mtx_unlock(&ra->ra_lock);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (v > ra->ra_v.maxv)
|
|
83
|
+
ra->ra_v.maxv = v;
|
|
84
|
+
if (ra->ra_v.minv == 0 || v < ra->ra_v.minv)
|
|
85
|
+
ra->ra_v.minv = v;
|
|
86
|
+
ra->ra_v.sum += v;
|
|
87
|
+
ra->ra_v.cnt++;
|
|
88
|
+
#if WITH_HDRHISTOGRAM
|
|
89
|
+
rd_hdr_histogram_record(ra->ra_hdr, v);
|
|
90
|
+
#endif
|
|
91
|
+
mtx_unlock(&ra->ra_lock);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @brief Calculate the average
|
|
97
|
+
*/
|
|
98
|
+
static RD_UNUSED void rd_avg_calc(rd_avg_t *ra, rd_ts_t now) {
|
|
99
|
+
if (ra->ra_type == RD_AVG_GAUGE) {
|
|
100
|
+
if (ra->ra_v.cnt)
|
|
101
|
+
ra->ra_v.avg = ra->ra_v.sum / ra->ra_v.cnt;
|
|
102
|
+
else
|
|
103
|
+
ra->ra_v.avg = 0;
|
|
104
|
+
} else {
|
|
105
|
+
rd_ts_t elapsed = now - ra->ra_v.start;
|
|
106
|
+
|
|
107
|
+
if (elapsed)
|
|
108
|
+
ra->ra_v.avg = (ra->ra_v.sum * 1000000llu) / elapsed;
|
|
109
|
+
else
|
|
110
|
+
ra->ra_v.avg = 0;
|
|
111
|
+
|
|
112
|
+
ra->ra_v.start = elapsed;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @returns the quantile \q for \p ra, or 0 if histograms are not supported
|
|
119
|
+
* in this build.
|
|
120
|
+
*
|
|
121
|
+
* @remark ra will be not locked by this function.
|
|
122
|
+
*/
|
|
123
|
+
static RD_UNUSED int64_t rd_avg_quantile(const rd_avg_t *ra, double q) {
|
|
124
|
+
#if WITH_HDRHISTOGRAM
|
|
125
|
+
return rd_hdr_histogram_quantile(ra->ra_hdr, q);
|
|
126
|
+
#else
|
|
127
|
+
return 0;
|
|
128
|
+
#endif
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @brief Rolls over statistics in \p src and stores the average in \p dst.
|
|
133
|
+
* \p src is cleared and ready to be reused.
|
|
134
|
+
*
|
|
135
|
+
* Caller must free avg internal members by calling rd_avg_destroy()
|
|
136
|
+
* on the \p dst.
|
|
137
|
+
*/
|
|
138
|
+
static RD_UNUSED void rd_avg_rollover(rd_avg_t *dst, rd_avg_t *src) {
|
|
139
|
+
rd_ts_t now;
|
|
140
|
+
|
|
141
|
+
mtx_lock(&src->ra_lock);
|
|
142
|
+
if (!src->ra_enabled) {
|
|
143
|
+
memset(dst, 0, sizeof(*dst));
|
|
144
|
+
dst->ra_type = src->ra_type;
|
|
145
|
+
mtx_unlock(&src->ra_lock);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
mtx_init(&dst->ra_lock, mtx_plain);
|
|
150
|
+
dst->ra_type = src->ra_type;
|
|
151
|
+
dst->ra_v = src->ra_v;
|
|
152
|
+
#if WITH_HDRHISTOGRAM
|
|
153
|
+
dst->ra_hdr = NULL;
|
|
154
|
+
|
|
155
|
+
dst->ra_hist.stddev = rd_hdr_histogram_stddev(src->ra_hdr);
|
|
156
|
+
dst->ra_hist.mean = rd_hdr_histogram_mean(src->ra_hdr);
|
|
157
|
+
dst->ra_hist.oor = src->ra_hdr->outOfRangeCount;
|
|
158
|
+
dst->ra_hist.hdrsize = src->ra_hdr->allocatedSize;
|
|
159
|
+
dst->ra_hist.p50 = rd_hdr_histogram_quantile(src->ra_hdr, 50.0);
|
|
160
|
+
dst->ra_hist.p75 = rd_hdr_histogram_quantile(src->ra_hdr, 75.0);
|
|
161
|
+
dst->ra_hist.p90 = rd_hdr_histogram_quantile(src->ra_hdr, 90.0);
|
|
162
|
+
dst->ra_hist.p95 = rd_hdr_histogram_quantile(src->ra_hdr, 95.0);
|
|
163
|
+
dst->ra_hist.p99 = rd_hdr_histogram_quantile(src->ra_hdr, 99.0);
|
|
164
|
+
dst->ra_hist.p99_99 = rd_hdr_histogram_quantile(src->ra_hdr, 99.99);
|
|
165
|
+
#else
|
|
166
|
+
memset(&dst->ra_hist, 0, sizeof(dst->ra_hist));
|
|
167
|
+
#endif
|
|
168
|
+
memset(&src->ra_v, 0, sizeof(src->ra_v));
|
|
169
|
+
|
|
170
|
+
now = rd_clock();
|
|
171
|
+
src->ra_v.start = now;
|
|
172
|
+
|
|
173
|
+
#if WITH_HDRHISTOGRAM
|
|
174
|
+
/* Adapt histogram span to fit future out of range entries
|
|
175
|
+
* from this period. */
|
|
176
|
+
if (src->ra_hdr->totalCount > 0) {
|
|
177
|
+
int64_t vmin = src->ra_hdr->lowestTrackableValue;
|
|
178
|
+
int64_t vmax = src->ra_hdr->highestTrackableValue;
|
|
179
|
+
int64_t mindiff, maxdiff;
|
|
180
|
+
|
|
181
|
+
mindiff = src->ra_hdr->lowestTrackableValue -
|
|
182
|
+
src->ra_hdr->lowestOutOfRange;
|
|
183
|
+
|
|
184
|
+
if (mindiff > 0) {
|
|
185
|
+
/* There were low out of range values, grow lower
|
|
186
|
+
* span to fit lowest out of range value + 20%. */
|
|
187
|
+
vmin = src->ra_hdr->lowestOutOfRange +
|
|
188
|
+
(int64_t)((double)mindiff * 0.2);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
maxdiff = src->ra_hdr->highestOutOfRange -
|
|
192
|
+
src->ra_hdr->highestTrackableValue;
|
|
193
|
+
|
|
194
|
+
if (maxdiff > 0) {
|
|
195
|
+
/* There were high out of range values, grow higher
|
|
196
|
+
* span to fit highest out of range value + 20%. */
|
|
197
|
+
vmax = src->ra_hdr->highestOutOfRange +
|
|
198
|
+
(int64_t)((double)maxdiff * 0.2);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (vmin == src->ra_hdr->lowestTrackableValue &&
|
|
202
|
+
vmax == src->ra_hdr->highestTrackableValue) {
|
|
203
|
+
/* No change in min,max, use existing hdr */
|
|
204
|
+
rd_hdr_histogram_reset(src->ra_hdr);
|
|
205
|
+
|
|
206
|
+
} else {
|
|
207
|
+
int sigfigs = (int)src->ra_hdr->significantFigures;
|
|
208
|
+
/* Create new hdr for adapted range */
|
|
209
|
+
rd_hdr_histogram_destroy(src->ra_hdr);
|
|
210
|
+
src->ra_hdr = rd_hdr_histogram_new(vmin, vmax, sigfigs);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
} else {
|
|
214
|
+
/* No records, no need to reset. */
|
|
215
|
+
}
|
|
216
|
+
#endif
|
|
217
|
+
|
|
218
|
+
mtx_unlock(&src->ra_lock);
|
|
219
|
+
|
|
220
|
+
rd_avg_calc(dst, now);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Initialize an averager
|
|
226
|
+
*/
|
|
227
|
+
static RD_UNUSED void rd_avg_init(rd_avg_t *ra,
|
|
228
|
+
int type,
|
|
229
|
+
int64_t exp_min,
|
|
230
|
+
int64_t exp_max,
|
|
231
|
+
int sigfigs,
|
|
232
|
+
int enable) {
|
|
233
|
+
memset(ra, 0, sizeof(*ra));
|
|
234
|
+
mtx_init(&ra->ra_lock, 0);
|
|
235
|
+
ra->ra_enabled = enable;
|
|
236
|
+
if (!enable)
|
|
237
|
+
return;
|
|
238
|
+
ra->ra_type = type;
|
|
239
|
+
ra->ra_v.start = rd_clock();
|
|
240
|
+
#if WITH_HDRHISTOGRAM
|
|
241
|
+
/* Start off the histogram with expected min,max span,
|
|
242
|
+
* we'll adapt the size on each rollover. */
|
|
243
|
+
ra->ra_hdr = rd_hdr_histogram_new(exp_min, exp_max, sigfigs);
|
|
244
|
+
#endif
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Destroy averager
|
|
250
|
+
*/
|
|
251
|
+
static RD_UNUSED void rd_avg_destroy(rd_avg_t *ra) {
|
|
252
|
+
#if WITH_HDRHISTOGRAM
|
|
253
|
+
if (ra->ra_hdr)
|
|
254
|
+
rd_hdr_histogram_destroy(ra->ra_hdr);
|
|
255
|
+
#endif
|
|
256
|
+
mtx_destroy(&ra->ra_lock);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
#endif /* _RDAVG_H_ */
|