3#include <QLoggingCategory>
4#include "ManageBackend.h"
6static Q_LOGGING_CATEGORY(log,
"Manage.Backend")
10 qDebug(log) << Q_FUNC_INFO;
13CManageBackend::~CManageBackend()
15 qDebug(log) << Q_FUNC_INFO;
16 foreach(
auto pBackend, m_Backends)
19 pBackend->deleteLater();
23void CManageBackend::slotNewBackend(
COperate *pOperate)
25 qDebug(log) << Q_FUNC_INFO;
26 if(-1 == pOperate->metaObject()->indexOfMethod(
"InstanceBackend()"))
29 szErr =
"The class " + QString(pOperate->metaObject()->className())
30 +
" has not method InstanceBackend()."
31 "Please add 'Q_INVOKABLE virtual CBackend* InstanceBackend()' to "
32 + QString(pOperate->metaObject()->className());
33 qCritical(log) << szErr;
34 Q_ASSERT_X(
false,
"BackendThread", szErr.toStdString().c_str());
38 bool bRet = QMetaObject::invokeMethod(
39 pOperate,
"InstanceBackend",
42 if(!pBackend || !bRet)
44 qCritical(log) <<
"InstanceBackend fail";
48 m_Backends.insert(pOperate, pBackend);
49 int nRet = pBackend->
Start();
54void CManageBackend::slotDeleteBackend(
COperate *pOperate)
56 qDebug(log) << Q_FUNC_INFO;
57 auto it = m_Backends.find(pOperate);
58 if(m_Backends.end() == it)
return;
59 auto pBackend = it.value();
60 m_Backends.remove(pOperate);
62 pBackend->deleteLater();
virtual int Start()
Start.
Manage the backend of operate.
void sigStop()
Notify the user to stop.