internal List <TopicPartitionOffset> 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 = GetTopicPartitionOffsetList(list); LibRdKafka.topic_partition_list_destroy(list); if (err != ErrorCode.NO_ERROR) { throw RdKafkaException.FromErr(err, "Failed to fetch committed offsets"); } return(result); }