rdkafka 0.22.2 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +101 -3
- data/README.md +21 -14
- data/Rakefile +21 -21
- data/bin/verify_kafka_warnings +39 -0
- data/dist/{librdkafka-2.8.0.tar.gz → librdkafka-2.14.2.tar.gz} +0 -0
- data/docker-compose-ssl.yml +35 -0
- data/docker-compose.yml +2 -2
- data/ext/Rakefile +27 -27
- data/lib/rdkafka/abstract_handle.rb +54 -7
- data/lib/rdkafka/admin/acl_binding_result.rb +5 -5
- data/lib/rdkafka/admin/config_binding_result.rb +2 -2
- data/lib/rdkafka/admin/config_resource_binding_result.rb +1 -0
- data/lib/rdkafka/admin/create_acl_handle.rb +10 -6
- data/lib/rdkafka/admin/create_acl_report.rb +3 -2
- data/lib/rdkafka/admin/create_partitions_handle.rb +8 -7
- data/lib/rdkafka/admin/create_partitions_report.rb +1 -0
- data/lib/rdkafka/admin/create_topic_handle.rb +8 -7
- data/lib/rdkafka/admin/create_topic_report.rb +3 -0
- data/lib/rdkafka/admin/delete_acl_handle.rb +9 -8
- data/lib/rdkafka/admin/delete_acl_report.rb +5 -3
- data/lib/rdkafka/admin/delete_groups_handle.rb +10 -7
- data/lib/rdkafka/admin/delete_groups_report.rb +3 -0
- data/lib/rdkafka/admin/delete_topic_handle.rb +8 -7
- data/lib/rdkafka/admin/delete_topic_report.rb +3 -0
- data/lib/rdkafka/admin/describe_acl_handle.rb +9 -8
- data/lib/rdkafka/admin/describe_acl_report.rb +5 -3
- data/lib/rdkafka/admin/describe_configs_handle.rb +7 -10
- data/lib/rdkafka/admin/describe_configs_report.rb +8 -6
- data/lib/rdkafka/admin/incremental_alter_configs_handle.rb +7 -10
- data/lib/rdkafka/admin/incremental_alter_configs_report.rb +8 -6
- data/lib/rdkafka/admin/list_offsets_handle.rb +31 -0
- data/lib/rdkafka/admin/list_offsets_report.rb +51 -0
- data/lib/rdkafka/admin.rb +357 -159
- data/lib/rdkafka/bindings.rb +205 -111
- data/lib/rdkafka/callbacks/base_handler.rb +62 -0
- data/lib/rdkafka/callbacks/create_acl_handler.rb +37 -0
- data/lib/rdkafka/callbacks/create_partitions_handler.rb +37 -0
- data/lib/rdkafka/callbacks/create_topic_handler.rb +37 -0
- data/lib/rdkafka/callbacks/delete_acl_handler.rb +42 -0
- data/lib/rdkafka/callbacks/delete_groups_handler.rb +37 -0
- data/lib/rdkafka/callbacks/delete_topic_handler.rb +37 -0
- data/lib/rdkafka/callbacks/describe_acl_handler.rb +35 -0
- data/lib/rdkafka/callbacks/describe_configs_handler.rb +42 -0
- data/lib/rdkafka/callbacks/incremental_alter_configs_handler.rb +42 -0
- data/lib/rdkafka/callbacks/list_offsets_handler.rb +42 -0
- data/lib/rdkafka/callbacks.rb +125 -216
- data/lib/rdkafka/config.rb +126 -66
- data/lib/rdkafka/consumer/headers.rb +22 -7
- data/lib/rdkafka/consumer/message.rb +12 -11
- data/lib/rdkafka/consumer/partition.rb +15 -4
- data/lib/rdkafka/consumer/topic_partition_list.rb +64 -38
- data/lib/rdkafka/consumer.rb +513 -59
- data/lib/rdkafka/defaults.rb +125 -0
- data/lib/rdkafka/error.rb +40 -14
- data/lib/rdkafka/helpers/metadata.rb +29 -0
- data/lib/rdkafka/helpers/oauth.rb +45 -13
- data/lib/rdkafka/helpers/time.rb +5 -0
- data/lib/rdkafka/metadata.rb +128 -37
- data/lib/rdkafka/native_kafka.rb +91 -8
- data/lib/rdkafka/producer/delivery_handle.rb +6 -6
- data/lib/rdkafka/producer/delivery_report.rb +10 -6
- data/lib/rdkafka/producer/partitions_count_cache.rb +51 -55
- data/lib/rdkafka/producer.rb +193 -95
- data/lib/rdkafka/version.rb +6 -3
- data/lib/rdkafka.rb +15 -0
- data/package-lock.json +331 -0
- data/package.json +9 -0
- data/rdkafka.gemspec +58 -36
- data/renovate.json +39 -23
- metadata +39 -125
- data/.github/CODEOWNERS +0 -3
- data/.github/FUNDING.yml +0 -1
- data/.github/workflows/ci_linux_x86_64_gnu.yml +0 -271
- data/.github/workflows/ci_linux_x86_64_musl.yml +0 -194
- data/.github/workflows/ci_macos_arm64.yml +0 -284
- data/.github/workflows/push_linux_x86_64_gnu.yml +0 -65
- data/.github/workflows/push_linux_x86_64_musl.yml +0 -79
- data/.github/workflows/push_macos_arm64.yml +0 -54
- data/.github/workflows/push_ruby.yml +0 -37
- data/.github/workflows/verify-action-pins.yml +0 -16
- data/.gitignore +0 -14
- data/.rspec +0 -2
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.yardopts +0 -2
- data/Gemfile +0 -5
- data/ext/README.md +0 -19
- data/ext/build_common.sh +0 -361
- data/ext/build_linux_x86_64_gnu.sh +0 -306
- data/ext/build_linux_x86_64_musl.sh +0 -763
- data/ext/build_macos_arm64.sh +0 -550
- data/spec/rdkafka/abstract_handle_spec.rb +0 -117
- data/spec/rdkafka/admin/create_acl_handle_spec.rb +0 -56
- data/spec/rdkafka/admin/create_acl_report_spec.rb +0 -18
- data/spec/rdkafka/admin/create_topic_handle_spec.rb +0 -52
- data/spec/rdkafka/admin/create_topic_report_spec.rb +0 -16
- data/spec/rdkafka/admin/delete_acl_handle_spec.rb +0 -85
- data/spec/rdkafka/admin/delete_acl_report_spec.rb +0 -72
- data/spec/rdkafka/admin/delete_topic_handle_spec.rb +0 -52
- data/spec/rdkafka/admin/delete_topic_report_spec.rb +0 -16
- data/spec/rdkafka/admin/describe_acl_handle_spec.rb +0 -85
- data/spec/rdkafka/admin/describe_acl_report_spec.rb +0 -73
- data/spec/rdkafka/admin_spec.rb +0 -971
- data/spec/rdkafka/bindings_spec.rb +0 -199
- data/spec/rdkafka/callbacks_spec.rb +0 -20
- data/spec/rdkafka/config_spec.rb +0 -258
- data/spec/rdkafka/consumer/headers_spec.rb +0 -73
- data/spec/rdkafka/consumer/message_spec.rb +0 -139
- data/spec/rdkafka/consumer/partition_spec.rb +0 -57
- data/spec/rdkafka/consumer/topic_partition_list_spec.rb +0 -248
- data/spec/rdkafka/consumer_spec.rb +0 -1274
- data/spec/rdkafka/error_spec.rb +0 -89
- data/spec/rdkafka/metadata_spec.rb +0 -79
- data/spec/rdkafka/native_kafka_spec.rb +0 -130
- data/spec/rdkafka/producer/delivery_handle_spec.rb +0 -45
- data/spec/rdkafka/producer/delivery_report_spec.rb +0 -25
- data/spec/rdkafka/producer/partitions_count_cache_spec.rb +0 -359
- data/spec/rdkafka/producer_spec.rb +0 -1345
- data/spec/spec_helper.rb +0 -195
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_ADMIN_OP_CREATEPARTITIONS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class CreatePartitionsHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the create-partitions handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
create_partitionss_result = Rdkafka::Bindings.rd_kafka_event_CreatePartitions_result(event_ptr)
|
|
14
|
+
|
|
15
|
+
# Get the number of create topic results
|
|
16
|
+
pointer_to_size_t = FFI::MemoryPointer.new(:size_t)
|
|
17
|
+
create_partitions_result_array = Rdkafka::Bindings.rd_kafka_CreatePartitions_result_topics(create_partitionss_result, pointer_to_size_t)
|
|
18
|
+
create_partitions_results = TopicResult.create_topic_results_from_array(pointer_to_size_t.read_int, create_partitions_result_array)
|
|
19
|
+
create_partitions_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
20
|
+
|
|
21
|
+
if create_partitions_handle = Rdkafka::Admin::CreatePartitionsHandle.remove(create_partitions_handle_ptr.address)
|
|
22
|
+
unless resolve_operation_error(event_ptr, create_partitions_handle)
|
|
23
|
+
create_partitions_handle[:response] = create_partitions_results[0].result_error
|
|
24
|
+
create_partitions_handle.result = Rdkafka::Admin::CreatePartitionsReport.new(
|
|
25
|
+
create_partitions_results[0].error_string,
|
|
26
|
+
create_partitions_results[0].result_name
|
|
27
|
+
)
|
|
28
|
+
create_partitions_handle.broker_message = create_partitions_handle.result.error_string
|
|
29
|
+
|
|
30
|
+
create_partitions_handle.unlock
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_CREATETOPICS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class CreateTopicHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the create-topic handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
create_topics_result = Rdkafka::Bindings.rd_kafka_event_CreateTopics_result(event_ptr)
|
|
14
|
+
|
|
15
|
+
# Get the number of create topic results
|
|
16
|
+
pointer_to_size_t = FFI::MemoryPointer.new(:size_t)
|
|
17
|
+
create_topic_result_array = Rdkafka::Bindings.rd_kafka_CreateTopics_result_topics(create_topics_result, pointer_to_size_t)
|
|
18
|
+
create_topic_results = TopicResult.create_topic_results_from_array(pointer_to_size_t.read_int, create_topic_result_array)
|
|
19
|
+
create_topic_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
20
|
+
|
|
21
|
+
if create_topic_handle = Rdkafka::Admin::CreateTopicHandle.remove(create_topic_handle_ptr.address)
|
|
22
|
+
unless resolve_operation_error(event_ptr, create_topic_handle)
|
|
23
|
+
create_topic_handle[:response] = create_topic_results[0].result_error
|
|
24
|
+
create_topic_handle.result = Rdkafka::Admin::CreateTopicReport.new(
|
|
25
|
+
create_topic_results[0].error_string,
|
|
26
|
+
create_topic_results[0].result_name
|
|
27
|
+
)
|
|
28
|
+
create_topic_handle.broker_message = create_topic_handle.result.error_string
|
|
29
|
+
|
|
30
|
+
create_topic_handle.unlock
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_DELETEACLS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class DeleteAclHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the delete-ACL handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
delete_acls_result = Rdkafka::Bindings.rd_kafka_event_DeleteAcls_result(event_ptr)
|
|
14
|
+
|
|
15
|
+
# Get the number of acl results
|
|
16
|
+
pointer_to_size_t = FFI::MemoryPointer.new(:size_t)
|
|
17
|
+
delete_acl_result_responses = Rdkafka::Bindings.rd_kafka_DeleteAcls_result_responses(delete_acls_result, pointer_to_size_t)
|
|
18
|
+
delete_acl_results = DeleteAclResult.delete_acl_results_from_array(pointer_to_size_t.read_int, delete_acl_result_responses)
|
|
19
|
+
delete_acl_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
20
|
+
|
|
21
|
+
if delete_acl_handle = Rdkafka::Admin::DeleteAclHandle.remove(delete_acl_handle_ptr.address)
|
|
22
|
+
unless resolve_operation_error(event_ptr, delete_acl_handle)
|
|
23
|
+
delete_acl_handle[:response] = delete_acl_results[0].result_error
|
|
24
|
+
delete_acl_handle.broker_message = read_event_string(delete_acl_results[0].error_string)
|
|
25
|
+
|
|
26
|
+
delete_acl_handle.result = if delete_acl_results[0].result_error == Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
|
|
27
|
+
Rdkafka::Admin::DeleteAclReport.new(
|
|
28
|
+
matching_acls: delete_acl_results[0].matching_acls,
|
|
29
|
+
matching_acls_count: delete_acl_results[0].matching_acls_count
|
|
30
|
+
)
|
|
31
|
+
else
|
|
32
|
+
Rdkafka::Admin::DeleteAclReport.new(matching_acls: FFI::Pointer::NULL, matching_acls_count: 0)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
delete_acl_handle.unlock
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_DELETEGROUPS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class DeleteGroupsHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the delete-groups handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
delete_groups_result = Rdkafka::Bindings.rd_kafka_event_DeleteGroups_result(event_ptr)
|
|
14
|
+
|
|
15
|
+
# Get the number of delete group results
|
|
16
|
+
pointer_to_size_t = FFI::MemoryPointer.new(:size_t)
|
|
17
|
+
delete_group_result_array = Rdkafka::Bindings.rd_kafka_DeleteGroups_result_groups(delete_groups_result, pointer_to_size_t)
|
|
18
|
+
delete_group_results = GroupResult.create_group_results_from_array(pointer_to_size_t.read_int, delete_group_result_array)
|
|
19
|
+
delete_group_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
20
|
+
|
|
21
|
+
if (delete_group_handle = Rdkafka::Admin::DeleteGroupsHandle.remove(delete_group_handle_ptr.address))
|
|
22
|
+
unless resolve_operation_error(event_ptr, delete_group_handle)
|
|
23
|
+
delete_group_handle[:response] = delete_group_results[0].result_error
|
|
24
|
+
delete_group_handle.result = Rdkafka::Admin::DeleteGroupsReport.new(
|
|
25
|
+
delete_group_results[0].error_string,
|
|
26
|
+
delete_group_results[0].result_name
|
|
27
|
+
)
|
|
28
|
+
delete_group_handle.broker_message = delete_group_handle.result.error_string
|
|
29
|
+
|
|
30
|
+
delete_group_handle.unlock
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_DELETETOPICS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class DeleteTopicHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the delete-topic handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
delete_topics_result = Rdkafka::Bindings.rd_kafka_event_DeleteTopics_result(event_ptr)
|
|
14
|
+
|
|
15
|
+
# Get the number of topic results
|
|
16
|
+
pointer_to_size_t = FFI::MemoryPointer.new(:size_t)
|
|
17
|
+
delete_topic_result_array = Rdkafka::Bindings.rd_kafka_DeleteTopics_result_topics(delete_topics_result, pointer_to_size_t)
|
|
18
|
+
delete_topic_results = TopicResult.create_topic_results_from_array(pointer_to_size_t.read_int, delete_topic_result_array)
|
|
19
|
+
delete_topic_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
20
|
+
|
|
21
|
+
if delete_topic_handle = Rdkafka::Admin::DeleteTopicHandle.remove(delete_topic_handle_ptr.address)
|
|
22
|
+
unless resolve_operation_error(event_ptr, delete_topic_handle)
|
|
23
|
+
delete_topic_handle[:response] = delete_topic_results[0].result_error
|
|
24
|
+
delete_topic_handle.result = Rdkafka::Admin::DeleteTopicReport.new(
|
|
25
|
+
delete_topic_results[0].error_string,
|
|
26
|
+
delete_topic_results[0].result_name
|
|
27
|
+
)
|
|
28
|
+
delete_topic_handle.broker_message = delete_topic_handle.result.error_string
|
|
29
|
+
|
|
30
|
+
delete_topic_handle.unlock
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_DESCRIBEACLS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class DescribeAclHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the describe-ACL handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
describe_acl = DescribeAclResult.new(event_ptr)
|
|
14
|
+
describe_acl_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
15
|
+
|
|
16
|
+
if describe_acl_handle = Rdkafka::Admin::DescribeAclHandle.remove(describe_acl_handle_ptr.address)
|
|
17
|
+
describe_acl_handle[:response] = describe_acl.result_error
|
|
18
|
+
describe_acl_handle.broker_message = read_event_string(describe_acl.error_string)
|
|
19
|
+
|
|
20
|
+
describe_acl_handle.result = if describe_acl.result_error == Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
|
|
21
|
+
Rdkafka::Admin::DescribeAclReport.new(
|
|
22
|
+
acls: describe_acl.matching_acls,
|
|
23
|
+
acls_count: describe_acl.matching_acls_count
|
|
24
|
+
)
|
|
25
|
+
else
|
|
26
|
+
Rdkafka::Admin::DescribeAclReport.new(acls: FFI::Pointer::NULL, acls_count: 0)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe_acl_handle.unlock
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_DESCRIBECONFIGS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class DescribeConfigsHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the describe-configs handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
describe_configs = DescribeConfigsResult.new(event_ptr)
|
|
14
|
+
describe_configs_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
15
|
+
|
|
16
|
+
if describe_configs_handle = Rdkafka::Admin::DescribeConfigsHandle.remove(describe_configs_handle_ptr.address)
|
|
17
|
+
describe_configs_handle[:response] = describe_configs.result_error
|
|
18
|
+
describe_configs_handle.broker_message = read_event_string(describe_configs.error_string)
|
|
19
|
+
|
|
20
|
+
# Parsing can raise on per-resource errors. The exception is captured and re-raised on
|
|
21
|
+
# the waiting thread, since an exception leaving this callback would unwind through
|
|
22
|
+
# librdkafka native frames.
|
|
23
|
+
describe_configs_handle.result = begin
|
|
24
|
+
if describe_configs.result_error == Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
|
|
25
|
+
Rdkafka::Admin::DescribeConfigsReport.new(
|
|
26
|
+
config_entries: describe_configs.results,
|
|
27
|
+
entry_count: describe_configs.results_count
|
|
28
|
+
)
|
|
29
|
+
else
|
|
30
|
+
Rdkafka::Admin::DescribeConfigsReport.new(config_entries: FFI::Pointer::NULL, entry_count: 0)
|
|
31
|
+
end
|
|
32
|
+
rescue => e
|
|
33
|
+
e
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe_configs_handle.unlock
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_INCREMENTALALTERCONFIGS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class IncrementalAlterConfigsHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the incremental-alter-configs handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
incremental_alter = IncrementalAlterConfigsResult.new(event_ptr)
|
|
14
|
+
incremental_alter_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
15
|
+
|
|
16
|
+
if incremental_alter_handle = Rdkafka::Admin::IncrementalAlterConfigsHandle.remove(incremental_alter_handle_ptr.address)
|
|
17
|
+
incremental_alter_handle[:response] = incremental_alter.result_error
|
|
18
|
+
incremental_alter_handle.broker_message = read_event_string(incremental_alter.error_string)
|
|
19
|
+
|
|
20
|
+
# Parsing can raise on per-resource errors. The exception is captured and re-raised on
|
|
21
|
+
# the waiting thread, since an exception leaving this callback would unwind through
|
|
22
|
+
# librdkafka native frames.
|
|
23
|
+
incremental_alter_handle.result = begin
|
|
24
|
+
if incremental_alter.result_error == Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
|
|
25
|
+
Rdkafka::Admin::IncrementalAlterConfigsReport.new(
|
|
26
|
+
config_entries: incremental_alter.results,
|
|
27
|
+
entry_count: incremental_alter.results_count
|
|
28
|
+
)
|
|
29
|
+
else
|
|
30
|
+
Rdkafka::Admin::IncrementalAlterConfigsReport.new(config_entries: FFI::Pointer::NULL, entry_count: 0)
|
|
31
|
+
end
|
|
32
|
+
rescue => e
|
|
33
|
+
e
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
incremental_alter_handle.unlock
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rdkafka
|
|
4
|
+
module Callbacks
|
|
5
|
+
# Handles `RD_KAFKA_EVENT_LISTOFFSETS_RESULT` events
|
|
6
|
+
# @private
|
|
7
|
+
class ListOffsetsHandler < BaseHandler
|
|
8
|
+
class << self
|
|
9
|
+
# Resolves the list-offsets handle from its result event
|
|
10
|
+
# @param event_ptr [FFI::Pointer] pointer to the event
|
|
11
|
+
# @return [void]
|
|
12
|
+
def call(event_ptr)
|
|
13
|
+
list_offsets = ListOffsetsResult.new(event_ptr)
|
|
14
|
+
list_offsets_handle_ptr = Rdkafka::Bindings.rd_kafka_event_opaque(event_ptr)
|
|
15
|
+
|
|
16
|
+
if list_offsets_handle = Rdkafka::Admin::ListOffsetsHandle.remove(list_offsets_handle_ptr.address)
|
|
17
|
+
list_offsets_handle[:response] = list_offsets.result_error
|
|
18
|
+
list_offsets_handle.broker_message = read_event_string(list_offsets.error_string)
|
|
19
|
+
|
|
20
|
+
# Parsing can raise on per-partition errors. The exception is captured and re-raised
|
|
21
|
+
# on the waiting thread, since an exception leaving this callback would unwind through
|
|
22
|
+
# librdkafka native frames.
|
|
23
|
+
list_offsets_handle.result = begin
|
|
24
|
+
if list_offsets.result_error == Rdkafka::Bindings::RD_KAFKA_RESP_ERR_NO_ERROR
|
|
25
|
+
Rdkafka::Admin::ListOffsetsReport.new(
|
|
26
|
+
result_infos: list_offsets.result_infos,
|
|
27
|
+
result_count: list_offsets.result_count
|
|
28
|
+
)
|
|
29
|
+
else
|
|
30
|
+
Rdkafka::Admin::ListOffsetsReport.new(result_infos: FFI::Pointer::NULL, result_count: 0)
|
|
31
|
+
end
|
|
32
|
+
rescue => e
|
|
33
|
+
e
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
list_offsets_handle.unlock
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|