@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,736 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2012-2022, Magnus Edenhill
|
|
5
|
+
* 2023, Confluent Inc.
|
|
6
|
+
|
|
7
|
+
* All rights reserved.
|
|
8
|
+
*
|
|
9
|
+
* Redistribution and use in source and binary forms, with or without
|
|
10
|
+
* modification, are permitted provided that the following conditions are met:
|
|
11
|
+
*
|
|
12
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer.
|
|
14
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
15
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
16
|
+
* and/or other materials provided with the distribution.
|
|
17
|
+
*
|
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
19
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
20
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
21
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
22
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
23
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
24
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
25
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
26
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
27
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
28
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
#ifndef _RDKAFKA_PROTO_H_
|
|
32
|
+
#define _RDKAFKA_PROTO_H_
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
#include "rdstring.h"
|
|
36
|
+
#include "rdendian.h"
|
|
37
|
+
#include "rdvarint.h"
|
|
38
|
+
#include "rdbase64.h"
|
|
39
|
+
|
|
40
|
+
/* Protocol defines */
|
|
41
|
+
#include "rdkafka_protocol.h"
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/** Default generic retry count for failed requests.
|
|
46
|
+
* This may be overriden for specific request types. */
|
|
47
|
+
#define RD_KAFKA_REQUEST_DEFAULT_RETRIES 2
|
|
48
|
+
|
|
49
|
+
/** Max (practically infinite) retry count */
|
|
50
|
+
#define RD_KAFKA_REQUEST_MAX_RETRIES INT_MAX
|
|
51
|
+
|
|
52
|
+
/** Do not retry request */
|
|
53
|
+
#define RD_KAFKA_REQUEST_NO_RETRIES 0
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Request types
|
|
58
|
+
*/
|
|
59
|
+
struct rd_kafkap_reqhdr {
|
|
60
|
+
int32_t Size;
|
|
61
|
+
int16_t ApiKey;
|
|
62
|
+
int16_t ApiVersion;
|
|
63
|
+
int32_t CorrId;
|
|
64
|
+
/* ClientId follows */
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
#define RD_KAFKAP_REQHDR_SIZE (4 + 2 + 2 + 4)
|
|
68
|
+
#define RD_KAFKAP_RESHDR_SIZE (4 + 4)
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Response header
|
|
72
|
+
*/
|
|
73
|
+
struct rd_kafkap_reshdr {
|
|
74
|
+
int32_t Size;
|
|
75
|
+
int32_t CorrId;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Request type v1 (flexible version)
|
|
81
|
+
*
|
|
82
|
+
* i32 Size
|
|
83
|
+
* i16 ApiKey
|
|
84
|
+
* i16 ApiVersion
|
|
85
|
+
* i32 CorrId
|
|
86
|
+
* string ClientId (2-byte encoding, not compact string)
|
|
87
|
+
* uvarint Tags
|
|
88
|
+
* <Request payload>
|
|
89
|
+
* uvarint EndTags
|
|
90
|
+
*
|
|
91
|
+
* Any struct-type (non-primitive or array type) field in the request payload
|
|
92
|
+
* must also have a trailing tags list, this goes for structs in arrays as well.
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @brief Protocol request type (ApiKey) to name/string.
|
|
97
|
+
*
|
|
98
|
+
* Generate updates to this list with generate_proto.sh.
|
|
99
|
+
*/
|
|
100
|
+
static RD_UNUSED const char *rd_kafka_ApiKey2str(int16_t ApiKey) {
|
|
101
|
+
static const char *names[] = {
|
|
102
|
+
[RD_KAFKAP_Produce] = "Produce",
|
|
103
|
+
[RD_KAFKAP_Fetch] = "Fetch",
|
|
104
|
+
[RD_KAFKAP_ListOffsets] = "ListOffsets",
|
|
105
|
+
[RD_KAFKAP_Metadata] = "Metadata",
|
|
106
|
+
[RD_KAFKAP_LeaderAndIsr] = "LeaderAndIsr",
|
|
107
|
+
[RD_KAFKAP_StopReplica] = "StopReplica",
|
|
108
|
+
[RD_KAFKAP_UpdateMetadata] = "UpdateMetadata",
|
|
109
|
+
[RD_KAFKAP_ControlledShutdown] = "ControlledShutdown",
|
|
110
|
+
[RD_KAFKAP_OffsetCommit] = "OffsetCommit",
|
|
111
|
+
[RD_KAFKAP_OffsetFetch] = "OffsetFetch",
|
|
112
|
+
[RD_KAFKAP_FindCoordinator] = "FindCoordinator",
|
|
113
|
+
[RD_KAFKAP_JoinGroup] = "JoinGroup",
|
|
114
|
+
[RD_KAFKAP_Heartbeat] = "Heartbeat",
|
|
115
|
+
[RD_KAFKAP_LeaveGroup] = "LeaveGroup",
|
|
116
|
+
[RD_KAFKAP_SyncGroup] = "SyncGroup",
|
|
117
|
+
[RD_KAFKAP_DescribeGroups] = "DescribeGroups",
|
|
118
|
+
[RD_KAFKAP_ListGroups] = "ListGroups",
|
|
119
|
+
[RD_KAFKAP_SaslHandshake] = "SaslHandshake",
|
|
120
|
+
[RD_KAFKAP_ApiVersion] = "ApiVersion",
|
|
121
|
+
[RD_KAFKAP_CreateTopics] = "CreateTopics",
|
|
122
|
+
[RD_KAFKAP_DeleteTopics] = "DeleteTopics",
|
|
123
|
+
[RD_KAFKAP_DeleteRecords] = "DeleteRecords",
|
|
124
|
+
[RD_KAFKAP_InitProducerId] = "InitProducerId",
|
|
125
|
+
[RD_KAFKAP_OffsetForLeaderEpoch] = "OffsetForLeaderEpoch",
|
|
126
|
+
[RD_KAFKAP_AddPartitionsToTxn] = "AddPartitionsToTxn",
|
|
127
|
+
[RD_KAFKAP_AddOffsetsToTxn] = "AddOffsetsToTxn",
|
|
128
|
+
[RD_KAFKAP_EndTxn] = "EndTxn",
|
|
129
|
+
[RD_KAFKAP_WriteTxnMarkers] = "WriteTxnMarkers",
|
|
130
|
+
[RD_KAFKAP_TxnOffsetCommit] = "TxnOffsetCommit",
|
|
131
|
+
[RD_KAFKAP_DescribeAcls] = "DescribeAcls",
|
|
132
|
+
[RD_KAFKAP_CreateAcls] = "CreateAcls",
|
|
133
|
+
[RD_KAFKAP_DeleteAcls] = "DeleteAcls",
|
|
134
|
+
[RD_KAFKAP_DescribeConfigs] = "DescribeConfigs",
|
|
135
|
+
[RD_KAFKAP_AlterConfigs] = "AlterConfigs",
|
|
136
|
+
[RD_KAFKAP_AlterReplicaLogDirs] = "AlterReplicaLogDirs",
|
|
137
|
+
[RD_KAFKAP_DescribeLogDirs] = "DescribeLogDirs",
|
|
138
|
+
[RD_KAFKAP_SaslAuthenticate] = "SaslAuthenticate",
|
|
139
|
+
[RD_KAFKAP_CreatePartitions] = "CreatePartitions",
|
|
140
|
+
[RD_KAFKAP_CreateDelegationToken] = "CreateDelegationToken",
|
|
141
|
+
[RD_KAFKAP_RenewDelegationToken] = "RenewDelegationToken",
|
|
142
|
+
[RD_KAFKAP_ExpireDelegationToken] = "ExpireDelegationToken",
|
|
143
|
+
[RD_KAFKAP_DescribeDelegationToken] = "DescribeDelegationToken",
|
|
144
|
+
[RD_KAFKAP_DeleteGroups] = "DeleteGroups",
|
|
145
|
+
[RD_KAFKAP_ElectLeaders] = "ElectLeadersRequest",
|
|
146
|
+
[RD_KAFKAP_IncrementalAlterConfigs] =
|
|
147
|
+
"IncrementalAlterConfigsRequest",
|
|
148
|
+
[RD_KAFKAP_AlterPartitionReassignments] =
|
|
149
|
+
"AlterPartitionReassignmentsRequest",
|
|
150
|
+
[RD_KAFKAP_ListPartitionReassignments] =
|
|
151
|
+
"ListPartitionReassignmentsRequest",
|
|
152
|
+
[RD_KAFKAP_OffsetDelete] = "OffsetDeleteRequest",
|
|
153
|
+
[RD_KAFKAP_DescribeClientQuotas] = "DescribeClientQuotasRequest",
|
|
154
|
+
[RD_KAFKAP_AlterClientQuotas] = "AlterClientQuotasRequest",
|
|
155
|
+
[RD_KAFKAP_DescribeUserScramCredentials] =
|
|
156
|
+
"DescribeUserScramCredentialsRequest",
|
|
157
|
+
[RD_KAFKAP_AlterUserScramCredentials] =
|
|
158
|
+
"AlterUserScramCredentialsRequest",
|
|
159
|
+
[RD_KAFKAP_Vote] = "VoteRequest",
|
|
160
|
+
[RD_KAFKAP_BeginQuorumEpoch] = "BeginQuorumEpochRequest",
|
|
161
|
+
[RD_KAFKAP_EndQuorumEpoch] = "EndQuorumEpochRequest",
|
|
162
|
+
[RD_KAFKAP_DescribeQuorum] = "DescribeQuorumRequest",
|
|
163
|
+
[RD_KAFKAP_AlterIsr] = "AlterIsrRequest",
|
|
164
|
+
[RD_KAFKAP_UpdateFeatures] = "UpdateFeaturesRequest",
|
|
165
|
+
[RD_KAFKAP_Envelope] = "EnvelopeRequest",
|
|
166
|
+
[RD_KAFKAP_FetchSnapshot] = "FetchSnapshot",
|
|
167
|
+
[RD_KAFKAP_DescribeCluster] = "DescribeCluster",
|
|
168
|
+
[RD_KAFKAP_DescribeProducers] = "DescribeProducers",
|
|
169
|
+
[RD_KAFKAP_BrokerHeartbeat] = "BrokerHeartbeat",
|
|
170
|
+
[RD_KAFKAP_UnregisterBroker] = "UnregisterBroker",
|
|
171
|
+
[RD_KAFKAP_DescribeTransactions] = "DescribeTransactions",
|
|
172
|
+
[RD_KAFKAP_ListTransactions] = "ListTransactions",
|
|
173
|
+
[RD_KAFKAP_AllocateProducerIds] = "AllocateProducerIds",
|
|
174
|
+
[RD_KAFKAP_ConsumerGroupHeartbeat] = "ConsumerGroupHeartbeat",
|
|
175
|
+
[RD_KAFKAP_ConsumerGroupDescribe] = "ConsumerGroupDescribe",
|
|
176
|
+
[RD_KAFKAP_GetTelemetrySubscriptions] = "GetTelemetrySubscriptions",
|
|
177
|
+
[RD_KAFKAP_PushTelemetry] = "PushTelemetry",
|
|
178
|
+
|
|
179
|
+
};
|
|
180
|
+
static RD_TLS char ret[64];
|
|
181
|
+
|
|
182
|
+
if (ApiKey < 0 || ApiKey >= (int)RD_ARRAYSIZE(names) ||
|
|
183
|
+
!names[ApiKey]) {
|
|
184
|
+
rd_snprintf(ret, sizeof(ret), "Unknown-%hd?", ApiKey);
|
|
185
|
+
return ret;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return names[ApiKey];
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @brief ApiKey version support tuple.
|
|
195
|
+
*/
|
|
196
|
+
struct rd_kafka_ApiVersion {
|
|
197
|
+
int16_t ApiKey;
|
|
198
|
+
int16_t MinVer;
|
|
199
|
+
int16_t MaxVer;
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* @brief ApiVersion.ApiKey comparator.
|
|
204
|
+
*/
|
|
205
|
+
static RD_UNUSED int rd_kafka_ApiVersion_key_cmp(const void *_a,
|
|
206
|
+
const void *_b) {
|
|
207
|
+
const struct rd_kafka_ApiVersion *a =
|
|
208
|
+
(const struct rd_kafka_ApiVersion *)_a;
|
|
209
|
+
const struct rd_kafka_ApiVersion *b =
|
|
210
|
+
(const struct rd_kafka_ApiVersion *)_b;
|
|
211
|
+
return RD_CMP(a->ApiKey, b->ApiKey);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
typedef enum {
|
|
217
|
+
RD_KAFKA_READ_UNCOMMITTED = 0,
|
|
218
|
+
RD_KAFKA_READ_COMMITTED = 1
|
|
219
|
+
} rd_kafka_isolation_level_t;
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
#define RD_KAFKA_CTRL_MSG_ABORT 0
|
|
224
|
+
#define RD_KAFKA_CTRL_MSG_COMMIT 1
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* @enum Coordinator type, used with FindCoordinatorRequest
|
|
229
|
+
*/
|
|
230
|
+
typedef enum rd_kafka_coordtype_t {
|
|
231
|
+
RD_KAFKA_COORD_GROUP = 0,
|
|
232
|
+
RD_KAFKA_COORD_TXN = 1
|
|
233
|
+
} rd_kafka_coordtype_t;
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
*
|
|
238
|
+
* Kafka protocol string representation prefixed with a convenience header
|
|
239
|
+
*
|
|
240
|
+
* Serialized format:
|
|
241
|
+
* { uint16, data.. }
|
|
242
|
+
*
|
|
243
|
+
*/
|
|
244
|
+
typedef struct rd_kafkap_str_s {
|
|
245
|
+
/* convenience header (aligned access, host endian) */
|
|
246
|
+
int len; /* Kafka string length (-1=NULL, 0=empty, >0=string) */
|
|
247
|
+
const char *str; /* points into data[] or other memory,
|
|
248
|
+
* not NULL-terminated */
|
|
249
|
+
} rd_kafkap_str_t;
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
#define RD_KAFKAP_STR_LEN_NULL -1
|
|
253
|
+
#define RD_KAFKAP_STR_IS_NULL(kstr) ((kstr)->len == RD_KAFKAP_STR_LEN_NULL)
|
|
254
|
+
|
|
255
|
+
/* Returns the length of the string of a kafka protocol string representation */
|
|
256
|
+
#define RD_KAFKAP_STR_LEN0(len) ((len) == RD_KAFKAP_STR_LEN_NULL ? 0 : (len))
|
|
257
|
+
#define RD_KAFKAP_STR_LEN(kstr) RD_KAFKAP_STR_LEN0((kstr)->len)
|
|
258
|
+
|
|
259
|
+
/* Returns the actual size of a kafka protocol string representation. */
|
|
260
|
+
#define RD_KAFKAP_STR_SIZE0(len) (2 + RD_KAFKAP_STR_LEN0(len))
|
|
261
|
+
#define RD_KAFKAP_STR_SIZE(kstr) RD_KAFKAP_STR_SIZE0((kstr)->len)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
/** @returns true if kstr is pre-serialized through .._new() */
|
|
265
|
+
#define RD_KAFKAP_STR_IS_SERIALIZED(kstr) \
|
|
266
|
+
(((const char *)((kstr) + 1)) + 2 == (const char *)((kstr)->str))
|
|
267
|
+
|
|
268
|
+
/* Serialized Kafka string: only works for _new() kstrs.
|
|
269
|
+
* Check with RD_KAFKAP_STR_IS_SERIALIZED */
|
|
270
|
+
#define RD_KAFKAP_STR_SER(kstr) ((kstr) + 1)
|
|
271
|
+
|
|
272
|
+
/* Macro suitable for "%.*s" printing. */
|
|
273
|
+
#define RD_KAFKAP_STR_PR(kstr) \
|
|
274
|
+
(int)((kstr)->len == RD_KAFKAP_STR_LEN_NULL ? 0 : (kstr)->len), \
|
|
275
|
+
(kstr)->str
|
|
276
|
+
|
|
277
|
+
/* strndupa() a Kafka string */
|
|
278
|
+
#define RD_KAFKAP_STR_DUPA(destptr, kstr) \
|
|
279
|
+
rd_strndupa((destptr), (kstr)->str, RD_KAFKAP_STR_LEN(kstr))
|
|
280
|
+
|
|
281
|
+
/* strndup() a Kafka string */
|
|
282
|
+
#define RD_KAFKAP_STR_DUP(kstr) rd_strndup((kstr)->str, RD_KAFKAP_STR_LEN(kstr))
|
|
283
|
+
|
|
284
|
+
#define RD_KAFKAP_STR_INITIALIZER \
|
|
285
|
+
{ .len = RD_KAFKAP_STR_LEN_NULL, .str = NULL }
|
|
286
|
+
|
|
287
|
+
#define RD_KAFKAP_STR_INITIALIZER_EMPTY \
|
|
288
|
+
{ .len = 0, .str = "" }
|
|
289
|
+
/**
|
|
290
|
+
* Frees a Kafka string previously allocated with `rd_kafkap_str_new()`
|
|
291
|
+
*/
|
|
292
|
+
static RD_UNUSED void rd_kafkap_str_destroy(rd_kafkap_str_t *kstr) {
|
|
293
|
+
rd_free(kstr);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Allocate a new Kafka string and make a copy of 'str'.
|
|
300
|
+
* If 'len' is -1 the length will be calculated.
|
|
301
|
+
* Supports Kafka NULL strings.
|
|
302
|
+
* Nul-terminates the string, but the trailing \0 is not part of
|
|
303
|
+
* the serialized string.
|
|
304
|
+
*/
|
|
305
|
+
static RD_INLINE RD_UNUSED rd_kafkap_str_t *rd_kafkap_str_new(const char *str,
|
|
306
|
+
int len) {
|
|
307
|
+
rd_kafkap_str_t *kstr;
|
|
308
|
+
int16_t klen;
|
|
309
|
+
|
|
310
|
+
if (!str)
|
|
311
|
+
len = RD_KAFKAP_STR_LEN_NULL;
|
|
312
|
+
else if (len == -1)
|
|
313
|
+
len = (int)strlen(str);
|
|
314
|
+
|
|
315
|
+
kstr = (rd_kafkap_str_t *)rd_malloc(
|
|
316
|
+
sizeof(*kstr) + 2 + (len == RD_KAFKAP_STR_LEN_NULL ? 0 : len + 1));
|
|
317
|
+
kstr->len = len;
|
|
318
|
+
|
|
319
|
+
/* Serialised format: 16-bit string length */
|
|
320
|
+
klen = htobe16(len);
|
|
321
|
+
memcpy(kstr + 1, &klen, 2);
|
|
322
|
+
|
|
323
|
+
/* Pre-Serialised format: non null-terminated string */
|
|
324
|
+
if (len == RD_KAFKAP_STR_LEN_NULL)
|
|
325
|
+
kstr->str = NULL;
|
|
326
|
+
else {
|
|
327
|
+
kstr->str = ((const char *)(kstr + 1)) + 2;
|
|
328
|
+
memcpy((void *)kstr->str, str, len);
|
|
329
|
+
((char *)kstr->str)[len] = '\0';
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
return kstr;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Makes a copy of `src`. The copy will be fully allocated and should
|
|
338
|
+
* be freed with rd_kafka_pstr_destroy()
|
|
339
|
+
*/
|
|
340
|
+
static RD_INLINE RD_UNUSED rd_kafkap_str_t *
|
|
341
|
+
rd_kafkap_str_copy(const rd_kafkap_str_t *src) {
|
|
342
|
+
return rd_kafkap_str_new(src->str, src->len);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
static RD_INLINE RD_UNUSED int rd_kafkap_str_cmp(const rd_kafkap_str_t *a,
|
|
346
|
+
const rd_kafkap_str_t *b) {
|
|
347
|
+
int minlen = RD_MIN(a->len, b->len);
|
|
348
|
+
int r = memcmp(a->str, b->str, minlen);
|
|
349
|
+
if (r)
|
|
350
|
+
return r;
|
|
351
|
+
else
|
|
352
|
+
return RD_CMP(a->len, b->len);
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
static RD_INLINE RD_UNUSED int rd_kafkap_str_cmp_str(const rd_kafkap_str_t *a,
|
|
356
|
+
const char *str) {
|
|
357
|
+
int len = (int)strlen(str);
|
|
358
|
+
int minlen = RD_MIN(a->len, len);
|
|
359
|
+
int r = memcmp(a->str, str, minlen);
|
|
360
|
+
if (r)
|
|
361
|
+
return r;
|
|
362
|
+
else
|
|
363
|
+
return RD_CMP(a->len, len);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
static RD_INLINE RD_UNUSED int
|
|
367
|
+
rd_kafkap_str_cmp_str2(const char *str, const rd_kafkap_str_t *b) {
|
|
368
|
+
int len = (int)strlen(str);
|
|
369
|
+
int minlen = RD_MIN(b->len, len);
|
|
370
|
+
int r = memcmp(str, b->str, minlen);
|
|
371
|
+
if (r)
|
|
372
|
+
return r;
|
|
373
|
+
else
|
|
374
|
+
return RD_CMP(len, b->len);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
*
|
|
381
|
+
* Kafka protocol bytes array representation prefixed with a convenience header
|
|
382
|
+
*
|
|
383
|
+
* Serialized format:
|
|
384
|
+
* { uint32, data.. }
|
|
385
|
+
*
|
|
386
|
+
*/
|
|
387
|
+
typedef struct rd_kafkap_bytes_s {
|
|
388
|
+
/* convenience header (aligned access, host endian) */
|
|
389
|
+
int32_t len; /* Kafka bytes length (-1=NULL, 0=empty, >0=data) */
|
|
390
|
+
const void *data; /* points just past the struct, or other memory,
|
|
391
|
+
* not NULL-terminated */
|
|
392
|
+
const unsigned char _data[1]; /* Bytes following struct when new()ed */
|
|
393
|
+
} rd_kafkap_bytes_t;
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
#define RD_KAFKAP_BYTES_LEN_NULL -1
|
|
397
|
+
#define RD_KAFKAP_BYTES_IS_NULL(kbytes) \
|
|
398
|
+
((kbytes)->len == RD_KAFKAP_BYTES_LEN_NULL)
|
|
399
|
+
|
|
400
|
+
/* Returns the length of the bytes of a kafka protocol bytes representation */
|
|
401
|
+
#define RD_KAFKAP_BYTES_LEN0(len) \
|
|
402
|
+
((len) == RD_KAFKAP_BYTES_LEN_NULL ? 0 : (len))
|
|
403
|
+
#define RD_KAFKAP_BYTES_LEN(kbytes) RD_KAFKAP_BYTES_LEN0((kbytes)->len)
|
|
404
|
+
|
|
405
|
+
/* Returns the actual size of a kafka protocol bytes representation. */
|
|
406
|
+
#define RD_KAFKAP_BYTES_SIZE0(len) (4 + RD_KAFKAP_BYTES_LEN0(len))
|
|
407
|
+
#define RD_KAFKAP_BYTES_SIZE(kbytes) RD_KAFKAP_BYTES_SIZE0((kbytes)->len)
|
|
408
|
+
|
|
409
|
+
/** @returns true if kbyes is pre-serialized through .._new() */
|
|
410
|
+
#define RD_KAFKAP_BYTES_IS_SERIALIZED(kstr) \
|
|
411
|
+
(((const char *)((kbytes) + 1)) + 2 == (const char *)((kbytes)->data))
|
|
412
|
+
|
|
413
|
+
/* Serialized Kafka bytes: only works for _new() kbytes */
|
|
414
|
+
#define RD_KAFKAP_BYTES_SER(kbytes) ((kbytes) + 1)
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* Frees a Kafka bytes previously allocated with `rd_kafkap_bytes_new()`
|
|
419
|
+
*/
|
|
420
|
+
static RD_UNUSED void rd_kafkap_bytes_destroy(rd_kafkap_bytes_t *kbytes) {
|
|
421
|
+
rd_free(kbytes);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* @brief Allocate a new Kafka bytes and make a copy of 'bytes'.
|
|
427
|
+
* If \p len > 0 but \p bytes is NULL no copying is performed by
|
|
428
|
+
* the bytes structure will be allocated to fit \p size bytes.
|
|
429
|
+
*
|
|
430
|
+
* Supports:
|
|
431
|
+
* - Kafka NULL bytes (bytes==NULL,len==0),
|
|
432
|
+
* - Empty bytes (bytes!=NULL,len==0)
|
|
433
|
+
* - Copy data (bytes!=NULL,len>0)
|
|
434
|
+
* - No-copy, just alloc (bytes==NULL,len>0)
|
|
435
|
+
*/
|
|
436
|
+
static RD_INLINE RD_UNUSED rd_kafkap_bytes_t *
|
|
437
|
+
rd_kafkap_bytes_new(const unsigned char *bytes, int32_t len) {
|
|
438
|
+
rd_kafkap_bytes_t *kbytes;
|
|
439
|
+
int32_t klen;
|
|
440
|
+
|
|
441
|
+
if (!bytes && !len)
|
|
442
|
+
len = RD_KAFKAP_BYTES_LEN_NULL;
|
|
443
|
+
|
|
444
|
+
kbytes = (rd_kafkap_bytes_t *)rd_malloc(
|
|
445
|
+
sizeof(*kbytes) + 4 + (len == RD_KAFKAP_BYTES_LEN_NULL ? 0 : len));
|
|
446
|
+
kbytes->len = len;
|
|
447
|
+
|
|
448
|
+
klen = htobe32(len);
|
|
449
|
+
memcpy((void *)(kbytes + 1), &klen, 4);
|
|
450
|
+
|
|
451
|
+
if (len == RD_KAFKAP_BYTES_LEN_NULL)
|
|
452
|
+
kbytes->data = NULL;
|
|
453
|
+
else {
|
|
454
|
+
kbytes->data = ((const unsigned char *)(kbytes + 1)) + 4;
|
|
455
|
+
if (bytes)
|
|
456
|
+
memcpy((void *)kbytes->data, bytes, len);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
return kbytes;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* Makes a copy of `src`. The copy will be fully allocated and should
|
|
465
|
+
* be freed with rd_kafkap_bytes_destroy()
|
|
466
|
+
*/
|
|
467
|
+
static RD_INLINE RD_UNUSED rd_kafkap_bytes_t *
|
|
468
|
+
rd_kafkap_bytes_copy(const rd_kafkap_bytes_t *src) {
|
|
469
|
+
return rd_kafkap_bytes_new((const unsigned char *)src->data, src->len);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
static RD_INLINE RD_UNUSED int rd_kafkap_bytes_cmp(const rd_kafkap_bytes_t *a,
|
|
474
|
+
const rd_kafkap_bytes_t *b) {
|
|
475
|
+
int minlen = RD_MIN(a->len, b->len);
|
|
476
|
+
int r = memcmp(a->data, b->data, minlen);
|
|
477
|
+
if (r)
|
|
478
|
+
return r;
|
|
479
|
+
else
|
|
480
|
+
return RD_CMP(a->len, b->len);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
static RD_INLINE RD_UNUSED int
|
|
484
|
+
rd_kafkap_bytes_cmp_data(const rd_kafkap_bytes_t *a,
|
|
485
|
+
const char *data,
|
|
486
|
+
int len) {
|
|
487
|
+
int minlen = RD_MIN(a->len, len);
|
|
488
|
+
int r = memcmp(a->data, data, minlen);
|
|
489
|
+
if (r)
|
|
490
|
+
return r;
|
|
491
|
+
else
|
|
492
|
+
return RD_CMP(a->len, len);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
typedef struct rd_kafka_buf_s rd_kafka_buf_t;
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
#define RD_KAFKA_NODENAME_SIZE 256
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* @brief Message overheads (worst-case)
|
|
506
|
+
*/
|
|
507
|
+
|
|
508
|
+
/**
|
|
509
|
+
* MsgVersion v0..v1
|
|
510
|
+
*/
|
|
511
|
+
/* Offset + MessageSize */
|
|
512
|
+
#define RD_KAFKAP_MESSAGESET_V0_HDR_SIZE (8 + 4)
|
|
513
|
+
/* CRC + Magic + Attr + KeyLen + ValueLen */
|
|
514
|
+
#define RD_KAFKAP_MESSAGE_V0_HDR_SIZE (4 + 1 + 1 + 4 + 4)
|
|
515
|
+
/* CRC + Magic + Attr + Timestamp + KeyLen + ValueLen */
|
|
516
|
+
#define RD_KAFKAP_MESSAGE_V1_HDR_SIZE (4 + 1 + 1 + 8 + 4 + 4)
|
|
517
|
+
/* Maximum per-message overhead */
|
|
518
|
+
#define RD_KAFKAP_MESSAGE_V0_OVERHEAD \
|
|
519
|
+
(RD_KAFKAP_MESSAGESET_V0_HDR_SIZE + RD_KAFKAP_MESSAGE_V0_HDR_SIZE)
|
|
520
|
+
#define RD_KAFKAP_MESSAGE_V1_OVERHEAD \
|
|
521
|
+
(RD_KAFKAP_MESSAGESET_V0_HDR_SIZE + RD_KAFKAP_MESSAGE_V1_HDR_SIZE)
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* MsgVersion v2
|
|
525
|
+
*/
|
|
526
|
+
#define RD_KAFKAP_MESSAGE_V2_MAX_OVERHEAD \
|
|
527
|
+
( /* Length (varint) */ \
|
|
528
|
+
RD_UVARINT_ENC_SIZEOF(int32_t) + /* Attributes */ \
|
|
529
|
+
1 + /* TimestampDelta (varint) */ \
|
|
530
|
+
RD_UVARINT_ENC_SIZEOF(int64_t) + /* OffsetDelta (varint) */ \
|
|
531
|
+
RD_UVARINT_ENC_SIZEOF(int32_t) + /* KeyLen (varint) */ \
|
|
532
|
+
RD_UVARINT_ENC_SIZEOF(int32_t) + /* ValueLen (varint) */ \
|
|
533
|
+
RD_UVARINT_ENC_SIZEOF(int32_t) + /* HeaderCnt (varint): */ \
|
|
534
|
+
RD_UVARINT_ENC_SIZEOF(int32_t))
|
|
535
|
+
|
|
536
|
+
#define RD_KAFKAP_MESSAGE_V2_MIN_OVERHEAD \
|
|
537
|
+
( /* Length (varint) */ \
|
|
538
|
+
RD_UVARINT_ENC_SIZE_0() + /* Attributes */ \
|
|
539
|
+
1 + /* TimestampDelta (varint) */ \
|
|
540
|
+
RD_UVARINT_ENC_SIZE_0() + /* OffsetDelta (varint) */ \
|
|
541
|
+
RD_UVARINT_ENC_SIZE_0() + /* KeyLen (varint) */ \
|
|
542
|
+
RD_UVARINT_ENC_SIZE_0() + /* ValueLen (varint) */ \
|
|
543
|
+
RD_UVARINT_ENC_SIZE_0() + /* HeaderCnt (varint): */ \
|
|
544
|
+
RD_UVARINT_ENC_SIZE_0())
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* @brief MessageSets are not explicitly versioned but depends on the
|
|
549
|
+
* Produce/Fetch API version and the encompassed Message versions.
|
|
550
|
+
* We use the Message version (MsgVersion, aka MagicByte) to describe
|
|
551
|
+
* the MessageSet version, that is, MsgVersion <= 1 uses the old
|
|
552
|
+
* MessageSet version (v0?) while MsgVersion 2 uses MessageSet version v2
|
|
553
|
+
*/
|
|
554
|
+
|
|
555
|
+
/* Old MessageSet header: none */
|
|
556
|
+
#define RD_KAFKAP_MSGSET_V0_SIZE 0
|
|
557
|
+
|
|
558
|
+
/* MessageSet v2 header */
|
|
559
|
+
#define RD_KAFKAP_MSGSET_V2_SIZE \
|
|
560
|
+
(8 + 4 + 4 + 1 + 4 + 2 + 4 + 8 + 8 + 8 + 2 + 4 + 4)
|
|
561
|
+
|
|
562
|
+
/* Byte offsets for MessageSet fields */
|
|
563
|
+
#define RD_KAFKAP_MSGSET_V2_OF_Length (8)
|
|
564
|
+
#define RD_KAFKAP_MSGSET_V2_OF_MagicByte (8 + 4 + 4)
|
|
565
|
+
#define RD_KAFKAP_MSGSET_V2_OF_CRC (8 + 4 + 4 + 1)
|
|
566
|
+
#define RD_KAFKAP_MSGSET_V2_OF_Attributes (8 + 4 + 4 + 1 + 4)
|
|
567
|
+
#define RD_KAFKAP_MSGSET_V2_OF_LastOffsetDelta (8 + 4 + 4 + 1 + 4 + 2)
|
|
568
|
+
#define RD_KAFKAP_MSGSET_V2_OF_BaseTimestamp (8 + 4 + 4 + 1 + 4 + 2 + 4)
|
|
569
|
+
#define RD_KAFKAP_MSGSET_V2_OF_MaxTimestamp (8 + 4 + 4 + 1 + 4 + 2 + 4 + 8)
|
|
570
|
+
#define RD_KAFKAP_MSGSET_V2_OF_ProducerId (8 + 4 + 4 + 1 + 4 + 2 + 4 + 8 + 8)
|
|
571
|
+
#define RD_KAFKAP_MSGSET_V2_OF_ProducerEpoch \
|
|
572
|
+
(8 + 4 + 4 + 1 + 4 + 2 + 4 + 8 + 8 + 8)
|
|
573
|
+
#define RD_KAFKAP_MSGSET_V2_OF_BaseSequence \
|
|
574
|
+
(8 + 4 + 4 + 1 + 4 + 2 + 4 + 8 + 8 + 8 + 2)
|
|
575
|
+
#define RD_KAFKAP_MSGSET_V2_OF_RecordCount \
|
|
576
|
+
(8 + 4 + 4 + 1 + 4 + 2 + 4 + 8 + 8 + 8 + 2 + 4)
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
/**
|
|
580
|
+
* @struct Struct representing UUID protocol primitive type.
|
|
581
|
+
*/
|
|
582
|
+
typedef struct rd_kafka_Uuid_s {
|
|
583
|
+
int64_t
|
|
584
|
+
most_significant_bits; /**< Most significant 64 bits for the UUID */
|
|
585
|
+
int64_t least_significant_bits; /**< Least significant 64 bits for the
|
|
586
|
+
UUID */
|
|
587
|
+
char base64str[23]; /**< base64 encoding for the uuid. By default, it is
|
|
588
|
+
lazy loaded. Use function
|
|
589
|
+
`rd_kafka_Uuid_base64str()` as a getter for this
|
|
590
|
+
field. */
|
|
591
|
+
} rd_kafka_Uuid_t;
|
|
592
|
+
|
|
593
|
+
#define RD_KAFKA_UUID_ZERO \
|
|
594
|
+
(rd_kafka_Uuid_t) { \
|
|
595
|
+
0, 0, "" \
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
#define RD_KAFKA_UUID_IS_ZERO(uuid) \
|
|
599
|
+
(!rd_kafka_Uuid_cmp(uuid, RD_KAFKA_UUID_ZERO))
|
|
600
|
+
|
|
601
|
+
#define RD_KAFKA_UUID_METADATA_TOPIC_ID \
|
|
602
|
+
(rd_kafka_Uuid_t) { \
|
|
603
|
+
0, 1, "" \
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
static RD_INLINE RD_UNUSED int rd_kafka_Uuid_cmp(rd_kafka_Uuid_t a,
|
|
607
|
+
rd_kafka_Uuid_t b) {
|
|
608
|
+
if (a.most_significant_bits < b.most_significant_bits)
|
|
609
|
+
return -1;
|
|
610
|
+
if (a.most_significant_bits > b.most_significant_bits)
|
|
611
|
+
return 1;
|
|
612
|
+
if (a.least_significant_bits < b.least_significant_bits)
|
|
613
|
+
return -1;
|
|
614
|
+
if (a.least_significant_bits > b.least_significant_bits)
|
|
615
|
+
return 1;
|
|
616
|
+
return 0;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
static RD_INLINE RD_UNUSED int rd_kafka_Uuid_ptr_cmp(void *a, void *b) {
|
|
620
|
+
rd_kafka_Uuid_t *a_uuid = a, *b_uuid = b;
|
|
621
|
+
return rd_kafka_Uuid_cmp(*a_uuid, *b_uuid);
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
rd_kafka_Uuid_t rd_kafka_Uuid_random();
|
|
625
|
+
|
|
626
|
+
char *rd_kafka_Uuid_str(const rd_kafka_Uuid_t *uuid);
|
|
627
|
+
|
|
628
|
+
unsigned int rd_kafka_Uuid_hash(const rd_kafka_Uuid_t *uuid);
|
|
629
|
+
|
|
630
|
+
unsigned int rd_kafka_Uuid_map_hash(const void *key);
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* @brief UUID copier for rd_list_copy()
|
|
634
|
+
*/
|
|
635
|
+
static RD_UNUSED void *rd_list_Uuid_copy(const void *elem, void *opaque) {
|
|
636
|
+
return (void *)rd_kafka_Uuid_copy((rd_kafka_Uuid_t *)elem);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
static RD_INLINE RD_UNUSED void rd_list_Uuid_destroy(void *uuid) {
|
|
640
|
+
rd_kafka_Uuid_destroy((rd_kafka_Uuid_t *)uuid);
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
static RD_INLINE RD_UNUSED int rd_list_Uuid_cmp(const void *uuid1,
|
|
644
|
+
const void *uuid2) {
|
|
645
|
+
return rd_kafka_Uuid_cmp(*((rd_kafka_Uuid_t *)uuid1),
|
|
646
|
+
*((rd_kafka_Uuid_t *)uuid2));
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* @name Producer ID and Epoch for the Idempotent Producer
|
|
652
|
+
* @{
|
|
653
|
+
*
|
|
654
|
+
*/
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* @brief Producer ID and Epoch
|
|
658
|
+
*/
|
|
659
|
+
typedef struct rd_kafka_pid_s {
|
|
660
|
+
int64_t id; /**< Producer Id */
|
|
661
|
+
int16_t epoch; /**< Producer Epoch */
|
|
662
|
+
} rd_kafka_pid_t;
|
|
663
|
+
|
|
664
|
+
#define RD_KAFKA_PID_INITIALIZER \
|
|
665
|
+
{ -1, -1 }
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* @returns true if \p PID is valid
|
|
669
|
+
*/
|
|
670
|
+
#define rd_kafka_pid_valid(PID) ((PID).id != -1)
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* @brief Check two pids for equality
|
|
674
|
+
*/
|
|
675
|
+
static RD_UNUSED RD_INLINE int rd_kafka_pid_eq(const rd_kafka_pid_t a,
|
|
676
|
+
const rd_kafka_pid_t b) {
|
|
677
|
+
return a.id == b.id && a.epoch == b.epoch;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* @brief Pid+epoch comparator
|
|
682
|
+
*/
|
|
683
|
+
static RD_UNUSED int rd_kafka_pid_cmp(const void *_a, const void *_b) {
|
|
684
|
+
const rd_kafka_pid_t *a = _a, *b = _b;
|
|
685
|
+
|
|
686
|
+
if (a->id < b->id)
|
|
687
|
+
return -1;
|
|
688
|
+
else if (a->id > b->id)
|
|
689
|
+
return 1;
|
|
690
|
+
|
|
691
|
+
return (int)a->epoch - (int)b->epoch;
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* @returns the string representation of a PID in a thread-safe
|
|
697
|
+
* static buffer.
|
|
698
|
+
*/
|
|
699
|
+
static RD_UNUSED const char *rd_kafka_pid2str(const rd_kafka_pid_t pid) {
|
|
700
|
+
static RD_TLS char buf[2][64];
|
|
701
|
+
static RD_TLS int i;
|
|
702
|
+
|
|
703
|
+
if (!rd_kafka_pid_valid(pid))
|
|
704
|
+
return "PID{Invalid}";
|
|
705
|
+
|
|
706
|
+
i = (i + 1) % 2;
|
|
707
|
+
|
|
708
|
+
rd_snprintf(buf[i], sizeof(buf[i]), "PID{Id:%" PRId64 ",Epoch:%hd}",
|
|
709
|
+
pid.id, pid.epoch);
|
|
710
|
+
|
|
711
|
+
return buf[i];
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
/**
|
|
715
|
+
* @brief Reset the PID to invalid/init state
|
|
716
|
+
*/
|
|
717
|
+
static RD_UNUSED RD_INLINE void rd_kafka_pid_reset(rd_kafka_pid_t *pid) {
|
|
718
|
+
pid->id = -1;
|
|
719
|
+
pid->epoch = -1;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
/**
|
|
724
|
+
* @brief Bump the epoch of a valid PID
|
|
725
|
+
*/
|
|
726
|
+
static RD_UNUSED RD_INLINE rd_kafka_pid_t
|
|
727
|
+
rd_kafka_pid_bump(const rd_kafka_pid_t old) {
|
|
728
|
+
rd_kafka_pid_t new_pid = {
|
|
729
|
+
old.id, (int16_t)(((int)old.epoch + 1) & (int)INT16_MAX)};
|
|
730
|
+
return new_pid;
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
/**@}*/
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
#endif /* _RDKAFKA_PROTO_H_ */
|