internal List <TopicPartitionOffset> Position(ICollection <TopicPartition> partitions) { IntPtr list = LibRdKafka.topic_partition_list_new((IntPtr)partitions.Count); if (list == IntPtr.Zero) { throw new Exception("Failed to create position list"); } foreach (var partition in partitions) { LibRdKafka.topic_partition_list_add(list, partition.Topic, partition.Partition); } ErrorCode err = LibRdKafka.position(handle, list); var result = GetTopicPartitionOffsetList(list); LibRdKafka.topic_partition_list_destroy(list); if (err != ErrorCode.NO_ERROR) { throw RdKafkaException.FromErr(err, "Failed to fetch position"); } return(result); }