From e949cacdf456f17c41327fd283eff1f6ed955cd2 Mon Sep 17 00:00:00 2001 From: houchengqiu Date: Wed, 26 Jul 2023 17:31:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=90=8EdmanHelper=E6=88=90=E4=B8=BA?= =?UTF-8?q?=E5=B8=B8=E9=A9=BB=E8=BF=9B=E7=A8=8B=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端内置定时器,每5秒检查前端dman是否存在,若不存在,则后端dmanHelper退出 Log: 修复系统启动后dmanHelper成为常驻进程的问题 --- src/CMakeLists.txt | 2 ++ src/app/dman_helper.cpp | 3 +++ src/dbus/dmanwatcher.cpp | 42 ++++++++++++++++++++++++++++++++++++++++ src/dbus/dmanwatcher.h | 29 +++++++++++++++++++++++++++ src/view/theme_proxy.cpp | 2 ++ tests/CMakeLists.txt | 2 ++ 6 files changed, 80 insertions(+) create mode 100644 src/dbus/dmanwatcher.cpp create mode 100644 src/dbus/dmanwatcher.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 02d0c2f96..898187876 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -289,6 +289,8 @@ add_executable(dmanHelper dbus/manual_search_adapter.h dbus/manual_search_proxy.cpp dbus/manual_search_proxy.h + dbus/dmanwatcher.cpp + dbus/dmanwatcher.h base/command.cpp base/command.h controller/helpermanager.cpp diff --git a/src/app/dman_helper.cpp b/src/app/dman_helper.cpp index 32e4617f2..f0e48471e 100644 --- a/src/app/dman_helper.cpp +++ b/src/app/dman_helper.cpp @@ -6,6 +6,7 @@ #include "dbus/dbus_consts.h" #include "dbus/manual_search_adapter.h" #include "dbus/manual_search_proxy.h" +#include "dbus/dmanwatcher.h" #include @@ -23,6 +24,8 @@ int main(int argc, char **argv) // qputenv("QTWEBENGINE_REMOTE_DEBUGGING", "7777"); + // 后端服务dmanHelper自检,若前端dman应用不存在,则后端dmanHelper退出 + DManWatcher watcher; ManualSearchProxy search_obj; ManualSearchAdapter adapter(&search_obj); diff --git a/src/dbus/dmanwatcher.cpp b/src/dbus/dmanwatcher.cpp new file mode 100644 index 000000000..856c6808d --- /dev/null +++ b/src/dbus/dmanwatcher.cpp @@ -0,0 +1,42 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "dmanwatcher.h" + +#include +#include +#include + +DManWatcher::DManWatcher():m_Timer(new QTimer (this)) +{ + + connect(m_Timer,&QTimer::timeout,this,&DManWatcher::onTimeOut); + m_Timer->start(5000); +} + +/** + * @brief 定时监控客户端 + */ +void DManWatcher::onTimeOut() +{ + QString cmd, outPut; + //判断dman客户端是否存在,如果不存在退出服务。 + cmd = QString("ps aux | grep -w dman$"); + outPut= executCmd(cmd); + int ret = outPut.length(); + if (!ret) + QCoreApplication::exit(0); +} + +/** + * @brief 执行外部命令 + * @param strCmd:外部命令字符串 + */ +QString DManWatcher::executCmd(const QString &strCmd) +{ + QProcess proc; + proc.start("bash", QStringList() << "-c" << strCmd); + proc.waitForFinished(-1); + return proc.readAllStandardOutput(); +} diff --git a/src/dbus/dmanwatcher.h b/src/dbus/dmanwatcher.h new file mode 100644 index 000000000..a1f546f98 --- /dev/null +++ b/src/dbus/dmanwatcher.h @@ -0,0 +1,29 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DMANWATCHER_H +#define DMANWATCHER_H + +#include +#include + +/** + * @class DManWatcher + * @brief 监控客户端类 + */ +class DManWatcher :public QObject +{ + Q_OBJECT +public: + explicit DManWatcher(); + +public Q_SLOTS: + void onTimeOut(); +private: + QString executCmd(const QString &strCmd); +private: + QTimer *m_Timer=nullptr; +}; + +#endif // DMANWATCHER_H diff --git a/src/view/theme_proxy.cpp b/src/view/theme_proxy.cpp index f1b84f5d1..c7240b69b 100644 --- a/src/view/theme_proxy.cpp +++ b/src/view/theme_proxy.cpp @@ -5,6 +5,8 @@ #include "view/theme_proxy.h" #include +DGUI_USE_NAMESPACE + ThemeProxy::ThemeProxy(QObject *parent) : QObject(parent) { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b0e3baf61..ca72062b9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -123,6 +123,7 @@ FILE (GLOB allTestSource FILE (GLOB dmanCppFiles ../src/base/consts.cpp ../src/base/utils.cpp + ../src/base/eventlogutils.cpp ../src/controller/*.cpp ../src/dbus/*.cpp ../src/dbus/dbusvariant/*.cpp @@ -132,6 +133,7 @@ FILE (GLOB dmanCppFiles FILE (GLOB dmanHeaderFiles ../src/base/consts.h + ../src/base/eventlogutils.h ../src/base/utils.h ../src/controller/*.h ../src/dbus/*.h