@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,57 @@
|
|
|
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 _RDSIGNAL_H_
|
|
30
|
+
#define _RDSIGNAL_H_
|
|
31
|
+
|
|
32
|
+
#include <signal.h>
|
|
33
|
+
|
|
34
|
+
#define RD_SIG_ALL -1
|
|
35
|
+
#define RD_SIG_END -2
|
|
36
|
+
|
|
37
|
+
extern sigset_t rd_intr_sigset;
|
|
38
|
+
extern int rd_intr_blocked;
|
|
39
|
+
|
|
40
|
+
static __inline void rd_intr_block(void) RD_UNUSED;
|
|
41
|
+
static __inline void rd_intr_block(void) {
|
|
42
|
+
if (rd_intr_blocked++)
|
|
43
|
+
return;
|
|
44
|
+
|
|
45
|
+
sigprocmask(SIG_BLOCK, &rd_intr_sigset, NULL);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
static __inline void rd_intr_unblock(void) RD_UNUSED;
|
|
49
|
+
static __inline void rd_intr_unblock(void) {
|
|
50
|
+
assert(rd_intr_blocked > 0);
|
|
51
|
+
if (--rd_intr_blocked)
|
|
52
|
+
return;
|
|
53
|
+
|
|
54
|
+
sigprocmask(SIG_UNBLOCK, &rd_intr_sigset, NULL);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#endif /* _RDSIGNAL_H_ */
|
|
@@ -0,0 +1,645 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - The Apache Kafka C/C++ library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2016-2022, Magnus Edenhill
|
|
5
|
+
* 2023, Confluent Inc.
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
12
|
+
* this list of conditions and the following disclaimer.
|
|
13
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
14
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
15
|
+
* and/or other materials provided with the distribution.
|
|
16
|
+
*
|
|
17
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
18
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
19
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
20
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
21
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
22
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
23
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
24
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
25
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
26
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
27
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
#include "rd.h"
|
|
32
|
+
#include "rdstring.h"
|
|
33
|
+
#include "rdunittest.h"
|
|
34
|
+
|
|
35
|
+
#include <ctype.h>
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @brief Render string \p template using \p callback for key lookups.
|
|
40
|
+
*
|
|
41
|
+
* Keys in template follow the %{keyname} syntax.
|
|
42
|
+
*
|
|
43
|
+
* The \p callback must not write more than \p size bytes to \p buf, must
|
|
44
|
+
* should return the number of bytes it wanted to write (which will indicate
|
|
45
|
+
* a truncated write).
|
|
46
|
+
* If the key is not found -1 should be returned (which fails the rendering).
|
|
47
|
+
*
|
|
48
|
+
* @returns number of written bytes to \p dest,
|
|
49
|
+
* or -1 on failure (errstr is written)
|
|
50
|
+
*/
|
|
51
|
+
char *rd_string_render(
|
|
52
|
+
const char *template,
|
|
53
|
+
char *errstr,
|
|
54
|
+
size_t errstr_size,
|
|
55
|
+
ssize_t (*callback)(const char *key, char *buf, size_t size, void *opaque),
|
|
56
|
+
void *opaque) {
|
|
57
|
+
const char *s = template;
|
|
58
|
+
const char *tend = template + strlen(template);
|
|
59
|
+
size_t size = 256;
|
|
60
|
+
char *buf;
|
|
61
|
+
size_t of = 0;
|
|
62
|
+
|
|
63
|
+
buf = rd_malloc(size);
|
|
64
|
+
|
|
65
|
+
#define _remain() (size - of - 1)
|
|
66
|
+
#define _assure_space(SZ) \
|
|
67
|
+
do { \
|
|
68
|
+
if (of + (SZ) + 1 >= size) { \
|
|
69
|
+
size = (size + (SZ) + 1) * 2; \
|
|
70
|
+
buf = rd_realloc(buf, size); \
|
|
71
|
+
} \
|
|
72
|
+
} while (0)
|
|
73
|
+
|
|
74
|
+
#define _do_write(PTR, SZ) \
|
|
75
|
+
do { \
|
|
76
|
+
_assure_space(SZ); \
|
|
77
|
+
memcpy(buf + of, (PTR), (SZ)); \
|
|
78
|
+
of += (SZ); \
|
|
79
|
+
} while (0)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
while (*s) {
|
|
84
|
+
const char *t;
|
|
85
|
+
size_t tof = (size_t)(s - template);
|
|
86
|
+
|
|
87
|
+
t = strstr(s, "%{");
|
|
88
|
+
if (t != s) {
|
|
89
|
+
/* Write "abc%{"
|
|
90
|
+
* ^^^ */
|
|
91
|
+
size_t len = (size_t)((t ? t : tend) - s);
|
|
92
|
+
if (len)
|
|
93
|
+
_do_write(s, len);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (t) {
|
|
97
|
+
const char *te;
|
|
98
|
+
ssize_t r;
|
|
99
|
+
char *tmpkey;
|
|
100
|
+
|
|
101
|
+
/* Find "abc%{key}"
|
|
102
|
+
* ^ */
|
|
103
|
+
te = strchr(t + 2, '}');
|
|
104
|
+
if (!te) {
|
|
105
|
+
rd_snprintf(errstr, errstr_size,
|
|
106
|
+
"Missing close-brace } for "
|
|
107
|
+
"%.*s at %" PRIusz,
|
|
108
|
+
15, t, tof);
|
|
109
|
+
rd_free(buf);
|
|
110
|
+
return NULL;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
rd_strndupa(&tmpkey, t + 2, (int)(te - t - 2));
|
|
114
|
+
|
|
115
|
+
/* Query callback for length of key's value. */
|
|
116
|
+
r = callback(tmpkey, NULL, 0, opaque);
|
|
117
|
+
if (r == -1) {
|
|
118
|
+
rd_snprintf(errstr, errstr_size,
|
|
119
|
+
"Property not available: \"%s\"",
|
|
120
|
+
tmpkey);
|
|
121
|
+
rd_free(buf);
|
|
122
|
+
return NULL;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
_assure_space(r);
|
|
126
|
+
|
|
127
|
+
/* Call again now providing a large enough buffer. */
|
|
128
|
+
r = callback(tmpkey, buf + of, _remain(), opaque);
|
|
129
|
+
if (r == -1) {
|
|
130
|
+
rd_snprintf(errstr, errstr_size,
|
|
131
|
+
"Property not available: "
|
|
132
|
+
"\"%s\"",
|
|
133
|
+
tmpkey);
|
|
134
|
+
rd_free(buf);
|
|
135
|
+
return NULL;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
assert(r < (ssize_t)_remain());
|
|
139
|
+
of += r;
|
|
140
|
+
s = te + 1;
|
|
141
|
+
|
|
142
|
+
} else {
|
|
143
|
+
s = tend;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
buf[of] = '\0';
|
|
148
|
+
return buf;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
void rd_strtup_destroy(rd_strtup_t *strtup) {
|
|
154
|
+
rd_free(strtup);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
void rd_strtup_free(void *strtup) {
|
|
158
|
+
rd_strtup_destroy((rd_strtup_t *)strtup);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
rd_strtup_t *rd_strtup_new0(const char *name,
|
|
162
|
+
ssize_t name_len,
|
|
163
|
+
const char *value,
|
|
164
|
+
ssize_t value_len) {
|
|
165
|
+
rd_strtup_t *strtup;
|
|
166
|
+
|
|
167
|
+
/* Calculate lengths, if needed, and add space for \0 nul */
|
|
168
|
+
|
|
169
|
+
if (name_len == -1)
|
|
170
|
+
name_len = strlen(name);
|
|
171
|
+
|
|
172
|
+
if (!value)
|
|
173
|
+
value_len = 0;
|
|
174
|
+
else if (value_len == -1)
|
|
175
|
+
value_len = strlen(value);
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
strtup = rd_malloc(sizeof(*strtup) + name_len + 1 + value_len + 1 -
|
|
179
|
+
1 /*name[1]*/);
|
|
180
|
+
memcpy(strtup->name, name, name_len);
|
|
181
|
+
strtup->name[name_len] = '\0';
|
|
182
|
+
if (value) {
|
|
183
|
+
strtup->value = &strtup->name[name_len + 1];
|
|
184
|
+
memcpy(strtup->value, value, value_len);
|
|
185
|
+
strtup->value[value_len] = '\0';
|
|
186
|
+
} else {
|
|
187
|
+
strtup->value = NULL;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return strtup;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
rd_strtup_t *rd_strtup_new(const char *name, const char *value) {
|
|
194
|
+
return rd_strtup_new0(name, -1, value, -1);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* @returns a new copy of \p src
|
|
200
|
+
*/
|
|
201
|
+
rd_strtup_t *rd_strtup_dup(const rd_strtup_t *src) {
|
|
202
|
+
return rd_strtup_new(src->name, src->value);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @brief Wrapper for rd_strtup_dup() suitable rd_list_copy*() use
|
|
207
|
+
*/
|
|
208
|
+
void *rd_strtup_list_copy(const void *elem, void *opaque) {
|
|
209
|
+
const rd_strtup_t *src = elem;
|
|
210
|
+
return (void *)rd_strtup_dup(src);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* @brief Convert bit-flags in \p flags to human-readable CSV string
|
|
217
|
+
* use the bit-description strings in \p desc.
|
|
218
|
+
*
|
|
219
|
+
* \p desc array element N corresponds to bit (1<<N).
|
|
220
|
+
* \p desc MUST be terminated by a NULL array element.
|
|
221
|
+
* Empty descriptions are ignored even if the bit is set.
|
|
222
|
+
*
|
|
223
|
+
* @returns a null-terminated \p dst
|
|
224
|
+
*/
|
|
225
|
+
char *rd_flags2str(char *dst, size_t size, const char **desc, int flags) {
|
|
226
|
+
int bit = 0;
|
|
227
|
+
size_t of = 0;
|
|
228
|
+
|
|
229
|
+
for (; *desc; desc++, bit++) {
|
|
230
|
+
int r;
|
|
231
|
+
|
|
232
|
+
if (!(flags & (1 << bit)) || !*desc)
|
|
233
|
+
continue;
|
|
234
|
+
|
|
235
|
+
if (of >= size) {
|
|
236
|
+
/* Dest buffer too small, indicate truncation */
|
|
237
|
+
if (size > 3)
|
|
238
|
+
rd_snprintf(dst + (size - 3), 3, "..");
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
r = rd_snprintf(dst + of, size - of, "%s%s", !of ? "" : ",",
|
|
243
|
+
*desc);
|
|
244
|
+
|
|
245
|
+
of += r;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (of == 0 && size > 0)
|
|
249
|
+
*dst = '\0';
|
|
250
|
+
|
|
251
|
+
return dst;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* @returns a djb2 hash of \p str.
|
|
258
|
+
*
|
|
259
|
+
* @param len If -1 the \p str will be hashed until nul is encountered,
|
|
260
|
+
* else up to the \p len.
|
|
261
|
+
*/
|
|
262
|
+
unsigned int rd_string_hash(const char *str, ssize_t len) {
|
|
263
|
+
unsigned int hash = 5381;
|
|
264
|
+
ssize_t i;
|
|
265
|
+
|
|
266
|
+
if (len == -1) {
|
|
267
|
+
for (i = 0; str[i] != '\0'; i++)
|
|
268
|
+
hash = ((hash << 5) + hash) + str[i];
|
|
269
|
+
} else {
|
|
270
|
+
for (i = 0; i < len; i++)
|
|
271
|
+
hash = ((hash << 5) + hash) + str[i];
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return hash;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* @brief Same as strcmp() but handles NULL values.
|
|
280
|
+
*/
|
|
281
|
+
int rd_strcmp(const char *a, const char *b) {
|
|
282
|
+
if (a == b)
|
|
283
|
+
return 0;
|
|
284
|
+
else if (!a && b)
|
|
285
|
+
return -1;
|
|
286
|
+
else if (!b)
|
|
287
|
+
return 1;
|
|
288
|
+
else
|
|
289
|
+
return strcmp(a, b);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* @brief Same as rd_strcmp() but works with rd_list comparator.
|
|
295
|
+
*/
|
|
296
|
+
int rd_strcmp2(const void *a, const void *b) {
|
|
297
|
+
return rd_strcmp((const char *)a, (const char *)b);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* @brief Same as rd_strcmp() but works with bsearch, which requires one more
|
|
302
|
+
* indirection.
|
|
303
|
+
*/
|
|
304
|
+
int rd_strcmp3(const void *a, const void *b) {
|
|
305
|
+
return rd_strcmp(*((const char **)a), *((const char **)b));
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* @brief Case-insensitive strstr() for platforms where strcasestr()
|
|
311
|
+
* is not available.
|
|
312
|
+
*/
|
|
313
|
+
char *_rd_strcasestr(const char *haystack, const char *needle) {
|
|
314
|
+
const char *h_rem, *n_last;
|
|
315
|
+
size_t h_len = strlen(haystack);
|
|
316
|
+
size_t n_len = strlen(needle);
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
if (n_len == 0 || n_len > h_len)
|
|
320
|
+
return NULL;
|
|
321
|
+
else if (n_len == h_len)
|
|
322
|
+
return !rd_strcasecmp(haystack, needle) ? (char *)haystack
|
|
323
|
+
: NULL;
|
|
324
|
+
|
|
325
|
+
/*
|
|
326
|
+
* Scan inspired by Boyer-Moore:
|
|
327
|
+
*
|
|
328
|
+
* haystack = "this is a haystack"
|
|
329
|
+
* needle = "hays"
|
|
330
|
+
*
|
|
331
|
+
* "this is a haystack"
|
|
332
|
+
* ^ ^- h_last
|
|
333
|
+
* `-h (haystack + strlen(needle) - 1)
|
|
334
|
+
* `-h_rem
|
|
335
|
+
*
|
|
336
|
+
* "hays"
|
|
337
|
+
* ^-n
|
|
338
|
+
* ^-n_last
|
|
339
|
+
*/
|
|
340
|
+
n_last = needle + n_len - 1;
|
|
341
|
+
h_rem = haystack + n_len - 1;
|
|
342
|
+
|
|
343
|
+
while (*h_rem) {
|
|
344
|
+
const char *h, *n = n_last;
|
|
345
|
+
|
|
346
|
+
/* Find first occurrence of last character in the needle
|
|
347
|
+
in the remaining haystack. */
|
|
348
|
+
for (h = h_rem; *h && tolower((int)*h) != tolower((int)*n); h++)
|
|
349
|
+
;
|
|
350
|
+
|
|
351
|
+
if (!*h)
|
|
352
|
+
return NULL; /* No match */
|
|
353
|
+
|
|
354
|
+
/* Backtrack both needle and haystack as long as each character
|
|
355
|
+
* matches, if the start of the needle is found we have
|
|
356
|
+
* a full match, else start over from the remaining part of the
|
|
357
|
+
* haystack. */
|
|
358
|
+
do {
|
|
359
|
+
if (n == needle)
|
|
360
|
+
return (char *)h; /* Full match */
|
|
361
|
+
|
|
362
|
+
/* Rewind both n and h */
|
|
363
|
+
n--;
|
|
364
|
+
h--;
|
|
365
|
+
|
|
366
|
+
} while (tolower((int)*n) == tolower((int)*h));
|
|
367
|
+
|
|
368
|
+
/* Mismatch, start over at the next haystack position */
|
|
369
|
+
h_rem++;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
return NULL;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* @brief Unittests for rd_strcasestr()
|
|
379
|
+
*/
|
|
380
|
+
static int ut_strcasestr(void) {
|
|
381
|
+
static const struct {
|
|
382
|
+
const char *haystack;
|
|
383
|
+
const char *needle;
|
|
384
|
+
ssize_t exp;
|
|
385
|
+
} strs[] = {
|
|
386
|
+
{"this is a haystack", "hays", 10},
|
|
387
|
+
{"abc", "a", 0},
|
|
388
|
+
{"abc", "b", 1},
|
|
389
|
+
{"abc", "c", 2},
|
|
390
|
+
{"AbcaBcabC", "ABC", 0},
|
|
391
|
+
{"abcabcaBC", "BcA", 1},
|
|
392
|
+
{"abcabcABc", "cAB", 2},
|
|
393
|
+
{"need to estart stART the tart ReStArT!", "REsTaRt", 30},
|
|
394
|
+
{"need to estart stART the tart ReStArT!", "?sTaRt", -1},
|
|
395
|
+
{"aaaabaaAb", "ab", 3},
|
|
396
|
+
{"0A!", "a", 1},
|
|
397
|
+
{"a", "A", 0},
|
|
398
|
+
{".z", "Z", 1},
|
|
399
|
+
{"", "", -1},
|
|
400
|
+
{"", "a", -1},
|
|
401
|
+
{"a", "", -1},
|
|
402
|
+
{"peRfeCt", "peRfeCt", 0},
|
|
403
|
+
{"perfect", "perfect", 0},
|
|
404
|
+
{"PERFECT", "perfect", 0},
|
|
405
|
+
{NULL},
|
|
406
|
+
};
|
|
407
|
+
int i;
|
|
408
|
+
|
|
409
|
+
RD_UT_BEGIN();
|
|
410
|
+
|
|
411
|
+
for (i = 0; strs[i].haystack; i++) {
|
|
412
|
+
const char *ret;
|
|
413
|
+
ssize_t of = -1;
|
|
414
|
+
|
|
415
|
+
ret = _rd_strcasestr(strs[i].haystack, strs[i].needle);
|
|
416
|
+
if (ret)
|
|
417
|
+
of = ret - strs[i].haystack;
|
|
418
|
+
RD_UT_ASSERT(of == strs[i].exp,
|
|
419
|
+
"#%d: '%s' in '%s': expected offset %" PRIdsz
|
|
420
|
+
", not %" PRIdsz " (%s)",
|
|
421
|
+
i, strs[i].needle, strs[i].haystack, strs[i].exp,
|
|
422
|
+
of, ret ? ret : "(NULL)");
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
RD_UT_PASS();
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* @brief Split a character-separated string into an array.
|
|
432
|
+
*
|
|
433
|
+
* @remark This is not CSV compliant as CSV uses " for escapes, but this here
|
|
434
|
+
* uses \.
|
|
435
|
+
*
|
|
436
|
+
* @param input Input string to parse.
|
|
437
|
+
* @param sep The separator character (typically ',')
|
|
438
|
+
* @param skip_empty Do not include empty fields in output array.
|
|
439
|
+
* @param cntp Will be set to number of elements in array.
|
|
440
|
+
*
|
|
441
|
+
* Supports "\" escapes.
|
|
442
|
+
* The array and the array elements will be allocated together and must be freed
|
|
443
|
+
* with a single rd_free(array) call.
|
|
444
|
+
* The array elements are copied and any "\" escapes are removed.
|
|
445
|
+
*
|
|
446
|
+
* @returns the parsed fields in an array. The number of elements in the
|
|
447
|
+
* array is returned in \p cntp
|
|
448
|
+
*/
|
|
449
|
+
char **rd_string_split(const char *input,
|
|
450
|
+
char sep,
|
|
451
|
+
rd_bool_t skip_empty,
|
|
452
|
+
size_t *cntp) {
|
|
453
|
+
size_t fieldcnt = 1;
|
|
454
|
+
rd_bool_t next_esc = rd_false;
|
|
455
|
+
const char *s;
|
|
456
|
+
char *p;
|
|
457
|
+
char **arr;
|
|
458
|
+
size_t inputlen;
|
|
459
|
+
size_t i = 0;
|
|
460
|
+
size_t elen = 0;
|
|
461
|
+
|
|
462
|
+
*cntp = 0;
|
|
463
|
+
|
|
464
|
+
/* First count the maximum number of fields so we know how large of
|
|
465
|
+
* an array we need to allocate. Escapes are ignored. */
|
|
466
|
+
for (s = input; *s; s++) {
|
|
467
|
+
if (*s == sep)
|
|
468
|
+
fieldcnt++;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
inputlen = (size_t)(s - input);
|
|
472
|
+
|
|
473
|
+
/* Allocate array and memory for the copied elements in one go. */
|
|
474
|
+
arr = rd_malloc((sizeof(*arr) * fieldcnt) + inputlen + 1);
|
|
475
|
+
p = (char *)(&arr[fieldcnt]);
|
|
476
|
+
|
|
477
|
+
for (s = input;; s++) {
|
|
478
|
+
rd_bool_t at_end = *s == '\0';
|
|
479
|
+
rd_bool_t is_esc = next_esc;
|
|
480
|
+
|
|
481
|
+
/* If we've reached the end, jump to done to finish
|
|
482
|
+
* the current field. */
|
|
483
|
+
if (at_end)
|
|
484
|
+
goto done;
|
|
485
|
+
|
|
486
|
+
if (unlikely(!is_esc && *s == '\\')) {
|
|
487
|
+
next_esc = rd_true;
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
next_esc = rd_false;
|
|
492
|
+
|
|
493
|
+
/* Strip leading whitespaces for each element */
|
|
494
|
+
if (!is_esc && elen == 0 && isspace((int)*s))
|
|
495
|
+
continue;
|
|
496
|
+
|
|
497
|
+
if (likely(is_esc || *s != sep)) {
|
|
498
|
+
char c = *s;
|
|
499
|
+
if (is_esc) {
|
|
500
|
+
/* Perform some common escape substitions.
|
|
501
|
+
* If not known we'll just keep the escaped
|
|
502
|
+
* character as is (probably the separator). */
|
|
503
|
+
switch (c) {
|
|
504
|
+
case 't':
|
|
505
|
+
c = '\t';
|
|
506
|
+
break;
|
|
507
|
+
case 'n':
|
|
508
|
+
c = '\n';
|
|
509
|
+
break;
|
|
510
|
+
case 'r':
|
|
511
|
+
c = '\r';
|
|
512
|
+
break;
|
|
513
|
+
case '0':
|
|
514
|
+
c = '\0';
|
|
515
|
+
break;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
p[elen++] = c;
|
|
519
|
+
continue;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
done:
|
|
523
|
+
/* Strip trailing whitespaces */
|
|
524
|
+
while (elen > 0 && isspace((int)p[elen - 1]))
|
|
525
|
+
elen--;
|
|
526
|
+
|
|
527
|
+
/* End of field */
|
|
528
|
+
if (elen == 0 && skip_empty) {
|
|
529
|
+
if (at_end)
|
|
530
|
+
break;
|
|
531
|
+
continue;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
rd_assert(i < fieldcnt);
|
|
535
|
+
|
|
536
|
+
/* Nul-terminate the element */
|
|
537
|
+
p[elen++] = '\0';
|
|
538
|
+
/* Assign element to array */
|
|
539
|
+
arr[i] = p;
|
|
540
|
+
/* Update next element pointer past the written bytes */
|
|
541
|
+
p += elen;
|
|
542
|
+
/* Reset element length */
|
|
543
|
+
elen = 0;
|
|
544
|
+
/* Advance array element index */
|
|
545
|
+
i++;
|
|
546
|
+
|
|
547
|
+
if (at_end)
|
|
548
|
+
break;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
*cntp = i;
|
|
552
|
+
|
|
553
|
+
return arr;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* @brief Unittest for rd_string_split()
|
|
558
|
+
*/
|
|
559
|
+
static int ut_string_split(void) {
|
|
560
|
+
static const struct {
|
|
561
|
+
const char *input;
|
|
562
|
+
const char sep;
|
|
563
|
+
rd_bool_t skip_empty;
|
|
564
|
+
size_t exp_cnt;
|
|
565
|
+
const char *exp[16];
|
|
566
|
+
} strs[] = {
|
|
567
|
+
{"just one field", ',', rd_true, 1, {"just one field"}},
|
|
568
|
+
/* Empty with skip_empty */
|
|
569
|
+
{"", ',', rd_true, 0},
|
|
570
|
+
/* Empty without skip_empty */
|
|
571
|
+
{"", ',', rd_false, 1, {""}},
|
|
572
|
+
{
|
|
573
|
+
", a,b ,,c, d, e,f,ghijk, lmn,opq , r s t u, v",
|
|
574
|
+
',',
|
|
575
|
+
rd_true,
|
|
576
|
+
11,
|
|
577
|
+
{"a", "b", "c", "d", "e", "f", "ghijk", "lmn", "opq",
|
|
578
|
+
"r s t u", "v"},
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
", a,b ,,c, d, e,f,ghijk, lmn,opq , r s t u, v",
|
|
582
|
+
',',
|
|
583
|
+
rd_false,
|
|
584
|
+
13,
|
|
585
|
+
{"", "a", "b", "", "c", "d", "e", "f", "ghijk", "lmn", "opq",
|
|
586
|
+
"r s t u", "v"},
|
|
587
|
+
},
|
|
588
|
+
{" this is an \\,escaped comma,\\,,\\\\, "
|
|
589
|
+
"and this is an unbalanced escape: \\\\\\\\\\\\\\",
|
|
590
|
+
',',
|
|
591
|
+
rd_true,
|
|
592
|
+
4,
|
|
593
|
+
{"this is an ,escaped comma", ",", "\\",
|
|
594
|
+
"and this is an unbalanced escape: \\\\\\"}},
|
|
595
|
+
{
|
|
596
|
+
"using|another ||\\|d|elimiter",
|
|
597
|
+
'|',
|
|
598
|
+
rd_false,
|
|
599
|
+
5,
|
|
600
|
+
{"using", "another", "", "|d", "elimiter"},
|
|
601
|
+
},
|
|
602
|
+
{NULL},
|
|
603
|
+
};
|
|
604
|
+
size_t i;
|
|
605
|
+
|
|
606
|
+
RD_UT_BEGIN();
|
|
607
|
+
|
|
608
|
+
for (i = 0; strs[i].input; i++) {
|
|
609
|
+
char **ret;
|
|
610
|
+
size_t cnt = 12345;
|
|
611
|
+
size_t j;
|
|
612
|
+
|
|
613
|
+
ret = rd_string_split(strs[i].input, strs[i].sep,
|
|
614
|
+
strs[i].skip_empty, &cnt);
|
|
615
|
+
RD_UT_ASSERT(ret != NULL, "#%" PRIusz ": Did not expect NULL",
|
|
616
|
+
i);
|
|
617
|
+
RD_UT_ASSERT(cnt == strs[i].exp_cnt,
|
|
618
|
+
"#%" PRIusz
|
|
619
|
+
": "
|
|
620
|
+
"Expected %" PRIusz " elements, got %" PRIusz,
|
|
621
|
+
i, strs[i].exp_cnt, cnt);
|
|
622
|
+
|
|
623
|
+
for (j = 0; j < cnt; j++)
|
|
624
|
+
RD_UT_ASSERT(!strcmp(strs[i].exp[j], ret[j]),
|
|
625
|
+
"#%" PRIusz ": Expected string %" PRIusz
|
|
626
|
+
" to be \"%s\", not \"%s\"",
|
|
627
|
+
i, j, strs[i].exp[j], ret[j]);
|
|
628
|
+
|
|
629
|
+
rd_free(ret);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
RD_UT_PASS();
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
/**
|
|
636
|
+
* @brief Unittests for strings
|
|
637
|
+
*/
|
|
638
|
+
int unittest_string(void) {
|
|
639
|
+
int fails = 0;
|
|
640
|
+
|
|
641
|
+
fails += ut_strcasestr();
|
|
642
|
+
fails += ut_string_split();
|
|
643
|
+
|
|
644
|
+
return fails;
|
|
645
|
+
}
|