玉兔远程控制 0.0.31
载入中...
搜索中...
未找到
ManageConnect.cpp
1#include "ManageConnect.h"
2#include <QLoggingCategory>
3
4static Q_LOGGING_CATEGORY(log, "Client.MangeConnect")
5
6CManageConnect::CManageConnect(QObject *parent) : QObject(parent)
7{}
8
9CManageConnect::~CManageConnect()
10{
11 qDebug(log) << "CManageConnect::~CManageConnect()";
12 foreach(auto pConnect, m_Connects)
13 {
14 pConnect->Disconnect();
15 pConnect->deleteLater();
16 }
17}
18
19void CManageConnect::slotConnect(CConnecterConnect *pConnecter)
20{
21 int nRet = 0;
22 qDebug(log) << "CManageConnect::slotConnect()";
23 CConnect* pConnect = pConnecter->InstanceConnect();
24 if(!pConnect)
25 {
26 qCritical(log) << "InstanceConnect fail";
27 emit pConnecter->sigDisconnect();
28 return;
29 }
30
31 m_Connects.insert(pConnecter, pConnect);
32
33 nRet = pConnect->Connect();
34 if(nRet)
35 emit pConnecter->sigDisconnect();
36}
37
38void CManageConnect::slotDisconnect(CConnecterConnect *pConnecter)
39{
40 qDebug(log) << "CManageConnect::slotDisconnect()";
41 auto it = m_Connects.find(pConnecter);
42 if(m_Connects.end() == it) return;
43 CConnect* pConnect = it.value();
44 m_Connects.remove(pConnecter);
45 pConnect->Disconnect();
46 pConnect->deleteLater();
47 emit pConnecter->sigDisconnected();
48}
连接接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Connect()、 slotTimeOut()、 OnProcess() 。 当然,它仍...
Definition Connect.h:45
virtual int Disconnect()
断开
Definition Connect.cpp:89
virtual int Connect()
开始连接。根据 OnInit() 返回值来决定是否开始定时器来支持非 qt 事件
Definition Connect.cpp:77
插件的连接者接口,此接口仅由插件使用。 所有的需要 CConnect 的插件连接者均需要从此接口派生。
virtual CConnect * InstanceConnect()=0
新建 CConnect 对象。它的所有者是调用者, 如果调用者不再使用它,调用者必须负责释放它。
void sigDisconnected()
断开连接成功信号。仅由插件触发
void sigDisconnect()
通知用户断开连接。仅由插件触发。 当从插件中需要要断开连接时触发。例如:对端断开连接、重置连接或者连接出错。 当应用接收到此信号后,调用 DisConnect() 关闭连接。
管理连接。此类仅用于 CPluginThread