| 29 | } |
| 30 | |
| 31 | void setResult(Result<T> result) { |
| 32 | SmallVector<Function<void(Result<T>)>, 1> handlers; |
| 33 | { |
| 34 | std::lock_guard<Mutex> lock(_mutex); |
| 35 | SC_ASSERT(_result.empty(), _result.description()); |
| 36 | _result = result; |
| 37 | handlers = std::move(_handlers); |
| 38 | } |
| 39 | |
| 40 | for (auto& handler : handlers) { |
| 41 | handler(result); |
| 42 | } |
| 43 | } |
| 44 | |
| 45 | private: |
| 46 | Mutex _mutex; |