add the feature of database won't be rebuild after restart and fix some bugs

This commit is contained in:
zhangzihao 2021-01-11 16:59:50 +08:00
parent 872716e7f0
commit e046b609f1
8 changed files with 74 additions and 17 deletions

View File

@ -3,14 +3,14 @@
#include <QPalette> #include <QPalette>
#include "global-settings.h" #include "global-settings.h"
static GlobalSettings *global_instance = nullptr; static GlobalSettings *global_instance_of_global_settings = nullptr;
GlobalSettings *GlobalSettings::getInstance() GlobalSettings *GlobalSettings::getInstance()
{ {
if (!global_instance) { if (!global_instance_of_global_settings) {
global_instance = new GlobalSettings; global_instance_of_global_settings = new GlobalSettings;
} }
return global_instance; return global_instance_of_global_settings;
} }
GlobalSettings::GlobalSettings(QObject *parent) : QObject(parent) GlobalSettings::GlobalSettings(QObject *parent) : QObject(parent)

View File

@ -2,6 +2,25 @@
#include "first-index.h" #include "first-index.h"
#include <QDebug> #include <QDebug>
void handler(int){
qDebug() << "Recieved SIGTERM!";
GlobalSettings::getInstance()->setValue(INDEX_DATABASE_STATE,"2");
GlobalSettings::getInstance()->setValue(CONTENT_INDEX_DATABASE_STATE,"2");
GlobalSettings::getInstance()->setValue(INDEX_GENERATOR_NORMAL_EXIT,"2");
qDebug() << "indexDataBaseStatus: " << GlobalSettings::getInstance()->getValue(INDEX_DATABASE_STATE).toString();
qDebug() << "contentIndexDataBaseStatus: " << GlobalSettings::getInstance()->getValue(CONTENT_INDEX_DATABASE_STATE).toString();
// InotifyIndex::getInstance("/home")->~InotifyIndex();
qDebug() << "~IndexGenerator() end!" << endl;
//wait linux kill this thread forcedly
// while (true);
}
FirstIndex::FirstIndex(const QString& path) : Traverse_BFS(path) FirstIndex::FirstIndex(const QString& path) : Traverse_BFS(path)
{ {
QString indexDataBaseStatus = GlobalSettings::getInstance()->getValue(INDEX_DATABASE_STATE).toString(); QString indexDataBaseStatus = GlobalSettings::getInstance()->getValue(INDEX_DATABASE_STATE).toString();
@ -37,8 +56,8 @@ FirstIndex::~FirstIndex()
this->q_index = nullptr; this->q_index = nullptr;
delete this->q_content_index; delete this->q_content_index;
this->q_content_index = nullptr; this->q_content_index = nullptr;
delete this->p_indexGenerator; // delete this->p_indexGenerator;
this->p_indexGenerator; // this->p_indexGenerator;
// delete this->mlm; // delete this->mlm;
// this->mlm = nullptr; // this->mlm = nullptr;
} }
@ -56,7 +75,12 @@ void FirstIndex::DoSomething(const QFileInfo& fileInfo){
void FirstIndex::run(){ void FirstIndex::run(){
if (this->bool_dataBaseExist){ if (this->bool_dataBaseExist){
if (this->bool_dataBaseStatusOK){ if (this->bool_dataBaseStatusOK){
this->quit();
//why???????????????????????????????????????????????????????????????
//why not quit?
// this->quit();
exit(0);
// return;
// this->wait(); // this->wait();
} }
else{ else{
@ -107,7 +131,14 @@ void FirstIndex::run(){
//don't use it now!!!! //don't use it now!!!!
//MouseZhangZh //MouseZhangZh
// this->~FirstIndex(); // this->~FirstIndex();
// qDebug() << "~FirstIndex end;"; qDebug() << "~FirstIndex end;";
qDebug() << "sigset start!";
sigset( SIGTERM, handler);
qDebug() << "sigset end!";
this->quit(); this->quit();
// this->wait(); // this->wait();
} }

View File

@ -3,10 +3,12 @@
#include <QThread> #include <QThread>
#include <QtConcurrent/QtConcurrent> #include <QtConcurrent/QtConcurrent>
#include <signal.h>
//#include <QtConcurrent> //#include <QtConcurrent>
#include "traverse_bfs.h" #include "traverse_bfs.h"
#include "global-settings.h" #include "global-settings.h"
#include "index-generator.h" #include "index-generator.h"
#include "inotify-index.h"
class FirstIndex : public QThread, public Traverse_BFS class FirstIndex : public QThread, public Traverse_BFS
{ {
@ -21,7 +23,7 @@ private:
void operator=(const FirstIndex&) = delete; void operator=(const FirstIndex&) = delete;
bool bool_dataBaseStatusOK = false; bool bool_dataBaseStatusOK = false;
bool bool_dataBaseExist = false; bool bool_dataBaseExist = false;
IndexGenerator* p_indexGenerator; IndexGenerator* p_indexGenerator = nullptr;
//here should be refact //here should be refact
// MessageListManager* mlm; // MessageListManager* mlm;

View File

@ -24,6 +24,8 @@ IndexGenerator *IndexGenerator::getInstance(bool rebuild)
if (!global_instance) { if (!global_instance) {
global_instance = new IndexGenerator(rebuild); global_instance = new IndexGenerator(rebuild);
} }
qDebug() << "global_instance" << global_instance;
qDebug() << "QThread::currentThreadId()" << QThread::currentThreadId();
return global_instance; return global_instance;
} }
@ -126,6 +128,9 @@ IndexGenerator::~IndexGenerator()
GlobalSettings::getInstance()->setValue(INDEX_DATABASE_STATE,"2"); GlobalSettings::getInstance()->setValue(INDEX_DATABASE_STATE,"2");
GlobalSettings::getInstance()->setValue(CONTENT_INDEX_DATABASE_STATE,"2"); GlobalSettings::getInstance()->setValue(CONTENT_INDEX_DATABASE_STATE,"2");
GlobalSettings::getInstance()->setValue(INDEX_GENERATOR_NORMAL_EXIT,"2"); GlobalSettings::getInstance()->setValue(INDEX_GENERATOR_NORMAL_EXIT,"2");
qDebug() << "QThread::currentThreadId()" << QThread::currentThreadId();
qDebug() << "~IndexGenerator 22222222222222222222";
} }
void IndexGenerator::insertIntoDatabase(Document doc) void IndexGenerator::insertIntoDatabase(Document doc)

View File

@ -10,6 +10,9 @@ InotifyIndex::InotifyIndex(const QString& path) : Traverse_BFS(path)
qDebug() << "setInotifyMaxUserWatches end"; qDebug() << "setInotifyMaxUserWatches end";
/*-------------ukuisearchdbus Test End-----------------*/ /*-------------ukuisearchdbus Test End-----------------*/
m_fd = inotify_init(); m_fd = inotify_init();
qDebug() << "m_fd----------->" <<m_fd; qDebug() << "m_fd----------->" <<m_fd;
@ -19,7 +22,7 @@ InotifyIndex::InotifyIndex(const QString& path) : Traverse_BFS(path)
InotifyIndex::~InotifyIndex() InotifyIndex::~InotifyIndex()
{ {
IndexGenerator::getInstance()->~IndexGenerator();
} }
void InotifyIndex::DoSomething(const QFileInfo& fileInfo){ void InotifyIndex::DoSomething(const QFileInfo& fileInfo){
@ -72,6 +75,11 @@ bool InotifyIndex::RemoveWatch(const QString &path){
return true; return true;
} }
/*
* Symbolic Link!!!!!!!!!!!!!!!!!!
* Sysmbolic link to database dir will make a Infinite loop !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* MouseZhangZh
*/
void InotifyIndex::run(){ void InotifyIndex::run(){
@ -110,6 +118,7 @@ void InotifyIndex::run(){
/*--------------------------------*/ /*--------------------------------*/
// IndexGenerator::getInstance()->creatAllIndex(QQueue<QVector<QString>>(QVector<QString>() << fileInfo.fileName() << fileInfo.absoluteFilePath() << QString(fileInfo.isDir() ? "1" : "0"))); // IndexGenerator::getInstance()->creatAllIndex(QQueue<QVector<QString>>(QVector<QString>() << fileInfo.fileName() << fileInfo.absoluteFilePath() << QString(fileInfo.isDir() ? "1" : "0")));
qDebug() << QString(currentPath[event->wd] + '/' + event->name);
indexQueue->enqueue(QVector<QString>() << QString(event->name) << QString(currentPath[event->wd] + '/' + event->name) << QString((event->mask & IN_ISDIR) ? "1" : "0")); indexQueue->enqueue(QVector<QString>() << QString(event->name) << QString(currentPath[event->wd] + '/' + event->name) << QString((event->mask & IN_ISDIR) ? "1" : "0"));
IndexGenerator::getInstance()->creatAllIndex(indexQueue); IndexGenerator::getInstance()->creatAllIndex(indexQueue);
indexQueue->clear(); indexQueue->clear();

View File

@ -9,11 +9,18 @@
#include "ukui-search-qdbus.h" #include "ukui-search-qdbus.h"
#define BUF_LEN 1024 #define BUF_LEN 1024
class InotifyIndex;
static InotifyIndex* global_instance_of_index = nullptr;
class InotifyIndex : public QThread, public Traverse_BFS class InotifyIndex : public QThread, public Traverse_BFS
{ {
Q_OBJECT Q_OBJECT
public: public:
static InotifyIndex* getInstance(const QString& path){
if (!global_instance_of_index) {
global_instance_of_index = new InotifyIndex(path);
}
return global_instance_of_index;
}
InotifyIndex(const QString&); InotifyIndex(const QString&);
~InotifyIndex(); ~InotifyIndex();

View File

@ -92,6 +92,7 @@ int main(int argc, char *argv[])
{ {
qInstallMessageHandler(messageOutput); qInstallMessageHandler(messageOutput);
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
@ -111,11 +112,7 @@ int main(int argc, char *argv[])
parser.process(app); parser.process(app);
}*/ }*/
// qDebug() << "main start";
// FirstIndex fi("/home");
// fi.start();
// InotifyIndex ii("/home");
// ii.start();
/*-------------ukuisearchdbus Test start-----------------*/ /*-------------ukuisearchdbus Test start-----------------*/
// UkuiSearchQDBus usQDBus; // UkuiSearchQDBus usQDBus;
// usQDBus.setInotifyMaxUserWatches(); // usQDBus.setInotifyMaxUserWatches();
@ -170,6 +167,12 @@ int main(int argc, char *argv[])
// qDebug() << "main start"; // qDebug() << "main start";
// FirstIndex* fi = new FirstIndex("/home"); // FirstIndex* fi = new FirstIndex("/home");
// fi->start(); // fi->start();
qDebug() << "main start";
FirstIndex fi("/home");
fi.start();
InotifyIndex* ii = InotifyIndex::getInstance("/home");
// InotifyIndex ii("/home");
ii->start();
return app.exec(); return app.exec();
} }

View File

@ -271,7 +271,7 @@ void MainWindow::searchContent(QString searchcontent){
connect(search, &FileSearcher::resultContent, this, [ = ](QQueue<QPair<QString,QStringList>> * contentQueue) { connect(search, &FileSearcher::resultContent, this, [ = ](QQueue<QPair<QString,QStringList>> * contentQueue) {
qWarning()<<"resultContent---"; qWarning()<<"resultContent---";
}); });
search->onKeywordSearch(searchcontent); // search->onKeywordSearch(searchcontent);
//将搜索结果加入列表 //将搜索结果加入列表
m_contentFrame->refreshSearchList(m_types, m_lists, searchcontent); m_contentFrame->refreshSearchList(m_types, m_lists, searchcontent);