1#include "PluginClientThread.h"
3#include <QLoggingCategory>
5static Q_LOGGING_CATEGORY(log,
"Client.Plugin.Thread")
8 : CPluginClient(parent),
15 bool check = connect(m_pThread, SIGNAL(finished()),
16 m_pThread, SLOT(deleteLater()));
22CPluginClientThread::~CPluginClientThread()
24 qDebug(log) <<
"CPluginClientThread::~CPluginClientThread";
30CConnecter *CPluginClientThread::CreateConnecter(
31 const QString &szProtocol, CParameterClient *para)
33 qDebug(log) <<
"CPluginClientThread::CreateConnecter()" << szProtocol;
34 CConnecter* p = CPluginClient::CreateConnecter(szProtocol, para);
35 if(!p)
return nullptr;
36 CConnecterConnect* pConnecter = qobject_cast<CConnecterConnect*>(p);
38 QString szMsg =
"Must be derived from CConnecterConnect*, Current is ";
39 szMsg += p->metaObject()->className();
40 szMsg +=
";\nThe super class:\n";
41 auto super = p->metaObject()->superClass();
44 szMsg += QString(2 * n++,
' ') +
"- ";
45 szMsg += super->className();
46 super = super->superClass();
48 qCritical(log) << szMsg;
53 if(
nullptr == m_pThread)
55 qDebug(log) <<
"The thread is nullptr";
59 bool check = connect(pConnecter, SIGNAL(sigOpenConnect(CConnecterConnect*)),
60 m_pThread, SIGNAL(sigConnect(CConnecterConnect*)));
62 check = connect(pConnecter, SIGNAL(sigCloseconnect(CConnecterConnect*)),
63 m_pThread, SIGNAL(sigDisconnect(CConnecterConnect*)));
它默认启动一个后台线程。 它与 CConnecterConnect 一起可实现一个后台线程处理多个远程桌面连接。
一个线程处理多个连接者 CConnecterConnect 。 一个连接者对应一个连接,也就是一个线程处理多个连接。 此类仅用于 CPluginClientThread 由插件使用。