Class: Rdkafka::Callbacks::DeleteAclHandler

Inherits:
BaseHandler
  • Object
show all
Defined in:
lib/rdkafka/callbacks/delete_acl_handler.rb

Overview

Handles RD_KAFKA_EVENT_DELETEACLS_RESULT events

Class Method Summary collapse

Class Method Details

.call(event_ptr) ⇒ void

This method returns an undefined value.

Resolves the delete-ACL handle from its result event

Parameters:

  • event_ptr (FFI::Pointer)

    pointer to the event



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/rdkafka/callbacks/delete_acl_handler.rb', line 12

def call(event_ptr)
  delete_acls_result = Rdkafka::Bindings.rd_kafka_event_DeleteAcls_result(event_ptr)

  # Get the number of acl results
  pointer_to_size_t = FFI::MemoryPointer.new(:size_t)
  delete_acl_result_responses = Rdkafka::Bindings.rd_kafka_DeleteAcls_result_responses(delete_acls_result, pointer_to_size_t)
  delete_acl_results = DeleteAclResult.delete_acl_results_from_array(pointer_to_size_t.read_int, delete_acl_result_responses)
  delete_acl_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)

  if delete_acl_handle = Rdkafka::Admin::DeleteAclHandle.remove(delete_acl_handle_ptr.address)
    unless resolve_operation_error(event_ptr, delete_acl_handle)
      delete_acl_handle[:response] = delete_acl_results[0].result_error
      delete_acl_handle.broker_message = read_event_string(delete_acl_results[0].error_string)

      delete_acl_handle.result = if delete_acl_results[0].result_error == Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
        Rdkafka::Admin::DeleteAclReport.new(
          matching_acls: delete_acl_results[0].matching_acls,
          matching_acls_count: delete_acl_results[0].matching_acls_count
        )
      else
        Rdkafka::Admin::DeleteAclReport.new(matching_acls: FFI::Pointer::NULL, matching_acls_count: 0)
      end

      delete_acl_handle.unlock
    end
  end
end