| 309 | } |
| 310 | |
| 311 | void LocalExchangeQueue::close() { |
| 312 | std::vector<ContinuePromise> consumerPromises; |
| 313 | std::vector<ContinuePromise> memoryPromises; |
| 314 | queue_.withWLock([&](auto& queue) { |
| 315 | uint64_t freedBytes = 0; |
| 316 | |
| 317 | while (!queue.empty()) { |
| 318 | freedBytes += queue.front()->estimateFlatSize(); |
| 319 | queue.pop(); |
| 320 | } |
| 321 | |
| 322 | if (freedBytes) { |
| 323 | memoryPromises = memoryManager_->decreaseMemoryUsage(freedBytes); |
| 324 | } |
| 325 | |
| 326 | consumerPromises = std::move(consumerPromises_); |
| 327 | closed_ = true; |
| 328 | }); |
| 329 | notify(consumerPromises); |
| 330 | notify(memoryPromises); |
| 331 | } |
| 332 | |
| 333 | LocalExchange::LocalExchange( |
| 334 | int32_t operatorId, |
nothing calls this directly
no test coverage detected