@@ -113,6 +113,24 @@ def initialize(event_ptr)
113113 end
114114 end
115115
116+ class DescribeConfigResult
117+ attr_reader :result_error , :error_string , :results , :results_count
118+
119+ def initialize ( event_ptr )
120+ @results = [ ]
121+ @result_error = Rdkafka ::Bindings . rd_kafka_event_error ( event_ptr )
122+ @error_string = Rdkafka ::Bindings . rd_kafka_event_error_string ( event_ptr )
123+
124+ if @result_error == 0
125+ acl_describe_result = Rdkafka ::Bindings . rd_kafka_event_DescribeConfigs_result ( event_ptr )
126+ # Get the number of matching acls
127+ pointer_to_size_t = FFI ::MemoryPointer . new ( :int32 )
128+ @results = Rdkafka ::Bindings . rd_kafka_DescribeConfigs_result_resources ( acl_describe_result , pointer_to_size_t )
129+ @results_count = pointer_to_size_t . read_int
130+ end
131+ end
132+ end
133+
116134 # FFI Function used for Create Topic and Delete Topic callbacks
117135 BackgroundEventCallbackFunction = FFI ::Function . new (
118136 :void , [ :pointer , :pointer , :pointer ]
@@ -123,20 +141,22 @@ def initialize(event_ptr)
123141 # @private
124142 class BackgroundEventCallback
125143 def self . call ( _ , event_ptr , _ )
126- event_type = Rdkafka ::Bindings . rd_kafka_event_type ( event_ptr )
127- if event_type == Rdkafka ::Bindings ::RD_KAFKA_EVENT_CREATETOPICS_RESULT
144+ case Rdkafka ::Bindings . rd_kafka_event_type ( event_ptr )
145+ when Rdkafka ::Bindings ::RD_KAFKA_EVENT_CREATETOPICS_RESULT
128146 process_create_topic ( event_ptr )
129- elsif event_type == Rdkafka ::Bindings ::RD_KAFKA_EVENT_DELETETOPICS_RESULT
147+ when Rdkafka ::Bindings ::RD_KAFKA_EVENT_DESCRIBECONFIGS_RESULT
148+ process_describe_configs ( event_ptr )
149+ when Rdkafka ::Bindings ::RD_KAFKA_EVENT_DELETETOPICS_RESULT
130150 process_delete_topic ( event_ptr )
131- elsif event_type == Rdkafka ::Bindings ::RD_KAFKA_ADMIN_OP_CREATEPARTITIONS_RESULT
151+ when Rdkafka ::Bindings ::RD_KAFKA_ADMIN_OP_CREATEPARTITIONS_RESULT
132152 process_create_partitions ( event_ptr )
133- elsif event_type == Rdkafka ::Bindings ::RD_KAFKA_EVENT_CREATEACLS_RESULT
153+ when Rdkafka ::Bindings ::RD_KAFKA_EVENT_CREATEACLS_RESULT
134154 process_create_acl ( event_ptr )
135- elsif event_type == Rdkafka ::Bindings ::RD_KAFKA_EVENT_DELETEACLS_RESULT
155+ when Rdkafka ::Bindings ::RD_KAFKA_EVENT_DELETEACLS_RESULT
136156 process_delete_acl ( event_ptr )
137- elsif event_type == Rdkafka ::Bindings ::RD_KAFKA_EVENT_DESCRIBEACLS_RESULT
157+ when Rdkafka ::Bindings ::RD_KAFKA_EVENT_DESCRIBEACLS_RESULT
138158 process_describe_acl ( event_ptr )
139- elsif event_type == Rdkafka ::Bindings ::RD_KAFKA_EVENT_DELETEGROUPS_RESULT
159+ when Rdkafka ::Bindings ::RD_KAFKA_EVENT_DELETEGROUPS_RESULT
140160 process_delete_groups ( event_ptr )
141161 end
142162 end
@@ -161,6 +181,24 @@ def self.process_create_topic(event_ptr)
161181 end
162182 end
163183
184+ def self . process_describe_configs ( event_ptr )
185+ describe_configs = DescribeConfigResult . new ( event_ptr )
186+ describe_configs_handle_ptr = Rdkafka ::Bindings . rd_kafka_event_opaque ( event_ptr )
187+
188+ if describe_configs_handle = Rdkafka ::Admin ::DescribeConfigsHandle . remove ( describe_configs_handle_ptr . address )
189+ describe_configs_handle [ :response ] = describe_configs . result_error
190+ describe_configs_handle [ :response_string ] = describe_configs . error_string
191+ describe_configs_handle [ :pending ] = false
192+
193+ if describe_configs . result_error == 0
194+ describe_configs_handle [ :config_entries ] = describe_configs . results
195+ describe_configs_handle [ :entry_count ] = describe_configs . results_count
196+ end
197+
198+ describe_configs_handle . unlock
199+ end
200+ end
201+
164202 def self . process_delete_groups ( event_ptr )
165203 delete_groups_result = Rdkafka ::Bindings . rd_kafka_event_DeleteGroups_result ( event_ptr )
166204
@@ -263,7 +301,7 @@ def self.process_describe_acl(event_ptr)
263301 describe_acl_handle [ :response_string ] = describe_acl . error_string
264302
265303 if describe_acl . result_error == 0
266- describe_acl_handle [ :acls ] = describe_acl . matching_acls
304+ describe_acl_handle [ :acls ] = describe_acl . matching_acls
267305 describe_acl_handle [ :acls_count ] = describe_acl . matching_acls_count
268306 end
269307
0 commit comments