@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.
Files changed (707) hide show
  1. package/LICENSE.txt +20 -0
  2. package/README.md +636 -0
  3. package/binding.gyp +154 -0
  4. package/deps/librdkafka/.clang-format +136 -0
  5. package/deps/librdkafka/.clang-format-cpp +103 -0
  6. package/deps/librdkafka/.dir-locals.el +10 -0
  7. package/deps/librdkafka/.formatignore +33 -0
  8. package/deps/librdkafka/.gdbmacros +19 -0
  9. package/deps/librdkafka/.github/CODEOWNERS +1 -0
  10. package/deps/librdkafka/.github/ISSUE_TEMPLATE +34 -0
  11. package/deps/librdkafka/.semaphore/run-all-tests.yml +77 -0
  12. package/deps/librdkafka/.semaphore/semaphore-integration.yml +250 -0
  13. package/deps/librdkafka/.semaphore/semaphore.yml +378 -0
  14. package/deps/librdkafka/.semaphore/verify-linux-packages.yml +41 -0
  15. package/deps/librdkafka/CHANGELOG.md +2208 -0
  16. package/deps/librdkafka/CMakeLists.txt +291 -0
  17. package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
  18. package/deps/librdkafka/CONFIGURATION.md +209 -0
  19. package/deps/librdkafka/CONTRIBUTING.md +431 -0
  20. package/deps/librdkafka/Doxyfile +2375 -0
  21. package/deps/librdkafka/INTRODUCTION.md +2481 -0
  22. package/deps/librdkafka/LICENSE +26 -0
  23. package/deps/librdkafka/LICENSE.cjson +22 -0
  24. package/deps/librdkafka/LICENSE.crc32c +28 -0
  25. package/deps/librdkafka/LICENSE.fnv1a +18 -0
  26. package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
  27. package/deps/librdkafka/LICENSE.lz4 +26 -0
  28. package/deps/librdkafka/LICENSE.murmur2 +25 -0
  29. package/deps/librdkafka/LICENSE.nanopb +22 -0
  30. package/deps/librdkafka/LICENSE.opentelemetry +203 -0
  31. package/deps/librdkafka/LICENSE.pycrc +23 -0
  32. package/deps/librdkafka/LICENSE.queue +31 -0
  33. package/deps/librdkafka/LICENSE.regexp +5 -0
  34. package/deps/librdkafka/LICENSE.snappy +36 -0
  35. package/deps/librdkafka/LICENSE.tinycthread +26 -0
  36. package/deps/librdkafka/LICENSE.wingetopt +49 -0
  37. package/deps/librdkafka/LICENSES.txt +625 -0
  38. package/deps/librdkafka/Makefile +125 -0
  39. package/deps/librdkafka/README.md +199 -0
  40. package/deps/librdkafka/README.win32 +26 -0
  41. package/deps/librdkafka/STATISTICS.md +624 -0
  42. package/deps/librdkafka/configure +214 -0
  43. package/deps/librdkafka/configure.self +331 -0
  44. package/deps/librdkafka/debian/changelog +111 -0
  45. package/deps/librdkafka/debian/compat +1 -0
  46. package/deps/librdkafka/debian/control +71 -0
  47. package/deps/librdkafka/debian/copyright +99 -0
  48. package/deps/librdkafka/debian/gbp.conf +9 -0
  49. package/deps/librdkafka/debian/librdkafka++1.install +1 -0
  50. package/deps/librdkafka/debian/librdkafka-dev.examples +2 -0
  51. package/deps/librdkafka/debian/librdkafka-dev.install +9 -0
  52. package/deps/librdkafka/debian/librdkafka1.docs +5 -0
  53. package/deps/librdkafka/debian/librdkafka1.install +1 -0
  54. package/deps/librdkafka/debian/librdkafka1.symbols +135 -0
  55. package/deps/librdkafka/debian/rules +19 -0
  56. package/deps/librdkafka/debian/source/format +1 -0
  57. package/deps/librdkafka/debian/watch +2 -0
  58. package/deps/librdkafka/dev-conf.sh +123 -0
  59. package/deps/librdkafka/examples/CMakeLists.txt +79 -0
  60. package/deps/librdkafka/examples/Makefile +167 -0
  61. package/deps/librdkafka/examples/README.md +42 -0
  62. package/deps/librdkafka/examples/alter_consumer_group_offsets.c +338 -0
  63. package/deps/librdkafka/examples/consumer.c +271 -0
  64. package/deps/librdkafka/examples/delete_records.c +233 -0
  65. package/deps/librdkafka/examples/describe_cluster.c +322 -0
  66. package/deps/librdkafka/examples/describe_consumer_groups.c +455 -0
  67. package/deps/librdkafka/examples/describe_topics.c +427 -0
  68. package/deps/librdkafka/examples/elect_leaders.c +317 -0
  69. package/deps/librdkafka/examples/globals.json +11 -0
  70. package/deps/librdkafka/examples/idempotent_producer.c +344 -0
  71. package/deps/librdkafka/examples/incremental_alter_configs.c +347 -0
  72. package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +945 -0
  73. package/deps/librdkafka/examples/list_consumer_group_offsets.c +359 -0
  74. package/deps/librdkafka/examples/list_consumer_groups.c +365 -0
  75. package/deps/librdkafka/examples/list_offsets.c +327 -0
  76. package/deps/librdkafka/examples/misc.c +287 -0
  77. package/deps/librdkafka/examples/openssl_engine_example.cpp +248 -0
  78. package/deps/librdkafka/examples/producer.c +251 -0
  79. package/deps/librdkafka/examples/producer.cpp +228 -0
  80. package/deps/librdkafka/examples/rdkafka_complex_consumer_example.c +617 -0
  81. package/deps/librdkafka/examples/rdkafka_complex_consumer_example.cpp +467 -0
  82. package/deps/librdkafka/examples/rdkafka_consume_batch.cpp +264 -0
  83. package/deps/librdkafka/examples/rdkafka_example.c +853 -0
  84. package/deps/librdkafka/examples/rdkafka_example.cpp +679 -0
  85. package/deps/librdkafka/examples/rdkafka_performance.c +1781 -0
  86. package/deps/librdkafka/examples/transactions-older-broker.c +668 -0
  87. package/deps/librdkafka/examples/transactions.c +665 -0
  88. package/deps/librdkafka/examples/user_scram.c +491 -0
  89. package/deps/librdkafka/examples/win_ssl_cert_store.cpp +396 -0
  90. package/deps/librdkafka/lds-gen.py +73 -0
  91. package/deps/librdkafka/mainpage.doxy +40 -0
  92. package/deps/librdkafka/mklove/Makefile.base +329 -0
  93. package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
  94. package/deps/librdkafka/mklove/modules/configure.base +2484 -0
  95. package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
  96. package/deps/librdkafka/mklove/modules/configure.cc +186 -0
  97. package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
  98. package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
  99. package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
  100. package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
  101. package/deps/librdkafka/mklove/modules/configure.host +132 -0
  102. package/deps/librdkafka/mklove/modules/configure.lib +49 -0
  103. package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
  104. package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
  105. package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
  106. package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
  107. package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
  108. package/deps/librdkafka/mklove/modules/configure.pic +16 -0
  109. package/deps/librdkafka/mklove/modules/configure.socket +20 -0
  110. package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
  111. package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
  112. package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
  113. package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
  114. package/deps/librdkafka/packaging/RELEASE.md +319 -0
  115. package/deps/librdkafka/packaging/alpine/build-alpine.sh +38 -0
  116. package/deps/librdkafka/packaging/archlinux/PKGBUILD +30 -0
  117. package/deps/librdkafka/packaging/cmake/Config.cmake.in +37 -0
  118. package/deps/librdkafka/packaging/cmake/Modules/FindLZ4.cmake +38 -0
  119. package/deps/librdkafka/packaging/cmake/Modules/FindZSTD.cmake +27 -0
  120. package/deps/librdkafka/packaging/cmake/Modules/LICENSE.FindZstd +178 -0
  121. package/deps/librdkafka/packaging/cmake/README.md +38 -0
  122. package/deps/librdkafka/packaging/cmake/config.h.in +52 -0
  123. package/deps/librdkafka/packaging/cmake/parseversion.cmake +60 -0
  124. package/deps/librdkafka/packaging/cmake/rdkafka.pc.in +12 -0
  125. package/deps/librdkafka/packaging/cmake/try_compile/atomic_32_test.c +8 -0
  126. package/deps/librdkafka/packaging/cmake/try_compile/atomic_64_test.c +8 -0
  127. package/deps/librdkafka/packaging/cmake/try_compile/c11threads_test.c +14 -0
  128. package/deps/librdkafka/packaging/cmake/try_compile/crc32c_hw_test.c +27 -0
  129. package/deps/librdkafka/packaging/cmake/try_compile/dlopen_test.c +11 -0
  130. package/deps/librdkafka/packaging/cmake/try_compile/libsasl2_test.c +7 -0
  131. package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_darwin_test.c +6 -0
  132. package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_freebsd_test.c +7 -0
  133. package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_gnu_test.c +5 -0
  134. package/deps/librdkafka/packaging/cmake/try_compile/rand_r_test.c +7 -0
  135. package/deps/librdkafka/packaging/cmake/try_compile/rdkafka_setup.cmake +122 -0
  136. package/deps/librdkafka/packaging/cmake/try_compile/regex_test.c +10 -0
  137. package/deps/librdkafka/packaging/cmake/try_compile/strndup_test.c +5 -0
  138. package/deps/librdkafka/packaging/cmake/try_compile/sync_32_test.c +8 -0
  139. package/deps/librdkafka/packaging/cmake/try_compile/sync_64_test.c +8 -0
  140. package/deps/librdkafka/packaging/cp/README.md +16 -0
  141. package/deps/librdkafka/packaging/cp/check_features.c +72 -0
  142. package/deps/librdkafka/packaging/cp/verify-deb.sh +33 -0
  143. package/deps/librdkafka/packaging/cp/verify-packages.sh +69 -0
  144. package/deps/librdkafka/packaging/cp/verify-rpm.sh +32 -0
  145. package/deps/librdkafka/packaging/debian/changelog +66 -0
  146. package/deps/librdkafka/packaging/debian/compat +1 -0
  147. package/deps/librdkafka/packaging/debian/control +49 -0
  148. package/deps/librdkafka/packaging/debian/copyright +84 -0
  149. package/deps/librdkafka/packaging/debian/docs +5 -0
  150. package/deps/librdkafka/packaging/debian/gbp.conf +9 -0
  151. package/deps/librdkafka/packaging/debian/librdkafka-dev.dirs +2 -0
  152. package/deps/librdkafka/packaging/debian/librdkafka-dev.examples +2 -0
  153. package/deps/librdkafka/packaging/debian/librdkafka-dev.install +6 -0
  154. package/deps/librdkafka/packaging/debian/librdkafka-dev.substvars +1 -0
  155. package/deps/librdkafka/packaging/debian/librdkafka.dsc +16 -0
  156. package/deps/librdkafka/packaging/debian/librdkafka1-dbg.substvars +1 -0
  157. package/deps/librdkafka/packaging/debian/librdkafka1.dirs +1 -0
  158. package/deps/librdkafka/packaging/debian/librdkafka1.install +2 -0
  159. package/deps/librdkafka/packaging/debian/librdkafka1.postinst.debhelper +5 -0
  160. package/deps/librdkafka/packaging/debian/librdkafka1.postrm.debhelper +5 -0
  161. package/deps/librdkafka/packaging/debian/librdkafka1.symbols +64 -0
  162. package/deps/librdkafka/packaging/debian/rules +19 -0
  163. package/deps/librdkafka/packaging/debian/source/format +1 -0
  164. package/deps/librdkafka/packaging/debian/watch +2 -0
  165. package/deps/librdkafka/packaging/get_version.py +21 -0
  166. package/deps/librdkafka/packaging/homebrew/README.md +15 -0
  167. package/deps/librdkafka/packaging/homebrew/brew-update-pr.sh +31 -0
  168. package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw-static.sh +52 -0
  169. package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw.sh +21 -0
  170. package/deps/librdkafka/packaging/mingw-w64/export-variables.sh +13 -0
  171. package/deps/librdkafka/packaging/mingw-w64/run-tests.sh +6 -0
  172. package/deps/librdkafka/packaging/mingw-w64/semaphoreci-build.sh +38 -0
  173. package/deps/librdkafka/packaging/nuget/README.md +84 -0
  174. package/deps/librdkafka/packaging/nuget/artifact.py +177 -0
  175. package/deps/librdkafka/packaging/nuget/cleanup-s3.py +143 -0
  176. package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr120.zip +0 -0
  177. package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr140.zip +0 -0
  178. package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr120.zip +0 -0
  179. package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr140.zip +0 -0
  180. package/deps/librdkafka/packaging/nuget/nuget.sh +21 -0
  181. package/deps/librdkafka/packaging/nuget/nugetpackage.py +278 -0
  182. package/deps/librdkafka/packaging/nuget/packaging.py +448 -0
  183. package/deps/librdkafka/packaging/nuget/push-to-nuget.sh +21 -0
  184. package/deps/librdkafka/packaging/nuget/release.py +167 -0
  185. package/deps/librdkafka/packaging/nuget/requirements.txt +3 -0
  186. package/deps/librdkafka/packaging/nuget/staticpackage.py +178 -0
  187. package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.nuspec +21 -0
  188. package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.props +18 -0
  189. package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.targets +19 -0
  190. package/deps/librdkafka/packaging/nuget/zfile/__init__.py +0 -0
  191. package/deps/librdkafka/packaging/nuget/zfile/zfile.py +98 -0
  192. package/deps/librdkafka/packaging/rpm/Makefile +92 -0
  193. package/deps/librdkafka/packaging/rpm/README.md +23 -0
  194. package/deps/librdkafka/packaging/rpm/el7-x86_64.cfg +40 -0
  195. package/deps/librdkafka/packaging/rpm/librdkafka.spec +118 -0
  196. package/deps/librdkafka/packaging/rpm/mock-on-docker.sh +96 -0
  197. package/deps/librdkafka/packaging/rpm/tests/Makefile +25 -0
  198. package/deps/librdkafka/packaging/rpm/tests/README.md +8 -0
  199. package/deps/librdkafka/packaging/rpm/tests/run-test.sh +42 -0
  200. package/deps/librdkafka/packaging/rpm/tests/test-on-docker.sh +56 -0
  201. package/deps/librdkafka/packaging/rpm/tests/test.c +77 -0
  202. package/deps/librdkafka/packaging/rpm/tests/test.cpp +34 -0
  203. package/deps/librdkafka/packaging/tools/Dockerfile +31 -0
  204. package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +12 -0
  205. package/deps/librdkafka/packaging/tools/build-deb-package.sh +64 -0
  206. package/deps/librdkafka/packaging/tools/build-debian.sh +65 -0
  207. package/deps/librdkafka/packaging/tools/build-manylinux.sh +68 -0
  208. package/deps/librdkafka/packaging/tools/build-release-artifacts.sh +139 -0
  209. package/deps/librdkafka/packaging/tools/distro-build.sh +38 -0
  210. package/deps/librdkafka/packaging/tools/gh-release-checksums.py +39 -0
  211. package/deps/librdkafka/packaging/tools/rdutcoverage.sh +25 -0
  212. package/deps/librdkafka/packaging/tools/requirements.txt +2 -0
  213. package/deps/librdkafka/packaging/tools/run-in-docker.sh +28 -0
  214. package/deps/librdkafka/packaging/tools/run-integration-tests.sh +31 -0
  215. package/deps/librdkafka/packaging/tools/run-style-check.sh +4 -0
  216. package/deps/librdkafka/packaging/tools/style-format.sh +149 -0
  217. package/deps/librdkafka/packaging/tools/update_rpcs_max_versions.py +100 -0
  218. package/deps/librdkafka/service.yml +172 -0
  219. package/deps/librdkafka/src/CMakeLists.txt +374 -0
  220. package/deps/librdkafka/src/Makefile +103 -0
  221. package/deps/librdkafka/src/README.lz4.md +30 -0
  222. package/deps/librdkafka/src/cJSON.c +2834 -0
  223. package/deps/librdkafka/src/cJSON.h +398 -0
  224. package/deps/librdkafka/src/crc32c.c +430 -0
  225. package/deps/librdkafka/src/crc32c.h +38 -0
  226. package/deps/librdkafka/src/generate_proto.sh +66 -0
  227. package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
  228. package/deps/librdkafka/src/lz4.c +2727 -0
  229. package/deps/librdkafka/src/lz4.h +842 -0
  230. package/deps/librdkafka/src/lz4frame.c +2078 -0
  231. package/deps/librdkafka/src/lz4frame.h +692 -0
  232. package/deps/librdkafka/src/lz4frame_static.h +47 -0
  233. package/deps/librdkafka/src/lz4hc.c +1631 -0
  234. package/deps/librdkafka/src/lz4hc.h +413 -0
  235. package/deps/librdkafka/src/nanopb/pb.h +917 -0
  236. package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
  237. package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
  238. package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
  239. package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
  240. package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
  241. package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
  242. package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
  243. package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
  244. package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
  245. package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
  246. package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
  247. package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
  248. package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
  249. package/deps/librdkafka/src/queue.h +850 -0
  250. package/deps/librdkafka/src/rd.h +584 -0
  251. package/deps/librdkafka/src/rdaddr.c +255 -0
  252. package/deps/librdkafka/src/rdaddr.h +202 -0
  253. package/deps/librdkafka/src/rdatomic.h +230 -0
  254. package/deps/librdkafka/src/rdavg.h +260 -0
  255. package/deps/librdkafka/src/rdavl.c +210 -0
  256. package/deps/librdkafka/src/rdavl.h +250 -0
  257. package/deps/librdkafka/src/rdbase64.c +200 -0
  258. package/deps/librdkafka/src/rdbase64.h +43 -0
  259. package/deps/librdkafka/src/rdbuf.c +1884 -0
  260. package/deps/librdkafka/src/rdbuf.h +375 -0
  261. package/deps/librdkafka/src/rdcrc32.c +114 -0
  262. package/deps/librdkafka/src/rdcrc32.h +170 -0
  263. package/deps/librdkafka/src/rddl.c +179 -0
  264. package/deps/librdkafka/src/rddl.h +43 -0
  265. package/deps/librdkafka/src/rdendian.h +175 -0
  266. package/deps/librdkafka/src/rdfloat.h +67 -0
  267. package/deps/librdkafka/src/rdfnv1a.c +113 -0
  268. package/deps/librdkafka/src/rdfnv1a.h +35 -0
  269. package/deps/librdkafka/src/rdgz.c +120 -0
  270. package/deps/librdkafka/src/rdgz.h +46 -0
  271. package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
  272. package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
  273. package/deps/librdkafka/src/rdhttp.c +830 -0
  274. package/deps/librdkafka/src/rdhttp.h +101 -0
  275. package/deps/librdkafka/src/rdinterval.h +177 -0
  276. package/deps/librdkafka/src/rdkafka.c +5505 -0
  277. package/deps/librdkafka/src/rdkafka.h +10686 -0
  278. package/deps/librdkafka/src/rdkafka_admin.c +9794 -0
  279. package/deps/librdkafka/src/rdkafka_admin.h +661 -0
  280. package/deps/librdkafka/src/rdkafka_assignment.c +1010 -0
  281. package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
  282. package/deps/librdkafka/src/rdkafka_assignor.c +1786 -0
  283. package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
  284. package/deps/librdkafka/src/rdkafka_aux.c +409 -0
  285. package/deps/librdkafka/src/rdkafka_aux.h +174 -0
  286. package/deps/librdkafka/src/rdkafka_background.c +221 -0
  287. package/deps/librdkafka/src/rdkafka_broker.c +6337 -0
  288. package/deps/librdkafka/src/rdkafka_broker.h +744 -0
  289. package/deps/librdkafka/src/rdkafka_buf.c +543 -0
  290. package/deps/librdkafka/src/rdkafka_buf.h +1525 -0
  291. package/deps/librdkafka/src/rdkafka_cert.c +576 -0
  292. package/deps/librdkafka/src/rdkafka_cert.h +62 -0
  293. package/deps/librdkafka/src/rdkafka_cgrp.c +7587 -0
  294. package/deps/librdkafka/src/rdkafka_cgrp.h +477 -0
  295. package/deps/librdkafka/src/rdkafka_conf.c +4880 -0
  296. package/deps/librdkafka/src/rdkafka_conf.h +732 -0
  297. package/deps/librdkafka/src/rdkafka_confval.h +97 -0
  298. package/deps/librdkafka/src/rdkafka_coord.c +623 -0
  299. package/deps/librdkafka/src/rdkafka_coord.h +132 -0
  300. package/deps/librdkafka/src/rdkafka_error.c +228 -0
  301. package/deps/librdkafka/src/rdkafka_error.h +80 -0
  302. package/deps/librdkafka/src/rdkafka_event.c +502 -0
  303. package/deps/librdkafka/src/rdkafka_event.h +126 -0
  304. package/deps/librdkafka/src/rdkafka_feature.c +898 -0
  305. package/deps/librdkafka/src/rdkafka_feature.h +104 -0
  306. package/deps/librdkafka/src/rdkafka_fetcher.c +1422 -0
  307. package/deps/librdkafka/src/rdkafka_fetcher.h +44 -0
  308. package/deps/librdkafka/src/rdkafka_header.c +220 -0
  309. package/deps/librdkafka/src/rdkafka_header.h +76 -0
  310. package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
  311. package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
  312. package/deps/librdkafka/src/rdkafka_int.h +1260 -0
  313. package/deps/librdkafka/src/rdkafka_interceptor.c +819 -0
  314. package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
  315. package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
  316. package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
  317. package/deps/librdkafka/src/rdkafka_metadata.c +2209 -0
  318. package/deps/librdkafka/src/rdkafka_metadata.h +345 -0
  319. package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
  320. package/deps/librdkafka/src/rdkafka_mock.c +3661 -0
  321. package/deps/librdkafka/src/rdkafka_mock.h +610 -0
  322. package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1876 -0
  323. package/deps/librdkafka/src/rdkafka_mock_handlers.c +3113 -0
  324. package/deps/librdkafka/src/rdkafka_mock_int.h +710 -0
  325. package/deps/librdkafka/src/rdkafka_msg.c +2589 -0
  326. package/deps/librdkafka/src/rdkafka_msg.h +614 -0
  327. package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
  328. package/deps/librdkafka/src/rdkafka_msgset.h +98 -0
  329. package/deps/librdkafka/src/rdkafka_msgset_reader.c +1806 -0
  330. package/deps/librdkafka/src/rdkafka_msgset_writer.c +1474 -0
  331. package/deps/librdkafka/src/rdkafka_offset.c +1565 -0
  332. package/deps/librdkafka/src/rdkafka_offset.h +150 -0
  333. package/deps/librdkafka/src/rdkafka_op.c +997 -0
  334. package/deps/librdkafka/src/rdkafka_op.h +858 -0
  335. package/deps/librdkafka/src/rdkafka_partition.c +4896 -0
  336. package/deps/librdkafka/src/rdkafka_partition.h +1182 -0
  337. package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
  338. package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
  339. package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
  340. package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
  341. package/deps/librdkafka/src/rdkafka_proto.h +736 -0
  342. package/deps/librdkafka/src/rdkafka_protocol.h +128 -0
  343. package/deps/librdkafka/src/rdkafka_queue.c +1230 -0
  344. package/deps/librdkafka/src/rdkafka_queue.h +1220 -0
  345. package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
  346. package/deps/librdkafka/src/rdkafka_request.c +7089 -0
  347. package/deps/librdkafka/src/rdkafka_request.h +732 -0
  348. package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
  349. package/deps/librdkafka/src/rdkafka_sasl.c +530 -0
  350. package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
  351. package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
  352. package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
  353. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1833 -0
  354. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
  355. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1666 -0
  356. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +47 -0
  357. package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
  358. package/deps/librdkafka/src/rdkafka_sasl_scram.c +858 -0
  359. package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
  360. package/deps/librdkafka/src/rdkafka_ssl.c +2129 -0
  361. package/deps/librdkafka/src/rdkafka_ssl.h +86 -0
  362. package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4785 -0
  363. package/deps/librdkafka/src/rdkafka_subscription.c +278 -0
  364. package/deps/librdkafka/src/rdkafka_telemetry.c +760 -0
  365. package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
  366. package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1053 -0
  367. package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
  368. package/deps/librdkafka/src/rdkafka_telemetry_encode.c +997 -0
  369. package/deps/librdkafka/src/rdkafka_telemetry_encode.h +301 -0
  370. package/deps/librdkafka/src/rdkafka_timer.c +402 -0
  371. package/deps/librdkafka/src/rdkafka_timer.h +117 -0
  372. package/deps/librdkafka/src/rdkafka_topic.c +2161 -0
  373. package/deps/librdkafka/src/rdkafka_topic.h +334 -0
  374. package/deps/librdkafka/src/rdkafka_transport.c +1309 -0
  375. package/deps/librdkafka/src/rdkafka_transport.h +99 -0
  376. package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
  377. package/deps/librdkafka/src/rdkafka_txnmgr.c +3256 -0
  378. package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
  379. package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
  380. package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
  381. package/deps/librdkafka/src/rdlist.c +576 -0
  382. package/deps/librdkafka/src/rdlist.h +434 -0
  383. package/deps/librdkafka/src/rdlog.c +89 -0
  384. package/deps/librdkafka/src/rdlog.h +41 -0
  385. package/deps/librdkafka/src/rdmap.c +508 -0
  386. package/deps/librdkafka/src/rdmap.h +492 -0
  387. package/deps/librdkafka/src/rdmurmur2.c +167 -0
  388. package/deps/librdkafka/src/rdmurmur2.h +35 -0
  389. package/deps/librdkafka/src/rdports.c +61 -0
  390. package/deps/librdkafka/src/rdports.h +38 -0
  391. package/deps/librdkafka/src/rdposix.h +250 -0
  392. package/deps/librdkafka/src/rdrand.c +80 -0
  393. package/deps/librdkafka/src/rdrand.h +43 -0
  394. package/deps/librdkafka/src/rdregex.c +156 -0
  395. package/deps/librdkafka/src/rdregex.h +43 -0
  396. package/deps/librdkafka/src/rdsignal.h +57 -0
  397. package/deps/librdkafka/src/rdstring.c +645 -0
  398. package/deps/librdkafka/src/rdstring.h +98 -0
  399. package/deps/librdkafka/src/rdsysqueue.h +404 -0
  400. package/deps/librdkafka/src/rdtime.h +356 -0
  401. package/deps/librdkafka/src/rdtypes.h +86 -0
  402. package/deps/librdkafka/src/rdunittest.c +549 -0
  403. package/deps/librdkafka/src/rdunittest.h +232 -0
  404. package/deps/librdkafka/src/rdvarint.c +134 -0
  405. package/deps/librdkafka/src/rdvarint.h +165 -0
  406. package/deps/librdkafka/src/rdwin32.h +382 -0
  407. package/deps/librdkafka/src/rdxxhash.c +1030 -0
  408. package/deps/librdkafka/src/rdxxhash.h +328 -0
  409. package/deps/librdkafka/src/regexp.c +1352 -0
  410. package/deps/librdkafka/src/regexp.h +41 -0
  411. package/deps/librdkafka/src/snappy.c +1866 -0
  412. package/deps/librdkafka/src/snappy.h +62 -0
  413. package/deps/librdkafka/src/snappy_compat.h +138 -0
  414. package/deps/librdkafka/src/statistics_schema.json +444 -0
  415. package/deps/librdkafka/src/tinycthread.c +932 -0
  416. package/deps/librdkafka/src/tinycthread.h +503 -0
  417. package/deps/librdkafka/src/tinycthread_extra.c +199 -0
  418. package/deps/librdkafka/src/tinycthread_extra.h +212 -0
  419. package/deps/librdkafka/src/win32_config.h +58 -0
  420. package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
  421. package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
  422. package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
  423. package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
  424. package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
  425. package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
  426. package/deps/librdkafka/src-cpp/Makefile +55 -0
  427. package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
  428. package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
  429. package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
  430. package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
  431. package/deps/librdkafka/src-cpp/README.md +16 -0
  432. package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
  433. package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
  434. package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
  435. package/deps/librdkafka/src-cpp/rdkafkacpp.h +3797 -0
  436. package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
  437. package/deps/librdkafka/tests/0000-unittests.c +72 -0
  438. package/deps/librdkafka/tests/0001-multiobj.c +102 -0
  439. package/deps/librdkafka/tests/0002-unkpart.c +244 -0
  440. package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
  441. package/deps/librdkafka/tests/0004-conf.c +934 -0
  442. package/deps/librdkafka/tests/0005-order.c +133 -0
  443. package/deps/librdkafka/tests/0006-symbols.c +163 -0
  444. package/deps/librdkafka/tests/0007-autotopic.c +136 -0
  445. package/deps/librdkafka/tests/0008-reqacks.c +179 -0
  446. package/deps/librdkafka/tests/0009-mock_cluster.c +97 -0
  447. package/deps/librdkafka/tests/0011-produce_batch.c +753 -0
  448. package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
  449. package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
  450. package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
  451. package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
  452. package/deps/librdkafka/tests/0016-client_swname.c +181 -0
  453. package/deps/librdkafka/tests/0017-compression.c +140 -0
  454. package/deps/librdkafka/tests/0018-cgrp_term.c +338 -0
  455. package/deps/librdkafka/tests/0019-list_groups.c +289 -0
  456. package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
  457. package/deps/librdkafka/tests/0021-rkt_destroy.c +72 -0
  458. package/deps/librdkafka/tests/0022-consume_batch.c +279 -0
  459. package/deps/librdkafka/tests/0025-timers.c +147 -0
  460. package/deps/librdkafka/tests/0026-consume_pause.c +547 -0
  461. package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
  462. package/deps/librdkafka/tests/0029-assign_offset.c +202 -0
  463. package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
  464. package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
  465. package/deps/librdkafka/tests/0033-regex_subscribe.c +536 -0
  466. package/deps/librdkafka/tests/0034-offset_reset.c +398 -0
  467. package/deps/librdkafka/tests/0035-api_version.c +73 -0
  468. package/deps/librdkafka/tests/0036-partial_fetch.c +87 -0
  469. package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
  470. package/deps/librdkafka/tests/0038-performance.c +121 -0
  471. package/deps/librdkafka/tests/0039-event.c +284 -0
  472. package/deps/librdkafka/tests/0040-io_event.c +257 -0
  473. package/deps/librdkafka/tests/0041-fetch_max_bytes.c +97 -0
  474. package/deps/librdkafka/tests/0042-many_topics.c +252 -0
  475. package/deps/librdkafka/tests/0043-no_connection.c +77 -0
  476. package/deps/librdkafka/tests/0044-partition_cnt.c +94 -0
  477. package/deps/librdkafka/tests/0045-subscribe_update.c +1010 -0
  478. package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
  479. package/deps/librdkafka/tests/0047-partial_buf_tmout.c +98 -0
  480. package/deps/librdkafka/tests/0048-partitioner.c +283 -0
  481. package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
  482. package/deps/librdkafka/tests/0050-subscribe_adds.c +145 -0
  483. package/deps/librdkafka/tests/0051-assign_adds.c +126 -0
  484. package/deps/librdkafka/tests/0052-msg_timestamps.c +238 -0
  485. package/deps/librdkafka/tests/0053-stats_cb.cpp +527 -0
  486. package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
  487. package/deps/librdkafka/tests/0055-producer_latency.c +539 -0
  488. package/deps/librdkafka/tests/0056-balanced_group_mt.c +315 -0
  489. package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
  490. package/deps/librdkafka/tests/0058-log.cpp +123 -0
  491. package/deps/librdkafka/tests/0059-bsearch.cpp +241 -0
  492. package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
  493. package/deps/librdkafka/tests/0061-consumer_lag.cpp +295 -0
  494. package/deps/librdkafka/tests/0062-stats_event.c +126 -0
  495. package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
  496. package/deps/librdkafka/tests/0064-interceptors.c +481 -0
  497. package/deps/librdkafka/tests/0065-yield.cpp +140 -0
  498. package/deps/librdkafka/tests/0066-plugins.cpp +129 -0
  499. package/deps/librdkafka/tests/0067-empty_topic.cpp +151 -0
  500. package/deps/librdkafka/tests/0068-produce_timeout.c +136 -0
  501. package/deps/librdkafka/tests/0069-consumer_add_parts.c +119 -0
  502. package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
  503. package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
  504. package/deps/librdkafka/tests/0073-headers.c +381 -0
  505. package/deps/librdkafka/tests/0074-producev.c +87 -0
  506. package/deps/librdkafka/tests/0075-retry.c +290 -0
  507. package/deps/librdkafka/tests/0076-produce_retry.c +452 -0
  508. package/deps/librdkafka/tests/0077-compaction.c +363 -0
  509. package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
  510. package/deps/librdkafka/tests/0079-fork.c +93 -0
  511. package/deps/librdkafka/tests/0080-admin_ut.c +3095 -0
  512. package/deps/librdkafka/tests/0081-admin.c +5633 -0
  513. package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +137 -0
  514. package/deps/librdkafka/tests/0083-cb_event.c +233 -0
  515. package/deps/librdkafka/tests/0084-destroy_flags.c +208 -0
  516. package/deps/librdkafka/tests/0085-headers.cpp +392 -0
  517. package/deps/librdkafka/tests/0086-purge.c +368 -0
  518. package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
  519. package/deps/librdkafka/tests/0089-max_poll_interval.c +511 -0
  520. package/deps/librdkafka/tests/0090-idempotence.c +171 -0
  521. package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +295 -0
  522. package/deps/librdkafka/tests/0092-mixed_msgver.c +103 -0
  523. package/deps/librdkafka/tests/0093-holb.c +200 -0
  524. package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +231 -0
  525. package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
  526. package/deps/librdkafka/tests/0097-ssl_verify.cpp +658 -0
  527. package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
  528. package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
  529. package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
  530. package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
  531. package/deps/librdkafka/tests/0102-static_group_rebalance.c +836 -0
  532. package/deps/librdkafka/tests/0103-transactions.c +1383 -0
  533. package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +625 -0
  534. package/deps/librdkafka/tests/0105-transactions_mock.c +3930 -0
  535. package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +318 -0
  536. package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
  537. package/deps/librdkafka/tests/0109-auto_create_topics.cpp +278 -0
  538. package/deps/librdkafka/tests/0110-batch_size.cpp +182 -0
  539. package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
  540. package/deps/librdkafka/tests/0112-assign_unknown_part.c +87 -0
  541. package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3473 -0
  542. package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
  543. package/deps/librdkafka/tests/0115-producer_auth.cpp +182 -0
  544. package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +216 -0
  545. package/deps/librdkafka/tests/0117-mock_errors.c +331 -0
  546. package/deps/librdkafka/tests/0118-commit_rebalance.c +154 -0
  547. package/deps/librdkafka/tests/0119-consumer_auth.cpp +167 -0
  548. package/deps/librdkafka/tests/0120-asymmetric_subscription.c +185 -0
  549. package/deps/librdkafka/tests/0121-clusterid.c +115 -0
  550. package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
  551. package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
  552. package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
  553. package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
  554. package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +528 -0
  555. package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
  556. package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +125 -0
  557. package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +79 -0
  558. package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
  559. package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
  560. package/deps/librdkafka/tests/0132-strategy_ordering.c +179 -0
  561. package/deps/librdkafka/tests/0133-ssl_keys.c +150 -0
  562. package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
  563. package/deps/librdkafka/tests/0135-sasl_credentials.cpp +143 -0
  564. package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
  565. package/deps/librdkafka/tests/0137-barrier_batch_consume.c +619 -0
  566. package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
  567. package/deps/librdkafka/tests/0139-offset_validation_mock.c +950 -0
  568. package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
  569. package/deps/librdkafka/tests/0142-reauthentication.c +515 -0
  570. package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +552 -0
  571. package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
  572. package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
  573. package/deps/librdkafka/tests/0146-metadata_mock.c +505 -0
  574. package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +952 -0
  575. package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +563 -0
  576. package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
  577. package/deps/librdkafka/tests/0150-telemetry_mock.c +651 -0
  578. package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
  579. package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
  580. package/deps/librdkafka/tests/0153-memberid.c +128 -0
  581. package/deps/librdkafka/tests/1000-unktopic.c +164 -0
  582. package/deps/librdkafka/tests/8000-idle.cpp +60 -0
  583. package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
  584. package/deps/librdkafka/tests/CMakeLists.txt +170 -0
  585. package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -0
  586. package/deps/librdkafka/tests/Makefile +182 -0
  587. package/deps/librdkafka/tests/README.md +509 -0
  588. package/deps/librdkafka/tests/autotest.sh +33 -0
  589. package/deps/librdkafka/tests/backtrace.gdb +30 -0
  590. package/deps/librdkafka/tests/broker_version_tests.py +315 -0
  591. package/deps/librdkafka/tests/buildbox.sh +17 -0
  592. package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
  593. package/deps/librdkafka/tests/cluster_testing.py +191 -0
  594. package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
  595. package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
  596. package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
  597. package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -0
  598. package/deps/librdkafka/tests/fixtures/ssl/client.keystore.intermediate.p12 +0 -0
  599. package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
  600. package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
  601. package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +50 -0
  602. package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
  603. package/deps/librdkafka/tests/fixtures/ssl/client2.key +46 -0
  604. package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +168 -0
  605. package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
  606. package/deps/librdkafka/tests/fuzzers/README.md +31 -0
  607. package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
  608. package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
  609. package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
  610. package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
  611. package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
  612. package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
  613. package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
  614. package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
  615. package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
  616. package/deps/librdkafka/tests/java/Makefile +13 -0
  617. package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
  618. package/deps/librdkafka/tests/java/README.md +14 -0
  619. package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
  620. package/deps/librdkafka/tests/java/run-class.sh +11 -0
  621. package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
  622. package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
  623. package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
  624. package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
  625. package/deps/librdkafka/tests/performance_plot.py +115 -0
  626. package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
  627. package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
  628. package/deps/librdkafka/tests/requirements.txt +2 -0
  629. package/deps/librdkafka/tests/run-all-tests.sh +79 -0
  630. package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
  631. package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
  632. package/deps/librdkafka/tests/run-test-batches.py +157 -0
  633. package/deps/librdkafka/tests/run-test.sh +140 -0
  634. package/deps/librdkafka/tests/rusage.c +249 -0
  635. package/deps/librdkafka/tests/sasl_test.py +289 -0
  636. package/deps/librdkafka/tests/scenarios/README.md +6 -0
  637. package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
  638. package/deps/librdkafka/tests/scenarios/default.json +5 -0
  639. package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
  640. package/deps/librdkafka/tests/sockem.c +801 -0
  641. package/deps/librdkafka/tests/sockem.h +85 -0
  642. package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
  643. package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
  644. package/deps/librdkafka/tests/test.c +7778 -0
  645. package/deps/librdkafka/tests/test.conf.example +27 -0
  646. package/deps/librdkafka/tests/test.h +1028 -0
  647. package/deps/librdkafka/tests/testcpp.cpp +131 -0
  648. package/deps/librdkafka/tests/testcpp.h +388 -0
  649. package/deps/librdkafka/tests/testshared.h +416 -0
  650. package/deps/librdkafka/tests/tools/README.md +4 -0
  651. package/deps/librdkafka/tests/tools/stats/README.md +21 -0
  652. package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
  653. package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
  654. package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
  655. package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
  656. package/deps/librdkafka/tests/trivup/trivup-0.14.0.tar.gz +0 -0
  657. package/deps/librdkafka/tests/until-fail.sh +87 -0
  658. package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
  659. package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
  660. package/deps/librdkafka/vcpkg.json +23 -0
  661. package/deps/librdkafka/win32/README.md +5 -0
  662. package/deps/librdkafka/win32/build-package.bat +3 -0
  663. package/deps/librdkafka/win32/build.bat +19 -0
  664. package/deps/librdkafka/win32/common.vcxproj +84 -0
  665. package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
  666. package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
  667. package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
  668. package/deps/librdkafka/win32/librdkafka.sln +226 -0
  669. package/deps/librdkafka/win32/librdkafka.vcxproj +276 -0
  670. package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
  671. package/deps/librdkafka/win32/msbuild.ps1 +15 -0
  672. package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
  673. package/deps/librdkafka/win32/package-zip.ps1 +46 -0
  674. package/deps/librdkafka/win32/packages/repositories.config +4 -0
  675. package/deps/librdkafka/win32/push-package.bat +4 -0
  676. package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
  677. package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
  678. package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
  679. package/deps/librdkafka/win32/setup-msys2.ps1 +47 -0
  680. package/deps/librdkafka/win32/setup-vcpkg.ps1 +34 -0
  681. package/deps/librdkafka/win32/tests/test.conf.example +25 -0
  682. package/deps/librdkafka/win32/tests/tests.vcxproj +253 -0
  683. package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
  684. package/deps/librdkafka/win32/wingetopt.c +564 -0
  685. package/deps/librdkafka/win32/wingetopt.h +101 -0
  686. package/deps/librdkafka/win32/wintime.h +33 -0
  687. package/deps/librdkafka.gyp +62 -0
  688. package/lib/admin.js +233 -0
  689. package/lib/client.js +573 -0
  690. package/lib/error.js +500 -0
  691. package/lib/index.js +34 -0
  692. package/lib/kafka-consumer-stream.js +397 -0
  693. package/lib/kafka-consumer.js +698 -0
  694. package/lib/producer/high-level-producer.js +323 -0
  695. package/lib/producer-stream.js +307 -0
  696. package/lib/producer.js +375 -0
  697. package/lib/tools/ref-counter.js +52 -0
  698. package/lib/topic-partition.js +88 -0
  699. package/lib/topic.js +42 -0
  700. package/lib/util.js +29 -0
  701. package/package.json +61 -0
  702. package/prebuilds/darwin-arm64/@point3+node-rdkafka.node +0 -0
  703. package/prebuilds/linux-x64/@point3+node-rdkafka.node +0 -0
  704. package/util/configure.js +30 -0
  705. package/util/get-env.js +6 -0
  706. package/util/test-compile.js +11 -0
  707. package/util/test-producer-delivery.js +100 -0
@@ -0,0 +1,1000 @@
1
+ /* pb_encode.c -- encode a protobuf using minimal resources
2
+ *
3
+ * 2011 Petteri Aimonen <jpa@kapsi.fi>
4
+ */
5
+
6
+ #include "nanopb/pb.h"
7
+ #include "nanopb/pb_encode.h"
8
+ #include "nanopb/pb_common.h"
9
+
10
+ /* Use the GCC warn_unused_result attribute to check that all return values
11
+ * are propagated correctly. On other compilers and gcc before 3.4.0 just
12
+ * ignore the annotation.
13
+ */
14
+ #if !defined(__GNUC__) || ( __GNUC__ < 3) || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)
15
+ #define checkreturn
16
+ #else
17
+ #define checkreturn __attribute__((warn_unused_result))
18
+ #endif
19
+
20
+ /**************************************
21
+ * Declarations internal to this file *
22
+ **************************************/
23
+ static bool checkreturn buf_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count);
24
+ static bool checkreturn encode_array(pb_ostream_t *stream, pb_field_iter_t *field);
25
+ static bool checkreturn pb_check_proto3_default_value(const pb_field_iter_t *field);
26
+ static bool checkreturn encode_basic_field(pb_ostream_t *stream, const pb_field_iter_t *field);
27
+ static bool checkreturn encode_callback_field(pb_ostream_t *stream, const pb_field_iter_t *field);
28
+ static bool checkreturn encode_field(pb_ostream_t *stream, pb_field_iter_t *field);
29
+ static bool checkreturn encode_extension_field(pb_ostream_t *stream, const pb_field_iter_t *field);
30
+ static bool checkreturn default_extension_encoder(pb_ostream_t *stream, const pb_extension_t *extension);
31
+ static bool checkreturn pb_encode_varint_32(pb_ostream_t *stream, uint32_t low, uint32_t high);
32
+ static bool checkreturn pb_enc_bool(pb_ostream_t *stream, const pb_field_iter_t *field);
33
+ static bool checkreturn pb_enc_varint(pb_ostream_t *stream, const pb_field_iter_t *field);
34
+ static bool checkreturn pb_enc_fixed(pb_ostream_t *stream, const pb_field_iter_t *field);
35
+ static bool checkreturn pb_enc_bytes(pb_ostream_t *stream, const pb_field_iter_t *field);
36
+ static bool checkreturn pb_enc_string(pb_ostream_t *stream, const pb_field_iter_t *field);
37
+ static bool checkreturn pb_enc_submessage(pb_ostream_t *stream, const pb_field_iter_t *field);
38
+ static bool checkreturn pb_enc_fixed_length_bytes(pb_ostream_t *stream, const pb_field_iter_t *field);
39
+
40
+ #ifdef PB_WITHOUT_64BIT
41
+ #define pb_int64_t int32_t
42
+ #define pb_uint64_t uint32_t
43
+ #else
44
+ #define pb_int64_t int64_t
45
+ #define pb_uint64_t uint64_t
46
+ #endif
47
+
48
+ /*******************************
49
+ * pb_ostream_t implementation *
50
+ *******************************/
51
+
52
+ static bool checkreturn buf_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count)
53
+ {
54
+ pb_byte_t *dest = (pb_byte_t*)stream->state;
55
+ stream->state = dest + count;
56
+
57
+ memcpy(dest, buf, count * sizeof(pb_byte_t));
58
+
59
+ return true;
60
+ }
61
+
62
+ pb_ostream_t pb_ostream_from_buffer(pb_byte_t *buf, size_t bufsize)
63
+ {
64
+ pb_ostream_t stream;
65
+ #ifdef PB_BUFFER_ONLY
66
+ /* In PB_BUFFER_ONLY configuration the callback pointer is just int*.
67
+ * NULL pointer marks a sizing field, so put a non-NULL value to mark a buffer stream.
68
+ */
69
+ static const int marker = 0;
70
+ stream.callback = &marker;
71
+ #else
72
+ stream.callback = &buf_write;
73
+ #endif
74
+ stream.state = buf;
75
+ stream.max_size = bufsize;
76
+ stream.bytes_written = 0;
77
+ #ifndef PB_NO_ERRMSG
78
+ stream.errmsg = NULL;
79
+ #endif
80
+ return stream;
81
+ }
82
+
83
+ bool checkreturn pb_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t count)
84
+ {
85
+ if (count > 0 && stream->callback != NULL)
86
+ {
87
+ if (stream->bytes_written + count < stream->bytes_written ||
88
+ stream->bytes_written + count > stream->max_size)
89
+ {
90
+ PB_RETURN_ERROR(stream, "stream full");
91
+ }
92
+
93
+ #ifdef PB_BUFFER_ONLY
94
+ if (!buf_write(stream, buf, count))
95
+ PB_RETURN_ERROR(stream, "io error");
96
+ #else
97
+ if (!stream->callback(stream, buf, count))
98
+ PB_RETURN_ERROR(stream, "io error");
99
+ #endif
100
+ }
101
+
102
+ stream->bytes_written += count;
103
+ return true;
104
+ }
105
+
106
+ /*************************
107
+ * Encode a single field *
108
+ *************************/
109
+
110
+ /* Read a bool value without causing undefined behavior even if the value
111
+ * is invalid. See issue #434 and
112
+ * https://stackoverflow.com/questions/27661768/weird-results-for-conditional
113
+ */
114
+ static bool safe_read_bool(const void *pSize)
115
+ {
116
+ const char *p = (const char *)pSize;
117
+ size_t i;
118
+ for (i = 0; i < sizeof(bool); i++)
119
+ {
120
+ if (p[i] != 0)
121
+ return true;
122
+ }
123
+ return false;
124
+ }
125
+
126
+ /* Encode a static array. Handles the size calculations and possible packing. */
127
+ static bool checkreturn encode_array(pb_ostream_t *stream, pb_field_iter_t *field)
128
+ {
129
+ pb_size_t i;
130
+ pb_size_t count;
131
+ #ifndef PB_ENCODE_ARRAYS_UNPACKED
132
+ size_t size;
133
+ #endif
134
+
135
+ count = *(pb_size_t*)field->pSize;
136
+
137
+ if (count == 0)
138
+ return true;
139
+
140
+ if (PB_ATYPE(field->type) != PB_ATYPE_POINTER && count > field->array_size)
141
+ PB_RETURN_ERROR(stream, "array max size exceeded");
142
+
143
+ #ifndef PB_ENCODE_ARRAYS_UNPACKED
144
+ /* We always pack arrays if the datatype allows it. */
145
+ if (PB_LTYPE(field->type) <= PB_LTYPE_LAST_PACKABLE)
146
+ {
147
+ if (!pb_encode_tag(stream, PB_WT_STRING, field->tag))
148
+ return false;
149
+
150
+ /* Determine the total size of packed array. */
151
+ if (PB_LTYPE(field->type) == PB_LTYPE_FIXED32)
152
+ {
153
+ size = 4 * (size_t)count;
154
+ }
155
+ else if (PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
156
+ {
157
+ size = 8 * (size_t)count;
158
+ }
159
+ else
160
+ {
161
+ pb_ostream_t sizestream = PB_OSTREAM_SIZING;
162
+ void *pData_orig = field->pData;
163
+ for (i = 0; i < count; i++)
164
+ {
165
+ if (!pb_enc_varint(&sizestream, field))
166
+ PB_RETURN_ERROR(stream, PB_GET_ERROR(&sizestream));
167
+ field->pData = (char*)field->pData + field->data_size;
168
+ }
169
+ field->pData = pData_orig;
170
+ size = sizestream.bytes_written;
171
+ }
172
+
173
+ if (!pb_encode_varint(stream, (pb_uint64_t)size))
174
+ return false;
175
+
176
+ if (stream->callback == NULL)
177
+ return pb_write(stream, NULL, size); /* Just sizing.. */
178
+
179
+ /* Write the data */
180
+ for (i = 0; i < count; i++)
181
+ {
182
+ if (PB_LTYPE(field->type) == PB_LTYPE_FIXED32 || PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
183
+ {
184
+ if (!pb_enc_fixed(stream, field))
185
+ return false;
186
+ }
187
+ else
188
+ {
189
+ if (!pb_enc_varint(stream, field))
190
+ return false;
191
+ }
192
+
193
+ field->pData = (char*)field->pData + field->data_size;
194
+ }
195
+ }
196
+ else /* Unpacked fields */
197
+ #endif
198
+ {
199
+ for (i = 0; i < count; i++)
200
+ {
201
+ /* Normally the data is stored directly in the array entries, but
202
+ * for pointer-type string and bytes fields, the array entries are
203
+ * actually pointers themselves also. So we have to dereference once
204
+ * more to get to the actual data. */
205
+ if (PB_ATYPE(field->type) == PB_ATYPE_POINTER &&
206
+ (PB_LTYPE(field->type) == PB_LTYPE_STRING ||
207
+ PB_LTYPE(field->type) == PB_LTYPE_BYTES))
208
+ {
209
+ bool status;
210
+ void *pData_orig = field->pData;
211
+ field->pData = *(void* const*)field->pData;
212
+
213
+ if (!field->pData)
214
+ {
215
+ /* Null pointer in array is treated as empty string / bytes */
216
+ status = pb_encode_tag_for_field(stream, field) &&
217
+ pb_encode_varint(stream, 0);
218
+ }
219
+ else
220
+ {
221
+ status = encode_basic_field(stream, field);
222
+ }
223
+
224
+ field->pData = pData_orig;
225
+
226
+ if (!status)
227
+ return false;
228
+ }
229
+ else
230
+ {
231
+ if (!encode_basic_field(stream, field))
232
+ return false;
233
+ }
234
+ field->pData = (char*)field->pData + field->data_size;
235
+ }
236
+ }
237
+
238
+ return true;
239
+ }
240
+
241
+ /* In proto3, all fields are optional and are only encoded if their value is "non-zero".
242
+ * This function implements the check for the zero value. */
243
+ static bool checkreturn pb_check_proto3_default_value(const pb_field_iter_t *field)
244
+ {
245
+ pb_type_t type = field->type;
246
+
247
+ if (PB_ATYPE(type) == PB_ATYPE_STATIC)
248
+ {
249
+ if (PB_HTYPE(type) == PB_HTYPE_REQUIRED)
250
+ {
251
+ /* Required proto2 fields inside proto3 submessage, pretty rare case */
252
+ return false;
253
+ }
254
+ else if (PB_HTYPE(type) == PB_HTYPE_REPEATED)
255
+ {
256
+ /* Repeated fields inside proto3 submessage: present if count != 0 */
257
+ return *(const pb_size_t*)field->pSize == 0;
258
+ }
259
+ else if (PB_HTYPE(type) == PB_HTYPE_ONEOF)
260
+ {
261
+ /* Oneof fields */
262
+ return *(const pb_size_t*)field->pSize == 0;
263
+ }
264
+ else if (PB_HTYPE(type) == PB_HTYPE_OPTIONAL && field->pSize != NULL)
265
+ {
266
+ /* Proto2 optional fields inside proto3 message, or proto3
267
+ * submessage fields. */
268
+ return safe_read_bool(field->pSize) == false;
269
+ }
270
+ else if (field->descriptor->default_value)
271
+ {
272
+ /* Proto3 messages do not have default values, but proto2 messages
273
+ * can contain optional fields without has_fields (generator option 'proto3').
274
+ * In this case they must always be encoded, to make sure that the
275
+ * non-zero default value is overwritten.
276
+ */
277
+ return false;
278
+ }
279
+
280
+ /* Rest is proto3 singular fields */
281
+ if (PB_LTYPE(type) <= PB_LTYPE_LAST_PACKABLE)
282
+ {
283
+ /* Simple integer / float fields */
284
+ pb_size_t i;
285
+ const char *p = (const char*)field->pData;
286
+ for (i = 0; i < field->data_size; i++)
287
+ {
288
+ if (p[i] != 0)
289
+ {
290
+ return false;
291
+ }
292
+ }
293
+
294
+ return true;
295
+ }
296
+ else if (PB_LTYPE(type) == PB_LTYPE_BYTES)
297
+ {
298
+ const pb_bytes_array_t *bytes = (const pb_bytes_array_t*)field->pData;
299
+ return bytes->size == 0;
300
+ }
301
+ else if (PB_LTYPE(type) == PB_LTYPE_STRING)
302
+ {
303
+ return *(const char*)field->pData == '\0';
304
+ }
305
+ else if (PB_LTYPE(type) == PB_LTYPE_FIXED_LENGTH_BYTES)
306
+ {
307
+ /* Fixed length bytes is only empty if its length is fixed
308
+ * as 0. Which would be pretty strange, but we can check
309
+ * it anyway. */
310
+ return field->data_size == 0;
311
+ }
312
+ else if (PB_LTYPE_IS_SUBMSG(type))
313
+ {
314
+ /* Check all fields in the submessage to find if any of them
315
+ * are non-zero. The comparison cannot be done byte-per-byte
316
+ * because the C struct may contain padding bytes that must
317
+ * be skipped. Note that usually proto3 submessages have
318
+ * a separate has_field that is checked earlier in this if.
319
+ */
320
+ pb_field_iter_t iter;
321
+ if (pb_field_iter_begin(&iter, field->submsg_desc, field->pData))
322
+ {
323
+ do
324
+ {
325
+ if (!pb_check_proto3_default_value(&iter))
326
+ {
327
+ return false;
328
+ }
329
+ } while (pb_field_iter_next(&iter));
330
+ }
331
+ return true;
332
+ }
333
+ }
334
+ else if (PB_ATYPE(type) == PB_ATYPE_POINTER)
335
+ {
336
+ return field->pData == NULL;
337
+ }
338
+ else if (PB_ATYPE(type) == PB_ATYPE_CALLBACK)
339
+ {
340
+ if (PB_LTYPE(type) == PB_LTYPE_EXTENSION)
341
+ {
342
+ const pb_extension_t *extension = *(const pb_extension_t* const *)field->pData;
343
+ return extension == NULL;
344
+ }
345
+ else if (field->descriptor->field_callback == pb_default_field_callback)
346
+ {
347
+ pb_callback_t *pCallback = (pb_callback_t*)field->pData;
348
+ return pCallback->funcs.encode == NULL;
349
+ }
350
+ else
351
+ {
352
+ return field->descriptor->field_callback == NULL;
353
+ }
354
+ }
355
+
356
+ return false; /* Not typically reached, safe default for weird special cases. */
357
+ }
358
+
359
+ /* Encode a field with static or pointer allocation, i.e. one whose data
360
+ * is available to the encoder directly. */
361
+ static bool checkreturn encode_basic_field(pb_ostream_t *stream, const pb_field_iter_t *field)
362
+ {
363
+ if (!field->pData)
364
+ {
365
+ /* Missing pointer field */
366
+ return true;
367
+ }
368
+
369
+ if (!pb_encode_tag_for_field(stream, field))
370
+ return false;
371
+
372
+ switch (PB_LTYPE(field->type))
373
+ {
374
+ case PB_LTYPE_BOOL:
375
+ return pb_enc_bool(stream, field);
376
+
377
+ case PB_LTYPE_VARINT:
378
+ case PB_LTYPE_UVARINT:
379
+ case PB_LTYPE_SVARINT:
380
+ return pb_enc_varint(stream, field);
381
+
382
+ case PB_LTYPE_FIXED32:
383
+ case PB_LTYPE_FIXED64:
384
+ return pb_enc_fixed(stream, field);
385
+
386
+ case PB_LTYPE_BYTES:
387
+ return pb_enc_bytes(stream, field);
388
+
389
+ case PB_LTYPE_STRING:
390
+ return pb_enc_string(stream, field);
391
+
392
+ case PB_LTYPE_SUBMESSAGE:
393
+ case PB_LTYPE_SUBMSG_W_CB:
394
+ return pb_enc_submessage(stream, field);
395
+
396
+ case PB_LTYPE_FIXED_LENGTH_BYTES:
397
+ return pb_enc_fixed_length_bytes(stream, field);
398
+
399
+ default:
400
+ PB_RETURN_ERROR(stream, "invalid field type");
401
+ }
402
+ }
403
+
404
+ /* Encode a field with callback semantics. This means that a user function is
405
+ * called to provide and encode the actual data. */
406
+ static bool checkreturn encode_callback_field(pb_ostream_t *stream, const pb_field_iter_t *field)
407
+ {
408
+ if (field->descriptor->field_callback != NULL)
409
+ {
410
+ if (!field->descriptor->field_callback(NULL, stream, field))
411
+ PB_RETURN_ERROR(stream, "callback error");
412
+ }
413
+ return true;
414
+ }
415
+
416
+ /* Encode a single field of any callback, pointer or static type. */
417
+ static bool checkreturn encode_field(pb_ostream_t *stream, pb_field_iter_t *field)
418
+ {
419
+ /* Check field presence */
420
+ if (PB_HTYPE(field->type) == PB_HTYPE_ONEOF)
421
+ {
422
+ if (*(const pb_size_t*)field->pSize != field->tag)
423
+ {
424
+ /* Different type oneof field */
425
+ return true;
426
+ }
427
+ }
428
+ else if (PB_HTYPE(field->type) == PB_HTYPE_OPTIONAL)
429
+ {
430
+ if (field->pSize)
431
+ {
432
+ if (safe_read_bool(field->pSize) == false)
433
+ {
434
+ /* Missing optional field */
435
+ return true;
436
+ }
437
+ }
438
+ else if (PB_ATYPE(field->type) == PB_ATYPE_STATIC)
439
+ {
440
+ /* Proto3 singular field */
441
+ if (pb_check_proto3_default_value(field))
442
+ return true;
443
+ }
444
+ }
445
+
446
+ if (!field->pData)
447
+ {
448
+ if (PB_HTYPE(field->type) == PB_HTYPE_REQUIRED)
449
+ PB_RETURN_ERROR(stream, "missing required field");
450
+
451
+ /* Pointer field set to NULL */
452
+ return true;
453
+ }
454
+
455
+ /* Then encode field contents */
456
+ if (PB_ATYPE(field->type) == PB_ATYPE_CALLBACK)
457
+ {
458
+ return encode_callback_field(stream, field);
459
+ }
460
+ else if (PB_HTYPE(field->type) == PB_HTYPE_REPEATED)
461
+ {
462
+ return encode_array(stream, field);
463
+ }
464
+ else
465
+ {
466
+ return encode_basic_field(stream, field);
467
+ }
468
+ }
469
+
470
+ /* Default handler for extension fields. Expects to have a pb_msgdesc_t
471
+ * pointer in the extension->type->arg field, pointing to a message with
472
+ * only one field in it. */
473
+ static bool checkreturn default_extension_encoder(pb_ostream_t *stream, const pb_extension_t *extension)
474
+ {
475
+ pb_field_iter_t iter;
476
+
477
+ if (!pb_field_iter_begin_extension_const(&iter, extension))
478
+ PB_RETURN_ERROR(stream, "invalid extension");
479
+
480
+ return encode_field(stream, &iter);
481
+ }
482
+
483
+
484
+ /* Walk through all the registered extensions and give them a chance
485
+ * to encode themselves. */
486
+ static bool checkreturn encode_extension_field(pb_ostream_t *stream, const pb_field_iter_t *field)
487
+ {
488
+ const pb_extension_t *extension = *(const pb_extension_t* const *)field->pData;
489
+
490
+ while (extension)
491
+ {
492
+ bool status;
493
+ if (extension->type->encode)
494
+ status = extension->type->encode(stream, extension);
495
+ else
496
+ status = default_extension_encoder(stream, extension);
497
+
498
+ if (!status)
499
+ return false;
500
+
501
+ extension = extension->next;
502
+ }
503
+
504
+ return true;
505
+ }
506
+
507
+ /*********************
508
+ * Encode all fields *
509
+ *********************/
510
+
511
+ bool checkreturn pb_encode(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct)
512
+ {
513
+ pb_field_iter_t iter;
514
+ if (!pb_field_iter_begin_const(&iter, fields, src_struct))
515
+ return true; /* Empty message type */
516
+
517
+ do {
518
+ if (PB_LTYPE(iter.type) == PB_LTYPE_EXTENSION)
519
+ {
520
+ /* Special case for the extension field placeholder */
521
+ if (!encode_extension_field(stream, &iter))
522
+ return false;
523
+ }
524
+ else
525
+ {
526
+ /* Regular field */
527
+ if (!encode_field(stream, &iter))
528
+ return false;
529
+ }
530
+ } while (pb_field_iter_next(&iter));
531
+
532
+ return true;
533
+ }
534
+
535
+ bool checkreturn pb_encode_ex(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct, unsigned int flags)
536
+ {
537
+ if ((flags & PB_ENCODE_DELIMITED) != 0)
538
+ {
539
+ return pb_encode_submessage(stream, fields, src_struct);
540
+ }
541
+ else if ((flags & PB_ENCODE_NULLTERMINATED) != 0)
542
+ {
543
+ const pb_byte_t zero = 0;
544
+
545
+ if (!pb_encode(stream, fields, src_struct))
546
+ return false;
547
+
548
+ return pb_write(stream, &zero, 1);
549
+ }
550
+ else
551
+ {
552
+ return pb_encode(stream, fields, src_struct);
553
+ }
554
+ }
555
+
556
+ bool pb_get_encoded_size(size_t *size, const pb_msgdesc_t *fields, const void *src_struct)
557
+ {
558
+ pb_ostream_t stream = PB_OSTREAM_SIZING;
559
+
560
+ if (!pb_encode(&stream, fields, src_struct))
561
+ return false;
562
+
563
+ *size = stream.bytes_written;
564
+ return true;
565
+ }
566
+
567
+ /********************
568
+ * Helper functions *
569
+ ********************/
570
+
571
+ /* This function avoids 64-bit shifts as they are quite slow on many platforms. */
572
+ static bool checkreturn pb_encode_varint_32(pb_ostream_t *stream, uint32_t low, uint32_t high)
573
+ {
574
+ size_t i = 0;
575
+ pb_byte_t buffer[10];
576
+ pb_byte_t byte = (pb_byte_t)(low & 0x7F);
577
+ low >>= 7;
578
+
579
+ while (i < 4 && (low != 0 || high != 0))
580
+ {
581
+ byte |= 0x80;
582
+ buffer[i++] = byte;
583
+ byte = (pb_byte_t)(low & 0x7F);
584
+ low >>= 7;
585
+ }
586
+
587
+ if (high)
588
+ {
589
+ byte = (pb_byte_t)(byte | ((high & 0x07) << 4));
590
+ high >>= 3;
591
+
592
+ while (high)
593
+ {
594
+ byte |= 0x80;
595
+ buffer[i++] = byte;
596
+ byte = (pb_byte_t)(high & 0x7F);
597
+ high >>= 7;
598
+ }
599
+ }
600
+
601
+ buffer[i++] = byte;
602
+
603
+ return pb_write(stream, buffer, i);
604
+ }
605
+
606
+ bool checkreturn pb_encode_varint(pb_ostream_t *stream, pb_uint64_t value)
607
+ {
608
+ if (value <= 0x7F)
609
+ {
610
+ /* Fast path: single byte */
611
+ pb_byte_t byte = (pb_byte_t)value;
612
+ return pb_write(stream, &byte, 1);
613
+ }
614
+ else
615
+ {
616
+ #ifdef PB_WITHOUT_64BIT
617
+ return pb_encode_varint_32(stream, value, 0);
618
+ #else
619
+ return pb_encode_varint_32(stream, (uint32_t)value, (uint32_t)(value >> 32));
620
+ #endif
621
+ }
622
+ }
623
+
624
+ bool checkreturn pb_encode_svarint(pb_ostream_t *stream, pb_int64_t value)
625
+ {
626
+ pb_uint64_t zigzagged;
627
+ pb_uint64_t mask = ((pb_uint64_t)-1) >> 1; /* Satisfy clang -fsanitize=integer */
628
+ if (value < 0)
629
+ zigzagged = ~(((pb_uint64_t)value & mask) << 1);
630
+ else
631
+ zigzagged = (pb_uint64_t)value << 1;
632
+
633
+ return pb_encode_varint(stream, zigzagged);
634
+ }
635
+
636
+ bool checkreturn pb_encode_fixed32(pb_ostream_t *stream, const void *value)
637
+ {
638
+ #if defined(PB_LITTLE_ENDIAN_8BIT) && PB_LITTLE_ENDIAN_8BIT == 1
639
+ /* Fast path if we know that we're on little endian */
640
+ return pb_write(stream, (const pb_byte_t*)value, 4);
641
+ #else
642
+ uint32_t val = *(const uint32_t*)value;
643
+ pb_byte_t bytes[4];
644
+ bytes[0] = (pb_byte_t)(val & 0xFF);
645
+ bytes[1] = (pb_byte_t)((val >> 8) & 0xFF);
646
+ bytes[2] = (pb_byte_t)((val >> 16) & 0xFF);
647
+ bytes[3] = (pb_byte_t)((val >> 24) & 0xFF);
648
+ return pb_write(stream, bytes, 4);
649
+ #endif
650
+ }
651
+
652
+ #ifndef PB_WITHOUT_64BIT
653
+ bool checkreturn pb_encode_fixed64(pb_ostream_t *stream, const void *value)
654
+ {
655
+ #if defined(PB_LITTLE_ENDIAN_8BIT) && PB_LITTLE_ENDIAN_8BIT == 1
656
+ /* Fast path if we know that we're on little endian */
657
+ return pb_write(stream, (const pb_byte_t*)value, 8);
658
+ #else
659
+ uint64_t val = *(const uint64_t*)value;
660
+ pb_byte_t bytes[8];
661
+ bytes[0] = (pb_byte_t)(val & 0xFF);
662
+ bytes[1] = (pb_byte_t)((val >> 8) & 0xFF);
663
+ bytes[2] = (pb_byte_t)((val >> 16) & 0xFF);
664
+ bytes[3] = (pb_byte_t)((val >> 24) & 0xFF);
665
+ bytes[4] = (pb_byte_t)((val >> 32) & 0xFF);
666
+ bytes[5] = (pb_byte_t)((val >> 40) & 0xFF);
667
+ bytes[6] = (pb_byte_t)((val >> 48) & 0xFF);
668
+ bytes[7] = (pb_byte_t)((val >> 56) & 0xFF);
669
+ return pb_write(stream, bytes, 8);
670
+ #endif
671
+ }
672
+ #endif
673
+
674
+ bool checkreturn pb_encode_tag(pb_ostream_t *stream, pb_wire_type_t wiretype, uint32_t field_number)
675
+ {
676
+ pb_uint64_t tag = ((pb_uint64_t)field_number << 3) | wiretype;
677
+ return pb_encode_varint(stream, tag);
678
+ }
679
+
680
+ bool pb_encode_tag_for_field ( pb_ostream_t* stream, const pb_field_iter_t* field )
681
+ {
682
+ pb_wire_type_t wiretype;
683
+ switch (PB_LTYPE(field->type))
684
+ {
685
+ case PB_LTYPE_BOOL:
686
+ case PB_LTYPE_VARINT:
687
+ case PB_LTYPE_UVARINT:
688
+ case PB_LTYPE_SVARINT:
689
+ wiretype = PB_WT_VARINT;
690
+ break;
691
+
692
+ case PB_LTYPE_FIXED32:
693
+ wiretype = PB_WT_32BIT;
694
+ break;
695
+
696
+ case PB_LTYPE_FIXED64:
697
+ wiretype = PB_WT_64BIT;
698
+ break;
699
+
700
+ case PB_LTYPE_BYTES:
701
+ case PB_LTYPE_STRING:
702
+ case PB_LTYPE_SUBMESSAGE:
703
+ case PB_LTYPE_SUBMSG_W_CB:
704
+ case PB_LTYPE_FIXED_LENGTH_BYTES:
705
+ wiretype = PB_WT_STRING;
706
+ break;
707
+
708
+ default:
709
+ PB_RETURN_ERROR(stream, "invalid field type");
710
+ }
711
+
712
+ return pb_encode_tag(stream, wiretype, field->tag);
713
+ }
714
+
715
+ bool checkreturn pb_encode_string(pb_ostream_t *stream, const pb_byte_t *buffer, size_t size)
716
+ {
717
+ if (!pb_encode_varint(stream, (pb_uint64_t)size))
718
+ return false;
719
+
720
+ return pb_write(stream, buffer, size);
721
+ }
722
+
723
+ bool checkreturn pb_encode_submessage(pb_ostream_t *stream, const pb_msgdesc_t *fields, const void *src_struct)
724
+ {
725
+ /* First calculate the message size using a non-writing substream. */
726
+ pb_ostream_t substream = PB_OSTREAM_SIZING;
727
+ size_t size;
728
+ bool status;
729
+
730
+ if (!pb_encode(&substream, fields, src_struct))
731
+ {
732
+ #ifndef PB_NO_ERRMSG
733
+ stream->errmsg = substream.errmsg;
734
+ #endif
735
+ return false;
736
+ }
737
+
738
+ size = substream.bytes_written;
739
+
740
+ if (!pb_encode_varint(stream, (pb_uint64_t)size))
741
+ return false;
742
+
743
+ if (stream->callback == NULL)
744
+ return pb_write(stream, NULL, size); /* Just sizing */
745
+
746
+ if (stream->bytes_written + size > stream->max_size)
747
+ PB_RETURN_ERROR(stream, "stream full");
748
+
749
+ /* Use a substream to verify that a callback doesn't write more than
750
+ * what it did the first time. */
751
+ substream.callback = stream->callback;
752
+ substream.state = stream->state;
753
+ substream.max_size = size;
754
+ substream.bytes_written = 0;
755
+ #ifndef PB_NO_ERRMSG
756
+ substream.errmsg = NULL;
757
+ #endif
758
+
759
+ status = pb_encode(&substream, fields, src_struct);
760
+
761
+ stream->bytes_written += substream.bytes_written;
762
+ stream->state = substream.state;
763
+ #ifndef PB_NO_ERRMSG
764
+ stream->errmsg = substream.errmsg;
765
+ #endif
766
+
767
+ if (substream.bytes_written != size)
768
+ PB_RETURN_ERROR(stream, "submsg size changed");
769
+
770
+ return status;
771
+ }
772
+
773
+ /* Field encoders */
774
+
775
+ static bool checkreturn pb_enc_bool(pb_ostream_t *stream, const pb_field_iter_t *field)
776
+ {
777
+ uint32_t value = safe_read_bool(field->pData) ? 1 : 0;
778
+ PB_UNUSED(field);
779
+ return pb_encode_varint(stream, value);
780
+ }
781
+
782
+ static bool checkreturn pb_enc_varint(pb_ostream_t *stream, const pb_field_iter_t *field)
783
+ {
784
+ if (PB_LTYPE(field->type) == PB_LTYPE_UVARINT)
785
+ {
786
+ /* Perform unsigned integer extension */
787
+ pb_uint64_t value = 0;
788
+
789
+ if (field->data_size == sizeof(uint_least8_t))
790
+ value = *(const uint_least8_t*)field->pData;
791
+ else if (field->data_size == sizeof(uint_least16_t))
792
+ value = *(const uint_least16_t*)field->pData;
793
+ else if (field->data_size == sizeof(uint32_t))
794
+ value = *(const uint32_t*)field->pData;
795
+ else if (field->data_size == sizeof(pb_uint64_t))
796
+ value = *(const pb_uint64_t*)field->pData;
797
+ else
798
+ PB_RETURN_ERROR(stream, "invalid data_size");
799
+
800
+ return pb_encode_varint(stream, value);
801
+ }
802
+ else
803
+ {
804
+ /* Perform signed integer extension */
805
+ pb_int64_t value = 0;
806
+
807
+ if (field->data_size == sizeof(int_least8_t))
808
+ value = *(const int_least8_t*)field->pData;
809
+ else if (field->data_size == sizeof(int_least16_t))
810
+ value = *(const int_least16_t*)field->pData;
811
+ else if (field->data_size == sizeof(int32_t))
812
+ value = *(const int32_t*)field->pData;
813
+ else if (field->data_size == sizeof(pb_int64_t))
814
+ value = *(const pb_int64_t*)field->pData;
815
+ else
816
+ PB_RETURN_ERROR(stream, "invalid data_size");
817
+
818
+ if (PB_LTYPE(field->type) == PB_LTYPE_SVARINT)
819
+ return pb_encode_svarint(stream, value);
820
+ #ifdef PB_WITHOUT_64BIT
821
+ else if (value < 0)
822
+ return pb_encode_varint_32(stream, (uint32_t)value, (uint32_t)-1);
823
+ #endif
824
+ else
825
+ return pb_encode_varint(stream, (pb_uint64_t)value);
826
+
827
+ }
828
+ }
829
+
830
+ static bool checkreturn pb_enc_fixed(pb_ostream_t *stream, const pb_field_iter_t *field)
831
+ {
832
+ #ifdef PB_CONVERT_DOUBLE_FLOAT
833
+ if (field->data_size == sizeof(float) && PB_LTYPE(field->type) == PB_LTYPE_FIXED64)
834
+ {
835
+ return pb_encode_float_as_double(stream, *(float*)field->pData);
836
+ }
837
+ #endif
838
+
839
+ if (field->data_size == sizeof(uint32_t))
840
+ {
841
+ return pb_encode_fixed32(stream, field->pData);
842
+ }
843
+ #ifndef PB_WITHOUT_64BIT
844
+ else if (field->data_size == sizeof(uint64_t))
845
+ {
846
+ return pb_encode_fixed64(stream, field->pData);
847
+ }
848
+ #endif
849
+ else
850
+ {
851
+ PB_RETURN_ERROR(stream, "invalid data_size");
852
+ }
853
+ }
854
+
855
+ static bool checkreturn pb_enc_bytes(pb_ostream_t *stream, const pb_field_iter_t *field)
856
+ {
857
+ const pb_bytes_array_t *bytes = NULL;
858
+
859
+ bytes = (const pb_bytes_array_t*)field->pData;
860
+
861
+ if (bytes == NULL)
862
+ {
863
+ /* Treat null pointer as an empty bytes field */
864
+ return pb_encode_string(stream, NULL, 0);
865
+ }
866
+
867
+ if (PB_ATYPE(field->type) == PB_ATYPE_STATIC &&
868
+ bytes->size > field->data_size - offsetof(pb_bytes_array_t, bytes))
869
+ {
870
+ PB_RETURN_ERROR(stream, "bytes size exceeded");
871
+ }
872
+
873
+ return pb_encode_string(stream, bytes->bytes, (size_t)bytes->size);
874
+ }
875
+
876
+ static bool checkreturn pb_enc_string(pb_ostream_t *stream, const pb_field_iter_t *field)
877
+ {
878
+ size_t size = 0;
879
+ size_t max_size = (size_t)field->data_size;
880
+ const char *str = (const char*)field->pData;
881
+
882
+ if (PB_ATYPE(field->type) == PB_ATYPE_POINTER)
883
+ {
884
+ max_size = (size_t)-1;
885
+ }
886
+ else
887
+ {
888
+ /* pb_dec_string() assumes string fields end with a null
889
+ * terminator when the type isn't PB_ATYPE_POINTER, so we
890
+ * shouldn't allow more than max-1 bytes to be written to
891
+ * allow space for the null terminator.
892
+ */
893
+ if (max_size == 0)
894
+ PB_RETURN_ERROR(stream, "zero-length string");
895
+
896
+ max_size -= 1;
897
+ }
898
+
899
+
900
+ if (str == NULL)
901
+ {
902
+ size = 0; /* Treat null pointer as an empty string */
903
+ }
904
+ else
905
+ {
906
+ const char *p = str;
907
+
908
+ /* strnlen() is not always available, so just use a loop */
909
+ while (size < max_size && *p != '\0')
910
+ {
911
+ size++;
912
+ p++;
913
+ }
914
+
915
+ if (*p != '\0')
916
+ {
917
+ PB_RETURN_ERROR(stream, "unterminated string");
918
+ }
919
+ }
920
+
921
+ #ifdef PB_VALIDATE_UTF8
922
+ if (!pb_validate_utf8(str))
923
+ PB_RETURN_ERROR(stream, "invalid utf8");
924
+ #endif
925
+
926
+ return pb_encode_string(stream, (const pb_byte_t*)str, size);
927
+ }
928
+
929
+ static bool checkreturn pb_enc_submessage(pb_ostream_t *stream, const pb_field_iter_t *field)
930
+ {
931
+ if (field->submsg_desc == NULL)
932
+ PB_RETURN_ERROR(stream, "invalid field descriptor");
933
+
934
+ if (PB_LTYPE(field->type) == PB_LTYPE_SUBMSG_W_CB && field->pSize != NULL)
935
+ {
936
+ /* Message callback is stored right before pSize. */
937
+ pb_callback_t *callback = (pb_callback_t*)field->pSize - 1;
938
+ if (callback->funcs.encode)
939
+ {
940
+ if (!callback->funcs.encode(stream, field, &callback->arg))
941
+ return false;
942
+ }
943
+ }
944
+
945
+ return pb_encode_submessage(stream, field->submsg_desc, field->pData);
946
+ }
947
+
948
+ static bool checkreturn pb_enc_fixed_length_bytes(pb_ostream_t *stream, const pb_field_iter_t *field)
949
+ {
950
+ return pb_encode_string(stream, (const pb_byte_t*)field->pData, (size_t)field->data_size);
951
+ }
952
+
953
+ #ifdef PB_CONVERT_DOUBLE_FLOAT
954
+ bool pb_encode_float_as_double(pb_ostream_t *stream, float value)
955
+ {
956
+ union { float f; uint32_t i; } in;
957
+ uint_least8_t sign;
958
+ int exponent;
959
+ uint64_t mantissa;
960
+
961
+ in.f = value;
962
+
963
+ /* Decompose input value */
964
+ sign = (uint_least8_t)((in.i >> 31) & 1);
965
+ exponent = (int)((in.i >> 23) & 0xFF) - 127;
966
+ mantissa = in.i & 0x7FFFFF;
967
+
968
+ if (exponent == 128)
969
+ {
970
+ /* Special value (NaN etc.) */
971
+ exponent = 1024;
972
+ }
973
+ else if (exponent == -127)
974
+ {
975
+ if (!mantissa)
976
+ {
977
+ /* Zero */
978
+ exponent = -1023;
979
+ }
980
+ else
981
+ {
982
+ /* Denormalized */
983
+ mantissa <<= 1;
984
+ while (!(mantissa & 0x800000))
985
+ {
986
+ mantissa <<= 1;
987
+ exponent--;
988
+ }
989
+ mantissa &= 0x7FFFFF;
990
+ }
991
+ }
992
+
993
+ /* Combine fields */
994
+ mantissa <<= 29;
995
+ mantissa |= (uint64_t)(exponent + 1023) << 52;
996
+ mantissa |= (uint64_t)sign << 63;
997
+
998
+ return pb_encode_fixed64(stream, &mantissa);
999
+ }
1000
+ #endif