| 429 | } |
| 430 | |
| 431 | void server_response_reader::stop() { |
| 432 | queue_results.remove_waiting_task_ids(id_tasks); |
| 433 | if (has_next() && !cancelled) { |
| 434 | // if tasks is not finished yet, cancel them |
| 435 | cancelled = true; |
| 436 | std::vector<server_task> cancel_tasks; |
| 437 | cancel_tasks.reserve(id_tasks.size()); |
| 438 | for (const auto & id_task : id_tasks) { |
| 439 | SRV_WRN("cancel task, id_task = %d\n", id_task); |
| 440 | server_task task(SERVER_TASK_TYPE_CANCEL); |
| 441 | task.id_target = id_task; |
| 442 | queue_results.remove_waiting_task_id(id_task); |
| 443 | cancel_tasks.push_back(std::move(task)); |
| 444 | } |
| 445 | // push to beginning of the queue, so it has highest priority |
| 446 | queue_tasks.post(std::move(cancel_tasks), true); |
| 447 | } else { |
| 448 | SRV_DBG("%s", "all tasks already finished, no need to cancel\n"); |
| 449 | } |
| 450 | } |
nothing calls this directly
no test coverage detected