From 7286ea21ef005656b0d3699803af3e8d296d89e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bojan=20=C4=90urkovi=C4=87?= Date: Fri, 11 Apr 2025 11:08:52 +0000 Subject: [PATCH] Update to match rdkafka version 6.0.4 --- composer.json | 2 +- stubs/RdKafka.php | 64 +++++++++++++++++++------ stubs/RdKafka/Conf.php | 28 +++++++---- stubs/RdKafka/Consumer.php | 10 ++-- stubs/RdKafka/ConsumerTopic.php | 16 +++---- stubs/RdKafka/KafkaConsumer.php | 67 ++++++++++++++++----------- stubs/RdKafka/KafkaConsumerTopic.php | 2 +- stubs/RdKafka/KafkaErrorException.php | 18 ++++--- stubs/RdKafka/Message.php | 21 ++++----- stubs/RdKafka/Metadata.php | 8 ++-- stubs/RdKafka/Metadata/Broker.php | 6 +-- stubs/RdKafka/Metadata/Collection.php | 4 +- stubs/RdKafka/Metadata/Partition.php | 2 +- stubs/RdKafka/Metadata/Topic.php | 4 +- stubs/RdKafka/Producer.php | 6 +-- stubs/RdKafka/ProducerTopic.php | 10 ++-- stubs/RdKafka/Queue.php | 4 +- stubs/RdKafka/Topic.php | 2 +- stubs/RdKafka/TopicConf.php | 6 +-- stubs/RdKafka/TopicPartition.php | 12 ++--- stubs/constants.php | 5 +- stubs/functions.php | 12 +++-- 22 files changed, 192 insertions(+), 117 deletions(-) diff --git a/composer.json b/composer.json index c957602..ea3e091 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ } ], "require": { - "ext-rdkafka": ">=4.0" + "ext-rdkafka": ">=6.0" }, "require-dev": { "phpunit/phpunit": "^8.2.4" diff --git a/stubs/RdKafka.php b/stubs/RdKafka.php index d3a6147..caa05c7 100644 --- a/stubs/RdKafka.php +++ b/stubs/RdKafka.php @@ -4,7 +4,7 @@ use RdKafka\Metadata; use RdKafka\Topic; use RdKafka\TopicConf; -use RdKafka\Queue; +use RdKafka\TopicPartition; abstract class RdKafka { @@ -13,7 +13,7 @@ abstract class RdKafka * * @return int */ - public function addBrokers($broker_list) + public function addBrokers(string $broker_list): int { } @@ -25,14 +25,14 @@ public function addBrokers($broker_list) * @throws Exception * @return Metadata */ - public function getMetadata($all_topics, $only_topic = null, $timeout_ms) + public function getMetadata(bool $all_topics, Topic $only_topic = null, int $timeout_ms): Metadata { } /** * @return int */ - public function getOutQLen() + public function getOutQLen(): int { } @@ -42,7 +42,7 @@ public function getOutQLen() * * @return Topic */ - public function newTopic($topic_name, TopicConf $topic_conf = null) + public function newTopic(string $topic_name, TopicConf $topic_conf = null): Topic { } @@ -51,7 +51,7 @@ public function newTopic($topic_name, TopicConf $topic_conf = null) * * @return void */ - public function poll($timeout_ms) + public function poll(int $timeout_ms) { } @@ -62,7 +62,14 @@ public function poll($timeout_ms) * * @return void */ - public function setLogLevel($level) + public function setLogLevel(int $level) + { + } + + /** + * @deprecated + */ + public function setLogger(int $logger_id) { } @@ -73,16 +80,16 @@ public function setLogLevel($level) * @param int $high * @param int $timeout_ms */ - public function queryWatermarkOffsets($topic, $partition, &$low, &$high, $timeout_ms) + public function queryWatermarkOffsets(string $topic, int $partition, int &$low, int &$high, int $timeout_ms) { } /** - * @param array $topicPartitions + * @param TopicPartition[] $topicPartitions * @param int $timeout_ms - * @return array + * @return TopicPartition[] */ - public function offsetsForTimes ($topicPartitions , $timeout_ms) + public function offsetsForTimes (array $topicPartitions, int $timeout_ms): array { } @@ -90,7 +97,7 @@ public function offsetsForTimes ($topicPartitions , $timeout_ms) * @param int $purge_flags * @return int */ - public function purge($purge_flags) + public function purge(int $purge_flags): int { } @@ -98,7 +105,38 @@ public function purge($purge_flags) * @param int $timeout_ms * @return int */ - public function flush($timeout_ms) + public function flush(int $timeout_ms): int { } + + /** + * @param string $token_value + * @param int|float|string $lifetime_ms + * @param string $principal_name + * @param array $extensions + * + * @return void + */ + public function oauthbearerSetToken(string $token_value, $lifetime_ms, string $principal_name, array $extensions = []) + { + } + + /** + * @param string $error + * + * @return void + */ + public function oauthbearerSetTokenFailure(string $error) + { + } + + /** + * @param int $timeout_ms + * + * @return int + */ + public function getControllerId(int $timeout_ms): int + { + + } } diff --git a/stubs/RdKafka/Conf.php b/stubs/RdKafka/Conf.php index 92ab884..d908a39 100644 --- a/stubs/RdKafka/Conf.php +++ b/stubs/RdKafka/Conf.php @@ -10,7 +10,7 @@ class Conf /** * @return array */ - public function dump() + public function dump(): array { } @@ -20,7 +20,7 @@ public function dump() * * @return void */ - public function set($name, $value) + public function set(string $name, string $value) { } @@ -36,7 +36,7 @@ public function setDefaultTopicConf(TopicConf $topic_conf) } /** - * @param callable $callback + * @param callable $callback (RdKafka\Kafka $kafka, RdKafka\Message $message) * * @return void */ @@ -45,7 +45,7 @@ public function setDrMsgCb(callable $callback) } /** - * @param callable $callback + * @param callable $callback (RdKafka\KafkaConsumer|RdKafka\Producer $kafka, int $err, string $reason) * * @return void */ @@ -54,7 +54,7 @@ public function setErrorCb(callable $callback) } /** - * @param callable $callback + * @param callable $callback (RdKafka\KafkaConsumer $kafka, int $err, array $partitions) * * @return void */ @@ -63,7 +63,7 @@ public function setRebalanceCb(callable $callback) } /** - * @param callable $callback + * @param callable $callback (object $kafka, string $json, int $json_len); * * @return void */ @@ -72,7 +72,7 @@ public function setStatsCb(callable $callback) } /** - * @param callable $callback + * @param callable $callback (RdKafka\Message $msg) * * @return void */ @@ -81,7 +81,7 @@ public function setConsumeCb(callable $callback) } /** - * @param callable $callback + * @param callable $callback (object $kafka, int $err, array $partitions); * * @return void */ @@ -90,11 +90,21 @@ public function setOffsetCommitCb(callable $callback) } /** - * @param callable $callback + * @param callable $callback (object $kafka, int $level, string $facility, string $message); * * @return void */ public function setLogCb(callable $callback) { } + + /** + * @param callable $callback (RdKafka\Producer $producer) + * + * @return void + */ + public function setOauthbearerTokenRefreshCb(callable $callback) + { + + } } diff --git a/stubs/RdKafka/Consumer.php b/stubs/RdKafka/Consumer.php index 60d89cd..2a1cb44 100644 --- a/stubs/RdKafka/Consumer.php +++ b/stubs/RdKafka/Consumer.php @@ -5,26 +5,26 @@ class Consumer extends \RdKafka { /** - * @param Conf $conf + * @param Conf|null $conf */ public function __construct(Conf $conf = null) { } /** - * @param string $topic_name - * @param TopicConf $topic_conf + * @param string $topic_name + * @param TopicConf|null $topic_conf * * @return ConsumerTopic */ - public function newTopic($topic_name, TopicConf $topic_conf = null) + public function newTopic(string $topic_name, TopicConf $topic_conf = null): Topic { } /** * @return Queue */ - public function newQueue() + public function newQueue(): Queue { } } diff --git a/stubs/RdKafka/ConsumerTopic.php b/stubs/RdKafka/ConsumerTopic.php index 3878e22..88f1d76 100644 --- a/stubs/RdKafka/ConsumerTopic.php +++ b/stubs/RdKafka/ConsumerTopic.php @@ -14,7 +14,7 @@ private function __construct() * * @return Message|null */ - public function consume($partition, $timeout_ms) + public function consume(int $partition, int $timeout_ms) { } @@ -25,7 +25,7 @@ public function consume($partition, $timeout_ms) * * @return void */ - public function consumeQueueStart($partition, $offset, Queue $queue) + public function consumeQueueStart(int $partition, int $offset, Queue $queue) { } @@ -35,7 +35,7 @@ public function consumeQueueStart($partition, $offset, Queue $queue) * * @return void */ - public function consumeStart($partition, $offset) + public function consumeStart(int $partition, int $offset) { } @@ -44,7 +44,7 @@ public function consumeStart($partition, $offset) * * @return void */ - public function consumeStop($partition) + public function consumeStop(int $partition) { } @@ -54,7 +54,7 @@ public function consumeStop($partition) * * @return void */ - public function offsetStore($partition, $offset) + public function offsetStore(int $partition, int $offset) { } @@ -65,9 +65,9 @@ public function offsetStore($partition, $offset) * * @throws Exception * @throws \InvalidArgumentException - * @return array + * @return Message[]|null */ - public function consumeBatch($partition, $timeout_ms, $batch_size) + public function consumeBatch(int $partition, int $timeout_ms, int $batch_size) { } @@ -78,7 +78,7 @@ public function consumeBatch($partition, $timeout_ms, $batch_size) * * @return void */ - public function consumeCallback($partition, $timeout_ms, callable $callback) + public function consumeCallback(int $partition, int $timeout_ms, callable $callback) { } } diff --git a/stubs/RdKafka/KafkaConsumer.php b/stubs/RdKafka/KafkaConsumer.php index c34f0f4..e86faa1 100644 --- a/stubs/RdKafka/KafkaConsumer.php +++ b/stubs/RdKafka/KafkaConsumer.php @@ -12,12 +12,12 @@ public function __construct(Conf $conf) } /** - * @param TopicPartition[] $topic_partitions + * @param TopicPartition[]|null $topic_partitions * * @throws Exception * @return void */ - public function assign($topic_partitions = null) + public function assign(array $topic_partitions = null) { } @@ -32,12 +32,12 @@ public function commit($message_or_offsets = null) } /** - * @param string $message_or_offsets + * @param string|null $message_or_offsets * * @throws Exception * @return void */ - public function commitAsync($message_or_offsets = null) + public function commitAsync(string $message_or_offsets = null) { } @@ -48,7 +48,7 @@ public function commitAsync($message_or_offsets = null) * @throws \InvalidArgumentException * @return Message */ - public function consume($timeout_ms) + public function consume(int $timeout_ms): Message { } @@ -56,7 +56,7 @@ public function consume($timeout_ms) * @throws Exception * @return TopicPartition[] */ - public function getAssignment() + public function getAssignment(): array { } @@ -68,34 +68,35 @@ public function getAssignment() * @throws Exception * @return Metadata */ - public function getMetadata($all_topics, $only_topic, $timeout_ms) + public function getMetadata(bool $all_topics, KafkaConsumerTopic $only_topic = null, int $timeout_ms): Metadata { } /** - * @return array + * @return string[] */ - public function getSubscription() + public function getSubscription(): array { } /** - * @param string $topic_name - * @param TopicConf $topic_conf + * @param string $topic_name + * @param TopicConf|null $topic_conf * - * @return KafkaConsumerTopic + * @return ConsumerTopic */ - public function newTopic($topic_name, TopicConf $topic_conf = null) + public function newTopic(string $topic_name, TopicConf $topic_conf = null): ConsumerTopic { } /** - * @param array $topics + * @param string[] $topics + * Regex pattern matching automatically performed for topics prefixed with ^ (e.g. ^myPfx[0-9]_.*) * * @throws Exception * @return void */ - public function subscribe($topics) + public function subscribe(array $topics) { } @@ -114,16 +115,16 @@ public function unsubscribe() * @throws Exception * @return TopicPartition[] */ - public function getCommittedOffsets($topicPartitions, $timeout_ms) + public function getCommittedOffsets(array $topicPartitions, int $timeout_ms): array { } /** - * @param array $topicPartitions - * @param int $timeout_ms - * @return array + * @param TopicPartition[] $topicPartitions + * @param int $timeout_ms + * @return TopicPartition[] */ - public function offsetsForTimes($topicPartitions, $timeout_ms) + public function offsetsForTimes(array $topicPartitions, int $timeout_ms): array { } @@ -134,17 +135,17 @@ public function offsetsForTimes($topicPartitions, $timeout_ms) * @param int $high * @param int $timeout_ms */ - public function queryWatermarkOffsets($topic, $partition, &$low, &$high, $timeout_ms) + public function queryWatermarkOffsets(string $topic, int $partition, int &$low, int &$high, int $timeout_ms) { } /** - * @param array $topics + * @param TopicPartition[] $topics * * @throws Exception - * @return array + * @return TopicPartition[] */ - public function getOffsetPositions($topics) + public function getOffsetPositions(array $topics): array { } @@ -159,7 +160,7 @@ public function close() * @param TopicPartition[] $topic_partitions * @return TopicPartition[] */ - public function pausePartitions($topic_partitions) + public function pausePartitions(array $topic_partitions): array { } @@ -167,7 +168,21 @@ public function pausePartitions($topic_partitions) * @param TopicPartition[] $topic_partitions * @return TopicPartition[] */ - public function resumePartitions($topic_partitions) + public function resumePartitions(array $topic_partitions): array + { + } + + /** + * @param array $topic_partitions + */ + public function incrementalAssign(array $topic_partitions) + { + } + + /** + * @param array $topic_partitions + */ + public function incrementalUnassign(array $topic_partitions) { } } diff --git a/stubs/RdKafka/KafkaConsumerTopic.php b/stubs/RdKafka/KafkaConsumerTopic.php index 89d29cb..ed86a0b 100644 --- a/stubs/RdKafka/KafkaConsumerTopic.php +++ b/stubs/RdKafka/KafkaConsumerTopic.php @@ -10,7 +10,7 @@ class KafkaConsumerTopic extends Topic * * @return void */ - public function offsetStore($partition, $offset) + public function offsetStore(int $partition, int $offset) { } } diff --git a/stubs/RdKafka/KafkaErrorException.php b/stubs/RdKafka/KafkaErrorException.php index ed5b540..26994e2 100644 --- a/stubs/RdKafka/KafkaErrorException.php +++ b/stubs/RdKafka/KafkaErrorException.php @@ -12,36 +12,42 @@ class KafkaErrorException extends \Exception * @param boolean $isRetriable * @param boolean $transactionRequiresAbort */ - public function __construct($message, $code, $errorString, $isFatal, $isRetriable, $transactionRequiresAbort) - { + public function __construct( + string $message, + int $code, + string $errorString, + bool $isFatal, + bool $isRetriable, + bool $transactionRequiresAbort + ) { parent::__construct($message, $code); } /** * @returns string */ - public function getErrorString() + public function getErrorString(): string { } /** * @returns boolean */ - public function isFatal() + public function isFatal(): bool { } /** * @returns boolean */ - public function isRetriable() + public function isRetriable(): bool { } /** * @returns boolean */ - public function transactionRequiresAbort() + public function transactionRequiresAbort(): bool { } } diff --git a/stubs/RdKafka/Message.php b/stubs/RdKafka/Message.php index 901f1f6..75f7761 100644 --- a/stubs/RdKafka/Message.php +++ b/stubs/RdKafka/Message.php @@ -5,17 +5,17 @@ class Message { /** - * @var int + * @var int|null */ public $err; /** - * @var string + * @var string|null */ public $topic_name; /** - * @var int + * @var int|null */ public $partition; @@ -35,20 +35,15 @@ class Message public $key; /** - * @var int + * @var int|null */ public $offset; /** - * @var int + * @var int|null */ public $timestamp; - /** - * @var array|null - */ - public $headers; - /** * @var string|null */ @@ -57,7 +52,11 @@ class Message /** * @return string */ - public function errstr() + public function errstr(): string + { + } + + public function headers(): array { } } diff --git a/stubs/RdKafka/Metadata.php b/stubs/RdKafka/Metadata.php index e02a083..0f2027d 100644 --- a/stubs/RdKafka/Metadata.php +++ b/stubs/RdKafka/Metadata.php @@ -11,28 +11,28 @@ class Metadata /** * @return Collection|Broker[] */ - public function getBrokers() + public function getBrokers(): Collection { } /** * @return Collection|Topic[] */ - public function getTopics() + public function getTopics(): Collection { } /** * @return int */ - public function getOrigBrokerId() + public function getOrigBrokerId(): int { } /** * @return string */ - public function getOrigBrokerName() + public function getOrigBrokerName(): string { } } diff --git a/stubs/RdKafka/Metadata/Broker.php b/stubs/RdKafka/Metadata/Broker.php index 0e7266f..22019b9 100644 --- a/stubs/RdKafka/Metadata/Broker.php +++ b/stubs/RdKafka/Metadata/Broker.php @@ -7,21 +7,21 @@ class Broker /** * @return int */ - public function getId() + public function getId(): int { } /** * @return string */ - public function getHost() + public function getHost(): string { } /** * @return int */ - public function getPort() + public function getPort(): int { } } diff --git a/stubs/RdKafka/Metadata/Collection.php b/stubs/RdKafka/Metadata/Collection.php index 6e387a3..6176718 100644 --- a/stubs/RdKafka/Metadata/Collection.php +++ b/stubs/RdKafka/Metadata/Collection.php @@ -28,7 +28,7 @@ public function key() /** * @return boolean */ - public function valid() + public function valid(): bool { } @@ -42,7 +42,7 @@ public function rewind() /** * @return int */ - public function count() + public function count(): int { } } diff --git a/stubs/RdKafka/Metadata/Partition.php b/stubs/RdKafka/Metadata/Partition.php index 502929e..32eb896 100644 --- a/stubs/RdKafka/Metadata/Partition.php +++ b/stubs/RdKafka/Metadata/Partition.php @@ -7,7 +7,7 @@ class Partition /** * @return int */ - public function getId() + public function getId(): int { } diff --git a/stubs/RdKafka/Metadata/Topic.php b/stubs/RdKafka/Metadata/Topic.php index 5d98a15..d853c71 100644 --- a/stubs/RdKafka/Metadata/Topic.php +++ b/stubs/RdKafka/Metadata/Topic.php @@ -7,14 +7,14 @@ class Topic /** * @return string */ - public function getTopic() + public function getTopic(): string { } /** * @return Partition[] */ - public function getPartitions() + public function getPartitions(): array { } diff --git a/stubs/RdKafka/Producer.php b/stubs/RdKafka/Producer.php index 6914d3e..374e9d3 100644 --- a/stubs/RdKafka/Producer.php +++ b/stubs/RdKafka/Producer.php @@ -12,12 +12,12 @@ public function __construct(Conf $conf = null) } /** - * @param string $topic_name - * @param TopicConf $topic_conf + * @param string $topic_name + * @param TopicConf|null $topic_conf * * @return ProducerTopic */ - public function newTopic($topic_name, TopicConf $topic_conf = null) + public function newTopic(string $topic_name, TopicConf $topic_conf = null): Topic { } diff --git a/stubs/RdKafka/ProducerTopic.php b/stubs/RdKafka/ProducerTopic.php index 497b5e6..9c55393 100644 --- a/stubs/RdKafka/ProducerTopic.php +++ b/stubs/RdKafka/ProducerTopic.php @@ -11,13 +11,14 @@ private function __construct() /** * @param int $partition * @param int $msgflags - * @param string $payload - * @param string $key + * @param string|null $payload + * @param string|null $key + * @param string|null $opaque * * @throws Exception * @return void */ - public function produce($partition, $msgflags, $payload, $key = null) + public function produce(int $partition, int $msgflags, string $payload = null, string $key = null, string $opaque = null) { } @@ -28,10 +29,11 @@ public function produce($partition, $msgflags, $payload, $key = null) * @param string|null $key * @param array|null $headers * @param int $timestamp_ms + * @param string|null $opaque * * @throws Exception */ - public function producev($partition, $msgflags, $payload, $key = null, $headers = null, $timestamp_ms = null) + public function producev(int $partition, int $msgflags, string $payload, string $key = null, array $headers = null, int $timestamp_ms = null, string $opaque = null) { } } diff --git a/stubs/RdKafka/Queue.php b/stubs/RdKafka/Queue.php index 0f535c9..cccffdf 100644 --- a/stubs/RdKafka/Queue.php +++ b/stubs/RdKafka/Queue.php @@ -9,11 +9,11 @@ private function __construct() } /** - * @param string $timeout_ms + * @param int $timeout_ms * * @return Message|null */ - public function consume($timeout_ms) + public function consume(int $timeout_ms) { } } diff --git a/stubs/RdKafka/Topic.php b/stubs/RdKafka/Topic.php index 2371c48..042dbce 100644 --- a/stubs/RdKafka/Topic.php +++ b/stubs/RdKafka/Topic.php @@ -7,7 +7,7 @@ abstract class Topic /** * @return string */ - public function getName() + public function getName(): string { } } diff --git a/stubs/RdKafka/TopicConf.php b/stubs/RdKafka/TopicConf.php index 08de0c8..adc48e8 100644 --- a/stubs/RdKafka/TopicConf.php +++ b/stubs/RdKafka/TopicConf.php @@ -10,7 +10,7 @@ class TopicConf /** * @return array */ - public function dump() + public function dump(): array { } @@ -20,7 +20,7 @@ public function dump() * * @return void */ - public function set($name, $value) + public function set(string $name, string $value) { } @@ -29,7 +29,7 @@ public function set($name, $value) * * @return void */ - public function setPartitioner($partitioner) + public function setPartitioner(int $partitioner) { } } diff --git a/stubs/RdKafka/TopicPartition.php b/stubs/RdKafka/TopicPartition.php index 5bfa00a..1d1a80c 100644 --- a/stubs/RdKafka/TopicPartition.php +++ b/stubs/RdKafka/TopicPartition.php @@ -16,21 +16,21 @@ public function __construct($topic, $partition, $offset = null) /** * @return int */ - public function getOffset() + public function getOffset(): int { } /** * @return int */ - public function getPartition() + public function getPartition(): int { } /** * @return string */ - public function getTopic() + public function getTopic(): string { } @@ -39,7 +39,7 @@ public function getTopic() * * @return void */ - public function setOffset($offset) + public function setOffset(int $offset) { } @@ -48,7 +48,7 @@ public function setOffset($offset) * * @return void */ - public function setPartition($partition) + public function setPartition(int $partition) { } @@ -57,7 +57,7 @@ public function setPartition($partition) * * @return void */ - public function setTopic($topic_name) + public function setTopic(string $topic_name) { } } diff --git a/stubs/constants.php b/stubs/constants.php index 8792506..1015b78 100644 --- a/stubs/constants.php +++ b/stubs/constants.php @@ -63,6 +63,7 @@ const RD_KAFKA_RESP_ERR__ASSIGNMENT_LOST = -142; const RD_KAFKA_RESP_ERR__NOOP = -141; const RD_KAFKA_RESP_ERR__AUTO_OFFSET_RESET = -140; +const RD_KAFKA_RESP_ERR__LOG_TRUNCATION = -139; const RD_KAFKA_RESP_ERR__END = -100; const RD_KAFKA_RESP_ERR_UNKNOWN = -1; const RD_KAFKA_RESP_ERR_NO_ERROR = 0; @@ -173,8 +174,8 @@ const RD_KAFKA_OFFSET_INVALID = -1001; const RD_KAFKA_PARTITION_UA = -1; const RD_KAFKA_PRODUCER = 0; -const RD_KAFKA_VERSION = 525568; -const RD_KAFKA_BUILD_VERSION = 17236223; +const RD_KAFKA_VERSION = 33751295; +const RD_KAFKA_BUILD_VERSION = 33751295; const RD_KAFKA_CONF_UNKNOWN = -2; const RD_KAFKA_CONF_INVALID = -1; const RD_KAFKA_CONF_OK = 0; diff --git a/stubs/functions.php b/stubs/functions.php index ceb0c7b..1ddcfed 100644 --- a/stubs/functions.php +++ b/stubs/functions.php @@ -5,23 +5,27 @@ * * @return string Returns the error as a string. */ -function rd_kafka_err2str($err) +function rd_kafka_err2str(int $err): string { } /** * @param int $errnox A system errno * + * @deprecated + * * @return int Returns a kafka error code as an integer. */ -function rd_kafka_errno2err($errnox) +function rd_kafka_errno2err(int $errnox) { } /** * @return int Returns the system errno as an integer. + * + * @deprecated */ -function rd_kafka_errno() +function rd_kafka_errno(): int { } @@ -30,6 +34,6 @@ function rd_kafka_errno() * * @return int Returns the special offset as an integer. */ -function rd_kafka_offset_tail($cnt) +function rd_kafka_offset_tail(int $cnt): int { }