| 472 | } |
| 473 | |
| 474 | void OutputBuffer::enqueueBroadcastOutputLocked( |
| 475 | std::unique_ptr<SerializedPage> data, |
| 476 | std::vector<DataAvailable>& dataAvailableCbs) { |
| 477 | BOLT_DCHECK(isBroadcast()); |
| 478 | BOLT_CHECK_NULL(arbitraryBuffer_); |
| 479 | BOLT_DCHECK(dataAvailableCbs.empty()); |
| 480 | |
| 481 | std::shared_ptr<SerializedPage> sharedData(data.release()); |
| 482 | for (auto& buffer : buffers_) { |
| 483 | if (buffer != nullptr) { |
| 484 | buffer->enqueue(sharedData); |
| 485 | dataAvailableCbs.emplace_back(buffer->getAndClearNotify()); |
| 486 | } |
| 487 | } |
| 488 | |
| 489 | // NOTE: we don't need to add new buffer to 'dataToBroadcast_' if there is no |
| 490 | // more output buffers. |
| 491 | if (!noMoreBuffers_) { |
| 492 | dataToBroadcast_.emplace_back(sharedData); |
| 493 | } |
| 494 | } |
| 495 | |
| 496 | void OutputBuffer::enqueueArbitraryOutputLocked( |
| 497 | std::unique_ptr<SerializedPage> data, |
nothing calls this directly
no test coverage detected