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();
后端接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Start()、 slotTimeOut()、 OnProcess() 。 当然,它仍然支...
virtual int Start()
开始。根据 OnInit() 返回值来决定是否开始定时器来支持非 qt 事件
管理操作的后端。此类仅用于 CPluginThread
void sigStop()
通知用户停止。仅由插件触发。 当从插件中需要停止时触发。例如:对端断开连接、重置连接或者连接出错。 当应用接收到此信号后,调用 Stop() 关闭连接。