@ohos-ports/confluentinc-kafka-javascript 1.10.0-beta.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 (628) hide show
  1. package/CHANGELOG.md +457 -0
  2. package/LICENSE.kafkajs +31 -0
  3. package/LICENSE.node-rdkafka +25 -0
  4. package/LICENSE.txt +20 -0
  5. package/README.md +133 -0
  6. package/binding.gyp +184 -0
  7. package/build/Release/confluent-kafka-javascript.node +0 -0
  8. package/build/deps/librdkafka++.so.1 +0 -0
  9. package/build/deps/librdkafka.Makefile +6 -0
  10. package/build/deps/librdkafka.so.1 +0 -0
  11. package/build/deps/librdkafka.target.mk +55 -0
  12. package/deps/librdkafka/.clang-format +136 -0
  13. package/deps/librdkafka/.clang-format-cpp +103 -0
  14. package/deps/librdkafka/.dir-locals.el +10 -0
  15. package/deps/librdkafka/.formatignore +35 -0
  16. package/deps/librdkafka/.gdbmacros +19 -0
  17. package/deps/librdkafka/CHANGELOG.md +2477 -0
  18. package/deps/librdkafka/CMakeLists.txt +291 -0
  19. package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
  20. package/deps/librdkafka/CONFIGURATION.md +212 -0
  21. package/deps/librdkafka/CONTRIBUTING.md +431 -0
  22. package/deps/librdkafka/Doxyfile +2375 -0
  23. package/deps/librdkafka/INTRODUCTION.md +2752 -0
  24. package/deps/librdkafka/LICENSE +26 -0
  25. package/deps/librdkafka/LICENSE.cjson +22 -0
  26. package/deps/librdkafka/LICENSE.crc32c +28 -0
  27. package/deps/librdkafka/LICENSE.fnv1a +18 -0
  28. package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
  29. package/deps/librdkafka/LICENSE.lz4 +26 -0
  30. package/deps/librdkafka/LICENSE.murmur2 +25 -0
  31. package/deps/librdkafka/LICENSE.nanopb +22 -0
  32. package/deps/librdkafka/LICENSE.opentelemetry +203 -0
  33. package/deps/librdkafka/LICENSE.pycrc +23 -0
  34. package/deps/librdkafka/LICENSE.queue +31 -0
  35. package/deps/librdkafka/LICENSE.regexp +5 -0
  36. package/deps/librdkafka/LICENSE.snappy +36 -0
  37. package/deps/librdkafka/LICENSE.tinycthread +26 -0
  38. package/deps/librdkafka/LICENSE.wingetopt +49 -0
  39. package/deps/librdkafka/LICENSES.txt +625 -0
  40. package/deps/librdkafka/Makefile +125 -0
  41. package/deps/librdkafka/README.md +201 -0
  42. package/deps/librdkafka/README.win32 +26 -0
  43. package/deps/librdkafka/STATISTICS.md +624 -0
  44. package/deps/librdkafka/configure +214 -0
  45. package/deps/librdkafka/configure.self +341 -0
  46. package/deps/librdkafka/dev-conf.sh +123 -0
  47. package/deps/librdkafka/lds-gen.py +73 -0
  48. package/deps/librdkafka/mainpage.doxy +40 -0
  49. package/deps/librdkafka/mklove/Makefile.base +329 -0
  50. package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
  51. package/deps/librdkafka/mklove/modules/configure.base +2484 -0
  52. package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
  53. package/deps/librdkafka/mklove/modules/configure.cc +186 -0
  54. package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
  55. package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
  56. package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
  57. package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
  58. package/deps/librdkafka/mklove/modules/configure.host +132 -0
  59. package/deps/librdkafka/mklove/modules/configure.lib +49 -0
  60. package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
  61. package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
  62. package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
  63. package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
  64. package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
  65. package/deps/librdkafka/mklove/modules/configure.pic +16 -0
  66. package/deps/librdkafka/mklove/modules/configure.socket +20 -0
  67. package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
  68. package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
  69. package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
  70. package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
  71. package/deps/librdkafka/service.yml +182 -0
  72. package/deps/librdkafka/src/CMakeLists.txt +379 -0
  73. package/deps/librdkafka/src/Makefile +105 -0
  74. package/deps/librdkafka/src/README.lz4.md +30 -0
  75. package/deps/librdkafka/src/cJSON.c +3191 -0
  76. package/deps/librdkafka/src/cJSON.h +306 -0
  77. package/deps/librdkafka/src/crc32c.c +430 -0
  78. package/deps/librdkafka/src/crc32c.h +38 -0
  79. package/deps/librdkafka/src/generate_proto.sh +66 -0
  80. package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
  81. package/deps/librdkafka/src/lz4.c +2727 -0
  82. package/deps/librdkafka/src/lz4.h +842 -0
  83. package/deps/librdkafka/src/lz4frame.c +2078 -0
  84. package/deps/librdkafka/src/lz4frame.h +692 -0
  85. package/deps/librdkafka/src/lz4frame_static.h +47 -0
  86. package/deps/librdkafka/src/lz4hc.c +1631 -0
  87. package/deps/librdkafka/src/lz4hc.h +413 -0
  88. package/deps/librdkafka/src/nanopb/pb.h +917 -0
  89. package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
  90. package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
  91. package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
  92. package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
  93. package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
  94. package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
  95. package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
  96. package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
  97. package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
  98. package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
  99. package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
  100. package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
  101. package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
  102. package/deps/librdkafka/src/queue.h +850 -0
  103. package/deps/librdkafka/src/rd.h +592 -0
  104. package/deps/librdkafka/src/rdaddr.c +255 -0
  105. package/deps/librdkafka/src/rdaddr.h +202 -0
  106. package/deps/librdkafka/src/rdatomic.h +262 -0
  107. package/deps/librdkafka/src/rdavg.h +260 -0
  108. package/deps/librdkafka/src/rdavl.c +210 -0
  109. package/deps/librdkafka/src/rdavl.h +250 -0
  110. package/deps/librdkafka/src/rdbase64.c +200 -0
  111. package/deps/librdkafka/src/rdbase64.h +43 -0
  112. package/deps/librdkafka/src/rdbuf.c +1884 -0
  113. package/deps/librdkafka/src/rdbuf.h +375 -0
  114. package/deps/librdkafka/src/rdcrc32.c +114 -0
  115. package/deps/librdkafka/src/rdcrc32.h +170 -0
  116. package/deps/librdkafka/src/rddl.c +179 -0
  117. package/deps/librdkafka/src/rddl.h +43 -0
  118. package/deps/librdkafka/src/rdendian.h +175 -0
  119. package/deps/librdkafka/src/rdfloat.h +67 -0
  120. package/deps/librdkafka/src/rdfnv1a.c +113 -0
  121. package/deps/librdkafka/src/rdfnv1a.h +35 -0
  122. package/deps/librdkafka/src/rdgz.c +120 -0
  123. package/deps/librdkafka/src/rdgz.h +46 -0
  124. package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
  125. package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
  126. package/deps/librdkafka/src/rdhttp.c +831 -0
  127. package/deps/librdkafka/src/rdhttp.h +101 -0
  128. package/deps/librdkafka/src/rdinterval.h +177 -0
  129. package/deps/librdkafka/src/rdkafka.c +7287 -0
  130. package/deps/librdkafka/src/rdkafka.h +11795 -0
  131. package/deps/librdkafka/src/rdkafka_admin.c +10165 -0
  132. package/deps/librdkafka/src/rdkafka_admin.h +658 -0
  133. package/deps/librdkafka/src/rdkafka_assignment.c +1282 -0
  134. package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
  135. package/deps/librdkafka/src/rdkafka_assignor.c +1800 -0
  136. package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
  137. package/deps/librdkafka/src/rdkafka_aux.c +409 -0
  138. package/deps/librdkafka/src/rdkafka_aux.h +174 -0
  139. package/deps/librdkafka/src/rdkafka_background.c +222 -0
  140. package/deps/librdkafka/src/rdkafka_broker.c +6736 -0
  141. package/deps/librdkafka/src/rdkafka_broker.h +851 -0
  142. package/deps/librdkafka/src/rdkafka_buf.c +543 -0
  143. package/deps/librdkafka/src/rdkafka_buf.h +1525 -0
  144. package/deps/librdkafka/src/rdkafka_cert.c +576 -0
  145. package/deps/librdkafka/src/rdkafka_cert.h +62 -0
  146. package/deps/librdkafka/src/rdkafka_cgrp.c +8310 -0
  147. package/deps/librdkafka/src/rdkafka_cgrp.h +589 -0
  148. package/deps/librdkafka/src/rdkafka_conf.c +5177 -0
  149. package/deps/librdkafka/src/rdkafka_conf.h +746 -0
  150. package/deps/librdkafka/src/rdkafka_confval.h +97 -0
  151. package/deps/librdkafka/src/rdkafka_coord.c +623 -0
  152. package/deps/librdkafka/src/rdkafka_coord.h +132 -0
  153. package/deps/librdkafka/src/rdkafka_error.c +228 -0
  154. package/deps/librdkafka/src/rdkafka_error.h +80 -0
  155. package/deps/librdkafka/src/rdkafka_event.c +502 -0
  156. package/deps/librdkafka/src/rdkafka_event.h +126 -0
  157. package/deps/librdkafka/src/rdkafka_feature.c +898 -0
  158. package/deps/librdkafka/src/rdkafka_feature.h +104 -0
  159. package/deps/librdkafka/src/rdkafka_fetcher.c +3820 -0
  160. package/deps/librdkafka/src/rdkafka_fetcher.h +62 -0
  161. package/deps/librdkafka/src/rdkafka_header.c +220 -0
  162. package/deps/librdkafka/src/rdkafka_header.h +76 -0
  163. package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
  164. package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
  165. package/deps/librdkafka/src/rdkafka_int.h +1505 -0
  166. package/deps/librdkafka/src/rdkafka_interceptor.c +842 -0
  167. package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
  168. package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
  169. package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
  170. package/deps/librdkafka/src/rdkafka_metadata.c +2347 -0
  171. package/deps/librdkafka/src/rdkafka_metadata.h +350 -0
  172. package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
  173. package/deps/librdkafka/src/rdkafka_mock.c +4514 -0
  174. package/deps/librdkafka/src/rdkafka_mock.h +867 -0
  175. package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1877 -0
  176. package/deps/librdkafka/src/rdkafka_mock_handlers.c +5255 -0
  177. package/deps/librdkafka/src/rdkafka_mock_int.h +1005 -0
  178. package/deps/librdkafka/src/rdkafka_mock_sharegrp.c +1207 -0
  179. package/deps/librdkafka/src/rdkafka_msg.c +2619 -0
  180. package/deps/librdkafka/src/rdkafka_msg.h +629 -0
  181. package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
  182. package/deps/librdkafka/src/rdkafka_msgset.h +105 -0
  183. package/deps/librdkafka/src/rdkafka_msgset_reader.c +2099 -0
  184. package/deps/librdkafka/src/rdkafka_msgset_writer.c +1474 -0
  185. package/deps/librdkafka/src/rdkafka_offset.c +1565 -0
  186. package/deps/librdkafka/src/rdkafka_offset.h +150 -0
  187. package/deps/librdkafka/src/rdkafka_op.c +1219 -0
  188. package/deps/librdkafka/src/rdkafka_op.h +1065 -0
  189. package/deps/librdkafka/src/rdkafka_partition.c +5109 -0
  190. package/deps/librdkafka/src/rdkafka_partition.h +1215 -0
  191. package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
  192. package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
  193. package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
  194. package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
  195. package/deps/librdkafka/src/rdkafka_proto.h +739 -0
  196. package/deps/librdkafka/src/rdkafka_protocol.h +131 -0
  197. package/deps/librdkafka/src/rdkafka_queue.c +1351 -0
  198. package/deps/librdkafka/src/rdkafka_queue.h +1235 -0
  199. package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
  200. package/deps/librdkafka/src/rdkafka_request.c +7298 -0
  201. package/deps/librdkafka/src/rdkafka_request.h +761 -0
  202. package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
  203. package/deps/librdkafka/src/rdkafka_sasl.c +589 -0
  204. package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
  205. package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
  206. package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
  207. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1833 -0
  208. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
  209. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1827 -0
  210. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +52 -0
  211. package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
  212. package/deps/librdkafka/src/rdkafka_sasl_scram.c +858 -0
  213. package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
  214. package/deps/librdkafka/src/rdkafka_share_acknowledgement.c +1445 -0
  215. package/deps/librdkafka/src/rdkafka_share_acknowledgement.h +373 -0
  216. package/deps/librdkafka/src/rdkafka_ssl.c +2235 -0
  217. package/deps/librdkafka/src/rdkafka_ssl.h +86 -0
  218. package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4785 -0
  219. package/deps/librdkafka/src/rdkafka_subscription.c +411 -0
  220. package/deps/librdkafka/src/rdkafka_telemetry.c +761 -0
  221. package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
  222. package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1307 -0
  223. package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
  224. package/deps/librdkafka/src/rdkafka_telemetry_encode.c +1309 -0
  225. package/deps/librdkafka/src/rdkafka_telemetry_encode.h +459 -0
  226. package/deps/librdkafka/src/rdkafka_timer.c +407 -0
  227. package/deps/librdkafka/src/rdkafka_timer.h +117 -0
  228. package/deps/librdkafka/src/rdkafka_topic.c +2382 -0
  229. package/deps/librdkafka/src/rdkafka_topic.h +369 -0
  230. package/deps/librdkafka/src/rdkafka_transport.c +1309 -0
  231. package/deps/librdkafka/src/rdkafka_transport.h +99 -0
  232. package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
  233. package/deps/librdkafka/src/rdkafka_txnmgr.c +3256 -0
  234. package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
  235. package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
  236. package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
  237. package/deps/librdkafka/src/rdlist.c +593 -0
  238. package/deps/librdkafka/src/rdlist.h +444 -0
  239. package/deps/librdkafka/src/rdlog.c +89 -0
  240. package/deps/librdkafka/src/rdlog.h +41 -0
  241. package/deps/librdkafka/src/rdmap.c +508 -0
  242. package/deps/librdkafka/src/rdmap.h +492 -0
  243. package/deps/librdkafka/src/rdmurmur2.c +167 -0
  244. package/deps/librdkafka/src/rdmurmur2.h +35 -0
  245. package/deps/librdkafka/src/rdports.c +61 -0
  246. package/deps/librdkafka/src/rdports.h +38 -0
  247. package/deps/librdkafka/src/rdposix.h +250 -0
  248. package/deps/librdkafka/src/rdrand.c +151 -0
  249. package/deps/librdkafka/src/rdrand.h +72 -0
  250. package/deps/librdkafka/src/rdregex.c +156 -0
  251. package/deps/librdkafka/src/rdregex.h +43 -0
  252. package/deps/librdkafka/src/rdsignal.h +57 -0
  253. package/deps/librdkafka/src/rdstring.c +645 -0
  254. package/deps/librdkafka/src/rdstring.h +98 -0
  255. package/deps/librdkafka/src/rdsysqueue.h +404 -0
  256. package/deps/librdkafka/src/rdtime.h +356 -0
  257. package/deps/librdkafka/src/rdtypes.h +86 -0
  258. package/deps/librdkafka/src/rdunittest.c +564 -0
  259. package/deps/librdkafka/src/rdunittest.h +232 -0
  260. package/deps/librdkafka/src/rdunittest_acknowledge.c +1177 -0
  261. package/deps/librdkafka/src/rdunittest_fetcher.c +1211 -0
  262. package/deps/librdkafka/src/rdunittest_msgset_errors.c +1521 -0
  263. package/deps/librdkafka/src/rdvarint.c +134 -0
  264. package/deps/librdkafka/src/rdvarint.h +165 -0
  265. package/deps/librdkafka/src/rdwin32.h +382 -0
  266. package/deps/librdkafka/src/rdxxhash.c +1030 -0
  267. package/deps/librdkafka/src/rdxxhash.h +328 -0
  268. package/deps/librdkafka/src/regexp.c +1352 -0
  269. package/deps/librdkafka/src/regexp.h +41 -0
  270. package/deps/librdkafka/src/snappy.c +1866 -0
  271. package/deps/librdkafka/src/snappy.h +62 -0
  272. package/deps/librdkafka/src/snappy_compat.h +138 -0
  273. package/deps/librdkafka/src/statistics_schema.json +444 -0
  274. package/deps/librdkafka/src/tinycthread.c +932 -0
  275. package/deps/librdkafka/src/tinycthread.h +503 -0
  276. package/deps/librdkafka/src/tinycthread_extra.c +210 -0
  277. package/deps/librdkafka/src/tinycthread_extra.h +218 -0
  278. package/deps/librdkafka/src/win32_config.h +58 -0
  279. package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
  280. package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
  281. package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
  282. package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
  283. package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
  284. package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
  285. package/deps/librdkafka/src-cpp/Makefile +55 -0
  286. package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
  287. package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
  288. package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
  289. package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
  290. package/deps/librdkafka/src-cpp/README.md +16 -0
  291. package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
  292. package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
  293. package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
  294. package/deps/librdkafka/src-cpp/rdkafkacpp.h +3797 -0
  295. package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
  296. package/deps/librdkafka/tests/0000-unittests.c +72 -0
  297. package/deps/librdkafka/tests/0001-multiobj.c +102 -0
  298. package/deps/librdkafka/tests/0002-unkpart.c +244 -0
  299. package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
  300. package/deps/librdkafka/tests/0004-conf.c +934 -0
  301. package/deps/librdkafka/tests/0005-order.c +133 -0
  302. package/deps/librdkafka/tests/0006-symbols.c +163 -0
  303. package/deps/librdkafka/tests/0007-autotopic.c +136 -0
  304. package/deps/librdkafka/tests/0008-reqacks.c +179 -0
  305. package/deps/librdkafka/tests/0009-mock_cluster.c +272 -0
  306. package/deps/librdkafka/tests/0011-produce_batch.c +753 -0
  307. package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
  308. package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
  309. package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
  310. package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
  311. package/deps/librdkafka/tests/0016-client_swname.c +181 -0
  312. package/deps/librdkafka/tests/0017-compression.c +140 -0
  313. package/deps/librdkafka/tests/0018-cgrp_term.c +444 -0
  314. package/deps/librdkafka/tests/0019-list_groups.c +289 -0
  315. package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
  316. package/deps/librdkafka/tests/0021-rkt_destroy.c +72 -0
  317. package/deps/librdkafka/tests/0022-consume_batch.c +331 -0
  318. package/deps/librdkafka/tests/0025-timers.c +147 -0
  319. package/deps/librdkafka/tests/0026-consume_pause.c +547 -0
  320. package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
  321. package/deps/librdkafka/tests/0029-assign_offset.c +202 -0
  322. package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
  323. package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
  324. package/deps/librdkafka/tests/0033-regex_subscribe.c +536 -0
  325. package/deps/librdkafka/tests/0034-offset_reset.c +398 -0
  326. package/deps/librdkafka/tests/0035-api_version.c +73 -0
  327. package/deps/librdkafka/tests/0036-partial_fetch.c +87 -0
  328. package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
  329. package/deps/librdkafka/tests/0038-performance.c +121 -0
  330. package/deps/librdkafka/tests/0039-event.c +284 -0
  331. package/deps/librdkafka/tests/0040-io_event.c +257 -0
  332. package/deps/librdkafka/tests/0041-fetch_max_bytes.c +97 -0
  333. package/deps/librdkafka/tests/0042-many_topics.c +252 -0
  334. package/deps/librdkafka/tests/0043-no_connection.c +77 -0
  335. package/deps/librdkafka/tests/0044-partition_cnt.c +94 -0
  336. package/deps/librdkafka/tests/0045-subscribe_update.c +1010 -0
  337. package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
  338. package/deps/librdkafka/tests/0047-partial_buf_tmout.c +98 -0
  339. package/deps/librdkafka/tests/0048-partitioner.c +283 -0
  340. package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
  341. package/deps/librdkafka/tests/0050-subscribe_adds.c +145 -0
  342. package/deps/librdkafka/tests/0051-assign_adds.c +126 -0
  343. package/deps/librdkafka/tests/0052-msg_timestamps.c +238 -0
  344. package/deps/librdkafka/tests/0053-stats_cb.cpp +527 -0
  345. package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
  346. package/deps/librdkafka/tests/0055-producer_latency.c +539 -0
  347. package/deps/librdkafka/tests/0056-balanced_group_mt.c +315 -0
  348. package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
  349. package/deps/librdkafka/tests/0058-log.cpp +123 -0
  350. package/deps/librdkafka/tests/0059-bsearch.cpp +241 -0
  351. package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
  352. package/deps/librdkafka/tests/0061-consumer_lag.cpp +295 -0
  353. package/deps/librdkafka/tests/0062-stats_event.c +126 -0
  354. package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
  355. package/deps/librdkafka/tests/0064-interceptors.c +529 -0
  356. package/deps/librdkafka/tests/0065-yield.cpp +140 -0
  357. package/deps/librdkafka/tests/0066-plugins.cpp +143 -0
  358. package/deps/librdkafka/tests/0067-empty_topic.cpp +151 -0
  359. package/deps/librdkafka/tests/0068-produce_timeout.c +136 -0
  360. package/deps/librdkafka/tests/0069-consumer_add_parts.c +119 -0
  361. package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
  362. package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
  363. package/deps/librdkafka/tests/0073-headers.c +381 -0
  364. package/deps/librdkafka/tests/0074-producev.c +87 -0
  365. package/deps/librdkafka/tests/0075-retry.c +290 -0
  366. package/deps/librdkafka/tests/0076-produce_retry.c +452 -0
  367. package/deps/librdkafka/tests/0077-compaction.c +366 -0
  368. package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
  369. package/deps/librdkafka/tests/0079-fork.c +93 -0
  370. package/deps/librdkafka/tests/0080-admin_ut.c +3095 -0
  371. package/deps/librdkafka/tests/0081-admin.c +5633 -0
  372. package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +137 -0
  373. package/deps/librdkafka/tests/0083-cb_event.c +233 -0
  374. package/deps/librdkafka/tests/0084-destroy_flags.c +208 -0
  375. package/deps/librdkafka/tests/0085-headers.cpp +392 -0
  376. package/deps/librdkafka/tests/0086-purge.c +368 -0
  377. package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
  378. package/deps/librdkafka/tests/0089-max_poll_interval.c +511 -0
  379. package/deps/librdkafka/tests/0090-idempotence.c +171 -0
  380. package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +295 -0
  381. package/deps/librdkafka/tests/0092-mixed_msgver.c +103 -0
  382. package/deps/librdkafka/tests/0093-holb.c +200 -0
  383. package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +231 -0
  384. package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
  385. package/deps/librdkafka/tests/0097-ssl_verify.cpp +674 -0
  386. package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
  387. package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
  388. package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
  389. package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
  390. package/deps/librdkafka/tests/0102-static_group_rebalance.c +836 -0
  391. package/deps/librdkafka/tests/0103-transactions.c +1383 -0
  392. package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +625 -0
  393. package/deps/librdkafka/tests/0105-transactions_mock.c +3930 -0
  394. package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +318 -0
  395. package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
  396. package/deps/librdkafka/tests/0109-auto_create_topics.cpp +278 -0
  397. package/deps/librdkafka/tests/0110-batch_size.cpp +182 -0
  398. package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
  399. package/deps/librdkafka/tests/0112-assign_unknown_part.c +87 -0
  400. package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3473 -0
  401. package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
  402. package/deps/librdkafka/tests/0115-producer_auth.cpp +182 -0
  403. package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +216 -0
  404. package/deps/librdkafka/tests/0117-mock_errors.c +331 -0
  405. package/deps/librdkafka/tests/0118-commit_rebalance.c +154 -0
  406. package/deps/librdkafka/tests/0119-consumer_auth.cpp +167 -0
  407. package/deps/librdkafka/tests/0120-asymmetric_subscription.c +185 -0
  408. package/deps/librdkafka/tests/0121-clusterid.c +115 -0
  409. package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
  410. package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
  411. package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
  412. package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
  413. package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +1164 -0
  414. package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
  415. package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +217 -0
  416. package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +79 -0
  417. package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
  418. package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
  419. package/deps/librdkafka/tests/0132-strategy_ordering.c +179 -0
  420. package/deps/librdkafka/tests/0133-ssl_keys.c +150 -0
  421. package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
  422. package/deps/librdkafka/tests/0135-sasl_credentials.cpp +279 -0
  423. package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
  424. package/deps/librdkafka/tests/0137-barrier_batch_consume.c +752 -0
  425. package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
  426. package/deps/librdkafka/tests/0139-offset_validation_mock.c +950 -0
  427. package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
  428. package/deps/librdkafka/tests/0142-reauthentication.c +931 -0
  429. package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +552 -0
  430. package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
  431. package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
  432. package/deps/librdkafka/tests/0146-metadata_mock.c +505 -0
  433. package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +1210 -0
  434. package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +569 -0
  435. package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
  436. package/deps/librdkafka/tests/0150-telemetry_mock.c +651 -0
  437. package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
  438. package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
  439. package/deps/librdkafka/tests/0153-memberid.c +128 -0
  440. package/deps/librdkafka/tests/0155-share_group_heartbeat_mock.c +2695 -0
  441. package/deps/librdkafka/tests/0156-share_consumer_fetch_mock.c +1551 -0
  442. package/deps/librdkafka/tests/0157-share_consumer_ack_mock.c +1788 -0
  443. package/deps/librdkafka/tests/0158-share_consumer_transactions_mock.c +467 -0
  444. package/deps/librdkafka/tests/0170-share_consumer_subscription.c +2192 -0
  445. package/deps/librdkafka/tests/0171-share_consumer_consume.c +2150 -0
  446. package/deps/librdkafka/tests/0172-share_consumer_acknowledge.c +1919 -0
  447. package/deps/librdkafka/tests/0173-share_consumer_commit_async.c +2735 -0
  448. package/deps/librdkafka/tests/0174-share_consumer_concurrency.c +1434 -0
  449. package/deps/librdkafka/tests/0175-share_consumer_groups.c +574 -0
  450. package/deps/librdkafka/tests/0176-share_consumer_commit_sync.c +2986 -0
  451. package/deps/librdkafka/tests/0177-share_consumer_transactions.c +1815 -0
  452. package/deps/librdkafka/tests/0178-share_consumer_close.c +2102 -0
  453. package/deps/librdkafka/tests/0179-share_consumer_destroy.c +2482 -0
  454. package/deps/librdkafka/tests/0180-share_consumer_config.c +1677 -0
  455. package/deps/librdkafka/tests/0181-share_consumer_topic_delete.c +354 -0
  456. package/deps/librdkafka/tests/0182-share_consumer_error_handling_mock.c +3358 -0
  457. package/deps/librdkafka/tests/0183-share_consumer_leader_change_mock.c +1234 -0
  458. package/deps/librdkafka/tests/0184-share_consumer_topic_recreate.c +1356 -0
  459. package/deps/librdkafka/tests/0185-share_consumer_max_poll_interval.c +557 -0
  460. package/deps/librdkafka/tests/0186-share_consumer_fatal_error.c +360 -0
  461. package/deps/librdkafka/tests/0190-share_consumer_telemetry.c +387 -0
  462. package/deps/librdkafka/tests/1000-unktopic.c +164 -0
  463. package/deps/librdkafka/tests/8000-idle.cpp +60 -0
  464. package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
  465. package/deps/librdkafka/tests/CMakeLists.txt +193 -0
  466. package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -0
  467. package/deps/librdkafka/tests/Makefile +182 -0
  468. package/deps/librdkafka/tests/README.md +514 -0
  469. package/deps/librdkafka/tests/autotest.sh +33 -0
  470. package/deps/librdkafka/tests/backtrace.gdb +30 -0
  471. package/deps/librdkafka/tests/broker_version_tests.py +315 -0
  472. package/deps/librdkafka/tests/buildbox.sh +17 -0
  473. package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
  474. package/deps/librdkafka/tests/cluster_testing.py +203 -0
  475. package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
  476. package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
  477. package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
  478. package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -0
  479. package/deps/librdkafka/tests/fixtures/ssl/client.keystore.intermediate.p12 +0 -0
  480. package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
  481. package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
  482. package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +50 -0
  483. package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
  484. package/deps/librdkafka/tests/fixtures/ssl/client2.key +46 -0
  485. package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +168 -0
  486. package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
  487. package/deps/librdkafka/tests/fuzzers/README.md +31 -0
  488. package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
  489. package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
  490. package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
  491. package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
  492. package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
  493. package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
  494. package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
  495. package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
  496. package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
  497. package/deps/librdkafka/tests/java/Makefile +13 -0
  498. package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
  499. package/deps/librdkafka/tests/java/README.md +14 -0
  500. package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
  501. package/deps/librdkafka/tests/java/run-class.sh +11 -0
  502. package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
  503. package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
  504. package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
  505. package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
  506. package/deps/librdkafka/tests/performance_plot.py +115 -0
  507. package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
  508. package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
  509. package/deps/librdkafka/tests/requirements.txt +2 -0
  510. package/deps/librdkafka/tests/run-all-tests.sh +81 -0
  511. package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
  512. package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
  513. package/deps/librdkafka/tests/run-test-batches.py +157 -0
  514. package/deps/librdkafka/tests/run-test.sh +141 -0
  515. package/deps/librdkafka/tests/rusage.c +249 -0
  516. package/deps/librdkafka/tests/sasl_test.py +289 -0
  517. package/deps/librdkafka/tests/scenarios/README.md +6 -0
  518. package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
  519. package/deps/librdkafka/tests/scenarios/default.json +5 -0
  520. package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
  521. package/deps/librdkafka/tests/share_telemetry_verify/share-otel-collector-config.yaml +28 -0
  522. package/deps/librdkafka/tests/sockem.c +801 -0
  523. package/deps/librdkafka/tests/sockem.h +85 -0
  524. package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
  525. package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
  526. package/deps/librdkafka/tests/test.c +8376 -0
  527. package/deps/librdkafka/tests/test.conf.example +27 -0
  528. package/deps/librdkafka/tests/test.h +1150 -0
  529. package/deps/librdkafka/tests/testcpp.cpp +131 -0
  530. package/deps/librdkafka/tests/testcpp.h +388 -0
  531. package/deps/librdkafka/tests/testshared.h +416 -0
  532. package/deps/librdkafka/tests/tools/README.md +4 -0
  533. package/deps/librdkafka/tests/tools/stats/README.md +21 -0
  534. package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
  535. package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
  536. package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
  537. package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
  538. package/deps/librdkafka/tests/trivup/trivup-0.15.0.tar.gz +0 -0
  539. package/deps/librdkafka/tests/until-fail.sh +87 -0
  540. package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
  541. package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
  542. package/deps/librdkafka/vcpkg.json +23 -0
  543. package/deps/librdkafka/win32/README.md +5 -0
  544. package/deps/librdkafka/win32/build-package.bat +3 -0
  545. package/deps/librdkafka/win32/build.bat +19 -0
  546. package/deps/librdkafka/win32/common.vcxproj +84 -0
  547. package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
  548. package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
  549. package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
  550. package/deps/librdkafka/win32/librdkafka.sln +226 -0
  551. package/deps/librdkafka/win32/librdkafka.vcxproj +282 -0
  552. package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
  553. package/deps/librdkafka/win32/msbuild.ps1 +58 -0
  554. package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
  555. package/deps/librdkafka/win32/package-zip.ps1 +46 -0
  556. package/deps/librdkafka/win32/packages/repositories.config +4 -0
  557. package/deps/librdkafka/win32/push-package.bat +4 -0
  558. package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
  559. package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
  560. package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
  561. package/deps/librdkafka/win32/setup-msys2.ps1 +47 -0
  562. package/deps/librdkafka/win32/setup-vcpkg.ps1 +34 -0
  563. package/deps/librdkafka/win32/tests/test.conf.example +25 -0
  564. package/deps/librdkafka/win32/tests/tests.vcxproj +278 -0
  565. package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
  566. package/deps/librdkafka/win32/wingetopt.c +564 -0
  567. package/deps/librdkafka/win32/wingetopt.h +101 -0
  568. package/deps/librdkafka/win32/wintime.h +33 -0
  569. package/deps/librdkafka.gyp +83 -0
  570. package/deps/windows-install.py +80 -0
  571. package/index.d.ts +3 -0
  572. package/lib/admin.js +732 -0
  573. package/lib/client.js +679 -0
  574. package/lib/error.js +501 -0
  575. package/lib/index.js +8 -0
  576. package/lib/kafka-consumer-stream.js +399 -0
  577. package/lib/kafka-consumer.js +798 -0
  578. package/lib/kafkajs/_admin.js +1052 -0
  579. package/lib/kafkajs/_common.js +887 -0
  580. package/lib/kafkajs/_consumer.js +2156 -0
  581. package/lib/kafkajs/_consumer_cache.js +310 -0
  582. package/lib/kafkajs/_error.js +298 -0
  583. package/lib/kafkajs/_kafka.js +125 -0
  584. package/lib/kafkajs/_linked-list.js +220 -0
  585. package/lib/kafkajs/_producer.js +863 -0
  586. package/lib/kafkajs/index.js +5 -0
  587. package/lib/producer/high-level-producer.js +400 -0
  588. package/lib/producer-stream.js +337 -0
  589. package/lib/producer.js +405 -0
  590. package/lib/rdkafka.js +44 -0
  591. package/lib/tools/ref-counter.js +53 -0
  592. package/lib/topic-partition.js +91 -0
  593. package/lib/topic.js +43 -0
  594. package/lib/util.js +55 -0
  595. package/librdkafka.js +12 -0
  596. package/package.json +85 -0
  597. package/shim/source_location +54 -0
  598. package/src/admin.cc +1597 -0
  599. package/src/admin.h +112 -0
  600. package/src/binding.cc +76 -0
  601. package/src/binding.h +25 -0
  602. package/src/callbacks.cc +676 -0
  603. package/src/callbacks.h +302 -0
  604. package/src/common.cc +1628 -0
  605. package/src/common.h +192 -0
  606. package/src/config.cc +219 -0
  607. package/src/config.h +61 -0
  608. package/src/connection.cc +703 -0
  609. package/src/connection.h +117 -0
  610. package/src/errors.cc +119 -0
  611. package/src/errors.h +60 -0
  612. package/src/kafka-consumer.cc +1539 -0
  613. package/src/kafka-consumer.h +147 -0
  614. package/src/producer.cc +917 -0
  615. package/src/producer.h +124 -0
  616. package/src/topic.cc +173 -0
  617. package/src/topic.h +54 -0
  618. package/src/workers.cc +1714 -0
  619. package/src/workers.h +690 -0
  620. package/types/config.d.ts +1269 -0
  621. package/types/errors.d.ts +373 -0
  622. package/types/kafkajs.d.ts +568 -0
  623. package/types/rdkafka.d.ts +571 -0
  624. package/util/configure.js +32 -0
  625. package/util/generate-docs.sh +18 -0
  626. package/util/get-env.js +6 -0
  627. package/util/test-compile.js +11 -0
  628. package/util/test-producer-delivery.js +100 -0
@@ -0,0 +1,623 @@
1
+ /*
2
+ * librdkafka - Apache Kafka C library
3
+ *
4
+ * Copyright (c) 2019-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
+
30
+ #include "rdkafka_int.h"
31
+ #include "rdkafka_request.h"
32
+ #include "rdkafka_coord.h"
33
+
34
+
35
+ /**
36
+ * @name Coordinator cache
37
+ * @{
38
+ *
39
+ */
40
+ void rd_kafka_coord_cache_entry_destroy(rd_kafka_coord_cache_t *cc,
41
+ rd_kafka_coord_cache_entry_t *cce) {
42
+ rd_assert(cc->cc_cnt > 0);
43
+ rd_free(cce->cce_coordkey);
44
+ rd_kafka_broker_destroy(cce->cce_rkb);
45
+ TAILQ_REMOVE(&cc->cc_entries, cce, cce_link);
46
+ cc->cc_cnt--;
47
+ rd_free(cce);
48
+ }
49
+
50
+
51
+ /**
52
+ * @brief Delete any expired cache entries
53
+ *
54
+ * @locality rdkafka main thread
55
+ */
56
+ void rd_kafka_coord_cache_expire(rd_kafka_coord_cache_t *cc) {
57
+ rd_kafka_coord_cache_entry_t *cce, *next;
58
+ rd_ts_t expire = rd_clock() - cc->cc_expire_thres;
59
+
60
+ next = TAILQ_LAST(&cc->cc_entries, rd_kafka_coord_cache_head_s);
61
+ while (next) {
62
+ cce = next;
63
+
64
+ if (cce->cce_ts_used > expire)
65
+ break;
66
+
67
+ next = TAILQ_PREV(cce, rd_kafka_coord_cache_head_s, cce_link);
68
+ rd_kafka_coord_cache_entry_destroy(cc, cce);
69
+ }
70
+ }
71
+
72
+
73
+ static rd_kafka_coord_cache_entry_t *
74
+ rd_kafka_coord_cache_find(rd_kafka_coord_cache_t *cc,
75
+ rd_kafka_coordtype_t coordtype,
76
+ const char *coordkey) {
77
+ rd_kafka_coord_cache_entry_t *cce;
78
+
79
+ TAILQ_FOREACH(cce, &cc->cc_entries, cce_link) {
80
+ if (cce->cce_coordtype == coordtype &&
81
+ !strcmp(cce->cce_coordkey, coordkey)) {
82
+ /* Match */
83
+ cce->cce_ts_used = rd_clock();
84
+ if (TAILQ_FIRST(&cc->cc_entries) != cce) {
85
+ /* Move to head of list */
86
+ TAILQ_REMOVE(&cc->cc_entries, cce, cce_link);
87
+ TAILQ_INSERT_HEAD(&cc->cc_entries, cce,
88
+ cce_link);
89
+ }
90
+ return cce;
91
+ }
92
+ }
93
+
94
+ return NULL;
95
+ }
96
+
97
+
98
+ rd_kafka_broker_t *rd_kafka_coord_cache_get(rd_kafka_coord_cache_t *cc,
99
+ rd_kafka_coordtype_t coordtype,
100
+ const char *coordkey) {
101
+ rd_kafka_coord_cache_entry_t *cce;
102
+
103
+ cce = rd_kafka_coord_cache_find(cc, coordtype, coordkey);
104
+ if (!cce)
105
+ return NULL;
106
+
107
+ rd_kafka_broker_keep(cce->cce_rkb);
108
+ return cce->cce_rkb;
109
+ }
110
+
111
+
112
+
113
+ static void rd_kafka_coord_cache_add(rd_kafka_coord_cache_t *cc,
114
+ rd_kafka_coordtype_t coordtype,
115
+ const char *coordkey,
116
+ rd_kafka_broker_t *rkb) {
117
+ rd_kafka_coord_cache_entry_t *cce;
118
+
119
+ if (!(cce = rd_kafka_coord_cache_find(cc, coordtype, coordkey))) {
120
+ if (cc->cc_cnt > 10) {
121
+ /* Not enough room in cache, remove least used entry */
122
+ rd_kafka_coord_cache_entry_t *rem = TAILQ_LAST(
123
+ &cc->cc_entries, rd_kafka_coord_cache_head_s);
124
+ rd_kafka_coord_cache_entry_destroy(cc, rem);
125
+ }
126
+
127
+ cce = rd_calloc(1, sizeof(*cce));
128
+ cce->cce_coordtype = coordtype;
129
+ cce->cce_coordkey = rd_strdup(coordkey);
130
+ cce->cce_ts_used = rd_clock();
131
+
132
+ TAILQ_INSERT_HEAD(&cc->cc_entries, cce, cce_link);
133
+ cc->cc_cnt++;
134
+ }
135
+
136
+ if (cce->cce_rkb != rkb) {
137
+ if (cce->cce_rkb)
138
+ rd_kafka_broker_destroy(cce->cce_rkb);
139
+ cce->cce_rkb = rkb;
140
+ rd_kafka_broker_keep(rkb);
141
+ }
142
+ }
143
+
144
+
145
+ /**
146
+ * @brief Evict any cache entries for broker \p rkb.
147
+ *
148
+ * Use this when a request returns ERR_NOT_COORDINATOR_FOR...
149
+ *
150
+ * @locality rdkafka main thread
151
+ * @locks none
152
+ */
153
+ void rd_kafka_coord_cache_evict(rd_kafka_coord_cache_t *cc,
154
+ rd_kafka_broker_t *rkb) {
155
+ rd_kafka_coord_cache_entry_t *cce, *tmp;
156
+
157
+ TAILQ_FOREACH_SAFE(cce, &cc->cc_entries, cce_link, tmp) {
158
+ if (cce->cce_rkb == rkb)
159
+ rd_kafka_coord_cache_entry_destroy(cc, cce);
160
+ }
161
+ }
162
+
163
+ /**
164
+ * @brief Destroy all coord cache entries.
165
+ */
166
+ void rd_kafka_coord_cache_destroy(rd_kafka_coord_cache_t *cc) {
167
+ rd_kafka_coord_cache_entry_t *cce;
168
+
169
+ while ((cce = TAILQ_FIRST(&cc->cc_entries)))
170
+ rd_kafka_coord_cache_entry_destroy(cc, cce);
171
+ }
172
+
173
+
174
+ /**
175
+ * @brief Initialize the coord cache.
176
+ *
177
+ * Locking of the coord-cache is up to the owner.
178
+ */
179
+ void rd_kafka_coord_cache_init(rd_kafka_coord_cache_t *cc,
180
+ int expire_thres_ms) {
181
+ TAILQ_INIT(&cc->cc_entries);
182
+ cc->cc_cnt = 0;
183
+ cc->cc_expire_thres = expire_thres_ms * 1000;
184
+ }
185
+
186
+ /**@}*/
187
+
188
+
189
+ /**
190
+ * @name Asynchronous coordinator requests
191
+ * @{
192
+ *
193
+ */
194
+
195
+
196
+
197
+ static void rd_kafka_coord_req_fsm(rd_kafka_t *rk, rd_kafka_coord_req_t *creq);
198
+
199
+ /**
200
+ * @brief Timer callback for delayed coord requests.
201
+ */
202
+ static void rd_kafka_coord_req_tmr_cb(rd_kafka_timers_t *rkts, void *arg) {
203
+ rd_kafka_coord_req_t *creq = arg;
204
+
205
+ rd_kafka_coord_req_fsm(rkts->rkts_rk, creq);
206
+ }
207
+
208
+
209
+ /**
210
+ * @brief Look up coordinator for \p coordtype and \p coordkey
211
+ * (either from cache or by FindCoordinator), make sure there is
212
+ * a connection to the coordinator, and then call \p send_req_cb,
213
+ * passing the coordinator broker instance and \p rko
214
+ * to send the request.
215
+ * These steps may be performed by this function, or asynchronously
216
+ * at a later time.
217
+ *
218
+ * @param delay_ms If non-zero, delay scheduling of the coord request
219
+ * for this long. The passed \p timeout_ms is automatically
220
+ * adjusted to + \p delay_ms.
221
+ *
222
+ * Response, or error, is sent on \p replyq with callback \p rkbuf_cb.
223
+ *
224
+ * @locality rdkafka main thread
225
+ * @locks none
226
+ */
227
+ void rd_kafka_coord_req(rd_kafka_t *rk,
228
+ rd_kafka_coordtype_t coordtype,
229
+ const char *coordkey,
230
+ rd_kafka_send_req_cb_t *send_req_cb,
231
+ rd_kafka_op_t *rko,
232
+ int delay_ms,
233
+ int timeout_ms,
234
+ rd_kafka_replyq_t replyq,
235
+ rd_kafka_resp_cb_t *resp_cb,
236
+ void *reply_opaque) {
237
+ rd_kafka_coord_req_t *creq;
238
+
239
+ creq = rd_calloc(1, sizeof(*creq));
240
+ creq->creq_coordtype = coordtype;
241
+ creq->creq_coordkey = rd_strdup(coordkey);
242
+ creq->creq_ts_timeout = rd_timeout_init(delay_ms + timeout_ms);
243
+ creq->creq_send_req_cb = send_req_cb;
244
+ creq->creq_rko = rko;
245
+ creq->creq_replyq = replyq;
246
+ creq->creq_resp_cb = resp_cb;
247
+ creq->creq_reply_opaque = reply_opaque;
248
+ creq->creq_refcnt = 1;
249
+ creq->creq_done = rd_false;
250
+ rd_interval_init(&creq->creq_query_intvl);
251
+
252
+ TAILQ_INSERT_TAIL(&rk->rk_coord_reqs, creq, creq_link);
253
+
254
+ if (delay_ms)
255
+ rd_kafka_timer_start_oneshot(&rk->rk_timers, &creq->creq_tmr,
256
+ rd_true, (rd_ts_t)delay_ms * 1000,
257
+ rd_kafka_coord_req_tmr_cb, creq);
258
+ else
259
+ rd_kafka_coord_req_fsm(rk, creq);
260
+ }
261
+
262
+
263
+ /**
264
+ * @brief Decrease refcount of creq and free it if no more references.
265
+ *
266
+ * @param done Mark creq as done, having performed its duties. There may still
267
+ * be lingering references.
268
+ *
269
+ * @returns true if creq was destroyed, else false.
270
+ */
271
+ static rd_bool_t rd_kafka_coord_req_destroy(rd_kafka_t *rk,
272
+ rd_kafka_coord_req_t *creq,
273
+ rd_bool_t done) {
274
+
275
+ rd_assert(creq->creq_refcnt > 0);
276
+
277
+ if (done) {
278
+ /* Request has been performed, remove from rk_coord_reqs
279
+ * list so creq won't be triggered again by state broadcasts,
280
+ * etc. */
281
+ rd_dassert(!creq->creq_done);
282
+ TAILQ_REMOVE(&rk->rk_coord_reqs, creq, creq_link);
283
+ creq->creq_done = rd_true;
284
+
285
+ rd_kafka_timer_stop(&rk->rk_timers, &creq->creq_tmr,
286
+ RD_DO_LOCK);
287
+ }
288
+
289
+ if (--creq->creq_refcnt > 0)
290
+ return rd_false;
291
+
292
+ rd_dassert(creq->creq_done);
293
+
294
+ /* Clear out coordinator we were waiting for. */
295
+ if (creq->creq_rkb) {
296
+ rd_kafka_broker_persistent_connection_del(
297
+ creq->creq_rkb, &creq->creq_rkb->rkb_persistconn.coord);
298
+ rd_kafka_broker_destroy(creq->creq_rkb);
299
+ creq->creq_rkb = NULL;
300
+ }
301
+
302
+ rd_kafka_replyq_destroy(&creq->creq_replyq);
303
+ rd_free(creq->creq_coordkey);
304
+ rd_free(creq);
305
+
306
+ return rd_true;
307
+ }
308
+
309
+ static void rd_kafka_coord_req_keep(rd_kafka_coord_req_t *creq) {
310
+ creq->creq_refcnt++;
311
+ }
312
+
313
+ static void rd_kafka_coord_req_fail(rd_kafka_t *rk,
314
+ rd_kafka_coord_req_t *creq,
315
+ rd_kafka_resp_err_t err) {
316
+ rd_kafka_op_t *reply;
317
+ rd_kafka_buf_t *rkbuf;
318
+
319
+ reply = rd_kafka_op_new(RD_KAFKA_OP_RECV_BUF);
320
+ reply->rko_rk = rk; /* Set rk since the rkbuf will not have a rkb
321
+ * to reach it. */
322
+ reply->rko_err = err;
323
+
324
+ /* Need a dummy rkbuf to pass state to the buf resp_cb */
325
+ rkbuf = rd_kafka_buf_new(0, 0);
326
+ rkbuf->rkbuf_cb = creq->creq_resp_cb;
327
+ rkbuf->rkbuf_opaque = creq->creq_reply_opaque;
328
+ reply->rko_u.xbuf.rkbuf = rkbuf;
329
+
330
+ rd_kafka_replyq_enq(&creq->creq_replyq, reply, 0);
331
+
332
+ rd_kafka_coord_req_destroy(rk, creq, rd_true /*done*/);
333
+ }
334
+
335
+
336
+ static void rd_kafka_coord_req_handle_FindCoordinator(rd_kafka_t *rk,
337
+ rd_kafka_broker_t *rkb,
338
+ rd_kafka_resp_err_t err,
339
+ rd_kafka_buf_t *rkbuf,
340
+ rd_kafka_buf_t *request,
341
+ void *opaque) {
342
+ const int log_decode_errors = LOG_ERR;
343
+ rd_kafka_coord_req_t *creq = opaque;
344
+ int16_t ErrorCode;
345
+ rd_kafkap_str_t Host;
346
+ int32_t NodeId, Port;
347
+ char errstr[256] = "";
348
+ int actions;
349
+ rd_kafka_broker_t *coord;
350
+ rd_kafka_metadata_broker_t mdb = RD_ZERO_INIT;
351
+
352
+ /* If creq has finished (possibly because of an earlier FindCoordinator
353
+ * response or a broker state broadcast we simply ignore the
354
+ * response. */
355
+ if (creq->creq_done)
356
+ err = RD_KAFKA_RESP_ERR__DESTROY;
357
+
358
+ if (err)
359
+ goto err;
360
+
361
+ if (request->rkbuf_reqhdr.ApiVersion >= 1)
362
+ rd_kafka_buf_read_throttle_time(rkbuf);
363
+
364
+ rd_kafka_buf_read_i16(rkbuf, &ErrorCode);
365
+
366
+ if (request->rkbuf_reqhdr.ApiVersion >= 1) {
367
+ rd_kafkap_str_t ErrorMsg;
368
+ rd_kafka_buf_read_str(rkbuf, &ErrorMsg);
369
+ if (ErrorCode)
370
+ rd_snprintf(errstr, sizeof(errstr), "%.*s",
371
+ RD_KAFKAP_STR_PR(&ErrorMsg));
372
+ }
373
+
374
+ if ((err = ErrorCode))
375
+ goto err;
376
+
377
+ rd_kafka_buf_read_i32(rkbuf, &NodeId);
378
+ rd_kafka_buf_read_str(rkbuf, &Host);
379
+ rd_kafka_buf_read_i32(rkbuf, &Port);
380
+
381
+ mdb.id = NodeId;
382
+ RD_KAFKAP_STR_DUPA(&mdb.host, &Host);
383
+ mdb.port = Port;
384
+
385
+ /* Find, update or add broker */
386
+ rd_kafka_broker_update(rk, rkb->rkb_proto, &mdb, &coord);
387
+
388
+ if (!coord) {
389
+ err = RD_KAFKA_RESP_ERR__FAIL;
390
+ rd_snprintf(errstr, sizeof(errstr),
391
+ "Failed to add broker: "
392
+ "instance is probably terminating");
393
+ goto err;
394
+ }
395
+
396
+
397
+ rd_kafka_coord_cache_add(&rk->rk_coord_cache, creq->creq_coordtype,
398
+ creq->creq_coordkey, coord);
399
+ rd_kafka_broker_destroy(coord); /* refcnt from broker_update() */
400
+
401
+ rd_kafka_coord_req_fsm(rk, creq);
402
+
403
+ /* Drop refcount from req_fsm() */
404
+ rd_kafka_coord_req_destroy(rk, creq, rd_false /*!done*/);
405
+
406
+ return;
407
+
408
+ err_parse:
409
+ err = rkbuf->rkbuf_err;
410
+ err:
411
+ actions = rd_kafka_err_action(
412
+ rkb, err, request,
413
+
414
+ RD_KAFKA_ERR_ACTION_SPECIAL, RD_KAFKA_RESP_ERR__DESTROY,
415
+
416
+ RD_KAFKA_ERR_ACTION_PERMANENT,
417
+ RD_KAFKA_RESP_ERR_TRANSACTIONAL_ID_AUTHORIZATION_FAILED,
418
+
419
+ RD_KAFKA_ERR_ACTION_PERMANENT,
420
+ RD_KAFKA_RESP_ERR_CLUSTER_AUTHORIZATION_FAILED,
421
+
422
+ RD_KAFKA_ERR_ACTION_REFRESH, RD_KAFKA_RESP_ERR__TRANSPORT,
423
+
424
+ RD_KAFKA_ERR_ACTION_RETRY,
425
+ RD_KAFKA_RESP_ERR_COORDINATOR_NOT_AVAILABLE,
426
+
427
+ RD_KAFKA_ERR_ACTION_END);
428
+
429
+ if (actions & RD_KAFKA_ERR_ACTION_PERMANENT) {
430
+ rd_kafka_coord_req_fail(rk, creq, err);
431
+ return;
432
+
433
+ } else if (actions & RD_KAFKA_ERR_ACTION_RETRY) {
434
+ rd_kafka_buf_retry(rkb, request);
435
+ return; /* Keep refcnt from req_fsm() and retry */
436
+ }
437
+
438
+ /* Rely on state broadcast to trigger retry */
439
+
440
+ /* Drop refcount from req_fsm() */
441
+ rd_kafka_coord_req_destroy(rk, creq, rd_false /*!done*/);
442
+ }
443
+
444
+
445
+
446
+ /**
447
+ * @brief State machine for async coordinator requests.
448
+ *
449
+ * @remark May destroy the \p creq.
450
+ *
451
+ * @locality any
452
+ * @locks none
453
+ */
454
+ static void rd_kafka_coord_req_fsm(rd_kafka_t *rk, rd_kafka_coord_req_t *creq) {
455
+ rd_kafka_broker_t *rkb;
456
+ rd_kafka_resp_err_t err;
457
+
458
+ if (creq->creq_done)
459
+ /* crqeq has already performed its actions, this is a
460
+ * lingering reference, e.g., a late FindCoordinator response.
461
+ * Just ignore. */
462
+ return;
463
+
464
+ if (unlikely(rd_kafka_terminating(rk))) {
465
+ rd_kafka_coord_req_fail(rk, creq, RD_KAFKA_RESP_ERR__DESTROY);
466
+ return;
467
+ }
468
+
469
+ /* Do nothing if creq is delayed and the delay time hasn't expired yet.
470
+ * We will be called again by the timer once it expires.*/
471
+ if (rd_kafka_timer_next(&rk->rk_timers, &creq->creq_tmr, RD_DO_LOCK) >
472
+ 0)
473
+ return;
474
+
475
+ /* Check cache first */
476
+ rkb = rd_kafka_coord_cache_get(
477
+ &rk->rk_coord_cache, creq->creq_coordtype, creq->creq_coordkey);
478
+
479
+ if (rkb) {
480
+ if (rd_kafka_broker_is_up(rkb)) {
481
+ /* Cached coordinator is up, send request */
482
+ rd_kafka_replyq_t replyq;
483
+
484
+ /* Clear out previous coordinator we waited for. */
485
+ if (creq->creq_rkb) {
486
+ rd_kafka_broker_persistent_connection_del(
487
+ creq->creq_rkb,
488
+ &creq->creq_rkb->rkb_persistconn.coord);
489
+ rd_kafka_broker_destroy(creq->creq_rkb);
490
+ creq->creq_rkb = NULL;
491
+ }
492
+
493
+ rd_kafka_replyq_copy(&replyq, &creq->creq_replyq);
494
+ err = creq->creq_send_req_cb(rkb, creq->creq_rko,
495
+ replyq, creq->creq_resp_cb,
496
+ creq->creq_reply_opaque);
497
+
498
+ if (err) {
499
+ /* Permanent error, e.g., request not
500
+ * supported by broker. */
501
+ rd_kafka_replyq_destroy(&replyq);
502
+ rd_kafka_coord_req_fail(rk, creq, err);
503
+ } else {
504
+ rd_kafka_coord_req_destroy(rk, creq,
505
+ rd_true /*done*/);
506
+ }
507
+
508
+ } else if (creq->creq_rkb == rkb) {
509
+ /* No change in coordinator, but it is still not up.
510
+ * Query for coordinator if at least a second has
511
+ * passed since this coord_req was created or the
512
+ * last time we queried. */
513
+ if (rd_interval(&creq->creq_query_intvl,
514
+ 1000 * 1000 /* 1s */, 0) > 0) {
515
+ rd_rkb_dbg(rkb, BROKER, "COORD",
516
+ "Coordinator connection is "
517
+ "still down: "
518
+ "querying for new coordinator");
519
+ rd_kafka_broker_destroy(rkb);
520
+ goto query_coord;
521
+ }
522
+
523
+ } else {
524
+ /* No connection yet.
525
+ * Let broker thread know we need a connection.
526
+ * We'll be re-triggered on broker state broadcast. */
527
+
528
+ if (creq->creq_rkb) {
529
+ /* Clear previous */
530
+ rd_kafka_broker_persistent_connection_del(
531
+ creq->creq_rkb,
532
+ &creq->creq_rkb->rkb_persistconn.coord);
533
+ rd_kafka_broker_destroy(creq->creq_rkb);
534
+ }
535
+
536
+ rd_kafka_broker_keep(rkb);
537
+ creq->creq_rkb = rkb;
538
+ rd_kafka_broker_persistent_connection_add(
539
+ rkb, &rkb->rkb_persistconn.coord);
540
+ }
541
+
542
+ rd_kafka_broker_destroy(rkb);
543
+ return;
544
+
545
+ } else if (creq->creq_rkb) {
546
+ /* No coordinator information, clear out the previous
547
+ * coordinator we waited for. */
548
+ rd_kafka_broker_persistent_connection_del(
549
+ creq->creq_rkb, &creq->creq_rkb->rkb_persistconn.coord);
550
+ rd_kafka_broker_destroy(creq->creq_rkb);
551
+ creq->creq_rkb = NULL;
552
+ }
553
+
554
+ query_coord:
555
+ /* Get any usable broker to look up the coordinator */
556
+ rkb = rd_kafka_broker_any_usable(rk, RD_POLL_NOWAIT, RD_DO_LOCK,
557
+ RD_KAFKA_FEATURE_BROKER_GROUP_COORD,
558
+ "broker to look up coordinator");
559
+
560
+ if (!rkb) {
561
+ /* No available brokers yet, we'll be re-triggered on
562
+ * broker state broadcast. */
563
+ return;
564
+ }
565
+
566
+
567
+ /* Send FindCoordinator request, the handler will continue
568
+ * the state machine. */
569
+ rd_kafka_coord_req_keep(creq);
570
+ err = rd_kafka_FindCoordinatorRequest(
571
+ rkb, creq->creq_coordtype, creq->creq_coordkey,
572
+ RD_KAFKA_REPLYQ(rk->rk_ops, 0),
573
+ rd_kafka_coord_req_handle_FindCoordinator, creq);
574
+
575
+ rd_kafka_broker_destroy(rkb);
576
+
577
+ if (err) {
578
+ rd_kafka_coord_req_fail(rk, creq, err);
579
+ /* from keep() above */
580
+ rd_kafka_coord_req_destroy(rk, creq, rd_false /*!done*/);
581
+ }
582
+ }
583
+
584
+
585
+
586
+ /**
587
+ * @brief Callback called from rdkafka main thread on each
588
+ * broker state change from or to UP.
589
+ *
590
+ * @locality rdkafka main thread
591
+ * @locks none
592
+ */
593
+ void rd_kafka_coord_rkb_monitor_cb(rd_kafka_broker_t *rkb) {
594
+ rd_kafka_t *rk = rkb->rkb_rk;
595
+ rd_kafka_coord_req_t *creq, *tmp;
596
+
597
+ /* Run through all coord_req fsms */
598
+ TAILQ_FOREACH_SAFE(creq, &rk->rk_coord_reqs, creq_link, tmp) {
599
+ rd_kafka_coord_req_fsm(rk, creq);
600
+ }
601
+ }
602
+
603
+
604
+
605
+ /**
606
+ * @brief Instance is terminating: destroy all coord reqs
607
+ */
608
+ void rd_kafka_coord_reqs_term(rd_kafka_t *rk) {
609
+ rd_kafka_coord_req_t *creq;
610
+
611
+ while ((creq = TAILQ_FIRST(&rk->rk_coord_reqs)))
612
+ rd_kafka_coord_req_fail(rk, creq, RD_KAFKA_RESP_ERR__DESTROY);
613
+ }
614
+
615
+
616
+ /**
617
+ * @brief Initialize coord reqs list.
618
+ */
619
+ void rd_kafka_coord_reqs_init(rd_kafka_t *rk) {
620
+ TAILQ_INIT(&rk->rk_coord_reqs);
621
+ }
622
+
623
+ /**@}*/