File indexing completed on 2024-05-12 05:29:05

0001 /*
0002  *   SPDX-FileCopyrightText: 2016 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #include "StoredResultsStream.h"
0008 
0009 StoredResultsStream::StoredResultsStream(const QSet<ResultsStream *> &streams)
0010     : AggregatedResultsStream(streams)
0011 {
0012     connect(this, &ResultsStream::resourcesFound, this, [this](const QVector<StreamResult> &resources) {
0013         for (auto r : resources)
0014             connect(r.resource, &QObject::destroyed, this, [this, r]() {
0015                 for (auto it = m_results.begin(); it != m_results.end(); ++it) {
0016                     if (r.resource == it->resource)
0017                         it = m_results.erase(it);
0018                     else
0019                         ++it;
0020                 }
0021             });
0022         m_results += resources;
0023     });
0024 
0025     connect(this, &AggregatedResultsStream::finished, this, [this]() {
0026         Q_EMIT finishedResources(m_results);
0027     });
0028 }
0029 
0030 QVector<StreamResult> StoredResultsStream::resources() const
0031 {
0032     return m_results;
0033 }