| 244 | } |
| 245 | |
| 246 | void StreamingSourceManager::flushSecondaryIntoPrimary() { |
| 247 | // Zero-copy bulk transfer: ObjectStore::flushTo moves every ObjectEntry |
| 248 | // from secondary into primary by value-moving the entry (its std::variant |
| 249 | // / std::any holds either a shared_ptr or a closure; both transfer with |
| 250 | // their captured state intact, so no payload bytes are copied and no lazy |
| 251 | // closure is invoked during the flush). Topics matched by descriptor; |
| 252 | // lockstep registration in DataSourceRuntimeHost::cbEnsureParserBinding |
| 253 | // guarantees compatibility. Topics stay registered on the secondary. |
| 254 | if (auto result = secondary_object_store_->flushTo(session_manager_.objectStore()); !result) { |
| 255 | qCWarning(lcStream) << "flushSecondaryIntoPrimary failed:" << QString::fromStdString(result.error()); |
| 256 | } |
| 257 | } |
| 258 | |
| 259 | void StreamingSourceManager::startSession(const QString& plugin_id) { |
| 260 | const LoadedDataSource* source_ptr = resolveStreamSource(extensions_, plugin_id); |
nothing calls this directly
no test coverage detected