11
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/kafka/ffi/admin/result.rb', line 11
def get_results(event)
count = ::FFI::MemoryPointer.new(:size_t)
klass, results =
case event.type
when :create_topics
[
TopicResult,
::Kafka::FFI.rd_kafka_CreateTopics_result_topics(event, count),
]
when :delete_topics
[
TopicResult,
::Kafka::FFI.rd_kafka_DeleteTopics_result_topics(event, count),
]
when :create_partitions
[
TopicResult,
::Kafka::FFI.rd_kafka_CreateTopics_result_topics(event, count),
]
when :alter_configs
[
ConfigResource,
::Kafka::FFI.rd_kafka_AlterConfigs_result_resources(event, count),
]
when :describe_configs
[
ConfigResource,
::Kafka::FFI.rd_kafka_DescribeConfigs_result_resources(event, count),
]
else
raise ArgumentError, "unable to map #{event.class} to result type"
end
if results.null?
return []
end
results = results.read_array_of_pointer(count.read(:size_t))
results.map! { |p| klass.from_native(p, nil) }
ensure
count.free
end
|