| 220 | |
| 221 | Future<Void> getError() const override { return pool->anyError.getResult(); } |
| 222 | void addThread(IThreadPoolReceiver* userData, const char*) override { |
| 223 | checkError(); |
| 224 | |
| 225 | auto w = new Worker(pool.getPtr(), userData); |
| 226 | pool->queueLock.enter(); |
| 227 | pool->workers.push_back(w); |
| 228 | pool->queueLock.leave(); |
| 229 | pool->anyError.add(w->error.getFuture()); |
| 230 | pool->allStopped.add(w->stopped.getFuture()); |
| 231 | startWorker(w); |
| 232 | } |
| 233 | ACTOR static void startWorker(Worker* w) { |
| 234 | // We want to make sure that coroutines are always started after Net2::run() is called, so the main coroutine is |
| 235 | // initialized. |
no test coverage detected