| 184 | bool IsFullyFinished() { return running_tasks_ == 0; } |
| 185 | |
| 186 | void OnTaskFinished(const Status& st) { |
| 187 | std::unique_lock<std::mutex> lk(mutex_); |
| 188 | if (!st.ok()) { |
| 189 | running_tasks_--; |
| 190 | AbortUnlocked(st, std::move(lk)); |
| 191 | return; |
| 192 | } |
| 193 | running_tasks_--; |
| 194 | return MaybeEndUnlocked(std::move(lk)); |
| 195 | } |
| 196 | |
| 197 | void DoSubmitTask(std::unique_ptr<Task> task) { |
| 198 | Result<Future<>> submit_result = (*task)(); |