Class: Rdkafka::Callbacks::DescribeConfigsHandler

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

Overview

Handles RD_KAFKA_EVENT_DESCRIBECONFIGS_RESULT events

Class Method Summary collapse

Class Method Details

.call(event_ptr) ⇒ void

This method returns an undefined value.

Resolves the describe-configs 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/describe_configs_handler.rb', line 12

def call(event_ptr)
  describe_configs = DescribeConfigsResult.new(event_ptr)
  describe_configs_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)

  if describe_configs_handle = Rdkafka::Admin::DescribeConfigsHandle.remove(describe_configs_handle_ptr.address)
    describe_configs_handle[:response] = describe_configs.result_error
    describe_configs_handle.broker_message = read_event_string(describe_configs.error_string)

    # Parsing can raise on per-resource errors. The exception is captured and re-raised on
    # the waiting thread, since an exception leaving this callback would unwind through
    # librdkafka native frames.
    describe_configs_handle.result = begin
      if describe_configs.result_error == Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
        Rdkafka::Admin::DescribeConfigsReport.new(
          config_entries: describe_configs.results,
          entry_count: describe_configs.results_count
        )
      else
        Rdkafka::Admin::DescribeConfigsReport.new(config_entries: FFI::Pointer::NULL, entry_count: 0)
      end
    rescue => e
      e
    end

    describe_configs_handle.unlock
  end
end