Skip to content

Commit b9e5171

Browse files
committed
std::remove_if
1 parent 08296ec commit b9e5171

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

examples/server/server.cpp

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,18 +1551,11 @@ struct server_queue {
15511551
private:
15521552
void cleanup_pending_task(int id_task) {
15531553
// no need lock because this is called exclusively by post()
1554-
for (size_t i = 0; i < queue_tasks.size(); i++) {
1555-
if (queue_tasks[i].id == id_task) {
1556-
queue_tasks.erase(queue_tasks.begin() + i);
1557-
break;
1558-
}
1559-
}
1560-
for (size_t i = 0; i < queue_tasks_deferred.size(); i++) {
1561-
if (queue_tasks_deferred[i].id == id_task) {
1562-
queue_tasks_deferred.erase(queue_tasks_deferred.begin() + i);
1563-
break;
1564-
}
1565-
}
1554+
auto rm_func = [id_task](const server_task & task) {
1555+
return task.id_target == id_task;
1556+
};
1557+
std::remove_if(queue_tasks.begin(), queue_tasks.end(), rm_func);
1558+
std::remove_if(queue_tasks_deferred.begin(), queue_tasks_deferred.end(), rm_func);
15661559
}
15671560
};
15681561

@@ -1600,12 +1593,13 @@ struct server_response {
16001593
std::unique_lock<std::mutex> lock(mutex_results);
16011594
waiting_task_ids.erase(id_task);
16021595
// make sure to clean up all pending results
1603-
for (size_t i = 0; i < queue_results.size(); i++) {
1604-
if (queue_results[i]->id == id_task) {
1605-
queue_results.erase(queue_results.begin() + i);
1606-
i--;
1596+
std::remove_if(
1597+
queue_results.begin(),
1598+
queue_results.end(),
1599+
[id_task](const server_task_result_ptr & res) {
1600+
return res->id == id_task;
16071601
}
1608-
}
1602+
);
16091603
}
16101604

16111605
void remove_waiting_task_ids(const std::unordered_set<int> & id_tasks) {

0 commit comments

Comments
 (0)