提交 61cf5f90 编写于 作者: 丁劲犇's avatar 丁劲犇 😸

Replace QMap(B-Tree based) to std::unorderedmap, an hashmap

There is still a problem in heavily-test.
上级 c65d71df
......@@ -291,7 +291,7 @@ void QTcpClientTest::timerEvent(QTimerEvent * evt)
void QTcpClientTest::displayMessage(QString str)
{
model.insertRow(0,new QStandardItem(str));
while (model.rowCount()>=256)
while (model.rowCount()>=128)
model.removeRow(model.rowCount()-1);
}
quint32 QTcpClientTest::getRadomUUIDDestin()
......
......@@ -79,7 +79,6 @@ namespace ZP_Cluster{
quint32 m_nRemoteClientNums;
signals:
void evt_SendDataToClient(QObject * objClient,QByteArray dtarray);
void evt_BroadcastData(QObject * objFromClient,QByteArray dtarray);
void evt_close_client(QObject * objClient);
void evt_connect_to(const QHostAddress & address , quint16 nPort,bool bSSLConn);
void evt_Message (QObject * psource,QString );
......
......@@ -253,7 +253,6 @@ namespace ZP_Cluster{
zp_ClusterNode * pnode = m_factory(this,clientHandle,0);
//using queued connection of send and revieve;
connect (pnode,&zp_ClusterNode::evt_SendDataToClient,m_pClusterNet,&ZPNetwork::zp_net_Engine::SendDataToClient,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_BroadcastData,m_pClusterNet,&ZPNetwork::zp_net_Engine::evt_BroadcastData,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_close_client,m_pClusterNet,&ZPNetwork::zp_net_Engine::KickClients,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_Message,this,&zp_ClusterTerm::evt_Message,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_connect_to,m_pClusterNet,&ZPNetwork::zp_net_Engine::connectTo,Qt::QueuedConnection);
......@@ -285,7 +284,6 @@ namespace ZP_Cluster{
zp_ClusterNode * pnode = m_factory(this,clientHandle,0);
//using queued connection of send and revieve;
connect (pnode,&zp_ClusterNode::evt_SendDataToClient,m_pClusterNet,&ZPNetwork::zp_net_Engine::SendDataToClient,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_BroadcastData,m_pClusterNet,&ZPNetwork::zp_net_Engine::evt_BroadcastData,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_close_client,m_pClusterNet,&ZPNetwork::zp_net_Engine::KickClients,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_Message,this,&zp_ClusterTerm::evt_Message,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_connect_to,m_pClusterNet,&ZPNetwork::zp_net_Engine::connectTo,Qt::QueuedConnection);
......@@ -319,7 +317,6 @@ namespace ZP_Cluster{
{
QString nameCurr = pClientNode->termName();
disconnect (pClientNode,&zp_ClusterNode::evt_SendDataToClient,m_pClusterNet,&ZPNetwork::zp_net_Engine::SendDataToClient);
disconnect (pClientNode,&zp_ClusterNode::evt_BroadcastData,m_pClusterNet,&ZPNetwork::zp_net_Engine::evt_BroadcastData);
disconnect (pClientNode,&zp_ClusterNode::evt_close_client,m_pClusterNet,&ZPNetwork::zp_net_Engine::KickClients);
disconnect (pClientNode,&zp_ClusterNode::evt_Message,this,&zp_ClusterTerm::evt_Message);
disconnect (pClientNode,&zp_ClusterNode::evt_connect_to,m_pClusterNet,&ZPNetwork::zp_net_Engine::connectTo);
......@@ -374,7 +371,6 @@ namespace ZP_Cluster{
zp_ClusterNode * pnode = m_factory(this,clientHandle,0);
//using queued connection of send and revieve;
connect (pnode,&zp_ClusterNode::evt_SendDataToClient,m_pClusterNet,&ZPNetwork::zp_net_Engine::SendDataToClient,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_BroadcastData,m_pClusterNet,&ZPNetwork::zp_net_Engine::evt_BroadcastData,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_close_client,m_pClusterNet,&ZPNetwork::zp_net_Engine::KickClients,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_Message,this,&zp_ClusterTerm::evt_Message,Qt::QueuedConnection);
connect (pnode,&zp_ClusterNode::evt_connect_to,m_pClusterNet,&ZPNetwork::zp_net_Engine::connectTo,Qt::QueuedConnection);
......@@ -472,7 +468,7 @@ namespace ZP_Cluster{
pMsg->hearder.data_length = sizeof(CROSS_SVR_MSG::uni_payload::tag_CSM_heartBeating);
pMsg->hearder.messagetype = 0x00;
pMsg->payload.heartBeating.nClients = this->m_nClientNums;
//m_pClusterNet->BroadcastData(0,array);
//BroadcastData;
m_hash_mutex.lock();
QList<QString> keys = m_hash_Name2node.keys();
//Msgs
......
......@@ -254,7 +254,6 @@ namespace ZPNetwork{
connect (clientTH,&zp_netTransThread::evt_Message,this,&zp_net_Engine::evt_Message,Qt::QueuedConnection);
connect (this,&zp_net_Engine::evt_EstablishConnection,clientTH,&zp_netTransThread::incomingConnection,Qt::QueuedConnection);
connect (this,&zp_net_Engine::evt_FireConnection,clientTH,&zp_netTransThread::startConnection,Qt::QueuedConnection);
connect (this,&zp_net_Engine::evt_BroadcastData,clientTH,&zp_netTransThread::BroadcastData,Qt::QueuedConnection);
connect (this,&zp_net_Engine::evt_SendDataToClient,clientTH,&zp_netTransThread::SendDataToClient,Qt::QueuedConnection);
connect (this,&zp_net_Engine::evt_KickAll,clientTH,&zp_netTransThread::KickAllClients,Qt::QueuedConnection);
connect (this,&zp_net_Engine::evt_DeactivteImmediately,clientTH,&zp_netTransThread::DeactivateImmediately,Qt::QueuedConnection);
......@@ -294,7 +293,6 @@ namespace ZPNetwork{
disconnect (clientTH,&zp_netTransThread::evt_Message,this,&zp_net_Engine::evt_Message);
disconnect (this,&zp_net_Engine::evt_EstablishConnection,clientTH,&zp_netTransThread::incomingConnection);
disconnect (this,&zp_net_Engine::evt_FireConnection,clientTH,&zp_netTransThread::startConnection);
disconnect (this,&zp_net_Engine::evt_BroadcastData,clientTH,&zp_netTransThread::BroadcastData);
disconnect (this,&zp_net_Engine::evt_SendDataToClient,clientTH,&zp_netTransThread::SendDataToClient);
disconnect (this,&zp_net_Engine::evt_KickAll,clientTH,&zp_netTransThread::KickAllClients);
disconnect (this,&zp_net_Engine::evt_DeactivteImmediately,clientTH,&zp_netTransThread::DeactivateImmediately);
......@@ -389,18 +387,6 @@ namespace ZPNetwork{
emit evt_KickClient(object);
}
/**
* @brief Broadcast data to every client, except for the source object
*
* @fn zp_net_Engine::BroadcastData
* @param objFromClient the source object.
* @param dtarray data to be sent.
*/
void zp_net_Engine::BroadcastData(QObject * objFromClient,QByteArray dtarray)
{
emit evt_BroadcastData(objFromClient,dtarray);
}
/**
* @brief Test whether this threadpool can be safely closed.
......
......@@ -95,7 +95,6 @@ namespace ZPNetwork{
void evt_FireConnection(QObject * threadid,const QHostAddress & hostAddr, quint16 port);
//Trans Control,for intenal thread usage
void evt_SendDataToClient(QObject * objClient,QByteArray dtarray);
void evt_BroadcastData(QObject * objFromClient,QByteArray dtarray);
void evt_KickClient(QObject *);
void evt_DeactivteImmediately(zp_netTransThread *);
void evt_KickAll(zp_netTransThread *);
......@@ -106,9 +105,6 @@ namespace ZPNetwork{
public slots:
//Call this function to send data to client
void SendDataToClient(QObject * objClient,QByteArray dtarray);
//Call this function to send data to client
void BroadcastData(QObject * objFromClient,QByteArray dtarray);
//Close client Immediatele
void KickClients(QObject * object);
......
......@@ -50,7 +50,7 @@ namespace ZPNetwork{
{
QList <QObject *> lsts ;
m_mutex_protect.lock();
lsts = m_clientList.keys();
lsts = m_clientList.values();
m_mutex_protect.unlock();
return lsts;
}
......@@ -123,7 +123,7 @@ namespace ZPNetwork{
connect(sock_client, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(displayError(QAbstractSocket::SocketError)),Qt::QueuedConnection);
connect(sock_client, &QTcpSocket::bytesWritten, this, &zp_netTransThread::some_data_sended,Qt::QueuedConnection);
m_mutex_protect.lock();
m_clientList[sock_client] = 0;
m_clientList.insert(sock_client);
m_mutex_protect.unlock();
if (m_bSSLConnection)
{
......@@ -178,7 +178,7 @@ namespace ZPNetwork{
connect(sock_client, &QTcpSocket::connected,this, &zp_netTransThread::on_connected,Qt::QueuedConnection);
connect(psslsock, &QSslSocket::encrypted,this, &zp_netTransThread::on_encrypted,Qt::QueuedConnection);
m_mutex_protect.lock();
m_clientList[sock_client] = 1;
m_clientList.insert(sock_client);
m_mutex_protect.unlock();
psslsock->connectToHostEncrypted(addr.toString(),port);
......@@ -191,7 +191,7 @@ namespace ZPNetwork{
connect(sock_client, &QTcpSocket::bytesWritten, this,&zp_netTransThread::some_data_sended,Qt::QueuedConnection);
connect(sock_client, &QTcpSocket::connected,this, &zp_netTransThread::on_connected,Qt::QueuedConnection);
m_mutex_protect.lock();
m_clientList[sock_client] = 1;
m_clientList.insert(sock_client);
m_mutex_protect.unlock();
sock_client->connectToHost(addr,port);
......@@ -231,8 +231,8 @@ namespace ZPNetwork{
disconnect(pSock, &QTcpSocket::bytesWritten, this, &zp_netTransThread::some_data_sended);
disconnect(pSock, &QTcpSocket::connected,this, &zp_netTransThread::on_connected);
m_buffer_sending.remove(pSock);
m_buffer_sending_offset.remove(pSock);
m_buffer_sending.erase(pSock);
m_buffer_sending_offset.erase(pSock);
m_mutex_protect.lock();
m_clientList.remove(pSock);
m_mutex_protect.unlock();
......@@ -311,8 +311,8 @@ namespace ZPNetwork{
disconnect(pSock, &QTcpSocket::bytesWritten, this, &zp_netTransThread::some_data_sended);
disconnect(pSock, &QTcpSocket::connected,this, &zp_netTransThread::on_connected);
m_buffer_sending.remove(pSock);
m_buffer_sending_offset.remove(pSock);
m_buffer_sending.erase(pSock);
m_buffer_sending_offset.erase(pSock);
m_mutex_protect.lock();
m_clientList.remove(pSock);
m_mutex_protect.unlock();
......@@ -327,8 +327,7 @@ namespace ZPNetwork{
void zp_netTransThread::SendDataToClient(QObject * objClient,QByteArray dtarray)
{
m_mutex_protect.lock();
if (m_clientList.find(objClient)==m_clientList.end())
// if (objClient->parent()!=this)//this approach is very effective, but can cause memory problems
if (m_clientList.contains(objClient)==false)
{
m_mutex_protect.unlock();
return;
......@@ -355,49 +354,27 @@ namespace ZPNetwork{
}
}
}
void zp_netTransThread::BroadcastData(QObject * objClient,QByteArray dtarray)
{
m_mutex_protect.lock();
QList<QObject *> clientList = m_clientList.keys();
m_mutex_protect.unlock();
foreach(QObject * obj,clientList)
{
QTcpSocket * pSock = qobject_cast<QTcpSocket*>(obj);
if (pSock&&dtarray.size()&&pSock!=objClient)
{
QList<QByteArray> & list_sock_data = m_buffer_sending[pSock];
QList<qint64> & list_offset = m_buffer_sending_offset[pSock];
if (list_sock_data.empty()==true)
{
qint64 bytesWritten = pSock->write(dtarray.constData(),qMin(dtarray.size(),m_nPayLoad));
if (bytesWritten < dtarray.size())
{
list_sock_data.push_back(dtarray);
list_offset.push_back(bytesWritten);
}
else
{
list_sock_data.push_back(dtarray);
list_offset.push_back(0);
}
}
}
}
}
void zp_netTransThread::KickAllClients(zp_netTransThread * ptr)
{
if (ptr!=this)
return;
m_mutex_protect.lock();
QList<QObject *> clientList = m_clientList.keys();
QList<QObject *> clientList = m_clientList.values();
foreach(QObject * obj,clientList)
{
QTcpSocket * pSock = qobject_cast<QTcpSocket*>(obj);
if (m_clientList[pSock]==0)
pSock->abort();
else
pSock->disconnectFromHost();
if (pSock)
{
QSslSocket * pSSl = qobject_cast<QSslSocket*>(pSock);
if (pSSl==NULL)
pSock->abort();
else
pSock->disconnectFromHost();
}
}
m_mutex_protect.unlock();
}
......@@ -405,17 +382,18 @@ namespace ZPNetwork{
void zp_netTransThread::KickClient(QObject * objClient)
{
m_mutex_protect.lock();
if (m_clientList.find(objClient)==m_clientList.end())
// if (objClient->parent()!=this)//this approach is very effective, but will cause memory crush .
if (m_clientList.contains(objClient)==false)
{
m_mutex_protect.unlock();
return;
}
m_mutex_protect.unlock();
QTcpSocket * pSock = qobject_cast<QTcpSocket*>(objClient);
if (pSock)
{
if (m_clientList[objClient]==0)
QSslSocket * pSSl = qobject_cast<QSslSocket*>(pSock);
if (pSSl==NULL)
pSock->abort();
else
pSock->disconnectFromHost();
......
......@@ -5,10 +5,11 @@
#define ZP_NETTRANSTHREAD_H
#include <QObject>
#include <QMap>
#include <QList>
#include <QAbstractSocket>
#include <QMutex>
#include <unordered_map>
#include <QSet>
namespace ZPNetwork{
class zp_net_Engine;
/**
......@@ -35,11 +36,11 @@ namespace ZPNetwork{
bool m_bActivated;
bool m_bSSLConnection;
//sending buffer, hold byteArraies.
QMap<QObject *,QList<QByteArray> > m_buffer_sending;
std::unordered_map<QObject *,QList<QByteArray> > m_buffer_sending;
QMap<QObject *,QList<qint64> > m_buffer_sending_offset;
std::unordered_map<QObject *,QList<qint64> > m_buffer_sending_offset;
//The socket and the connection-direction, 0 is passive, 1 is postive.
QMap<QObject*,int> m_clientList;
QSet<QObject*> m_clientList;
int m_nPayLoad;
QMutex m_mutex_protect;
zp_net_Engine * m_pThreadPool;
......@@ -50,8 +51,6 @@ namespace ZPNetwork{
void startConnection(QObject * threadid,const QHostAddress & addr, quint16 port);
//sending dtarray to objClient. dtarray will be pushed into m_buffer_sending
void SendDataToClient(QObject * objClient,QByteArray dtarray);
//Broadcast dtarray to every client except objFromClient itself
void BroadcastData(QObject * objFromClient,QByteArray dtarray);
//Set terminate mark, the thread will quit after last client quit.
void Deactivate();
//terminate this thread immediately
......
......@@ -95,10 +95,10 @@ namespace ExampleServer{
void st_client_table::KickDeadClients()
{
m_hash_mutex.lock();
for (QMap<QObject *,st_clientNode_baseTrans *>::iterator p =m_hash_sock2node.begin();
for (std::unordered_map<QObject *,st_clientNode_baseTrans *>::iterator p =m_hash_sock2node.begin();
p!=m_hash_sock2node.end();p++)
{
p.value()->CheckHeartBeating();
(*p).second->CheckHeartBeating();
}
m_hash_mutex.unlock();
}
......@@ -116,7 +116,7 @@ namespace ExampleServer{
st_clientNode_baseTrans * st_client_table::clientNodeFromUUID(quint32 uuid)
{
m_hash_mutex.lock();
if (m_hash_uuid2node.contains(uuid))
if (m_hash_uuid2node.find(uuid)!=m_hash_uuid2node.end())
{
m_hash_mutex.unlock();
return m_hash_uuid2node[uuid];
......@@ -129,7 +129,7 @@ namespace ExampleServer{
st_clientNode_baseTrans * st_client_table::clientNodeFromSocket(QObject * sock)
{
m_hash_mutex.lock();
if (m_hash_sock2node.contains(sock))
if (m_hash_sock2node.find(sock)!=m_hash_sock2node.end())
{
m_hash_mutex.unlock();
return m_hash_sock2node[sock];
......@@ -144,13 +144,12 @@ namespace ExampleServer{
bool nHashContains = false;
st_clientNode_baseTrans * pClientNode = 0;
m_hash_mutex.lock();
nHashContains = m_hash_sock2node.contains(clientHandle);
nHashContains = (m_hash_sock2node.find(clientHandle)!=m_hash_sock2node.end())?true:false;
if (false==nHashContains)
{
st_clientNode_baseTrans * pnode = new st_clientNodeAppLayer(this,clientHandle,0);
//using queued connection of send and revieve;
connect (pnode,&st_clientNode_baseTrans::evt_SendDataToClient,m_pThreadEngine,&ZPNetwork::zp_net_Engine::SendDataToClient,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_BroadcastData,m_pThreadEngine,&ZPNetwork::zp_net_Engine::evt_BroadcastData,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_close_client,m_pThreadEngine,&ZPNetwork::zp_net_Engine::KickClients,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_Message,this,&st_client_table::evt_Message,Qt::QueuedConnection);
m_hash_sock2node[clientHandle] = pnode;
......@@ -171,13 +170,12 @@ namespace ExampleServer{
bool nHashContains = false;
st_clientNode_baseTrans * pClientNode = 0;
m_hash_mutex.lock();
nHashContains = m_hash_sock2node.contains(clientHandle);
nHashContains = (m_hash_sock2node.find(clientHandle)!=m_hash_sock2node.end())?true:false;
if (false==nHashContains)
{
st_clientNode_baseTrans * pnode = new st_clientNodeAppLayer(this,clientHandle,0);
//using queued connection of send and revieve;
connect (pnode,&st_clientNode_baseTrans::evt_SendDataToClient,m_pThreadEngine,&ZPNetwork::zp_net_Engine::SendDataToClient,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_BroadcastData,m_pThreadEngine,&ZPNetwork::zp_net_Engine::evt_BroadcastData,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_close_client,m_pThreadEngine,&ZPNetwork::zp_net_Engine::KickClients,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_Message,this,&st_client_table::evt_Message,Qt::QueuedConnection);
m_hash_sock2node[clientHandle] = pnode;
......@@ -198,26 +196,25 @@ namespace ExampleServer{
bool nHashContains = false;
st_clientNode_baseTrans * pClientNode = 0;
m_hash_mutex.lock();
nHashContains = m_hash_sock2node.contains(clientHandle);
nHashContains = (m_hash_sock2node.find(clientHandle)!=m_hash_sock2node.end())?true:false;
if (nHashContains)
pClientNode = m_hash_sock2node[clientHandle];
if (pClientNode)
{
m_hash_sock2node.remove(clientHandle);
m_hash_sock2node.erase(clientHandle);
if (pClientNode->uuidValid())
{
//This is important. some time m_hash_sock2node and m_hash_uuid2node, same uuid has different socket.
if (m_hash_uuid2node.contains(pClientNode->uuid()))
if (m_hash_uuid2node.find(pClientNode->uuid())!=m_hash_uuid2node.end())
if (m_hash_uuid2node[pClientNode->uuid()]==pClientNode)
{
m_hash_uuid2node.remove(pClientNode->uuid());
m_hash_uuid2node.erase(pClientNode->uuid());
broadcast_client_uuid(pClientNode->uuid(),false);
}
}
pClientNode->bTermSet = true;
disconnect (pClientNode,&st_clientNode_baseTrans::evt_SendDataToClient,m_pThreadEngine,&ZPNetwork::zp_net_Engine::SendDataToClient);
disconnect (pClientNode,&st_clientNode_baseTrans::evt_BroadcastData,m_pThreadEngine,&ZPNetwork::zp_net_Engine::evt_BroadcastData);
disconnect (pClientNode,&st_clientNode_baseTrans::evt_close_client,m_pThreadEngine,&ZPNetwork::zp_net_Engine::KickClients);
disconnect (pClientNode,&st_clientNode_baseTrans::evt_Message,this,&st_client_table::evt_Message);
......@@ -255,13 +252,12 @@ namespace ExampleServer{
bool nHashContains = false;
st_clientNode_baseTrans * pClientNode = 0;
m_hash_mutex.lock();
nHashContains = m_hash_sock2node.contains(clientHandle);
nHashContains = (m_hash_sock2node.find(clientHandle)!=m_hash_sock2node.end())?true:false;
if (false==nHashContains)
{
st_clientNode_baseTrans * pnode = new st_clientNodeAppLayer(this,clientHandle,0);
//using queued connection of send and revieve;
connect (pnode,&st_clientNode_baseTrans::evt_SendDataToClient,m_pThreadEngine,&ZPNetwork::zp_net_Engine::SendDataToClient,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_BroadcastData,m_pThreadEngine,&ZPNetwork::zp_net_Engine::evt_BroadcastData,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_close_client,m_pThreadEngine,&ZPNetwork::zp_net_Engine::KickClients,Qt::QueuedConnection);
connect (pnode,&st_clientNode_baseTrans::evt_Message,this,&st_client_table::evt_Message,Qt::QueuedConnection);
m_hash_sock2node[clientHandle] = pnode;
......@@ -294,7 +290,10 @@ namespace ExampleServer{
{
//Send All Client UUIDs to new Svr
m_hash_mutex.lock();
QList<quint32> uuids = m_hash_uuid2node.keys();
QList<quint32> uuids;
for(std::unordered_map<quint32,st_clientNode_baseTrans *>::iterator p = m_hash_uuid2node.begin();
p!=m_hash_uuid2node.end();p++)
uuids.push_back((*p).first);
int nNodeSz = uuids.size();
if (nNodeSz>0)
{
......@@ -334,7 +333,7 @@ namespace ExampleServer{
{
bool bres = false;
m_hash_mutex.lock();
if (m_hash_uuid2node.contains(uuid))
if (m_hash_uuid2node.find(uuid)!=m_hash_uuid2node.end())
{
st_clientNode_baseTrans * pAppLayer = qobject_cast<st_clientNode_baseTrans *>(m_hash_uuid2node[uuid]);
if (pAppLayer)
......
......@@ -4,7 +4,7 @@
#include <QObject>
#include <QList>
#include <QMutex>
#include <QMap>
#include <unordered_map>
#include <unordered_map>
#include "../network/zp_net_threadpool.h"
#include "../pipeline/zp_pipeline.h"
......@@ -68,8 +68,8 @@ namespace ExampleServer{
//Very important hashes. will be improved for cross-server transfer
QMutex m_hash_mutex;
QMap<quint32,st_clientNode_baseTrans *> m_hash_uuid2node;
QMap<QObject *,st_clientNode_baseTrans *> m_hash_sock2node;
std::unordered_map<quint32,st_clientNode_baseTrans *> m_hash_uuid2node;
std::unordered_map<QObject *,st_clientNode_baseTrans *> m_hash_sock2node;
//Concurrent Network frame work
ZPNetwork::zp_net_Engine * m_pThreadEngine;
......
......@@ -68,7 +68,6 @@ namespace ExampleServer{
signals:
void evt_SendDataToClient(QObject * objClient,QByteArray dtarray);
void evt_BroadcastData(QObject * objFromClient,QByteArray dtarray);
void evt_close_client(QObject * objClient);
void evt_Message (QObject * psource,QString );
......
......@@ -163,6 +163,7 @@ void ZPMainFrame::initUI()
void ZPMainFrame::on_evt_MessageNetwork(QObject * psource,QString strMsg)
{
//return ;
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + strMsg;
msg += tr(",Source=%1").arg((quint64)psource);
......@@ -174,6 +175,7 @@ void ZPMainFrame::on_evt_MessageNetwork(QObject * psource,QString strMsg)
void ZPMainFrame::on_evt_Message_Database(QObject * psource,QString strMsg)
{
//return ;
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + strMsg;
msg += tr(",Source=%1").arg((quint64)psource);
......@@ -185,6 +187,7 @@ void ZPMainFrame::on_evt_Message_Database(QObject * psource,QString strMsg)
void ZPMainFrame::on_evt_Message_Smartlink(QObject * psource,QString strMsg)
{
//return ;
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + strMsg;
msg += tr(",Source=%1").arg((quint64)psource);
......@@ -199,6 +202,7 @@ void ZPMainFrame::on_evt_Message_Smartlink(QObject * psource,QString strMsg)
//The socket error message
void ZPMainFrame::on_evt_SocketError(QObject * senderSock ,QAbstractSocket::SocketError socketError)
{
//return ;
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + QString("SockError %1 with code %2")
.arg((quint64)senderSock).arg((quint32)socketError);
......@@ -211,6 +215,7 @@ void ZPMainFrame::on_evt_SocketError(QObject * senderSock ,QAbstractSocket::Soc
void ZPMainFrame::on_evt_Message_Cluster(QObject * psource,QString strMsg)
{
//return ;
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + strMsg;
msg += tr(",Source=%1").arg((quint64)psource);
......@@ -223,6 +228,7 @@ void ZPMainFrame::on_evt_Message_Cluster(QObject * psource,QString strMsg)
//The socket error message
void ZPMainFrame::on_evt_SocketError_Cluster(QObject * senderSock ,QAbstractSocket::SocketError socketError)
{
//return ;
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + QString("SockError %1 with code %2")
.arg((quint64)senderSock).arg((quint32)socketError);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册