ukui-search/libsearch/index/monitor.h

174 lines
5.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (C) 2022, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: iaom <zhangpengfei@kylinos.cn>
*
*/
#ifndef MONITOR_H
#define MONITOR_H
#include <QObject>
#include "index-scheduler.h"
#include "database.h"
namespace UkuiSearch {
/**
* @brief The Monitor class
* 用于监控索引状态
* 为qml
*/
class Monitor : public QObject
{
Q_OBJECT
Q_PROPERTY(QStringList currentIndexPaths READ getCurrentIndexPaths)
Q_PROPERTY(QString indexState READ getIndexState NOTIFY indexStateChanged)
Q_PROPERTY(uint basicIndexSize READ getBasicIndexSize NOTIFY basicIndexSizeChange)
Q_PROPERTY(uint contentIndexSize READ getContentIndexSize NOTIFY contentIndexSizeChange)
Q_PROPERTY(uint ocrIndexSize READ getOCRIndexSize NOTIFY ocrIndexSizeChange)
Q_PROPERTY(uint basicIndexProgress READ getBasicIndexProgress NOTIFY basicIndexProgressUpdate)
Q_PROPERTY(uint contentIndexProgress READ getContentIndexProgress NOTIFY contentIndexProgressUpdate)
Q_PROPERTY(uint ocrIndexProgress READ getOCRIndexProgress NOTIFY ocrIndexProgressUpdate)
Q_PROPERTY(uint basicIndexDocNum READ getBasicIndexDocNum NOTIFY basicIndexDocNumUpdate)
Q_PROPERTY(uint contentIndexDocNum READ getContentIndexDocNum NOTIFY contentIndexDocNumUpdate)
public:
explicit Monitor(IndexScheduler* scheduler, QObject *parent = nullptr);
/**
* @brief getCurrentIndexPaths
* @return 当前索引的所有目录
*/
QStringList getCurrentIndexPaths();
/**
* @brief getIndexState
* @return 当前索引调度器的状态
*/
QString getIndexState();
/**
* @brief getBasicIndexSize
* @return 当前需要处理的基础索引数量
*/
uint getBasicIndexSize();
/**
* @brief getContentIndexSize
* @return 当前需要处理的内容索引数量
*/
uint getContentIndexSize();
/**
* @brief getOCRIndexSize
* @return 当前需要处理的OCR索引数量
*/
uint getOCRIndexSize();
/**
* @brief getBasicIndexProgress
* @return 基础索引进度
*/
uint getBasicIndexProgress();
/**
* @brief getContentIndexProgress
* @return 内容索引进度
*/
uint getContentIndexProgress();
/**
* @brief getOCRIndexProgress
* @return ocr索引进度
*/
uint getOCRIndexProgress();
/**
* @brief getBasicIndexDocNum
* @return 基础索引完成的总文档数
*/
uint getBasicIndexDocNum();
/**
* @brief getContentIndexDocNum
* @return 内容索引完成的总文档数
*/
uint getContentIndexDocNum();
Q_SIGNALS:
/**
* @brief indexStateChanged
* 索引调度器状态
*/
void indexStateChanged(QString);
/**
* @brief basicIndexSizeChange
* 基础索引进度
*/
void basicIndexSizeChange(uint);
/**
* @brief contentIndexSizeChange
* 内容索引总量包括OCR索引
*/
void contentIndexSizeChange(uint);
/**
* @brief ocrIndexSizeChange
* OCR索引总量
*/
void ocrIndexSizeChange(uint);
/**
* @brief basicIndexProgressUpdate
* 基础索引进度
*/
void basicIndexProgressUpdate(uint);
/**
* @brief contentIndexProgressUpdate
* 内容索引进度包含OCR索引
*/
void contentIndexProgressUpdate(uint);
/**
* @brief ocrIndexProgressUpdate
* OCR索引进度
*/
void ocrIndexProgressUpdate(uint);
/**
* @brief basicIndexDocNumUpdate
* 基础索引完成的总文档数
*/
void basicIndexDocNumUpdate(uint);
/**
* @brief contentIndexDocNumUpdate
* 内容索引完成的总文档数
*/
void contentIndexDocNumUpdate(uint);
/**
* @brief basicIndexDone
* 基础索引数据库建立完成或完成增量更新
*/
void basicIndexDone();
/**
* @brief contentIndexDone
* 内容索引数据库建立完成或完成增量更新
*/
void contentIndexDone();
private Q_SLOTS:
void onIndexStateChanged(IndexScheduler::IndexerState);
void processUpdate(IndexType type, uint all, uint finished);
private:
IndexScheduler *m_scheduler = nullptr;
Database m_basicDatabase;
Database m_contentDatabase;
uint m_basicIndexSize = 0;
uint m_contentIndexSize = 0;
uint m_ocrIndexSize = 0;
uint m_basicIndexProgress = 0;
uint m_contentIndexProgress = 0;
uint m_ocrIndexProgress = 0;
};
}
#endif // MONITOR_H