@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,589 @@
1
+ /*
2
+ * librdkafka - Apache Kafka C library
3
+ *
4
+ * Copyright (c) 2012-2022, Magnus Edenhill
5
+ * 2023, Confluent Inc.
6
+ * All rights reserved.
7
+ *
8
+ * Redistribution and use in source and binary forms, with or without
9
+ * modification, are permitted provided that the following conditions are met:
10
+ *
11
+ * 1. Redistributions of source code must retain the above copyright notice,
12
+ * this list of conditions and the following disclaimer.
13
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
14
+ * this list of conditions and the following disclaimer in the documentation
15
+ * and/or other materials provided with the distribution.
16
+ *
17
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
+ * POSSIBILITY OF SUCH DAMAGE.
28
+ */
29
+ #ifndef _RDKAFKA_CGRP_H_
30
+ #define _RDKAFKA_CGRP_H_
31
+
32
+ #include "rdinterval.h"
33
+
34
+ #include "rdkafka_assignor.h"
35
+
36
+
37
+ /**
38
+ * Client groups implementation
39
+ *
40
+ * Client groups handling for a single cgrp is assigned to a single
41
+ * rd_kafka_broker_t object at any given time.
42
+ * The main thread will call cgrp_serve() to serve its cgrps.
43
+ *
44
+ * This means that the cgrp itself does not need to be locked since it
45
+ * is only ever used from the main thread.
46
+ *
47
+ */
48
+
49
+
50
+ extern const char *rd_kafka_cgrp_join_state_names[];
51
+
52
+ /**
53
+ * Client group
54
+ */
55
+ typedef struct rd_kafka_cgrp_s {
56
+ const rd_kafkap_str_t *rkcg_group_id;
57
+ rd_kafkap_str_t *rkcg_member_id; /* Last assigned MemberId */
58
+ rd_kafkap_str_t *rkcg_group_instance_id;
59
+ const rd_kafkap_str_t *rkcg_client_id;
60
+ rd_kafkap_str_t *rkcg_client_rack;
61
+
62
+ enum {
63
+ /* Init state */
64
+ RD_KAFKA_CGRP_STATE_INIT,
65
+
66
+ /* Cgrp has been stopped. This is a final state */
67
+ RD_KAFKA_CGRP_STATE_TERM,
68
+
69
+ /* Query for group coordinator */
70
+ RD_KAFKA_CGRP_STATE_QUERY_COORD,
71
+
72
+ /* Outstanding query, awaiting response */
73
+ RD_KAFKA_CGRP_STATE_WAIT_COORD,
74
+
75
+ /* Wait ack from assigned cgrp manager broker thread */
76
+ RD_KAFKA_CGRP_STATE_WAIT_BROKER,
77
+
78
+ /* Wait for manager broker thread to connect to broker */
79
+ RD_KAFKA_CGRP_STATE_WAIT_BROKER_TRANSPORT,
80
+
81
+ /* Coordinator is up and manager is assigned. */
82
+ RD_KAFKA_CGRP_STATE_UP,
83
+ } rkcg_state;
84
+ rd_ts_t rkcg_ts_statechange; /* Timestamp of last
85
+ * state change. */
86
+
87
+
88
+ enum {
89
+ /* all: join or rejoin, possibly with an existing assignment. */
90
+ RD_KAFKA_CGRP_JOIN_STATE_INIT,
91
+
92
+ /* all: JoinGroupRequest sent, awaiting response. */
93
+ RD_KAFKA_CGRP_JOIN_STATE_WAIT_JOIN,
94
+
95
+ /* all: MetadataRequest sent, awaiting response.
96
+ * While metadata requests may be issued at any time,
97
+ * this state is only set upon a proper (re)join. */
98
+ RD_KAFKA_CGRP_JOIN_STATE_WAIT_METADATA,
99
+
100
+ /* Follower: SyncGroupRequest sent, awaiting response. */
101
+ RD_KAFKA_CGRP_JOIN_STATE_WAIT_SYNC,
102
+
103
+ /* all: waiting for application to call *_assign() */
104
+ RD_KAFKA_CGRP_JOIN_STATE_WAIT_ASSIGN_CALL,
105
+
106
+ /* all: waiting for application to call *_unassign() */
107
+ RD_KAFKA_CGRP_JOIN_STATE_WAIT_UNASSIGN_CALL,
108
+
109
+ /* all: waiting for full assignment to decommission */
110
+ RD_KAFKA_CGRP_JOIN_STATE_WAIT_UNASSIGN_TO_COMPLETE,
111
+
112
+ /* all: waiting for partial assignment to decommission */
113
+ RD_KAFKA_CGRP_JOIN_STATE_WAIT_INCR_UNASSIGN_TO_COMPLETE,
114
+
115
+ /* all: synchronized and assigned
116
+ * may be an empty assignment. */
117
+ RD_KAFKA_CGRP_JOIN_STATE_STEADY,
118
+ } rkcg_join_state;
119
+
120
+ /* State when group leader */
121
+ struct {
122
+ rd_kafka_group_member_t *members;
123
+ int member_cnt;
124
+ } rkcg_group_leader;
125
+
126
+ rd_kafka_q_t *rkcg_q; /* Application poll queue */
127
+ rd_kafka_q_t *rkcg_ops; /* Manager ops queue */
128
+ rd_kafka_q_t *rkcg_wait_coord_q; /* Ops awaiting coord */
129
+ /* TODO KIP-932: rkcg_flags is written by the main thread (heartbeat
130
+ * builder/response handler) and read lock-free by the app thread on
131
+ * every poll via rd_kafka_app_polled(). TSAN flags this as a data
132
+ * race because the writer and reader are on different threads with
133
+ * no synchronization between them. */
134
+ int rkcg_flags;
135
+ #define RD_KAFKA_CGRP_F_TERMINATE 0x1 /* Terminate cgrp (async) */
136
+ #define RD_KAFKA_CGRP_F_LEAVE_ON_UNASSIGN_DONE \
137
+ 0x8 /* Send LeaveGroup when \
138
+ * unassign is done */
139
+ #define RD_KAFKA_CGRP_F_SUBSCRIPTION \
140
+ 0x10 /* If set: \
141
+ * subscription \
142
+ * else: \
143
+ * static assignment */
144
+ #define RD_KAFKA_CGRP_F_HEARTBEAT_IN_TRANSIT \
145
+ 0x20 /* A Heartbeat request \
146
+ * is in transit, dont \
147
+ * send a new one. */
148
+ #define RD_KAFKA_CGRP_F_WILDCARD_SUBSCRIPTION \
149
+ 0x40 /* Subscription contains \
150
+ * wildcards. */
151
+ #define RD_KAFKA_CGRP_F_WAIT_LEAVE \
152
+ 0x80 /* Wait for LeaveGroup \
153
+ * to be sent. \
154
+ * This is used to stall \
155
+ * termination until \
156
+ * the LeaveGroupRequest \
157
+ * is responded to, \
158
+ * otherwise it risks \
159
+ * being dropped in the \
160
+ * output queue when \
161
+ * the broker is destroyed. \
162
+ */
163
+ #define RD_KAFKA_CGRP_F_MAX_POLL_EXCEEDED \
164
+ 0x100 /**< max.poll.interval.ms \
165
+ * was exceeded and we \
166
+ * left the group. \
167
+ * Do not rejoin until \
168
+ * the application has \
169
+ * polled again. */
170
+
171
+ rd_interval_t rkcg_coord_query_intvl; /* Coordinator query intvl*/
172
+ rd_interval_t rkcg_heartbeat_intvl; /* Heartbeat intvl */
173
+ rd_kafka_timer_t rkcg_serve_timer; /* Timer for next serve. */
174
+ int rkcg_heartbeat_intvl_ms; /* KIP 848: received
175
+ * heartbeat interval in
176
+ * milliseconds */
177
+ rd_interval_t rkcg_join_intvl; /* JoinGroup interval */
178
+ rd_interval_t rkcg_timeout_scan_intvl; /* Timeout scanner */
179
+
180
+ rd_ts_t rkcg_ts_session_timeout; /**< Absolute session
181
+ * timeout enforced by
182
+ * the consumer, this
183
+ * value is updated on
184
+ * Heartbeat success,
185
+ * etc. */
186
+ rd_kafka_resp_err_t rkcg_last_heartbeat_err; /**< Last Heartbeat error,
187
+ * used for logging. */
188
+
189
+ TAILQ_HEAD(, rd_kafka_topic_s) rkcg_topics; /* Topics subscribed to */
190
+
191
+ rd_list_t rkcg_toppars; /* Toppars subscribed to*/
192
+
193
+ int32_t rkcg_generation_id; /* Current generation id (classic)
194
+ * or member epoch (consumer). */
195
+
196
+ rd_kafka_assignor_t *rkcg_assignor; /**< The current partition
197
+ * assignor. used by both
198
+ * leader and members. */
199
+ void *rkcg_assignor_state; /**< current partition
200
+ * assignor state */
201
+
202
+ int32_t rkcg_coord_id; /**< Current coordinator id,
203
+ * or -1 if not known. */
204
+
205
+ rd_kafka_group_protocol_t
206
+ rkcg_group_protocol; /**< Group protocol to use */
207
+
208
+ rd_kafkap_str_t *rkcg_group_remote_assignor; /**< Group remote
209
+ * assignor to use */
210
+
211
+ rd_kafka_broker_t *rkcg_curr_coord; /**< Current coordinator
212
+ * broker handle, or NULL.
213
+ * rkcg_coord's nodename is
214
+ * updated to this broker's
215
+ * nodename when there is a
216
+ * coordinator change. */
217
+ rd_kafka_broker_t *rkcg_coord; /**< The dedicated coordinator
218
+ * broker handle.
219
+ * Will be updated when the
220
+ * coordinator changes. */
221
+
222
+ int16_t rkcg_wait_resp; /**< Awaiting response for this
223
+ * ApiKey.
224
+ * Makes sure only one
225
+ * JoinGroup or SyncGroup
226
+ * request is outstanding.
227
+ * Unset value is -1. */
228
+
229
+ /** Current subscription */
230
+ rd_kafka_topic_partition_list_t *rkcg_subscription;
231
+ /** The actual topics subscribed (after metadata+wildcard matching).
232
+ * Sorted. */
233
+ rd_list_t *rkcg_subscribed_topics; /**< (rd_kafka_topic_info_t *) */
234
+ /** Subscribed topics that are errored/not available.
235
+ *
236
+ * Two roles share this field, exclusively per cgrp protocol:
237
+ *
238
+ * - Classic consumer: cross-cycle dedup memo.
239
+ * rd_kafka_propagate_consumer_topic_errors wholesale-replaces
240
+ * it with the current cycle's errored set after emitting.
241
+ *
242
+ * - Share consumer (KIP-932): per-metadata-cycle (topic, err)
243
+ * accumulator. Populated by rd_kafka_share_toppar_enq_error
244
+ * and drained (then re-emptied) by
245
+ * rd_kafka_share_topic_err_propagate at cycle end. */
246
+ rd_kafka_topic_partition_list_t *rkcg_errored_topics;
247
+ /** If a SUBSCRIBE op is received during a COOPERATIVE rebalance,
248
+ * actioning this will be postponed until after the rebalance
249
+ * completes. The waiting subscription is stored here. */
250
+ rd_kafka_topic_partition_list_t *rkcg_next_subscription;
251
+
252
+ /**
253
+ * Subscription regex pattern. All the provided regex patterns are
254
+ * stored as a single string with each pattern separated by '|'.
255
+ *
256
+ * Only applicable for the consumer protocol introduced in KIP-848.
257
+ *
258
+ * rkcg_subscription = rkcg_subscription_topics +
259
+ * rkcg_subscription_regex
260
+ */
261
+ rd_kafkap_str_t *rkcg_subscription_regex;
262
+
263
+ /**
264
+ * Full topic names extracted out from the rkcg_subscription.
265
+ *
266
+ * Only applicable for the consumer protocol introduced in KIP-848.
267
+ *
268
+ * For the consumer protocol, this field doesn't include regex
269
+ * subscriptions. For that please refer `rkcg_subscription_regex`
270
+ *
271
+ * rkcg_subscription = rkcg_subscription_topics +
272
+ * rkcg_subscription_regex
273
+ */
274
+ rd_kafka_topic_partition_list_t *rkcg_subscription_topics;
275
+
276
+ /** If a (un)SUBSCRIBE op is received during a COOPERATIVE rebalance,
277
+ * actioning this will be posponed until after the rebalance
278
+ * completes. This flag is used to signal a waiting unsubscribe
279
+ * operation. Mutually exclusive with rkcg_next_subscription. */
280
+ rd_bool_t rkcg_next_unsubscribe;
281
+
282
+ /** Assignment considered lost */
283
+ rd_atomic32_t rkcg_assignment_lost;
284
+
285
+ /** Current assignment of partitions from last SyncGroup response.
286
+ * NULL means no assignment, else empty or non-empty assignment.
287
+ *
288
+ * This group assignment is the actual set of partitions that were
289
+ * assigned to our consumer by the consumer group leader and should
290
+ * not be confused with the rk_consumer.assignment which is the
291
+ * partitions assigned by the application using assign(), et.al.
292
+ *
293
+ * The group assignment and the consumer assignment are typically
294
+ * identical, but not necessarily since an application is free to
295
+ * assign() any partition, not just the partitions it is handed
296
+ * through the rebalance callback.
297
+ *
298
+ * Yes, this nomenclature is ambigious but has historical reasons,
299
+ * so for now just try to remember that:
300
+ * - group assignment == consumer group assignment.
301
+ * - assignment == actual used assignment, i.e., fetched partitions.
302
+ *
303
+ * @remark This list is always sorted.
304
+ */
305
+ rd_kafka_topic_partition_list_t *rkcg_group_assignment;
306
+
307
+ /** The partitions to incrementally assign following a
308
+ * currently in-progress incremental unassign. */
309
+ rd_kafka_topic_partition_list_t *rkcg_rebalance_incr_assignment;
310
+
311
+ /** Current acked assignment, start with an empty list. */
312
+ rd_kafka_topic_partition_list_t *rkcg_current_assignment;
313
+
314
+ /** Assignment the is currently reconciling.
315
+ * Can be NULL in case there's no reconciliation ongoing. */
316
+ rd_kafka_topic_partition_list_t *rkcg_target_assignment;
317
+
318
+ /** Next assignment that will be reconciled once current
319
+ * reconciliation finishes. Can be NULL. */
320
+ rd_kafka_topic_partition_list_t *rkcg_next_target_assignment;
321
+
322
+ /** Number of backoff retries when expediting next heartbeat. */
323
+ int rkcg_expedite_heartbeat_retries;
324
+
325
+ /** Flags for KIP-848 state machine. */
326
+ int rkcg_consumer_flags;
327
+ /** Coordinator is waiting for an acknowledgement of currently reconciled
328
+ * target assignment. Cleared when an HB succeeds
329
+ * after reconciliation finishes. */
330
+ #define RD_KAFKA_CGRP_CONSUMER_F_WAIT_ACK 0x1
331
+ /** Member is sending an acknowledgement for a reconciled assignment */
332
+ #define RD_KAFKA_CGRP_CONSUMER_F_SENDING_ACK 0x2
333
+ /** A new subscription needs to be sent to the Coordinator. */
334
+ #define RD_KAFKA_CGRP_CONSUMER_F_SEND_NEW_SUBSCRIPTION 0x4
335
+ /** A new subscription is being sent to the Coordinator. */
336
+ #define RD_KAFKA_CGRP_CONSUMER_F_SENDING_NEW_SUBSCRIPTION 0x8
337
+ /** Consumer has subscribed at least once,
338
+ * if it didn't happen rebalance protocol is still
339
+ * considered NONE, otherwise it depends on the
340
+ * configured partition assignors. */
341
+ #define RD_KAFKA_CGRP_CONSUMER_F_SUBSCRIBED_ONCE 0x10
342
+ /** Send a complete request in next heartbeat */
343
+ #define RD_KAFKA_CGRP_CONSUMER_F_SEND_FULL_REQUEST 0x20
344
+ /** Member is fenced, need to rejoin */
345
+ #define RD_KAFKA_CGRP_CONSUMER_F_WAIT_REJOIN 0x40
346
+ /** Member is fenced, rejoining */
347
+ #define RD_KAFKA_CGRP_CONSUMER_F_WAIT_REJOIN_TO_COMPLETE 0x80
348
+ /** Serve pending assignments after heartbeat */
349
+ #define RD_KAFKA_CGRP_CONSUMER_F_SERVE_PENDING 0x100
350
+
351
+ /** Rejoin the group following a currently in-progress
352
+ * incremental unassign. */
353
+ rd_bool_t rkcg_rebalance_rejoin;
354
+
355
+ rd_ts_t rkcg_ts_last_err; /* Timestamp of last error
356
+ * propagated to application */
357
+ rd_kafka_resp_err_t rkcg_last_err; /* Last error propagated to
358
+ * application.
359
+ * This is for silencing
360
+ * same errors. */
361
+
362
+ rd_kafka_timer_t rkcg_offset_commit_tmr; /* Offset commit timer */
363
+ rd_kafka_timer_t rkcg_max_poll_interval_tmr; /**< Enforce the max
364
+ * poll interval. */
365
+
366
+ rd_kafka_t *rkcg_rk;
367
+
368
+ rd_kafka_op_t *rkcg_reply_rko; /* Send reply for op
369
+ * (OP_TERMINATE)
370
+ * to this rko's queue. */
371
+
372
+ rd_ts_t rkcg_ts_terminate; /* Timestamp of when
373
+ * cgrp termination was
374
+ * initiated. */
375
+
376
+ rd_atomic32_t rkcg_terminated; /**< Consumer has been closed */
377
+
378
+ rd_atomic32_t rkcg_subscription_version; /**< Subscription version */
379
+
380
+ /* Protected by rd_kafka_*lock() */
381
+ struct {
382
+ rd_ts_t ts_rebalance; /* Timestamp of
383
+ * last rebalance */
384
+ int rebalance_cnt; /* Number of
385
+ rebalances */
386
+ char rebalance_reason[256]; /**< Last rebalance
387
+ * reason */
388
+ int assignment_size; /* Partition count
389
+ * of last rebalance
390
+ * assignment */
391
+ } rkcg_c;
392
+
393
+ /* Timestamp of last rebalance start */
394
+ rd_ts_t rkcg_ts_rebalance_start;
395
+
396
+ struct {
397
+ size_t last_partition_picked; /* For round-robin
398
+ * partition picking */
399
+ rd_kafka_timer_t share_fetch_fanout_tmr; /**< Timer for
400
+ * share fetch
401
+ * fanout */
402
+ rd_bool_t
403
+ share_fetch_more_records; /**< Global fetch-in-flight
404
+ * guard. When rd_true, a
405
+ * fetch is already in
406
+ * progress and new FANOUT
407
+ * ops should not send
408
+ * another fetch request. */
409
+ int share_should_fetch_ops_in_flight_cnt; /**< Number of
410
+ * SHARE_FETCH ops
411
+ * with
412
+ * should_fetch=true
413
+ * currently
414
+ * in-flight.
415
+ * Incremented when
416
+ * enqueuing,
417
+ * decremented on
418
+ * reply.
419
+ * @locality main
420
+ * thread */
421
+ int share_session_leave_remaining_cnt; /**< Number of
422
+ * session leave requests
423
+ * which are either
424
+ * pending to be sent or
425
+ * are in-flight.
426
+ * Populated when cgrp
427
+ * termination op is
428
+ * received and
429
+ * decremented whenever
430
+ * we receive a reply to
431
+ * a leave request
432
+ * @locality main
433
+ * thread */
434
+ int64_t commit_sync_request_id_counter; /**< Global counter for
435
+ * commit_sync request
436
+ * IDs. Starts at 1,
437
+ * wraps to 1 at
438
+ * INT64_MAX.
439
+ * @locality main
440
+ * thread */
441
+ rd_ts_t
442
+ fetch_stall_logged_last_ts; /**< Last time the
443
+ * main-thread re-trigger
444
+ * loop logged a "fetch
445
+ * stalled" condition;
446
+ * rate-limits that log.
447
+ * 0 = not currently
448
+ * logged.
449
+ * @locality main thread */
450
+ } rkcg_share;
451
+
452
+ /**
453
+ * Current commit_sync request state.
454
+ * Only one commit_sync can be active at a time since
455
+ * the app thread blocks until the main thread sends
456
+ * the response.
457
+ * @locality main thread
458
+ */
459
+ struct {
460
+ int64_t id; /**< Current request ID from
461
+ * rkcg_share.commit_sync_request_id_counter.
462
+ * Set on each new commit_sync call.
463
+ * Reset to 0 when the reply is sent.
464
+ * 0 means no active request. */
465
+ rd_ts_t abs_timeout; /**< Absolute timeout for the
466
+ * commit_sync request. */
467
+ rd_kafka_topic_partition_list_t
468
+ *results; /**< Partition-to-error mapping.
469
+ * Populated as broker replies
470
+ * arrive. */
471
+ int brokers_awaiting_result_cnt; /**< Number of broker
472
+ * results still
473
+ * pending. */
474
+ rd_kafka_q_t *replyq; /**< App thread's temp queue
475
+ * to send response to. */
476
+ rd_kafka_timer_t tmr; /**< Timeout timer. Fires at
477
+ * abs_timeout to send
478
+ * timeout response. */
479
+ } rkcg_commit_sync_request;
480
+ } rd_kafka_cgrp_t;
481
+
482
+
483
+
484
+ /* Check if broker is the coordinator */
485
+ #define RD_KAFKA_CGRP_BROKER_IS_COORD(rkcg, rkb) \
486
+ ((rkcg)->rkcg_coord_id != -1 && \
487
+ (rkcg)->rkcg_coord_id == (rkb)->rkb_nodeid)
488
+
489
+ /**
490
+ * @returns true if cgrp is using static group membership
491
+ */
492
+ #define RD_KAFKA_CGRP_IS_STATIC_MEMBER(rkcg) \
493
+ !RD_KAFKAP_STR_IS_NULL((rkcg)->rkcg_group_instance_id)
494
+
495
+ extern const char *rd_kafka_cgrp_state_names[];
496
+ extern const char *rd_kafka_cgrp_join_state_names[];
497
+
498
+ void rd_kafka_cgrp_destroy_final(rd_kafka_cgrp_t *rkcg);
499
+ rd_kafka_cgrp_t *rd_kafka_cgrp_new(rd_kafka_t *rk,
500
+ rd_kafka_group_protocol_t group_protocol,
501
+ const rd_kafkap_str_t *group_id,
502
+ const rd_kafkap_str_t *client_id);
503
+ void rd_kafka_cgrp_serve(rd_kafka_cgrp_t *rkcg);
504
+
505
+ void rd_kafka_cgrp_op(rd_kafka_cgrp_t *rkcg,
506
+ rd_kafka_toppar_t *rktp,
507
+ rd_kafka_replyq_t replyq,
508
+ rd_kafka_op_type_t type,
509
+ rd_kafka_resp_err_t err);
510
+ void rd_kafka_cgrp_terminate0(rd_kafka_cgrp_t *rkcg, rd_kafka_op_t *rko);
511
+ void rd_kafka_cgrp_terminate(rd_kafka_cgrp_t *rkcg, rd_kafka_replyq_t replyq);
512
+
513
+
514
+ rd_kafka_resp_err_t rd_kafka_cgrp_topic_pattern_del(rd_kafka_cgrp_t *rkcg,
515
+ const char *pattern);
516
+ rd_kafka_resp_err_t rd_kafka_cgrp_topic_pattern_add(rd_kafka_cgrp_t *rkcg,
517
+ const char *pattern);
518
+
519
+ int rd_kafka_cgrp_topic_check(rd_kafka_cgrp_t *rkcg, const char *topic);
520
+
521
+ void rd_kafka_cgrp_set_member_id(rd_kafka_cgrp_t *rkcg, const char *member_id);
522
+
523
+ void rd_kafka_cgrp_set_join_state(rd_kafka_cgrp_t *rkcg, int join_state);
524
+
525
+ rd_kafka_broker_t *rd_kafka_cgrp_get_coord(rd_kafka_cgrp_t *rkcg);
526
+ void rd_kafka_cgrp_coord_query(rd_kafka_cgrp_t *rkcg, const char *reason);
527
+ void rd_kafka_cgrp_coord_dead(rd_kafka_cgrp_t *rkcg,
528
+ rd_kafka_resp_err_t err,
529
+ const char *reason);
530
+ void rd_kafka_cgrp_metadata_update_check(rd_kafka_cgrp_t *rkcg,
531
+ rd_bool_t do_join);
532
+
533
+ /**
534
+ * TODO KIP-932: Think of correct placing for this function.
535
+ */
536
+ void rd_kafka_share_topic_err_propagate(rd_kafka_cgrp_t *rkcg);
537
+
538
+ #define rd_kafka_cgrp_get(rk) ((rk)->rk_cgrp)
539
+
540
+ #define rd_kafka_cgrp_same_subscription_version(rk_cgrp, \
541
+ cgrp_subscription_version) \
542
+ ((rk_cgrp) && \
543
+ (cgrp_subscription_version == -1 || \
544
+ rd_atomic32_get(&(rk_cgrp)->rkcg_subscription_version) == \
545
+ cgrp_subscription_version))
546
+
547
+ void rd_kafka_cgrp_partition_add(rd_kafka_cgrp_t *rkcg,
548
+ rd_kafka_toppar_t *rktp);
549
+
550
+ void rd_kafka_cgrp_partition_del(rd_kafka_cgrp_t *rkcg,
551
+ rd_kafka_toppar_t *rktp);
552
+
553
+ void rd_kafka_cgrp_assigned_offsets_commit(
554
+ rd_kafka_cgrp_t *rkcg,
555
+ const rd_kafka_topic_partition_list_t *offsets,
556
+ rd_bool_t set_offsets,
557
+ const char *reason);
558
+
559
+ void rd_kafka_cgrp_assignment_done(rd_kafka_cgrp_t *rkcg);
560
+
561
+ rd_bool_t rd_kafka_cgrp_assignment_is_lost(rd_kafka_cgrp_t *rkcg);
562
+
563
+
564
+ struct rd_kafka_consumer_group_metadata_s {
565
+ char *group_id;
566
+ int32_t generation_id;
567
+ char *member_id;
568
+ char *group_instance_id; /**< Optional (NULL) */
569
+ };
570
+
571
+ rd_kafka_consumer_group_metadata_t *rd_kafka_consumer_group_metadata_dup(
572
+ const rd_kafka_consumer_group_metadata_t *cgmetadata);
573
+
574
+ static RD_UNUSED const char *
575
+ rd_kafka_rebalance_protocol2str(rd_kafka_rebalance_protocol_t protocol) {
576
+ switch (protocol) {
577
+ case RD_KAFKA_REBALANCE_PROTOCOL_EAGER:
578
+ return "EAGER";
579
+ case RD_KAFKA_REBALANCE_PROTOCOL_COOPERATIVE:
580
+ return "COOPERATIVE";
581
+ default:
582
+ return "NONE";
583
+ }
584
+ }
585
+
586
+ void rd_kafka_cgrp_consumer_expedite_next_heartbeat(rd_kafka_cgrp_t *rkcg,
587
+ const char *reason);
588
+
589
+ #endif /* _RDKAFKA_CGRP_H_ */