3#include <QLoggingCategory>
7static Q_LOGGING_CATEGORY(log,
"Client.Connect")
11 SetConnecter(pConnecter);
16 qDebug(log) <<
"CConnect::~CConnect()";
19int CConnect::SetConnecter(
CConnecter* pConnecter)
21 qDebug(log) <<
"CConnect::SetConnecter" << pConnecter;
22 if(!pConnecter)
return -1;
34 check = connect(
this, SIGNAL(
sigError(
const int,
const QString&)),
35 pConnecter, SIGNAL(
sigError(
const int,
const QString&)));
42 const QMessageBox::Icon&)),
44 const QMessageBox::Icon&)));
47 const QString&,
const QString&,
48 QMessageBox::StandardButtons,
49 QMessageBox::StandardButton&,
51 pConnecter, SLOT(slotBlockShowMessageBox(
52 const QString&,
const QString&,
53 QMessageBox::StandardButtons,
54 QMessageBox::StandardButton&,
56 Qt::BlockingQueuedConnection);
62 pConnecter, SLOT(slotBlockInputDialog(
const QString&,
66 Qt::BlockingQueuedConnection);
71 pConnecter, SLOT(slotBlockShowWidget(
const QString&,
int&,
void*)),
72 Qt::BlockingQueuedConnection);
79 qDebug(log) <<
"CConnect::Connect()";
81 nRet =
static_cast<int>(
OnInit());
82 if(nRet < 0)
return nRet;
91 qDebug(log) <<
"CConnect::Disconnect()";
107 QTimer::singleShot(nTime,
this, SLOT(
slotTimeOut()));
110 qDebug(log) <<
"Process fail(< -1) or stop(= -1):" << nTime;
112 qCritical(log) <<
"Process fail:" << nTime;
113 emit
sigError(nTime,
"Process fail or stop");
115 }
catch(std::exception e) {
116 qCritical(log) <<
"Process fail:" << e.what();
119 qCritical(log) <<
"Process fail";
129 qWarning(log) <<
"Need to implement CConnect::OnProcess()";
连接接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Connect()、 slotTimeOut()、 OnProcess() 。 当然,它仍...
void sigError(const int nError, const QString &szError=QString())
当有错误产生时触发
void sigInformation(const QString &szInfo)
从后台线程中触发在主线程中显示信息,不阻塞后台线程
void sigBlockShowMessageBox(const QString &szTitle, const QString &szMessage, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton &nRet, bool &checkBox, QString checkBoxContext=QString())
阻塞后台线程,并在前台线程中显示消息对话框(QMessageBox)
void sigShowMessageBox(const QString &szTitle, const QString &szMessage, const QMessageBox::Icon &icon=QMessageBox::Information)
从后台线程中触发在主线程中显示消息对话框(QMessageBox),不阻塞后台线程
void sigBlockInputDialog(const QString &szTitle, const QString &szLable, const QString &szMessage, QString &szText)
阻塞后台线程,并在前台线程中显示输入对话框 (QInputDialog)
void sigConnected()
当插件连接成功后触发。仅由插件触发
void sigDisconnect()
通知用户断开连接。仅由插件触发。 当从插件中需要要断开连接时触发。例如:对端断开连接、重置连接或者连接出错。
virtual int Disconnect()
断开
virtual int OnProcess()
插件连接的具体操作处理
virtual OnInitReturnValue OnInit()=0
具体的插件实现连接初始化
virtual void slotTimeOut()
一个非 Qt 事件处理,它调用 OnProcess(),并根据其返回值开始新的定时器。 如果 CConnect 没有一个非 Qt 事件循环(就是普通的循环处理), 可以重载它,或者 OnInit() 返...
virtual int Connect()
开始连接。根据 OnInit() 返回值来决定是否开始定时器来支持非 qt 事件
virtual int OnClean()=0
清理
void sigDisconnected()
断开连接成功信号。仅由插件触发
void sigBlockShowWidget(const QString &className, int &nRet, void *pContext)
阻塞后台线程,并在前台线程中显示窗口。