From 7434d31d7b424fd7bcf4d1aaa94b69d80cdd35eb Mon Sep 17 00:00:00 2001 From: iaom Date: Mon, 15 Apr 2024 15:51:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(index-monitor)=E5=A2=9E=E5=8A=A0=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=B4=A2=E5=BC=95=E6=98=AF=E5=90=A6=E6=AD=A3=E5=9C=A8?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=A2=9E=E9=87=8F=E6=9B=B4=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libsearch/index/index-monitor.cpp | 18 ++++++++++ libsearch/index/index-monitor.h | 18 ++++++++++ libsearch/index/monitor.rep | 3 ++ libsearch/test/index-monitor-test.cpp | 12 +++++++ ukui-search-service/monitor.cpp | 51 +++++++++++++++++++++++---- ukui-search-service/monitor.h | 20 ++++++++++- 6 files changed, 115 insertions(+), 7 deletions(-) diff --git a/libsearch/index/index-monitor.cpp b/libsearch/index/index-monitor.cpp index 7780500..fe698aa 100644 --- a/libsearch/index/index-monitor.cpp +++ b/libsearch/index/index-monitor.cpp @@ -88,6 +88,9 @@ IndexMonitor::IndexMonitor(QObject *parent) : QObject(parent), d(new IndexMonito connect(d->m_monitorReplica, &MonitorReplica::basicIndexDone, this, &IndexMonitor::basicIndexDone); connect(d->m_monitorReplica, &MonitorReplica::contentIndexDone, this, &IndexMonitor::contentIndexDone); connect(d->m_monitorReplica, &MonitorReplica::ocrContentIndexDone, this, &IndexMonitor::ocrContentIndexDone); + connect(d->m_monitorReplica, &MonitorReplica::basicIndexUpdatingChanged, this, &IndexMonitor::basicIndexUpdatingChanged); + connect(d->m_monitorReplica, &MonitorReplica::contentIndexUpdatingChanged, this, &IndexMonitor::contentIndexUpdatingChanged); + connect(d->m_monitorReplica, &MonitorReplica::ocrContentIndexUpdatingChanged, this, &IndexMonitor::ocrContentIndexUpdatingChanged); connect(d->m_monitorReplica, &QRemoteObjectReplica::initialized, this, &IndexMonitor::serviceReady); connect(d->m_monitorReplica, &QRemoteObjectReplica::stateChanged, this, [&](QRemoteObjectReplica::State state, QRemoteObjectReplica::State oldState){ @@ -159,4 +162,19 @@ uint IndexMonitor::ocrContentIndexDocNum() const { return d->m_monitorReplica->ocrContentIndexDocNum(); } + +bool IndexMonitor::basicIndexUpdating() const +{ + return d->m_monitorReplica->basicIndexUpdating(); +} + +bool IndexMonitor::contentIndexUpdating() const +{ + return d->m_monitorReplica->contentIndexUpdating(); +} + +bool IndexMonitor::ocrContentIndexUpdating() const +{ + return d->m_monitorReplica->ocrContentIndexUpdating(); +} } // UkuiSearch \ No newline at end of file diff --git a/libsearch/index/index-monitor.h b/libsearch/index/index-monitor.h index 5b56a76..a5f529c 100644 --- a/libsearch/index/index-monitor.h +++ b/libsearch/index/index-monitor.h @@ -101,6 +101,21 @@ public: * @return ocr内容索引完成的总文档数 */ uint ocrContentIndexDocNum() const; + /** + * basicIndexUpdating + * @return 基础索引是否正在执行增量更新 + */ + virtual bool basicIndexUpdating() const; + /** + * basicIndexUpdating + * @return 文本内容索引是否正在执行增量更新 + */ + virtual bool contentIndexUpdating() const; + /** + * basicIndexUpdating + * @return ocr索引是否正在执行增量更新 + */ + virtual bool ocrContentIndexUpdating() const; Q_SIGNALS: void currentIndexPathsChanged(QStringList currentIndexPaths); @@ -120,6 +135,9 @@ Q_SIGNALS: void basicIndexDone(bool success); void contentIndexDone(bool success); void ocrContentIndexDone(bool success); + void basicIndexUpdatingChanged(bool basicIndexUpdating); + void contentIndexUpdatingChanged(bool contentIndexUpdating); + void ocrContentIndexUpdatingChanged(bool ocrContentIndexUpdating); void serviceReady(); void serviceOffline(); diff --git a/libsearch/index/monitor.rep b/libsearch/index/monitor.rep index f48646a..dc0fa60 100644 --- a/libsearch/index/monitor.rep +++ b/libsearch/index/monitor.rep @@ -12,6 +12,9 @@ class Monitor PROP(uint basicIndexDocNum READONLY); PROP(uint contentIndexDocNum READONLY); PROP(uint ocrContentIndexDocNum READONLY); + PROP(bool basicIndexUpdating READONLY); + PROP(bool contentIndexUpdating READONLY); + PROP(bool ocrContentIndexUpdating READONLY); SIGNAL(basicIndexStart()); SIGNAL(contentIndexStart()); SIGNAL(ocrContentIndexStart()); diff --git a/libsearch/test/index-monitor-test.cpp b/libsearch/test/index-monitor-test.cpp index 6f151e5..bfbcde6 100644 --- a/libsearch/test/index-monitor-test.cpp +++ b/libsearch/test/index-monitor-test.cpp @@ -37,6 +37,9 @@ IndexMonitorTest::IndexMonitorTest(QObject *parent) : QObject(parent) qDebug() << "==basicIndexDocNum==" << m_monitor->basicIndexDocNum(); qDebug() << "==contentIndexDocNum==" << m_monitor->contentIndexDocNum(); qDebug() << "==ocrContentIndexDocNum==" << m_monitor->ocrContentIndexDocNum(); + qDebug() << "==basicIndexUpdating==" << m_monitor->basicIndexUpdating(); + qDebug() << "==contentIndexUpdating==" << m_monitor->contentIndexUpdating(); + qDebug() << "==ocrContentIndexUpdating==" << m_monitor->ocrContentIndexUpdating(); }); connect(m_monitor, &UkuiSearch::IndexMonitor::serviceOffline, this, [&](){ qDebug() << "==serviceReady=="; @@ -92,6 +95,15 @@ IndexMonitorTest::IndexMonitorTest(QObject *parent) : QObject(parent) connect(m_monitor, &UkuiSearch::IndexMonitor::ocrContentIndexDone, this, [&](bool success){ qDebug() << "==ocrContentIndexDone==" << success; }); + connect(m_monitor, &UkuiSearch::IndexMonitor::basicIndexUpdatingChanged, this, [&](bool updating){ + qDebug() << "==basicIndexUpdatingChanged==" << updating; + }); + connect(m_monitor, &UkuiSearch::IndexMonitor::contentIndexUpdatingChanged, this, [&](bool updating){ + qDebug() << "==contentIndexUpdatingChanged==" << updating; + }); + connect(m_monitor, &UkuiSearch::IndexMonitor::ocrContentIndexUpdatingChanged, this, [&](bool updating){ + qDebug() << "==ocrContentIndexUpdatingChanged==" << updating; + }); } IndexMonitorTest::~IndexMonitorTest() diff --git a/ukui-search-service/monitor.cpp b/ukui-search-service/monitor.cpp index bcba357..faf4ae0 100644 --- a/ukui-search-service/monitor.cpp +++ b/ukui-search-service/monitor.cpp @@ -29,12 +29,36 @@ Monitor::Monitor(IndexScheduler *scheduler, QObject *parent) : MonitorSource(par { connect(scheduler, &IndexScheduler::stateChange, this, &Monitor::onIndexStateChanged); connect(scheduler, &IndexScheduler::process, this, &Monitor::processUpdate); - connect(scheduler, &IndexScheduler::basicIndexDone, this, &Monitor::basicIndexDone); - connect(scheduler, &IndexScheduler::contentIndexDone, this, &Monitor::contentIndexDone); - connect(scheduler, &IndexScheduler::ocrContentIndexDone, this, &Monitor::ocrContentIndexDone); - connect(scheduler, &IndexScheduler::basicIndexStart, this, &Monitor::basicIndexStart); - connect(scheduler, &IndexScheduler::contentIndexStart, this, &Monitor::contentIndexStart); - connect(scheduler, &IndexScheduler::ocrContentIndexStart, this, &Monitor::ocrContentIndexStart); + connect(scheduler, &IndexScheduler::basicIndexDone, this, [&](bool success){ + Q_EMIT basicIndexDone(success); + m_basicIndexUpdating = false; + Q_EMIT basicIndexUpdatingChanged(m_basicIndexUpdating); + }); + connect(scheduler, &IndexScheduler::contentIndexDone, this, [&](bool success){ + Q_EMIT contentIndexDone(success); + m_contentIndexUpdating = false; + Q_EMIT contentIndexUpdatingChanged(m_contentIndexUpdating); + }); + connect(scheduler, &IndexScheduler::ocrContentIndexDone, this, [&](bool success){ + Q_EMIT ocrContentIndexDone(success); + m_ocrContentIndexUpdating = false; + Q_EMIT ocrContentIndexUpdatingChanged(m_ocrContentIndexUpdating); + }); + connect(scheduler, &IndexScheduler::basicIndexStart, this, [&](){ + Q_EMIT basicIndexStart(); + m_basicIndexUpdating = true; + Q_EMIT basicIndexUpdatingChanged(m_basicIndexUpdating); + }); + connect(scheduler, &IndexScheduler::contentIndexStart, this, [&](){ + Q_EMIT contentIndexStart(); + m_contentIndexUpdating = true; + Q_EMIT contentIndexUpdatingChanged(m_contentIndexUpdating); + }); + connect(scheduler, &IndexScheduler::ocrContentIndexStart, this, [&](){ + Q_EMIT ocrContentIndexStart(); + m_ocrContentIndexUpdating = true; + Q_EMIT ocrContentIndexUpdatingChanged(m_ocrContentIndexUpdating); + }); connect(FileIndexerConfig::getInstance(), &FileIndexerConfig::appendIndexDir, this, [&](){ m_currentIndexPaths = FileIndexerConfig::getInstance()->currentIndexableDir(); Q_EMIT currentIndexPathsChanged(m_currentIndexPaths); @@ -170,3 +194,18 @@ void Monitor::processUpdate(IndexType type, uint all, uint finished) break; } } + +bool Monitor::basicIndexUpdating() const +{ + return m_basicIndexUpdating; +} + +bool Monitor::contentIndexUpdating() const +{ + return m_contentIndexUpdating; +} + +bool Monitor::ocrContentIndexUpdating() const +{ + return m_ocrContentIndexUpdating; +} \ No newline at end of file diff --git a/ukui-search-service/monitor.h b/ukui-search-service/monitor.h index cdc1d77..f4a99e7 100644 --- a/ukui-search-service/monitor.h +++ b/ukui-search-service/monitor.h @@ -34,7 +34,7 @@ class Monitor : public MonitorSource Q_OBJECT public: - explicit Monitor(IndexScheduler* scheduler, QObject *parent = nullptr); + explicit Monitor(IndexScheduler* scheduler, QObject *parent = nullptr); /** * @brief currentIndexPaths * @return 当前索引的所有目录 @@ -90,6 +90,21 @@ public: * @return ocr容索引完成的总文档数 */ uint ocrContentIndexDocNum() const override; + /** + * basicIndexUpdating + * @return 基础索引是否正在执行增量更新 + */ + virtual bool basicIndexUpdating() const override; + /** + * basicIndexUpdating + * @return 文本内容索引是否正在执行增量更新 + */ + virtual bool contentIndexUpdating() const override; + /** + * basicIndexUpdating + * @return ocr索引是否正在执行增量更新 + */ + virtual bool ocrContentIndexUpdating() const override; private Q_SLOTS: void onIndexStateChanged(IndexScheduler::IndexerState); @@ -110,6 +125,9 @@ private: uint m_basicIndexDocNum = 0; uint m_contentIndexDocNum = 0; uint m_ocrContentIndexDocNum = 0; + bool m_basicIndexUpdating = false; + bool m_contentIndexUpdating = false; + bool m_ocrContentIndexUpdating = false; }; } #endif // MONITOR_H