@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.
- package/CHANGELOG.md +457 -0
- package/LICENSE.kafkajs +31 -0
- package/LICENSE.node-rdkafka +25 -0
- package/LICENSE.txt +20 -0
- package/README.md +133 -0
- package/binding.gyp +184 -0
- package/build/Release/confluent-kafka-javascript.node +0 -0
- package/build/deps/librdkafka++.so.1 +0 -0
- package/build/deps/librdkafka.Makefile +6 -0
- package/build/deps/librdkafka.so.1 +0 -0
- package/build/deps/librdkafka.target.mk +55 -0
- package/deps/librdkafka/.clang-format +136 -0
- package/deps/librdkafka/.clang-format-cpp +103 -0
- package/deps/librdkafka/.dir-locals.el +10 -0
- package/deps/librdkafka/.formatignore +35 -0
- package/deps/librdkafka/.gdbmacros +19 -0
- package/deps/librdkafka/CHANGELOG.md +2477 -0
- package/deps/librdkafka/CMakeLists.txt +291 -0
- package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
- package/deps/librdkafka/CONFIGURATION.md +212 -0
- package/deps/librdkafka/CONTRIBUTING.md +431 -0
- package/deps/librdkafka/Doxyfile +2375 -0
- package/deps/librdkafka/INTRODUCTION.md +2752 -0
- package/deps/librdkafka/LICENSE +26 -0
- package/deps/librdkafka/LICENSE.cjson +22 -0
- package/deps/librdkafka/LICENSE.crc32c +28 -0
- package/deps/librdkafka/LICENSE.fnv1a +18 -0
- package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
- package/deps/librdkafka/LICENSE.lz4 +26 -0
- package/deps/librdkafka/LICENSE.murmur2 +25 -0
- package/deps/librdkafka/LICENSE.nanopb +22 -0
- package/deps/librdkafka/LICENSE.opentelemetry +203 -0
- package/deps/librdkafka/LICENSE.pycrc +23 -0
- package/deps/librdkafka/LICENSE.queue +31 -0
- package/deps/librdkafka/LICENSE.regexp +5 -0
- package/deps/librdkafka/LICENSE.snappy +36 -0
- package/deps/librdkafka/LICENSE.tinycthread +26 -0
- package/deps/librdkafka/LICENSE.wingetopt +49 -0
- package/deps/librdkafka/LICENSES.txt +625 -0
- package/deps/librdkafka/Makefile +125 -0
- package/deps/librdkafka/README.md +201 -0
- package/deps/librdkafka/README.win32 +26 -0
- package/deps/librdkafka/STATISTICS.md +624 -0
- package/deps/librdkafka/configure +214 -0
- package/deps/librdkafka/configure.self +341 -0
- package/deps/librdkafka/dev-conf.sh +123 -0
- package/deps/librdkafka/lds-gen.py +73 -0
- package/deps/librdkafka/mainpage.doxy +40 -0
- package/deps/librdkafka/mklove/Makefile.base +329 -0
- package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
- package/deps/librdkafka/mklove/modules/configure.base +2484 -0
- package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
- package/deps/librdkafka/mklove/modules/configure.cc +186 -0
- package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
- package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
- package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
- package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
- package/deps/librdkafka/mklove/modules/configure.host +132 -0
- package/deps/librdkafka/mklove/modules/configure.lib +49 -0
- package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
- package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
- package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
- package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
- package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
- package/deps/librdkafka/mklove/modules/configure.pic +16 -0
- package/deps/librdkafka/mklove/modules/configure.socket +20 -0
- package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
- package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
- package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
- package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
- package/deps/librdkafka/service.yml +182 -0
- package/deps/librdkafka/src/CMakeLists.txt +379 -0
- package/deps/librdkafka/src/Makefile +105 -0
- package/deps/librdkafka/src/README.lz4.md +30 -0
- package/deps/librdkafka/src/cJSON.c +3191 -0
- package/deps/librdkafka/src/cJSON.h +306 -0
- package/deps/librdkafka/src/crc32c.c +430 -0
- package/deps/librdkafka/src/crc32c.h +38 -0
- package/deps/librdkafka/src/generate_proto.sh +66 -0
- package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
- package/deps/librdkafka/src/lz4.c +2727 -0
- package/deps/librdkafka/src/lz4.h +842 -0
- package/deps/librdkafka/src/lz4frame.c +2078 -0
- package/deps/librdkafka/src/lz4frame.h +692 -0
- package/deps/librdkafka/src/lz4frame_static.h +47 -0
- package/deps/librdkafka/src/lz4hc.c +1631 -0
- package/deps/librdkafka/src/lz4hc.h +413 -0
- package/deps/librdkafka/src/nanopb/pb.h +917 -0
- package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
- package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
- package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
- package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
- package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
- package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
- package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
- package/deps/librdkafka/src/queue.h +850 -0
- package/deps/librdkafka/src/rd.h +592 -0
- package/deps/librdkafka/src/rdaddr.c +255 -0
- package/deps/librdkafka/src/rdaddr.h +202 -0
- package/deps/librdkafka/src/rdatomic.h +262 -0
- package/deps/librdkafka/src/rdavg.h +260 -0
- package/deps/librdkafka/src/rdavl.c +210 -0
- package/deps/librdkafka/src/rdavl.h +250 -0
- package/deps/librdkafka/src/rdbase64.c +200 -0
- package/deps/librdkafka/src/rdbase64.h +43 -0
- package/deps/librdkafka/src/rdbuf.c +1884 -0
- package/deps/librdkafka/src/rdbuf.h +375 -0
- package/deps/librdkafka/src/rdcrc32.c +114 -0
- package/deps/librdkafka/src/rdcrc32.h +170 -0
- package/deps/librdkafka/src/rddl.c +179 -0
- package/deps/librdkafka/src/rddl.h +43 -0
- package/deps/librdkafka/src/rdendian.h +175 -0
- package/deps/librdkafka/src/rdfloat.h +67 -0
- package/deps/librdkafka/src/rdfnv1a.c +113 -0
- package/deps/librdkafka/src/rdfnv1a.h +35 -0
- package/deps/librdkafka/src/rdgz.c +120 -0
- package/deps/librdkafka/src/rdgz.h +46 -0
- package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
- package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
- package/deps/librdkafka/src/rdhttp.c +831 -0
- package/deps/librdkafka/src/rdhttp.h +101 -0
- package/deps/librdkafka/src/rdinterval.h +177 -0
- package/deps/librdkafka/src/rdkafka.c +7287 -0
- package/deps/librdkafka/src/rdkafka.h +11795 -0
- package/deps/librdkafka/src/rdkafka_admin.c +10165 -0
- package/deps/librdkafka/src/rdkafka_admin.h +658 -0
- package/deps/librdkafka/src/rdkafka_assignment.c +1282 -0
- package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
- package/deps/librdkafka/src/rdkafka_assignor.c +1800 -0
- package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
- package/deps/librdkafka/src/rdkafka_aux.c +409 -0
- package/deps/librdkafka/src/rdkafka_aux.h +174 -0
- package/deps/librdkafka/src/rdkafka_background.c +222 -0
- package/deps/librdkafka/src/rdkafka_broker.c +6736 -0
- package/deps/librdkafka/src/rdkafka_broker.h +851 -0
- package/deps/librdkafka/src/rdkafka_buf.c +543 -0
- package/deps/librdkafka/src/rdkafka_buf.h +1525 -0
- package/deps/librdkafka/src/rdkafka_cert.c +576 -0
- package/deps/librdkafka/src/rdkafka_cert.h +62 -0
- package/deps/librdkafka/src/rdkafka_cgrp.c +8310 -0
- package/deps/librdkafka/src/rdkafka_cgrp.h +589 -0
- package/deps/librdkafka/src/rdkafka_conf.c +5177 -0
- package/deps/librdkafka/src/rdkafka_conf.h +746 -0
- package/deps/librdkafka/src/rdkafka_confval.h +97 -0
- package/deps/librdkafka/src/rdkafka_coord.c +623 -0
- package/deps/librdkafka/src/rdkafka_coord.h +132 -0
- package/deps/librdkafka/src/rdkafka_error.c +228 -0
- package/deps/librdkafka/src/rdkafka_error.h +80 -0
- package/deps/librdkafka/src/rdkafka_event.c +502 -0
- package/deps/librdkafka/src/rdkafka_event.h +126 -0
- package/deps/librdkafka/src/rdkafka_feature.c +898 -0
- package/deps/librdkafka/src/rdkafka_feature.h +104 -0
- package/deps/librdkafka/src/rdkafka_fetcher.c +3820 -0
- package/deps/librdkafka/src/rdkafka_fetcher.h +62 -0
- package/deps/librdkafka/src/rdkafka_header.c +220 -0
- package/deps/librdkafka/src/rdkafka_header.h +76 -0
- package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
- package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
- package/deps/librdkafka/src/rdkafka_int.h +1505 -0
- package/deps/librdkafka/src/rdkafka_interceptor.c +842 -0
- package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
- package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
- package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
- package/deps/librdkafka/src/rdkafka_metadata.c +2347 -0
- package/deps/librdkafka/src/rdkafka_metadata.h +350 -0
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
- package/deps/librdkafka/src/rdkafka_mock.c +4514 -0
- package/deps/librdkafka/src/rdkafka_mock.h +867 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1877 -0
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +5255 -0
- package/deps/librdkafka/src/rdkafka_mock_int.h +1005 -0
- package/deps/librdkafka/src/rdkafka_mock_sharegrp.c +1207 -0
- package/deps/librdkafka/src/rdkafka_msg.c +2619 -0
- package/deps/librdkafka/src/rdkafka_msg.h +629 -0
- package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
- package/deps/librdkafka/src/rdkafka_msgset.h +105 -0
- package/deps/librdkafka/src/rdkafka_msgset_reader.c +2099 -0
- package/deps/librdkafka/src/rdkafka_msgset_writer.c +1474 -0
- package/deps/librdkafka/src/rdkafka_offset.c +1565 -0
- package/deps/librdkafka/src/rdkafka_offset.h +150 -0
- package/deps/librdkafka/src/rdkafka_op.c +1219 -0
- package/deps/librdkafka/src/rdkafka_op.h +1065 -0
- package/deps/librdkafka/src/rdkafka_partition.c +5109 -0
- package/deps/librdkafka/src/rdkafka_partition.h +1215 -0
- package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
- package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
- package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
- package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
- package/deps/librdkafka/src/rdkafka_proto.h +739 -0
- package/deps/librdkafka/src/rdkafka_protocol.h +131 -0
- package/deps/librdkafka/src/rdkafka_queue.c +1351 -0
- package/deps/librdkafka/src/rdkafka_queue.h +1235 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
- package/deps/librdkafka/src/rdkafka_request.c +7298 -0
- package/deps/librdkafka/src/rdkafka_request.h +761 -0
- package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
- package/deps/librdkafka/src/rdkafka_sasl.c +589 -0
- package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
- package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
- package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1833 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1827 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +52 -0
- package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
- package/deps/librdkafka/src/rdkafka_sasl_scram.c +858 -0
- package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
- package/deps/librdkafka/src/rdkafka_share_acknowledgement.c +1445 -0
- package/deps/librdkafka/src/rdkafka_share_acknowledgement.h +373 -0
- package/deps/librdkafka/src/rdkafka_ssl.c +2235 -0
- package/deps/librdkafka/src/rdkafka_ssl.h +86 -0
- package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4785 -0
- package/deps/librdkafka/src/rdkafka_subscription.c +411 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +761 -0
- package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1307 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.c +1309 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.h +459 -0
- package/deps/librdkafka/src/rdkafka_timer.c +407 -0
- package/deps/librdkafka/src/rdkafka_timer.h +117 -0
- package/deps/librdkafka/src/rdkafka_topic.c +2382 -0
- package/deps/librdkafka/src/rdkafka_topic.h +369 -0
- package/deps/librdkafka/src/rdkafka_transport.c +1309 -0
- package/deps/librdkafka/src/rdkafka_transport.h +99 -0
- package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.c +3256 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
- package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
- package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
- package/deps/librdkafka/src/rdlist.c +593 -0
- package/deps/librdkafka/src/rdlist.h +444 -0
- package/deps/librdkafka/src/rdlog.c +89 -0
- package/deps/librdkafka/src/rdlog.h +41 -0
- package/deps/librdkafka/src/rdmap.c +508 -0
- package/deps/librdkafka/src/rdmap.h +492 -0
- package/deps/librdkafka/src/rdmurmur2.c +167 -0
- package/deps/librdkafka/src/rdmurmur2.h +35 -0
- package/deps/librdkafka/src/rdports.c +61 -0
- package/deps/librdkafka/src/rdports.h +38 -0
- package/deps/librdkafka/src/rdposix.h +250 -0
- package/deps/librdkafka/src/rdrand.c +151 -0
- package/deps/librdkafka/src/rdrand.h +72 -0
- package/deps/librdkafka/src/rdregex.c +156 -0
- package/deps/librdkafka/src/rdregex.h +43 -0
- package/deps/librdkafka/src/rdsignal.h +57 -0
- package/deps/librdkafka/src/rdstring.c +645 -0
- package/deps/librdkafka/src/rdstring.h +98 -0
- package/deps/librdkafka/src/rdsysqueue.h +404 -0
- package/deps/librdkafka/src/rdtime.h +356 -0
- package/deps/librdkafka/src/rdtypes.h +86 -0
- package/deps/librdkafka/src/rdunittest.c +564 -0
- package/deps/librdkafka/src/rdunittest.h +232 -0
- package/deps/librdkafka/src/rdunittest_acknowledge.c +1177 -0
- package/deps/librdkafka/src/rdunittest_fetcher.c +1211 -0
- package/deps/librdkafka/src/rdunittest_msgset_errors.c +1521 -0
- package/deps/librdkafka/src/rdvarint.c +134 -0
- package/deps/librdkafka/src/rdvarint.h +165 -0
- package/deps/librdkafka/src/rdwin32.h +382 -0
- package/deps/librdkafka/src/rdxxhash.c +1030 -0
- package/deps/librdkafka/src/rdxxhash.h +328 -0
- package/deps/librdkafka/src/regexp.c +1352 -0
- package/deps/librdkafka/src/regexp.h +41 -0
- package/deps/librdkafka/src/snappy.c +1866 -0
- package/deps/librdkafka/src/snappy.h +62 -0
- package/deps/librdkafka/src/snappy_compat.h +138 -0
- package/deps/librdkafka/src/statistics_schema.json +444 -0
- package/deps/librdkafka/src/tinycthread.c +932 -0
- package/deps/librdkafka/src/tinycthread.h +503 -0
- package/deps/librdkafka/src/tinycthread_extra.c +210 -0
- package/deps/librdkafka/src/tinycthread_extra.h +218 -0
- package/deps/librdkafka/src/win32_config.h +58 -0
- package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
- package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
- package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
- package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
- package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
- package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
- package/deps/librdkafka/src-cpp/Makefile +55 -0
- package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
- package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
- package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
- package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
- package/deps/librdkafka/src-cpp/README.md +16 -0
- package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
- package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
- package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp.h +3797 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
- package/deps/librdkafka/tests/0000-unittests.c +72 -0
- package/deps/librdkafka/tests/0001-multiobj.c +102 -0
- package/deps/librdkafka/tests/0002-unkpart.c +244 -0
- package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
- package/deps/librdkafka/tests/0004-conf.c +934 -0
- package/deps/librdkafka/tests/0005-order.c +133 -0
- package/deps/librdkafka/tests/0006-symbols.c +163 -0
- package/deps/librdkafka/tests/0007-autotopic.c +136 -0
- package/deps/librdkafka/tests/0008-reqacks.c +179 -0
- package/deps/librdkafka/tests/0009-mock_cluster.c +272 -0
- package/deps/librdkafka/tests/0011-produce_batch.c +753 -0
- package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
- package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
- package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
- package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
- package/deps/librdkafka/tests/0016-client_swname.c +181 -0
- package/deps/librdkafka/tests/0017-compression.c +140 -0
- package/deps/librdkafka/tests/0018-cgrp_term.c +444 -0
- package/deps/librdkafka/tests/0019-list_groups.c +289 -0
- package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
- package/deps/librdkafka/tests/0021-rkt_destroy.c +72 -0
- package/deps/librdkafka/tests/0022-consume_batch.c +331 -0
- package/deps/librdkafka/tests/0025-timers.c +147 -0
- package/deps/librdkafka/tests/0026-consume_pause.c +547 -0
- package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
- package/deps/librdkafka/tests/0029-assign_offset.c +202 -0
- package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
- package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
- package/deps/librdkafka/tests/0033-regex_subscribe.c +536 -0
- package/deps/librdkafka/tests/0034-offset_reset.c +398 -0
- package/deps/librdkafka/tests/0035-api_version.c +73 -0
- package/deps/librdkafka/tests/0036-partial_fetch.c +87 -0
- package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
- package/deps/librdkafka/tests/0038-performance.c +121 -0
- package/deps/librdkafka/tests/0039-event.c +284 -0
- package/deps/librdkafka/tests/0040-io_event.c +257 -0
- package/deps/librdkafka/tests/0041-fetch_max_bytes.c +97 -0
- package/deps/librdkafka/tests/0042-many_topics.c +252 -0
- package/deps/librdkafka/tests/0043-no_connection.c +77 -0
- package/deps/librdkafka/tests/0044-partition_cnt.c +94 -0
- package/deps/librdkafka/tests/0045-subscribe_update.c +1010 -0
- package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
- package/deps/librdkafka/tests/0047-partial_buf_tmout.c +98 -0
- package/deps/librdkafka/tests/0048-partitioner.c +283 -0
- package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
- package/deps/librdkafka/tests/0050-subscribe_adds.c +145 -0
- package/deps/librdkafka/tests/0051-assign_adds.c +126 -0
- package/deps/librdkafka/tests/0052-msg_timestamps.c +238 -0
- package/deps/librdkafka/tests/0053-stats_cb.cpp +527 -0
- package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
- package/deps/librdkafka/tests/0055-producer_latency.c +539 -0
- package/deps/librdkafka/tests/0056-balanced_group_mt.c +315 -0
- package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
- package/deps/librdkafka/tests/0058-log.cpp +123 -0
- package/deps/librdkafka/tests/0059-bsearch.cpp +241 -0
- package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
- package/deps/librdkafka/tests/0061-consumer_lag.cpp +295 -0
- package/deps/librdkafka/tests/0062-stats_event.c +126 -0
- package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
- package/deps/librdkafka/tests/0064-interceptors.c +529 -0
- package/deps/librdkafka/tests/0065-yield.cpp +140 -0
- package/deps/librdkafka/tests/0066-plugins.cpp +143 -0
- package/deps/librdkafka/tests/0067-empty_topic.cpp +151 -0
- package/deps/librdkafka/tests/0068-produce_timeout.c +136 -0
- package/deps/librdkafka/tests/0069-consumer_add_parts.c +119 -0
- package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
- package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
- package/deps/librdkafka/tests/0073-headers.c +381 -0
- package/deps/librdkafka/tests/0074-producev.c +87 -0
- package/deps/librdkafka/tests/0075-retry.c +290 -0
- package/deps/librdkafka/tests/0076-produce_retry.c +452 -0
- package/deps/librdkafka/tests/0077-compaction.c +366 -0
- package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
- package/deps/librdkafka/tests/0079-fork.c +93 -0
- package/deps/librdkafka/tests/0080-admin_ut.c +3095 -0
- package/deps/librdkafka/tests/0081-admin.c +5633 -0
- package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +137 -0
- package/deps/librdkafka/tests/0083-cb_event.c +233 -0
- package/deps/librdkafka/tests/0084-destroy_flags.c +208 -0
- package/deps/librdkafka/tests/0085-headers.cpp +392 -0
- package/deps/librdkafka/tests/0086-purge.c +368 -0
- package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
- package/deps/librdkafka/tests/0089-max_poll_interval.c +511 -0
- package/deps/librdkafka/tests/0090-idempotence.c +171 -0
- package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +295 -0
- package/deps/librdkafka/tests/0092-mixed_msgver.c +103 -0
- package/deps/librdkafka/tests/0093-holb.c +200 -0
- package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +231 -0
- package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
- package/deps/librdkafka/tests/0097-ssl_verify.cpp +674 -0
- package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
- package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
- package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
- package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
- package/deps/librdkafka/tests/0102-static_group_rebalance.c +836 -0
- package/deps/librdkafka/tests/0103-transactions.c +1383 -0
- package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +625 -0
- package/deps/librdkafka/tests/0105-transactions_mock.c +3930 -0
- package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +318 -0
- package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
- package/deps/librdkafka/tests/0109-auto_create_topics.cpp +278 -0
- package/deps/librdkafka/tests/0110-batch_size.cpp +182 -0
- package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
- package/deps/librdkafka/tests/0112-assign_unknown_part.c +87 -0
- package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3473 -0
- package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
- package/deps/librdkafka/tests/0115-producer_auth.cpp +182 -0
- package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +216 -0
- package/deps/librdkafka/tests/0117-mock_errors.c +331 -0
- package/deps/librdkafka/tests/0118-commit_rebalance.c +154 -0
- package/deps/librdkafka/tests/0119-consumer_auth.cpp +167 -0
- package/deps/librdkafka/tests/0120-asymmetric_subscription.c +185 -0
- package/deps/librdkafka/tests/0121-clusterid.c +115 -0
- package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
- package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
- package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
- package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
- package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +1164 -0
- package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
- package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +217 -0
- package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +79 -0
- package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
- package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
- package/deps/librdkafka/tests/0132-strategy_ordering.c +179 -0
- package/deps/librdkafka/tests/0133-ssl_keys.c +150 -0
- package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
- package/deps/librdkafka/tests/0135-sasl_credentials.cpp +279 -0
- package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
- package/deps/librdkafka/tests/0137-barrier_batch_consume.c +752 -0
- package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
- package/deps/librdkafka/tests/0139-offset_validation_mock.c +950 -0
- package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
- package/deps/librdkafka/tests/0142-reauthentication.c +931 -0
- package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +552 -0
- package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
- package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
- package/deps/librdkafka/tests/0146-metadata_mock.c +505 -0
- package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +1210 -0
- package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +569 -0
- package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
- package/deps/librdkafka/tests/0150-telemetry_mock.c +651 -0
- package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
- package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
- package/deps/librdkafka/tests/0153-memberid.c +128 -0
- package/deps/librdkafka/tests/0155-share_group_heartbeat_mock.c +2695 -0
- package/deps/librdkafka/tests/0156-share_consumer_fetch_mock.c +1551 -0
- package/deps/librdkafka/tests/0157-share_consumer_ack_mock.c +1788 -0
- package/deps/librdkafka/tests/0158-share_consumer_transactions_mock.c +467 -0
- package/deps/librdkafka/tests/0170-share_consumer_subscription.c +2192 -0
- package/deps/librdkafka/tests/0171-share_consumer_consume.c +2150 -0
- package/deps/librdkafka/tests/0172-share_consumer_acknowledge.c +1919 -0
- package/deps/librdkafka/tests/0173-share_consumer_commit_async.c +2735 -0
- package/deps/librdkafka/tests/0174-share_consumer_concurrency.c +1434 -0
- package/deps/librdkafka/tests/0175-share_consumer_groups.c +574 -0
- package/deps/librdkafka/tests/0176-share_consumer_commit_sync.c +2986 -0
- package/deps/librdkafka/tests/0177-share_consumer_transactions.c +1815 -0
- package/deps/librdkafka/tests/0178-share_consumer_close.c +2102 -0
- package/deps/librdkafka/tests/0179-share_consumer_destroy.c +2482 -0
- package/deps/librdkafka/tests/0180-share_consumer_config.c +1677 -0
- package/deps/librdkafka/tests/0181-share_consumer_topic_delete.c +354 -0
- package/deps/librdkafka/tests/0182-share_consumer_error_handling_mock.c +3358 -0
- package/deps/librdkafka/tests/0183-share_consumer_leader_change_mock.c +1234 -0
- package/deps/librdkafka/tests/0184-share_consumer_topic_recreate.c +1356 -0
- package/deps/librdkafka/tests/0185-share_consumer_max_poll_interval.c +557 -0
- package/deps/librdkafka/tests/0186-share_consumer_fatal_error.c +360 -0
- package/deps/librdkafka/tests/0190-share_consumer_telemetry.c +387 -0
- package/deps/librdkafka/tests/1000-unktopic.c +164 -0
- package/deps/librdkafka/tests/8000-idle.cpp +60 -0
- package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
- package/deps/librdkafka/tests/CMakeLists.txt +193 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -0
- package/deps/librdkafka/tests/Makefile +182 -0
- package/deps/librdkafka/tests/README.md +514 -0
- package/deps/librdkafka/tests/autotest.sh +33 -0
- package/deps/librdkafka/tests/backtrace.gdb +30 -0
- package/deps/librdkafka/tests/broker_version_tests.py +315 -0
- package/deps/librdkafka/tests/buildbox.sh +17 -0
- package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
- package/deps/librdkafka/tests/cluster_testing.py +203 -0
- package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
- package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
- package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
- package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.intermediate.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +50 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +168 -0
- package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
- package/deps/librdkafka/tests/fuzzers/README.md +31 -0
- package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
- package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
- package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
- package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
- package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
- package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
- package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
- package/deps/librdkafka/tests/java/Makefile +13 -0
- package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
- package/deps/librdkafka/tests/java/README.md +14 -0
- package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
- package/deps/librdkafka/tests/java/run-class.sh +11 -0
- package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
- package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
- package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
- package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
- package/deps/librdkafka/tests/performance_plot.py +115 -0
- package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
- package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
- package/deps/librdkafka/tests/requirements.txt +2 -0
- package/deps/librdkafka/tests/run-all-tests.sh +81 -0
- package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-test-batches.py +157 -0
- package/deps/librdkafka/tests/run-test.sh +141 -0
- package/deps/librdkafka/tests/rusage.c +249 -0
- package/deps/librdkafka/tests/sasl_test.py +289 -0
- package/deps/librdkafka/tests/scenarios/README.md +6 -0
- package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
- package/deps/librdkafka/tests/scenarios/default.json +5 -0
- package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
- package/deps/librdkafka/tests/share_telemetry_verify/share-otel-collector-config.yaml +28 -0
- package/deps/librdkafka/tests/sockem.c +801 -0
- package/deps/librdkafka/tests/sockem.h +85 -0
- package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
- package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
- package/deps/librdkafka/tests/test.c +8376 -0
- package/deps/librdkafka/tests/test.conf.example +27 -0
- package/deps/librdkafka/tests/test.h +1150 -0
- package/deps/librdkafka/tests/testcpp.cpp +131 -0
- package/deps/librdkafka/tests/testcpp.h +388 -0
- package/deps/librdkafka/tests/testshared.h +416 -0
- package/deps/librdkafka/tests/tools/README.md +4 -0
- package/deps/librdkafka/tests/tools/stats/README.md +21 -0
- package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
- package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
- package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
- package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
- package/deps/librdkafka/tests/trivup/trivup-0.15.0.tar.gz +0 -0
- package/deps/librdkafka/tests/until-fail.sh +87 -0
- package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
- package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
- package/deps/librdkafka/vcpkg.json +23 -0
- package/deps/librdkafka/win32/README.md +5 -0
- package/deps/librdkafka/win32/build-package.bat +3 -0
- package/deps/librdkafka/win32/build.bat +19 -0
- package/deps/librdkafka/win32/common.vcxproj +84 -0
- package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
- package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
- package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
- package/deps/librdkafka/win32/librdkafka.sln +226 -0
- package/deps/librdkafka/win32/librdkafka.vcxproj +282 -0
- package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
- package/deps/librdkafka/win32/msbuild.ps1 +58 -0
- package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
- package/deps/librdkafka/win32/package-zip.ps1 +46 -0
- package/deps/librdkafka/win32/packages/repositories.config +4 -0
- package/deps/librdkafka/win32/push-package.bat +4 -0
- package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
- package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
- package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
- package/deps/librdkafka/win32/setup-msys2.ps1 +47 -0
- package/deps/librdkafka/win32/setup-vcpkg.ps1 +34 -0
- package/deps/librdkafka/win32/tests/test.conf.example +25 -0
- package/deps/librdkafka/win32/tests/tests.vcxproj +278 -0
- package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
- package/deps/librdkafka/win32/wingetopt.c +564 -0
- package/deps/librdkafka/win32/wingetopt.h +101 -0
- package/deps/librdkafka/win32/wintime.h +33 -0
- package/deps/librdkafka.gyp +83 -0
- package/deps/windows-install.py +80 -0
- package/index.d.ts +3 -0
- package/lib/admin.js +732 -0
- package/lib/client.js +679 -0
- package/lib/error.js +501 -0
- package/lib/index.js +8 -0
- package/lib/kafka-consumer-stream.js +399 -0
- package/lib/kafka-consumer.js +798 -0
- package/lib/kafkajs/_admin.js +1052 -0
- package/lib/kafkajs/_common.js +887 -0
- package/lib/kafkajs/_consumer.js +2156 -0
- package/lib/kafkajs/_consumer_cache.js +310 -0
- package/lib/kafkajs/_error.js +298 -0
- package/lib/kafkajs/_kafka.js +125 -0
- package/lib/kafkajs/_linked-list.js +220 -0
- package/lib/kafkajs/_producer.js +863 -0
- package/lib/kafkajs/index.js +5 -0
- package/lib/producer/high-level-producer.js +400 -0
- package/lib/producer-stream.js +337 -0
- package/lib/producer.js +405 -0
- package/lib/rdkafka.js +44 -0
- package/lib/tools/ref-counter.js +53 -0
- package/lib/topic-partition.js +91 -0
- package/lib/topic.js +43 -0
- package/lib/util.js +55 -0
- package/librdkafka.js +12 -0
- package/package.json +85 -0
- package/shim/source_location +54 -0
- package/src/admin.cc +1597 -0
- package/src/admin.h +112 -0
- package/src/binding.cc +76 -0
- package/src/binding.h +25 -0
- package/src/callbacks.cc +676 -0
- package/src/callbacks.h +302 -0
- package/src/common.cc +1628 -0
- package/src/common.h +192 -0
- package/src/config.cc +219 -0
- package/src/config.h +61 -0
- package/src/connection.cc +703 -0
- package/src/connection.h +117 -0
- package/src/errors.cc +119 -0
- package/src/errors.h +60 -0
- package/src/kafka-consumer.cc +1539 -0
- package/src/kafka-consumer.h +147 -0
- package/src/producer.cc +917 -0
- package/src/producer.h +124 -0
- package/src/topic.cc +173 -0
- package/src/topic.h +54 -0
- package/src/workers.cc +1714 -0
- package/src/workers.h +690 -0
- package/types/config.d.ts +1269 -0
- package/types/errors.d.ts +373 -0
- package/types/kafkajs.d.ts +568 -0
- package/types/rdkafka.d.ts +571 -0
- package/util/configure.js +32 -0
- package/util/generate-docs.sh +18 -0
- package/util/get-env.js +6 -0
- package/util/test-compile.js +11 -0
- package/util/test-producer-delivery.js +100 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - The Apache Kafka C/C++ library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2016-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 "rdvarint.h"
|
|
31
|
+
#include "rdunittest.h"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
static int do_test_rd_uvarint_enc_i64(const char *file,
|
|
35
|
+
int line,
|
|
36
|
+
int64_t num,
|
|
37
|
+
const char *exp,
|
|
38
|
+
size_t exp_size) {
|
|
39
|
+
char buf[16] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
|
40
|
+
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
|
|
41
|
+
size_t sz = rd_uvarint_enc_i64(buf, sizeof(buf), num);
|
|
42
|
+
size_t r;
|
|
43
|
+
int ir;
|
|
44
|
+
rd_buf_t b;
|
|
45
|
+
rd_slice_t slice, bad_slice;
|
|
46
|
+
int64_t ret_num;
|
|
47
|
+
|
|
48
|
+
if (sz != exp_size || memcmp(buf, exp, exp_size))
|
|
49
|
+
RD_UT_FAIL("i64 encode of %" PRId64
|
|
50
|
+
": "
|
|
51
|
+
"expected size %" PRIusz " (got %" PRIusz ")\n",
|
|
52
|
+
num, exp_size, sz);
|
|
53
|
+
|
|
54
|
+
/* Verify with standard decoder */
|
|
55
|
+
r = rd_varint_dec_i64(buf, sz, &ret_num);
|
|
56
|
+
RD_UT_ASSERT(!RD_UVARINT_DEC_FAILED(r),
|
|
57
|
+
"varint decode failed: %" PRIusz, r);
|
|
58
|
+
RD_UT_ASSERT(ret_num == num,
|
|
59
|
+
"varint decode returned wrong number: "
|
|
60
|
+
"%" PRId64 " != %" PRId64,
|
|
61
|
+
ret_num, num);
|
|
62
|
+
|
|
63
|
+
/* Verify with slice decoder */
|
|
64
|
+
rd_buf_init(&b, 1, 0);
|
|
65
|
+
rd_buf_push(&b, buf, sizeof(buf), NULL); /* including trailing 0xff
|
|
66
|
+
* garbage which should be
|
|
67
|
+
* ignored by decoder */
|
|
68
|
+
rd_slice_init_full(&slice, &b);
|
|
69
|
+
|
|
70
|
+
/* Should fail for incomplete reads */
|
|
71
|
+
ir = rd_slice_narrow_copy(&slice, &bad_slice, sz - 1);
|
|
72
|
+
RD_UT_ASSERT(ir, "narrow_copy failed");
|
|
73
|
+
ret_num = -1;
|
|
74
|
+
r = rd_slice_read_varint(&bad_slice, &ret_num);
|
|
75
|
+
RD_UT_ASSERT(RD_UVARINT_DEC_FAILED(r),
|
|
76
|
+
"varint decode failed should have failed, "
|
|
77
|
+
"returned %" PRIusz,
|
|
78
|
+
r);
|
|
79
|
+
r = rd_slice_offset(&bad_slice);
|
|
80
|
+
RD_UT_ASSERT(r == 0,
|
|
81
|
+
"expected slice position to not change, but got %" PRIusz,
|
|
82
|
+
r);
|
|
83
|
+
|
|
84
|
+
/* Verify proper slice */
|
|
85
|
+
ret_num = -1;
|
|
86
|
+
r = rd_slice_read_varint(&slice, &ret_num);
|
|
87
|
+
RD_UT_ASSERT(!RD_UVARINT_DEC_FAILED(r),
|
|
88
|
+
"varint decode failed: %" PRIusz, r);
|
|
89
|
+
RD_UT_ASSERT(ret_num == num,
|
|
90
|
+
"varint decode returned wrong number: "
|
|
91
|
+
"%" PRId64 " != %" PRId64,
|
|
92
|
+
ret_num, num);
|
|
93
|
+
RD_UT_ASSERT(r == sz,
|
|
94
|
+
"expected varint decoder to read %" PRIusz
|
|
95
|
+
" bytes, "
|
|
96
|
+
"not %" PRIusz,
|
|
97
|
+
sz, r);
|
|
98
|
+
r = rd_slice_offset(&slice);
|
|
99
|
+
RD_UT_ASSERT(r == sz,
|
|
100
|
+
"expected slice position to change to %" PRIusz
|
|
101
|
+
", but got %" PRIusz,
|
|
102
|
+
sz, r);
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
rd_buf_destroy(&b);
|
|
106
|
+
|
|
107
|
+
RD_UT_PASS();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
int unittest_rdvarint(void) {
|
|
112
|
+
int fails = 0;
|
|
113
|
+
|
|
114
|
+
fails += do_test_rd_uvarint_enc_i64(__FILE__, __LINE__, 0,
|
|
115
|
+
(const char[]) {0}, 1);
|
|
116
|
+
fails += do_test_rd_uvarint_enc_i64(__FILE__, __LINE__, 1,
|
|
117
|
+
(const char[]) {0x2}, 1);
|
|
118
|
+
fails += do_test_rd_uvarint_enc_i64(__FILE__, __LINE__, -1,
|
|
119
|
+
(const char[]) {0x1}, 1);
|
|
120
|
+
fails += do_test_rd_uvarint_enc_i64(__FILE__, __LINE__, 23,
|
|
121
|
+
(const char[]) {0x2e}, 1);
|
|
122
|
+
fails += do_test_rd_uvarint_enc_i64(__FILE__, __LINE__, -23,
|
|
123
|
+
(const char[]) {0x2d}, 1);
|
|
124
|
+
fails += do_test_rd_uvarint_enc_i64(__FILE__, __LINE__, 253,
|
|
125
|
+
(const char[]) {0xfa, 3}, 2);
|
|
126
|
+
fails += do_test_rd_uvarint_enc_i64(
|
|
127
|
+
__FILE__, __LINE__, 1234567890101112,
|
|
128
|
+
(const char[]) {0xf0, 0x8d, 0xd3, 0xc8, 0xa7, 0xb5, 0xb1, 0x04}, 8);
|
|
129
|
+
fails += do_test_rd_uvarint_enc_i64(
|
|
130
|
+
__FILE__, __LINE__, -1234567890101112,
|
|
131
|
+
(const char[]) {0xef, 0x8d, 0xd3, 0xc8, 0xa7, 0xb5, 0xb1, 0x04}, 8);
|
|
132
|
+
|
|
133
|
+
return fails;
|
|
134
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - The Apache Kafka C/C++ library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2016-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
|
+
#ifndef _RDVARINT_H
|
|
31
|
+
#define _RDVARINT_H
|
|
32
|
+
|
|
33
|
+
#include "rd.h"
|
|
34
|
+
#include "rdbuf.h"
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @name signed varint zig-zag encoder/decoder
|
|
38
|
+
* @{
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @brief unsigned-varint encodes unsigned integer \p num into buffer
|
|
44
|
+
* at \p dst of size \p dstsize.
|
|
45
|
+
* @returns the number of bytes written to \p dst, or 0 if not enough space.
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
static RD_INLINE RD_UNUSED size_t rd_uvarint_enc_u64(char *dst,
|
|
49
|
+
size_t dstsize,
|
|
50
|
+
uint64_t num) {
|
|
51
|
+
size_t of = 0;
|
|
52
|
+
|
|
53
|
+
do {
|
|
54
|
+
if (unlikely(of >= dstsize))
|
|
55
|
+
return 0; /* Not enough space */
|
|
56
|
+
|
|
57
|
+
dst[of++] = (num & 0x7f) | (num > 0x7f ? 0x80 : 0);
|
|
58
|
+
num >>= 7;
|
|
59
|
+
} while (num);
|
|
60
|
+
|
|
61
|
+
return of;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @brief encodes a signed integer using zig-zag encoding.
|
|
66
|
+
* @sa rd_uvarint_enc_u64
|
|
67
|
+
*/
|
|
68
|
+
static RD_INLINE RD_UNUSED size_t rd_uvarint_enc_i64(char *dst,
|
|
69
|
+
size_t dstsize,
|
|
70
|
+
int64_t num) {
|
|
71
|
+
return rd_uvarint_enc_u64(dst, dstsize, (num << 1) ^ (num >> 63));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
static RD_INLINE RD_UNUSED size_t rd_uvarint_enc_i32(char *dst,
|
|
76
|
+
size_t dstsize,
|
|
77
|
+
int32_t num) {
|
|
78
|
+
return rd_uvarint_enc_i64(dst, dstsize, num);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @brief Use on return value from rd_uvarint_dec() to check if
|
|
85
|
+
* decoded varint fit the size_t.
|
|
86
|
+
*
|
|
87
|
+
* @returns 1 on overflow, else 0.
|
|
88
|
+
*/
|
|
89
|
+
#define RD_UVARINT_OVERFLOW(DEC_RETVAL) (DEC_RETVAL > SIZE_MAX)
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @returns 1 if there were not enough bytes to decode the varint, else 0.
|
|
93
|
+
*/
|
|
94
|
+
#define RD_UVARINT_UNDERFLOW(DEC_RETVAL) (DEC_RETVAL == 0)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @param DEC_RETVAL the return value from \c rd_uvarint_dec()
|
|
99
|
+
* @returns 1 if varint decoding failed, else 0.
|
|
100
|
+
* @warning \p DEC_RETVAL will be evaluated twice.
|
|
101
|
+
*/
|
|
102
|
+
#define RD_UVARINT_DEC_FAILED(DEC_RETVAL) \
|
|
103
|
+
(RD_UVARINT_UNDERFLOW(DEC_RETVAL) || RD_UVARINT_OVERFLOW(DEC_RETVAL))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @brief Decodes the unsigned-varint in buffer \p src of size \p srcsize
|
|
108
|
+
* and stores the decoded unsigned integer in \p nump.
|
|
109
|
+
*
|
|
110
|
+
* @remark Use RD_UVARINT_OVERFLOW(returnvalue) to check if the varint
|
|
111
|
+
* could not fit \p nump, and RD_UVARINT_UNDERFLOW(returnvalue) to
|
|
112
|
+
* check if there were not enough bytes available in \p src to
|
|
113
|
+
* decode the full varint.
|
|
114
|
+
*
|
|
115
|
+
* @returns the number of bytes read from \p src.
|
|
116
|
+
*/
|
|
117
|
+
static RD_INLINE RD_UNUSED size_t rd_uvarint_dec(const char *src,
|
|
118
|
+
size_t srcsize,
|
|
119
|
+
uint64_t *nump) {
|
|
120
|
+
size_t of = 0;
|
|
121
|
+
uint64_t num = 0;
|
|
122
|
+
int shift = 0;
|
|
123
|
+
|
|
124
|
+
do {
|
|
125
|
+
if (unlikely(srcsize-- == 0))
|
|
126
|
+
return 0; /* Underflow */
|
|
127
|
+
num |= (uint64_t)(src[(int)of] & 0x7f) << shift;
|
|
128
|
+
shift += 7;
|
|
129
|
+
} while (src[(int)of++] & 0x80);
|
|
130
|
+
|
|
131
|
+
*nump = num;
|
|
132
|
+
return of;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
static RD_INLINE RD_UNUSED size_t rd_varint_dec_i64(const char *src,
|
|
136
|
+
size_t srcsize,
|
|
137
|
+
int64_t *nump) {
|
|
138
|
+
uint64_t n;
|
|
139
|
+
size_t r;
|
|
140
|
+
|
|
141
|
+
r = rd_uvarint_dec(src, srcsize, &n);
|
|
142
|
+
if (likely(!RD_UVARINT_DEC_FAILED(r)))
|
|
143
|
+
*nump = (int64_t)(n >> 1) ^ -(int64_t)(n & 1);
|
|
144
|
+
|
|
145
|
+
return r;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @returns the maximum encoded size for a type
|
|
151
|
+
*/
|
|
152
|
+
#define RD_UVARINT_ENC_SIZEOF(TYPE) (sizeof(TYPE) + 1 + (sizeof(TYPE) / 7))
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @returns the encoding size of the value 0
|
|
156
|
+
*/
|
|
157
|
+
#define RD_UVARINT_ENC_SIZE_0() ((size_t)1)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
int unittest_rdvarint(void);
|
|
161
|
+
|
|
162
|
+
/**@}*/
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
#endif /* _RDVARINT_H */
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2012-2022, Magnus Edenhill
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Win32 (Visual Studio) support
|
|
31
|
+
*/
|
|
32
|
+
#ifndef _RDWIN32_H_
|
|
33
|
+
#define _RDWIN32_H_
|
|
34
|
+
|
|
35
|
+
#include <stdlib.h>
|
|
36
|
+
#include <inttypes.h>
|
|
37
|
+
#include <sys/types.h>
|
|
38
|
+
#include <time.h>
|
|
39
|
+
#include <assert.h>
|
|
40
|
+
|
|
41
|
+
#define WIN32_MEAN_AND_LEAN
|
|
42
|
+
#include <winsock2.h> /* for sockets + struct timeval */
|
|
43
|
+
#include <io.h>
|
|
44
|
+
#include <fcntl.h>
|
|
45
|
+
#include <windows.h>
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Types
|
|
49
|
+
*/
|
|
50
|
+
#ifndef _SSIZE_T_DEFINED
|
|
51
|
+
#define _SSIZE_T_DEFINED
|
|
52
|
+
typedef SSIZE_T ssize_t;
|
|
53
|
+
#endif
|
|
54
|
+
typedef int socklen_t;
|
|
55
|
+
|
|
56
|
+
struct iovec {
|
|
57
|
+
void *iov_base;
|
|
58
|
+
size_t iov_len;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
struct msghdr {
|
|
62
|
+
struct iovec *msg_iov;
|
|
63
|
+
int msg_iovlen;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Annotations, attributes, optimizers
|
|
69
|
+
*/
|
|
70
|
+
#ifndef likely
|
|
71
|
+
#define likely(x) x
|
|
72
|
+
#endif
|
|
73
|
+
#ifndef unlikely
|
|
74
|
+
#define unlikely(x) x
|
|
75
|
+
#endif
|
|
76
|
+
|
|
77
|
+
#define RD_UNUSED
|
|
78
|
+
#define RD_INLINE __inline
|
|
79
|
+
#define RD_WARN_UNUSED_RESULT
|
|
80
|
+
#define RD_NORETURN __declspec(noreturn)
|
|
81
|
+
#define RD_IS_CONSTANT(p) (0)
|
|
82
|
+
#ifdef _MSC_VER
|
|
83
|
+
#define RD_TLS __declspec(thread)
|
|
84
|
+
#elif defined(__MINGW32__)
|
|
85
|
+
#define RD_TLS __thread
|
|
86
|
+
#else
|
|
87
|
+
#error Unknown Windows compiler, cannot set RD_TLS (thread-local-storage attribute)
|
|
88
|
+
#endif
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Allocation
|
|
93
|
+
*/
|
|
94
|
+
#define rd_alloca(N) _alloca(N)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Strings, formatting, printf, ..
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/* size_t and ssize_t format strings */
|
|
102
|
+
#define PRIusz "Iu"
|
|
103
|
+
#define PRIdsz "Id"
|
|
104
|
+
|
|
105
|
+
#ifndef RD_FORMAT
|
|
106
|
+
#define RD_FORMAT(...)
|
|
107
|
+
#endif
|
|
108
|
+
|
|
109
|
+
static RD_UNUSED RD_INLINE int
|
|
110
|
+
rd_vsnprintf(char *str, size_t size, const char *format, va_list ap) {
|
|
111
|
+
int cnt = -1;
|
|
112
|
+
|
|
113
|
+
if (size != 0)
|
|
114
|
+
cnt = _vsnprintf_s(str, size, _TRUNCATE, format, ap);
|
|
115
|
+
if (cnt == -1)
|
|
116
|
+
cnt = _vscprintf(format, ap);
|
|
117
|
+
|
|
118
|
+
return cnt;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
static RD_UNUSED RD_INLINE int
|
|
122
|
+
rd_snprintf(char *str, size_t size, const char *format, ...) {
|
|
123
|
+
int cnt;
|
|
124
|
+
va_list ap;
|
|
125
|
+
|
|
126
|
+
va_start(ap, format);
|
|
127
|
+
cnt = rd_vsnprintf(str, size, format, ap);
|
|
128
|
+
va_end(ap);
|
|
129
|
+
|
|
130
|
+
return cnt;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
#define rd_strcasecmp(A, B) _stricmp(A, B)
|
|
135
|
+
#define rd_strncasecmp(A, B, N) _strnicmp(A, B, N)
|
|
136
|
+
/* There is a StrStrIA() but it requires extra linking, so use our own
|
|
137
|
+
* implementation instead. */
|
|
138
|
+
#define rd_strcasestr(HAYSTACK, NEEDLE) _rd_strcasestr(HAYSTACK, NEEDLE)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Errors
|
|
144
|
+
*/
|
|
145
|
+
|
|
146
|
+
/* MSVC:
|
|
147
|
+
* This is the correct way to set errno on Windows,
|
|
148
|
+
* but it is still pointless due to different errnos in
|
|
149
|
+
* in different runtimes:
|
|
150
|
+
* https://social.msdn.microsoft.com/Forums/vstudio/en-US/b4500c0d-1b69-40c7-9ef5-08da1025b5bf/setting-errno-from-within-a-dll?forum=vclanguage/
|
|
151
|
+
* errno is thus highly deprecated, and buggy, on Windows
|
|
152
|
+
* when using librdkafka as a dynamically loaded DLL. */
|
|
153
|
+
#define rd_set_errno(err) _set_errno((err))
|
|
154
|
+
|
|
155
|
+
static RD_INLINE RD_UNUSED const char *rd_strerror(int err) {
|
|
156
|
+
static RD_TLS char ret[128];
|
|
157
|
+
|
|
158
|
+
strerror_s(ret, sizeof(ret) - 1, err);
|
|
159
|
+
return ret;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @brief strerror() for Win32 API errors as returned by GetLastError() et.al.
|
|
164
|
+
*/
|
|
165
|
+
static RD_UNUSED char *
|
|
166
|
+
rd_strerror_w32(DWORD errcode, char *dst, size_t dstsize) {
|
|
167
|
+
char *t;
|
|
168
|
+
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
|
|
169
|
+
FORMAT_MESSAGE_IGNORE_INSERTS,
|
|
170
|
+
NULL, errcode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
|
171
|
+
(LPSTR)dst, (DWORD)dstsize - 1, NULL);
|
|
172
|
+
/* Remove newlines */
|
|
173
|
+
while ((t = strchr(dst, (int)'\r')) || (t = strchr(dst, (int)'\n')))
|
|
174
|
+
*t = (char)'.';
|
|
175
|
+
return dst;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Atomics
|
|
181
|
+
*/
|
|
182
|
+
#ifndef __cplusplus
|
|
183
|
+
#include "rdatomic.h"
|
|
184
|
+
#endif
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Misc
|
|
189
|
+
*/
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Microsecond sleep.
|
|
193
|
+
* 'retry': if true, retry if sleep is interrupted (because of signal)
|
|
194
|
+
*/
|
|
195
|
+
#define rd_usleep(usec, terminate) Sleep((usec) / 1000)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* @brief gettimeofday() for win32
|
|
200
|
+
*/
|
|
201
|
+
static RD_UNUSED int rd_gettimeofday(struct timeval *tv, struct timezone *tz) {
|
|
202
|
+
SYSTEMTIME st;
|
|
203
|
+
FILETIME ft;
|
|
204
|
+
ULARGE_INTEGER d;
|
|
205
|
+
|
|
206
|
+
GetSystemTime(&st);
|
|
207
|
+
SystemTimeToFileTime(&st, &ft);
|
|
208
|
+
d.HighPart = ft.dwHighDateTime;
|
|
209
|
+
d.LowPart = ft.dwLowDateTime;
|
|
210
|
+
tv->tv_sec = (long)((d.QuadPart - 116444736000000000llu) / 10000000L);
|
|
211
|
+
tv->tv_usec = (long)(st.wMilliseconds * 1000);
|
|
212
|
+
|
|
213
|
+
return 0;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
#define rd_assert(EXPR) assert(EXPR)
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
static RD_INLINE RD_UNUSED const char *rd_getenv(const char *env,
|
|
221
|
+
const char *def) {
|
|
222
|
+
static RD_TLS char tmp[512];
|
|
223
|
+
DWORD r;
|
|
224
|
+
r = GetEnvironmentVariableA(env, tmp, sizeof(tmp));
|
|
225
|
+
if (r == 0 || r > sizeof(tmp))
|
|
226
|
+
return def;
|
|
227
|
+
return tmp;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Empty struct initializer
|
|
233
|
+
*/
|
|
234
|
+
#define RD_ZERO_INIT \
|
|
235
|
+
{ 0 }
|
|
236
|
+
|
|
237
|
+
#ifndef __cplusplus
|
|
238
|
+
/**
|
|
239
|
+
* Sockets, IO
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
/** @brief Socket type */
|
|
243
|
+
typedef SOCKET rd_socket_t;
|
|
244
|
+
|
|
245
|
+
/** @brief Socket API error return value */
|
|
246
|
+
#define RD_SOCKET_ERROR SOCKET_ERROR
|
|
247
|
+
|
|
248
|
+
/** @brief Last socket error */
|
|
249
|
+
#define rd_socket_errno WSAGetLastError()
|
|
250
|
+
|
|
251
|
+
/** @brief String representation of socket error */
|
|
252
|
+
static RD_UNUSED const char *rd_socket_strerror(int err) {
|
|
253
|
+
static RD_TLS char buf[256];
|
|
254
|
+
rd_strerror_w32(err, buf, sizeof(buf));
|
|
255
|
+
return buf;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/** @brief WSAPoll() struct type */
|
|
259
|
+
typedef WSAPOLLFD rd_pollfd_t;
|
|
260
|
+
|
|
261
|
+
/** @brief poll(2) */
|
|
262
|
+
#define rd_socket_poll(POLLFD, FDCNT, TIMEOUT_MS) \
|
|
263
|
+
WSAPoll(POLLFD, FDCNT, TIMEOUT_MS)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* @brief Set socket to non-blocking
|
|
268
|
+
* @returns 0 on success or -1 on failure (see rd_kafka_rd_socket_errno)
|
|
269
|
+
*/
|
|
270
|
+
static RD_UNUSED int rd_fd_set_nonblocking(rd_socket_t fd) {
|
|
271
|
+
u_long on = 1;
|
|
272
|
+
if (ioctlsocket(fd, FIONBIO, &on) == SOCKET_ERROR)
|
|
273
|
+
return (int)WSAGetLastError();
|
|
274
|
+
return 0;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* @brief Create non-blocking pipe
|
|
279
|
+
* @returns 0 on success or errno on failure
|
|
280
|
+
*/
|
|
281
|
+
static RD_UNUSED int rd_pipe_nonblocking(rd_socket_t *fds) {
|
|
282
|
+
/* On windows, the "pipe" will be a tcp connection.
|
|
283
|
+
* This is to allow WSAPoll to be used to poll pipe events */
|
|
284
|
+
|
|
285
|
+
SOCKET listen_s = INVALID_SOCKET;
|
|
286
|
+
SOCKET accept_s = INVALID_SOCKET;
|
|
287
|
+
SOCKET connect_s = INVALID_SOCKET;
|
|
288
|
+
|
|
289
|
+
struct sockaddr_in listen_addr;
|
|
290
|
+
struct sockaddr_in connect_addr;
|
|
291
|
+
socklen_t sock_len = 0;
|
|
292
|
+
int bufsz;
|
|
293
|
+
|
|
294
|
+
/* Create listen socket */
|
|
295
|
+
listen_s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
|
296
|
+
if (listen_s == INVALID_SOCKET)
|
|
297
|
+
goto err;
|
|
298
|
+
|
|
299
|
+
listen_addr.sin_family = AF_INET;
|
|
300
|
+
listen_addr.sin_addr.s_addr = ntohl(INADDR_LOOPBACK);
|
|
301
|
+
listen_addr.sin_port = 0;
|
|
302
|
+
if (bind(listen_s, (struct sockaddr *)&listen_addr,
|
|
303
|
+
sizeof(listen_addr)) != 0)
|
|
304
|
+
goto err;
|
|
305
|
+
|
|
306
|
+
sock_len = sizeof(connect_addr);
|
|
307
|
+
if (getsockname(listen_s, (struct sockaddr *)&connect_addr,
|
|
308
|
+
&sock_len) != 0)
|
|
309
|
+
goto err;
|
|
310
|
+
|
|
311
|
+
if (listen(listen_s, 1) != 0)
|
|
312
|
+
goto err;
|
|
313
|
+
|
|
314
|
+
/* Create connection socket */
|
|
315
|
+
connect_s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
|
316
|
+
if (connect_s == INVALID_SOCKET)
|
|
317
|
+
goto err;
|
|
318
|
+
|
|
319
|
+
if (connect(connect_s, (struct sockaddr *)&connect_addr,
|
|
320
|
+
sizeof(connect_addr)) == SOCKET_ERROR)
|
|
321
|
+
goto err;
|
|
322
|
+
|
|
323
|
+
/* Wait for incoming connection */
|
|
324
|
+
accept_s = accept(listen_s, NULL, NULL);
|
|
325
|
+
if (accept_s == SOCKET_ERROR)
|
|
326
|
+
goto err;
|
|
327
|
+
|
|
328
|
+
/* Done with listening */
|
|
329
|
+
closesocket(listen_s);
|
|
330
|
+
|
|
331
|
+
if (rd_fd_set_nonblocking(accept_s) != 0)
|
|
332
|
+
goto err;
|
|
333
|
+
|
|
334
|
+
if (rd_fd_set_nonblocking(connect_s) != 0)
|
|
335
|
+
goto err;
|
|
336
|
+
|
|
337
|
+
/* Minimize buffer sizes to avoid a large number
|
|
338
|
+
* of signaling bytes to accumulate when
|
|
339
|
+
* io-signalled queue is not being served for a while. */
|
|
340
|
+
bufsz = 100;
|
|
341
|
+
setsockopt(accept_s, SOL_SOCKET, SO_SNDBUF, (const char *)&bufsz,
|
|
342
|
+
sizeof(bufsz));
|
|
343
|
+
bufsz = 100;
|
|
344
|
+
setsockopt(accept_s, SOL_SOCKET, SO_RCVBUF, (const char *)&bufsz,
|
|
345
|
+
sizeof(bufsz));
|
|
346
|
+
bufsz = 100;
|
|
347
|
+
setsockopt(connect_s, SOL_SOCKET, SO_SNDBUF, (const char *)&bufsz,
|
|
348
|
+
sizeof(bufsz));
|
|
349
|
+
bufsz = 100;
|
|
350
|
+
setsockopt(connect_s, SOL_SOCKET, SO_RCVBUF, (const char *)&bufsz,
|
|
351
|
+
sizeof(bufsz));
|
|
352
|
+
|
|
353
|
+
/* Store resulting sockets.
|
|
354
|
+
* They are bidirectional, so it does not matter which is read or
|
|
355
|
+
* write side of pipe. */
|
|
356
|
+
fds[0] = accept_s;
|
|
357
|
+
fds[1] = connect_s;
|
|
358
|
+
return 0;
|
|
359
|
+
|
|
360
|
+
err:
|
|
361
|
+
if (listen_s != INVALID_SOCKET)
|
|
362
|
+
closesocket(listen_s);
|
|
363
|
+
if (accept_s != INVALID_SOCKET)
|
|
364
|
+
closesocket(accept_s);
|
|
365
|
+
if (connect_s != INVALID_SOCKET)
|
|
366
|
+
closesocket(connect_s);
|
|
367
|
+
return -1;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/* Socket IO */
|
|
371
|
+
#define rd_socket_read(fd, buf, sz) recv(fd, buf, sz, 0)
|
|
372
|
+
#define rd_socket_write(fd, buf, sz) send(fd, buf, sz, 0)
|
|
373
|
+
#define rd_socket_close(fd) closesocket(fd)
|
|
374
|
+
|
|
375
|
+
/* File IO */
|
|
376
|
+
#define rd_write(fd, buf, sz) _write(fd, buf, sz)
|
|
377
|
+
#define rd_open(path, flags, mode) _open(path, flags, mode)
|
|
378
|
+
#define rd_close(fd) _close(fd)
|
|
379
|
+
|
|
380
|
+
#endif /* !__cplusplus*/
|
|
381
|
+
|
|
382
|
+
#endif /* _RDWIN32_H_ */
|