Use erase directly

Added revoke() member function
This commit is contained in:
Alexander Damian
2020-02-09 21:17:09 -05:00
parent 68ae525eba
commit a4532ed336
2 changed files with 17 additions and 16 deletions

View File

@@ -102,10 +102,17 @@ public:
* belonging to the provided partition list and calls reset_state().
* To be used with static consumers.
*
* \param partitions Revoked topic partitions. If the partition list is empty
* all partitions will be revoked.
* \param partitions Revoked topic partitions.
*/
virtual void revoke(const TopicPartitionList& partitions = {});
virtual void revoke(const TopicPartitionList& partitions);
/**
* \brief Removes all partitions queues associated with the supplied partitions.
*
* This method contains a default implementation. It removes all the queues
* currently assigned and calls reset_state(). To be used with static consumers.
*/
virtual void revoke();
protected:
/**

View File

@@ -99,23 +99,17 @@ void PollStrategyBase::assign(TopicPartitionList& partitions) {
}
void PollStrategyBase::revoke(const TopicPartitionList& partitions) {
if (partitions.empty()) {
//revoke everything
partition_queues_.clear();
}
else {
for (const auto &partition : partitions) {
// get the queue associated with this partition
auto toppar_it = partition_queues_.find(partition);
if (toppar_it != partition_queues_.end()) {
// remove this queue from the list
partition_queues_.erase(toppar_it);
}
}
for (const auto &partition : partitions) {
partition_queues_.erase(partition);
}
reset_state();
}
void PollStrategyBase::revoke() {
partition_queues_.clear();
reset_state();
}
void PollStrategyBase::on_assignment(TopicPartitionList& partitions) {
assign(partitions);
// call original consumer callback if any