示例#1
0
        /// <summary>
        ///     for each topic/partition returns the current committed offset
        ///     or a partition specific error. if no stored offset, Offset.Invalid.
        ///
        ///     throws KafakException if the above information cannot be retrieved.
        /// </summary>
        internal List <TopicPartitionOffsetError> Committed(ICollection <TopicPartition> partitions, IntPtr timeout_ms)
        {
            IntPtr list = LibRdKafka.topic_partition_list_new((IntPtr)partitions.Count);

            if (list == IntPtr.Zero)
            {
                throw new Exception("Failed to create committed partition list");
            }
            foreach (var partition in partitions)
            {
                LibRdKafka.topic_partition_list_add(list, partition.Topic, partition.Partition);
            }
            ErrorCode err    = LibRdKafka.committed(handle, list, timeout_ms);
            var       result = GetTopicPartitionOffsetErrorList(list);

            LibRdKafka.topic_partition_list_destroy(list);
            if (err != ErrorCode.NO_ERROR)
            {
                throw new KafkaException(err, "Failed to fetch committed offsets");
            }
            return(result);
        }
        /// <summary>
        ///     for each topic/partition returns the current committed offset
        ///     or a partition specific error. if no stored offset, Offset.Invalid.
        ///
        ///     throws KafkaException if the above information cannot be retrieved.
        /// </summary>
        internal List <TopicPartitionOffsetError> Committed(IEnumerable <TopicPartition> partitions, IntPtr timeout_ms)
        {
            ThrowIfHandleClosed();
            IntPtr list = LibRdKafka.topic_partition_list_new((IntPtr)partitions.Count());

            if (list == IntPtr.Zero)
            {
                throw new Exception("Failed to create committed partition list");
            }
            foreach (var partition in partitions)
            {
                LibRdKafka.topic_partition_list_add(list, partition.Topic, partition.Partition);
            }
            ErrorCode err    = LibRdKafka.committed(handle, list, timeout_ms);
            var       result = GetTopicPartitionOffsetErrorList(list);

            LibRdKafka.topic_partition_list_destroy(list);
            if (err != ErrorCode.NoError)
            {
                throw new KafkaException(err);
            }
            return(result);
        }