22
33use crate :: error:: { IsError , KafkaError , RDKafkaError } ;
44use crate :: group_description:: ConsumerGroupState :: Invalid ;
5+ use crate :: util:: cstr_to_owned;
56use crate :: TopicPartitionList ;
67use rdkafka_sys as rdsys;
78use rdkafka_sys:: types:: * ;
8- use std:: ffi:: CStr ;
99
1010/// Result of the `AdminClient::describe_consumer_groups` method.
1111pub type ConsumerGroupDescriptionResult = Result < ConsumerGroupDescription , ( String , KafkaError ) > ;
@@ -66,9 +66,7 @@ impl ConsumerGroupDescription {
6666 pub ( crate ) unsafe fn from_ptr (
6767 ptr : * const RDKafkaConsumerGroupDescription ,
6868 ) -> ConsumerGroupDescriptionResult {
69- let group_id = CStr :: from_ptr ( rdsys:: rd_kafka_ConsumerGroupDescription_group_id ( ptr) )
70- . to_string_lossy ( )
71- . into_owned ( ) ;
69+ let group_id = cstr_to_owned ( rdsys:: rd_kafka_ConsumerGroupDescription_group_id ( ptr) ) ;
7270
7371 let kafka_error =
7472 RDKafkaError :: from_ptr ( rdsys:: rd_kafka_ConsumerGroupDescription_error ( ptr) as * mut _ ) ;
@@ -78,11 +76,9 @@ impl ConsumerGroupDescription {
7876 let is_simple_consumer_group: bool =
7977 rdsys:: rd_kafka_ConsumerGroupDescription_is_simple_consumer_group ( ptr) != 0 ;
8078
81- let partition_assignor = CStr :: from_ptr (
79+ let partition_assignor = cstr_to_owned (
8280 rdsys:: rd_kafka_ConsumerGroupDescription_partition_assignor ( ptr) ,
83- )
84- . to_string_lossy ( )
85- . into_owned ( ) ;
81+ ) ;
8682
8783 let mut acl_count = 0 ;
8884 let acl_list =
@@ -257,15 +253,13 @@ pub struct Node {
257253impl Node {
258254 pub ( crate ) unsafe fn from_ptr ( ptr : * const RDKafkaNode ) -> Node {
259255 let id = rdsys:: rd_kafka_Node_id ( ptr) ;
260- let host = CStr :: from_ptr ( rdsys:: rd_kafka_Node_host ( ptr) )
261- . to_string_lossy ( )
262- . into_owned ( ) ;
256+ let host = cstr_to_owned ( rdsys:: rd_kafka_Node_host ( ptr) ) ;
263257 let port = rdsys:: rd_kafka_Node_port ( ptr) ;
264258 let rack_ptr = rdsys:: rd_kafka_Node_rack ( ptr) ;
265259 let rack = if rack_ptr. is_null ( ) {
266260 None
267261 } else {
268- Some ( CStr :: from_ptr ( rack_ptr) . to_string_lossy ( ) . into_owned ( ) )
262+ Some ( cstr_to_owned ( rack_ptr) )
269263 } ;
270264 Node {
271265 id,
@@ -341,25 +335,15 @@ impl MemberDescription {
341335 pub ( crate ) unsafe fn from_ptr (
342336 ptr : * const RDKafkaMemberDescription ,
343337 ) -> MemberDescription {
344- let client_id = CStr :: from_ptr ( rdsys:: rd_kafka_MemberDescription_client_id ( ptr) )
345- . to_string_lossy ( )
346- . into_owned ( ) ;
338+ let client_id = cstr_to_owned ( rdsys:: rd_kafka_MemberDescription_client_id ( ptr) ) ;
347339 let group_instance_id_ptr = rdsys:: rd_kafka_MemberDescription_group_instance_id ( ptr) ;
348340 let group_instance_id = if group_instance_id_ptr. is_null ( ) {
349341 None
350342 } else {
351- Some (
352- CStr :: from_ptr ( group_instance_id_ptr)
353- . to_string_lossy ( )
354- . into_owned ( ) ,
355- )
343+ Some ( cstr_to_owned ( group_instance_id_ptr) )
356344 } ;
357- let consumer_id = CStr :: from_ptr ( rdsys:: rd_kafka_MemberDescription_consumer_id ( ptr) )
358- . to_string_lossy ( )
359- . into_owned ( ) ;
360- let host = CStr :: from_ptr ( rdsys:: rd_kafka_MemberDescription_host ( ptr) )
361- . to_string_lossy ( )
362- . into_owned ( ) ;
345+ let consumer_id = cstr_to_owned ( rdsys:: rd_kafka_MemberDescription_consumer_id ( ptr) ) ;
346+ let host = cstr_to_owned ( rdsys:: rd_kafka_MemberDescription_host ( ptr) ) ;
363347 let assignment_ptr = rdsys:: rd_kafka_MemberDescription_assignment ( ptr) ;
364348 let assignment = if assignment_ptr. is_null ( ) {
365349 None
0 commit comments