| 226 | } |
| 227 | |
| 228 | void error(const Error& err, int& loopDepth) override { |
| 229 | if (callbacks.size() > 10000) |
| 230 | TraceEvent(SevWarn, "LargeMultiCallback").detail("CallbacksSize", callbacks.size()); |
| 231 | |
| 232 | UNSTOPPABLE_ASSERT(loopDepth == 0); |
| 233 | |
| 234 | while (callbacks.size()) { |
| 235 | auto cb = callbacks.back(); |
| 236 | callbacks.pop_back(); |
| 237 | cb->destroyHolder(cb->getHolder(this)); |
| 238 | if (cb->canFire(0)) { |
| 239 | int ld = 0; |
| 240 | cb->error(err, ld); |
| 241 | } |
| 242 | } |
| 243 | } |
| 244 | |
| 245 | void destroy() override { |
| 246 | // This assert assures that all ThreadMultiCallbacks remove themselves as a holder from |
nothing calls this directly
no test coverage detected