Class: Rdkafka::Consumer::TopicPartitionList
- Inherits:
-
Object
- Object
- Rdkafka::Consumer::TopicPartitionList
- Defined in:
- lib/rdkafka/consumer/topic_partition_list.rb
Overview
A list of topics with their partition information
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#add_topic(topic, partitions = nil) ⇒ nil
Add a topic with optionally partitions to the list.
-
#add_topic_and_partitions_with_offsets(topic, partitions_with_offsets) ⇒ nil
Add a topic with partitions and offsets set to the list Calling this method multiple times for the same topic will overwrite the previous configuraton.
-
#count ⇒ Integer
Number of items in the list.
-
#empty? ⇒ Boolean
Whether this list is empty.
-
#initialize(data = nil) ⇒ TopicPartitionList
constructor
Create a topic partition list.
-
#to_h ⇒ Hash{String => Array<Partition>,nil}
Return a
Hash
with the topics as keys and and an array of partition information as the value if present. -
#to_s ⇒ String
Human readable representation of this list.
Constructor Details
#initialize(data = nil) ⇒ TopicPartitionList
Create a topic partition list.
12 13 14 |
# File 'lib/rdkafka/consumer/topic_partition_list.rb', line 12 def initialize(data=nil) @data = data || {} end |
Instance Method Details
#==(other) ⇒ Object
88 89 90 |
# File 'lib/rdkafka/consumer/topic_partition_list.rb', line 88 def ==(other) self.to_h == other.to_h end |
#add_topic(topic, partitions = nil) ⇒ nil
Add a topic with optionally partitions to the list. Calling this method multiple times for the same topic will overwrite the previous configuraton.
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rdkafka/consumer/topic_partition_list.rb', line 53 def add_topic(topic, partitions=nil) if partitions.nil? @data[topic.to_s] = nil else if partitions.is_a? Integer partitions = (0..partitions - 1) end @data[topic.to_s] = partitions.map { |p| Partition.new(p, nil, 0) } end end |
#add_topic_and_partitions_with_offsets(topic, partitions_with_offsets) ⇒ nil
Add a topic with partitions and offsets set to the list Calling this method multiple times for the same topic will overwrite the previous configuraton.
71 72 73 |
# File 'lib/rdkafka/consumer/topic_partition_list.rb', line 71 def add_topic_and_partitions_with_offsets(topic, partitions_with_offsets) @data[topic.to_s] = partitions_with_offsets.map { |p, o| Partition.new(p, o) } end |
#count ⇒ Integer
Number of items in the list
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/rdkafka/consumer/topic_partition_list.rb', line 18 def count i = 0 @data.each do |_topic, partitions| if partitions i += partitions.count else i+= 1 end end i end |
#empty? ⇒ Boolean
Whether this list is empty
32 33 34 |
# File 'lib/rdkafka/consumer/topic_partition_list.rb', line 32 def empty? @data.empty? end |
#to_h ⇒ Hash{String => Array<Partition>,nil}
Return a Hash
with the topics as keys and and an array of partition information as the value if present.
78 79 80 |
# File 'lib/rdkafka/consumer/topic_partition_list.rb', line 78 def to_h @data end |
#to_s ⇒ String
Human readable representation of this list.
84 85 86 |
# File 'lib/rdkafka/consumer/topic_partition_list.rb', line 84 def to_s "<TopicPartitionList: #{to_h}>" end |