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

sloved a serious bug in 7*24 stability test. A signal and a slot passing

const QByteArray & type paras, will cause lift cycle problems. using Value-pass instead.
----
QString, QByteArray supports ref-count and auto-delete , also, these classes support
least-copying, deep-copy will only take place, when the data is about to be changed.
so, in singnals and slots, using QString, QByteArray instead of const QString & and const QByteArray & ,
will not cause performance problem.
上级 30597936
......@@ -104,7 +104,7 @@ void MainDialog::new_data_recieved()
}
}
}
void MainDialog::displayMessage(const QString &str)
void MainDialog::displayMessage(QString str)
{
model.insertRow(0,new QStandardItem(str));
while (model.rowCount()>=256)
......@@ -313,7 +313,7 @@ void MainDialog::on_pushButton_clientLogout_clicked()
//!deal one message, affect m_currentRedOffset,m_currentMessageSize,m_currentHeader
//!return bytes Used.
int MainDialog::filter_message(const QByteArray & block, int offset)
int MainDialog::filter_message(QByteArray block, int offset)
{
const int blocklen = block.length();
while (blocklen>offset)
......
......@@ -35,7 +35,7 @@ private:
protected:
//!deal one message, affect m_currentRedOffset,m_currentMessageSize,m_currentHeader
//!return bytes Used.
int filter_message(const QByteArray &, int offset);
int filter_message(QByteArray , int offset);
int deal_current_message_block();
//data items
......@@ -60,7 +60,7 @@ public slots:
void on_client_connected();
void on_client_disconnected();
void displayError(QAbstractSocket::SocketError);
void displayMessage(const QString &str);
void displayMessage(QString str);
void on_pushButton_connect_clicked();
void on_pushButton_clientLogin_clicked();
......
......@@ -20,7 +20,7 @@ quint32 QGHSslClient::uuid()
{
return m_uuid;
}
void QGHSslClient::geneGlobalUUID(const QString & globalUuidFile)
void QGHSslClient::geneGlobalUUID(QString globalUuidFile)
{
QFile file(globalUuidFile);
int ctp = 0;
......@@ -100,7 +100,7 @@ quint32 QGHTcpClient::uuid()
{
return m_uuid;
}
void QGHTcpClient::geneGlobalUUID(const QString & globalUuidFile)
void QGHTcpClient::geneGlobalUUID(QString globalUuidFile)
{
QFile file(globalUuidFile);
int ctp = 0;
......
......@@ -11,7 +11,7 @@ public:
QGHSslClient(QObject *parent,int nPayLoad = 4096);
~QGHSslClient();
quint32 uuid();
void geneGlobalUUID(const QString & globalUuidFile);
void geneGlobalUUID(QString globalUuidFile);
private:
quint32 m_uuid;
......@@ -32,7 +32,7 @@ public:
QGHTcpClient(QObject *parent,int nPayLoad = 4096);
~QGHTcpClient();
quint32 uuid();
void geneGlobalUUID(const QString & globalUuidFile);
void geneGlobalUUID(QString globalUuidFile);
private:
quint32 m_uuid; int m_nPayLoad;
......
......@@ -9,7 +9,8 @@ QTcpClientTest::QTcpClientTest(QWidget *parent, Qt::WindowFlags flags)
{
ui.setupUi(this);
//Paramenters
QSettings settings("goldenhawking club","QTcpClientTest",this);
QString iniFile = QCoreApplication::applicationFilePath()+".ini";
QSettings settings(iniFile,QSettings::IniFormat);
ui.lineEdit_ip->setText(settings.value("ip","localhost").toString());
ui.lineEdit_Port->setText(settings.value("port","23457").toString());
ui.dial->setValue(settings.value("clientNum","32").toInt());
......@@ -34,7 +35,8 @@ void QTcpClientTest::on_horizontalSlider_valueChanged(int value)
void QTcpClientTest::on_action_Connect_triggered(bool bConn)
{
//connect to the server
QSettings settings("goldenhawking club","QTcpClientTest",this);
QString iniFile = QCoreApplication::applicationFilePath()+".ini";
QSettings settings(iniFile,QSettings::IniFormat);
settings.setValue("ip",ui.lineEdit_ip->text());
settings.setValue("port",ui.lineEdit_Port->text());
settings.setValue("clientNum",ui.dial->value());
......@@ -286,7 +288,7 @@ void QTcpClientTest::timerEvent(QTimerEvent * evt)
}
}
}
void QTcpClientTest::displayMessage(const QString &str)
void QTcpClientTest::displayMessage(QString str)
{
model.insertRow(0,new QStandardItem(str));
while (model.rowCount()>=256)
......@@ -295,7 +297,7 @@ void QTcpClientTest::displayMessage(const QString &str)
quint32 QTcpClientTest::getRadomUUIDDestin()
{
int nTotalClients = ui.dial->value();
int nMinID = m_maxUUID - m_minUUID < nTotalClients ? m_minUUID:m_maxUUID - nTotalClients;
int nMinID = ((m_maxUUID - m_minUUID) < nTotalClients) ? m_minUUID:(m_maxUUID - nTotalClients);
int nSpan = (m_maxUUID - nMinID + 1);
int nChoose = rand() % nSpan;
......
......@@ -33,7 +33,7 @@ public slots:
void on_client_connected();
void on_client_disconnected();
void displayError(QAbstractSocket::SocketError);
void displayMessage(const QString &str);
void displayMessage(QString str);
};
#endif // QTCPCLIENTTEST_H
......@@ -6,8 +6,9 @@ Zoom-Pipeline Server , a Qt based tcp-ip c/s solution. This solution provides:
* Provides a thread pool for TCP/IP data transfer. Clients' socket will run in thread pool, instead of main thread.
* Provides a pipeline-style task engine, designed for heavily data process.
* Provides a database resource class, enable mutithread db Access.
* Provides a Server-to-Server Cluster system, enable cross server communication.(Still in develop)
* Provides a Server-to-Server Cluster system, enable cross server communication.
* In this example, cross - Server balance suggestion msgs will be delieved in "log-in response". Following this suggestion msg, a client can disconnect from this server, and connect to another svr which has less clients currently.
* main-branch is now in 7*24 full-payload test.
----------------------------------------
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
......
......@@ -57,6 +57,8 @@ namespace ZP_Cluster{
//qDebug()<<QString("%1(%2) Node Martked Deleted, return.\n").arg((unsigned int)this).arg(ref());
return 0;
}
//This is important! sometimes without this check, m_list_RawData will crash.
//For a single zp_ClusterNode instance, at anytime, there should be only ONE thread in which run() is running.
if (ref()>1)
return -1;
int nCurrSz = -1;
......@@ -116,7 +118,7 @@ namespace ZP_Cluster{
//!deal one message, affect m_currentRedOffset,m_currentMessageSize,m_currentHeader
//!return bytes Used.
int zp_ClusterNode::filter_message(const QByteArray & block, int offset)
int zp_ClusterNode::filter_message(QByteArray block, int offset)
{
const int blocklen = block.length();
while (blocklen>offset)
......@@ -317,7 +319,7 @@ namespace ZP_Cluster{
return 0;
}
bool zp_ClusterNode::deal_user_data(const QByteArray & data)
bool zp_ClusterNode::deal_user_data(QByteArray data)
{
emit evt_RemoteData_recieved(this->termName(),data);
return true;
......
......@@ -29,11 +29,11 @@ namespace ZP_Cluster{
static const int m_nMessageBlockSize = 8;
//!deal one message, affect m_currentRedOffset,m_currentMessageSize,m_currentHeader
//!return bytes Used.
int filter_message(const QByteArray &, int offset);
int filter_message(QByteArray , int offset);
//!in Trans-Layer, it does nothing.
int deal_current_message_block();
//!virtual functions, dealing with the user-defined operations.
virtual bool deal_user_data(const QByteArray &);
virtual bool deal_user_data(QByteArray );
QDateTime lastActiveTime();
......@@ -78,16 +78,16 @@ namespace ZP_Cluster{
quint32 m_nRemoteClientNums;
signals:
void evt_SendDataToClient(QObject * objClient,const QByteArray & dtarray);
void evt_BroadcastData(QObject * objFromClient,const QByteArray & dtarray);
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,const QString &);
void evt_Message (QObject * psource,QString );
//Notify Messages
void evt_NewSvrConnected(const QString & /*svrHandle*/);
void evt_NewSvrConnected(QString /*svrHandle*/);
//some data arrival
void evt_RemoteData_recieved(const QString & /*svrHandle*/,const QByteArray & /*svrHandle*/ );
void evt_RemoteData_recieved(QString /*svrHandle*/,QByteArray /*svrHandle*/ );
};
}
#endif // ZP_CLUSTERNODE_H
......@@ -3,7 +3,7 @@
#include <assert.h>
namespace ZP_Cluster{
using namespace std::placeholders;
zp_ClusterTerm::zp_ClusterTerm(const QString & name,QObject *parent ) :
zp_ClusterTerm::zp_ClusterTerm(QString name,QObject *parent ) :
QObject(parent)
,m_strTermName(name)
,m_nClientNums(0)
......@@ -105,7 +105,7 @@ namespace ZP_Cluster{
{
return m_pClusterEng;
}
QString zp_ClusterTerm::setName(const QString & s)
QString zp_ClusterTerm::setName(QString s)
{
return m_strTermName = s;
}
......@@ -147,7 +147,7 @@ namespace ZP_Cluster{
m_hash_mutex.unlock();
return lst;
}
QHostAddress zp_ClusterTerm::SvrLANAddr(const QString & name)
QHostAddress zp_ClusterTerm::SvrLANAddr(QString name)
{
QHostAddress addr;
m_hash_mutex.lock();
......@@ -157,7 +157,7 @@ namespace ZP_Cluster{
return addr;
}
int zp_ClusterTerm::SvrLANPort(const QString & name)
int zp_ClusterTerm::SvrLANPort(QString name)
{
int port = 0;
m_hash_mutex.lock();
......@@ -166,7 +166,7 @@ namespace ZP_Cluster{
m_hash_mutex.unlock();
return port;
}
QHostAddress zp_ClusterTerm::SvrPubAddr(const QString & name)
QHostAddress zp_ClusterTerm::SvrPubAddr(QString name)
{
QHostAddress addr;
m_hash_mutex.lock();
......@@ -176,7 +176,7 @@ namespace ZP_Cluster{
return addr;
}
int zp_ClusterTerm::SvrPubPort(const QString & name)
int zp_ClusterTerm::SvrPubPort(QString name)
{
int port = 0;
m_hash_mutex.lock();
......@@ -187,7 +187,7 @@ namespace ZP_Cluster{
}
quint32 zp_ClusterTerm::remoteClientNums(const QString & name)
quint32 zp_ClusterTerm::remoteClientNums(QString name)
{
quint32 res = 0;
m_hash_mutex.lock();
......@@ -216,7 +216,7 @@ namespace ZP_Cluster{
return true;
}
zp_ClusterNode * zp_ClusterTerm::SvrNodeFromName(const QString & uuid)
zp_ClusterNode * zp_ClusterTerm::SvrNodeFromName(QString uuid)
{
m_hash_mutex.lock();
if (m_hash_Name2node.contains(uuid))
......@@ -362,7 +362,7 @@ namespace ZP_Cluster{
}
//some data arrival
void zp_ClusterTerm::on_evt_Data_recieved(QObject * clientHandle,const QByteArray & datablock )
void zp_ClusterTerm::on_evt_Data_recieved(QObject * clientHandle,QByteArray datablock )
{
//Push Clients to nodes if it is not exist
bool nHashContains = false;
......@@ -482,7 +482,7 @@ namespace ZP_Cluster{
}
m_hash_mutex.unlock();
}
void zp_ClusterTerm::SendDataToRemoteServer(const QString & svrName,const QByteArray & SourceArray)
void zp_ClusterTerm::SendDataToRemoteServer(QString svrName,QByteArray SourceArray)
{
int nMsgLen = sizeof(CROSS_SVR_MSG::tag_header) + SourceArray.size();
QByteArray array(nMsgLen,0);
......
......@@ -18,7 +18,7 @@ namespace ZP_Cluster{
{
Q_OBJECT
public:
explicit zp_ClusterTerm(const QString & name,QObject *parent = 0);
explicit zp_ClusterTerm(QString name,QObject *parent = 0);
/**
......@@ -39,15 +39,15 @@ namespace ZP_Cluster{
//Server Group Mapping
public:
zp_ClusterNode * SvrNodeFromName(const QString &);
zp_ClusterNode * SvrNodeFromName(QString );
zp_ClusterNode * SvrNodeFromSocket(QObject *);
QStringList SvrNames();
quint32 remoteClientNums(const QString & name);
quint32 remoteClientNums(QString name);
QHostAddress SvrLANAddr(const QString & name);
int SvrLANPort(const QString & name);
QHostAddress SvrPubAddr(const QString & name);
int SvrPubPort(const QString & name);
QHostAddress SvrLANAddr(QString name);
int SvrLANPort(QString name);
QHostAddress SvrPubAddr(QString name);
int SvrPubPort(QString name);
//Client Num set, for cross-svr balance
......@@ -56,7 +56,7 @@ namespace ZP_Cluster{
//Propties
public:
//properties.
QString setName(const QString & s);
QString setName(QString s);
QString name();
//LAN Address, for other servers
......@@ -107,15 +107,15 @@ namespace ZP_Cluster{
QMap<QObject *,zp_ClusterNode *> m_hash_sock2node;
signals:
void evt_Message(QObject * ,const QString &);
void evt_Message(QObject * ,QString );
//The socket error message
void evt_SocketError(QObject * senderSock ,QAbstractSocket::SocketError socketError);
//this event indicates new svr successfully hand-shaked.
void evt_NewSvrConnected(const QString &/*svrHandle*/);
void evt_NewSvrConnected(QString /*svrHandle*/);
//this event indicates a client disconnected.
void evt_NewSvrDisconnected(const QString &/*svrHandle*/);
void evt_NewSvrDisconnected(QString /*svrHandle*/);
//some data arrival
void evt_RemoteData_recieved(const QString &/*svrHandle*/,const QByteArray & /*svrHandle*/ );
void evt_RemoteData_recieved(QString /*svrHandle*/,QByteArray /*svrHandle*/ );
//a block of data has been successfuly sent
void evt_RemoteData_transferred(QObject * /*svrHandle*/,qint64 /*bytes sent*/);
......@@ -127,7 +127,7 @@ namespace ZP_Cluster{
//this event indicates a client disconnected.
void on_evt_ClientDisconnected(QObject * /*clientHandle*/);
//some data arrival
void on_evt_Data_recieved(QObject * /*clientHandle*/,const QByteArray & /*datablock*/ );
void on_evt_Data_recieved(QObject * /*clientHandle*/,QByteArray /*datablock*/ );
//a block of data has been successfuly sent
void on_evt_Data_transferred(QObject * /*clientHandle*/,qint64 /*bytes sent*/);
......@@ -141,7 +141,7 @@ namespace ZP_Cluster{
void KickDeadClients();
//Send Data to Server
void SendDataToRemoteServer(const QString & svrName,const QByteArray &);
void SendDataToRemoteServer(QString svrName,QByteArray );
};
}
......
......@@ -19,7 +19,7 @@ namespace ZPDatabase{
* @param strDBName the database name
* @return QSqlDatabase return the database object
*/
QSqlDatabase DatabaseResource::databse(const QString & strDBName)
QSqlDatabase DatabaseResource::databse(QString strDBName)
{
QMutexLocker locker(&m_mutex_reg);
if (false==QSqlDatabase::contains(strDBName))
......@@ -43,7 +43,7 @@ namespace ZPDatabase{
}
//!Remove Database
void DatabaseResource::remove_connection(const QString & strDBName)
void DatabaseResource::remove_connection(QString strDBName)
{
QMutexLocker locker(&m_mutex_reg);
if (true==QSqlDatabase::contains(strDBName))
......@@ -81,15 +81,15 @@ namespace ZPDatabase{
* @return bool succeed : true
*/
bool DatabaseResource::addConnection(
const QString & connName,
const QString & type,
const QString & HostAddr,
QString connName,
QString type,
QString HostAddr,
int port,
const QString & dbName,
const QString & User,
const QString & Pass,
const QString & ExtraOptions,
const QString & testSQL
QString dbName,
QString User,
QString Pass,
QString ExtraOptions,
QString testSQL
)
{
QMutexLocker locker(&m_mutex_reg);
......@@ -144,7 +144,7 @@ namespace ZPDatabase{
* @param connName the connection name which to be tested.
* @return bool the check result.
*/
bool DatabaseResource::confirmConnection (const QString & connName)
bool DatabaseResource::confirmConnection (QString connName)
{
QMutexLocker locker(&m_mutex_reg);
if (false==m_dbNames.contains(connName))
......
......@@ -39,23 +39,23 @@ namespace ZPDatabase{
//!Get an database connection belong to current thread.
//!if database does not exist, it will be added using dbtype
QSqlDatabase databse(const QString & strDBName);
QSqlDatabase databse(QString strDBName);
//!add connection connName, return true if ok.
bool addConnection(
const QString & connName,
const QString & type,
const QString & HostAddr,
QString connName,
QString type,
QString HostAddr,
int port,
const QString & dbName,
const QString & User,
const QString & Pass,
const QString & ExtraOptions,
const QString & testSQL
QString dbName,
QString User,
QString Pass,
QString ExtraOptions,
QString testSQL
);
void remove_connection(const QString & strDBName);
void remove_connection(QString strDBName);
void remove_connections();
bool confirmConnection (const QString & connName);
bool confirmConnection (QString connName);
QMap <QString,tagConnectionPara> currentDatabaseConnections(){return m_dbNames;}
......@@ -68,7 +68,7 @@ namespace ZPDatabase{
QMutex m_mutex_reg;
QMap <QString,tagConnectionPara> m_dbNames;
signals:
void evt_Message(QObject *,const QString &);
void evt_Message(QObject *,QString );
public slots:
};
......
......@@ -90,7 +90,7 @@ namespace ZPNetwork{
* @param nPort Listening Port. in Linux, this value should larger than 1024.
* @param bSSLConn True means this address using OpenSSL . False means plain TCP
*/
void zp_net_Engine::AddListeningAddress(const QString & id,const QHostAddress & address , quint16 nPort,bool bSSLConn /*= true*/)
void zp_net_Engine::AddListeningAddress(QString id,const QHostAddress & address , quint16 nPort,bool bSSLConn /*= true*/)
{
if (m_map_netListenThreads.find(id)==m_map_netListenThreads.end())
{
......@@ -123,7 +123,7 @@ namespace ZPNetwork{
* @fn zp_net_Engine::RemoveListeningAddress
* @param id Listening-Address name specified by AddListeningAddress()
*/
void zp_net_Engine::RemoveListeningAddress(const QString & id)
void zp_net_Engine::RemoveListeningAddress(QString id)
{
//m_mutex_listen.lock();
if (m_map_netListenThreads.find(id)!=m_map_netListenThreads.end())
......@@ -198,7 +198,7 @@ namespace ZPNetwork{
* @fn zp_net_Engine::on_ListenClosed
* @param id the terminated thread id.
*/
void zp_net_Engine::on_ListenClosed(const QString & id)
void zp_net_Engine::on_ListenClosed(QString id)
{
//m_mutex_listen.lock();
if (m_map_netListenThreads.find(id)!=m_map_netListenThreads.end())
......@@ -374,7 +374,7 @@ namespace ZPNetwork{
* @param objClient The destin client
* @param dtarray data to be sent
*/
void zp_net_Engine::SendDataToClient(QObject * objClient,const QByteArray & dtarray)
void zp_net_Engine::SendDataToClient(QObject * objClient,QByteArray dtarray)
{
emit evt_SendDataToClient(objClient,dtarray);
}
......@@ -396,7 +396,7 @@ namespace ZPNetwork{
* @param objFromClient the source object.
* @param dtarray data to be sent.
*/
void zp_net_Engine::BroadcastData(QObject * objFromClient,const QByteArray & dtarray)
void zp_net_Engine::BroadcastData(QObject * objFromClient,QByteArray dtarray)
{
emit evt_BroadcastData(objFromClient,dtarray);
}
......
......@@ -30,9 +30,9 @@ namespace ZPNetwork{
//Listening Ctrl
//Begin a listening socket at special address and port. The socket will be activated as soon as possible
void AddListeningAddress(const QString & id,const QHostAddress & address , quint16 nPort,bool bSSLConn = true);
void AddListeningAddress(QString id,const QHostAddress & address , quint16 nPort,bool bSSLConn = true);
//Remove a listening socket at special address and port.The socket will be deactivated as soon as possible
void RemoveListeningAddress(const QString & id);
void RemoveListeningAddress(QString id);
//Remove all listening sockets
void RemoveAllAddresses();
......@@ -73,7 +73,7 @@ namespace ZPNetwork{
bool TransThreadDel(zp_netTransThread * pThreadObj);
signals:
void evt_Message(QObject * pSource,const QString &);
void evt_Message(QObject * pSource,QString );
//The socket error message
void evt_SocketError(QObject * senderSock ,QAbstractSocket::SocketError socketError);
//this event indicates new client connected.
......@@ -83,31 +83,31 @@ namespace ZPNetwork{
//this event indicates a client disconnected.
void evt_ClientDisconnected(QObject * /*clientHandle*/);
//some data arrival
void evt_Data_recieved(QObject * /*clientHandle*/,const QByteArray & /*datablock*/ );
void evt_Data_recieved(QObject * /*clientHandle*/,QByteArray /*datablock*/ );
//a block of data has been successfuly sent
void evt_Data_transferred(QObject * /*clientHandle*/,qint64 /*bytes sent*/);
//Internal Message for ctrl.------------------------------------
//Listen Control
void startListen(const QString & id);
void stopListen(const QString & id);
void startListen(QString id);
void stopListen(QString id);
void evt_EstablishConnection(QObject * threadid,qintptr socketDescriptor);
void evt_FireConnection(QObject * threadid,const QHostAddress & hostAddr, quint16 port);
//Trans Control,for intenal thread usage
void evt_SendDataToClient(QObject * objClient,const QByteArray & dtarray);
void evt_BroadcastData(QObject * objFromClient,const QByteArray & dtarray);
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 *);
protected slots:
void on_New_Arrived_Client(qintptr socketDescriptor);
void on_ListenClosed(const QString & id);
void on_ListenClosed(QString id);
public slots:
//Call this function to send data to client
void SendDataToClient(QObject * objClient,const QByteArray & dtarray);
void SendDataToClient(QObject * objClient,QByteArray dtarray);
//Call this function to send data to client
void BroadcastData(QObject * objFromClient,const QByteArray & dtarray);
void BroadcastData(QObject * objFromClient,QByteArray dtarray);
//Close client Immediatele
void KickClients(QObject * object);
......
#include "zp_netlistenthread.h"
namespace ZPNetwork{
zp_netListenThread::zp_netListenThread(const QString & id, QHostAddress address ,quint16 port,bool bSSL,QObject *parent)
zp_netListenThread::zp_netListenThread(QString id, QHostAddress address ,quint16 port,bool bSSL,QObject *parent)
:QObject(parent)
,m_tcpServer(0)
,m_id(id)
......@@ -26,7 +26,7 @@ namespace ZPNetwork{
* @param id the Listening ID that zp_net_Engine really
* want to operate.
*/
void zp_netListenThread::startListen(const QString & id)
void zp_netListenThread::startListen(QString id)
{
if (id==m_id)
{
......@@ -48,11 +48,11 @@ namespace ZPNetwork{
}
/**
* @brief this method is very similar to zp_netListenThread::startListen(const QString & id)
* @brief this method is very similar to zp_netListenThread::startListen(QString id)
*
* @param id the Listening ID that zp_net_Engine really want to operate.
*/
void zp_netListenThread::stopListen(const QString & id)
void zp_netListenThread::stopListen(QString id)
{
if (id==m_id)
{
......
......@@ -24,16 +24,16 @@ namespace ZPNetwork{
quint16 m_port;
bool m_bSSLConn;
public:
explicit zp_netListenThread(const QString & id, QHostAddress address ,quint16 port,bool bSSL = true,QObject *parent = 0);
explicit zp_netListenThread(QString id, QHostAddress address ,quint16 port,bool bSSL = true,QObject *parent = 0);
bool bSSLConn();
signals:
void evt_Message(QObject *,const QString &);
void evt_ListenClosed(const QString &);
void evt_Message(QObject *,QString );
void evt_ListenClosed(QString );
//This message will tell thread pool, a new incoming connection has arrived.
void evt_NewClientArrived(qintptr socketDescriptor);
public slots:
void startListen(const QString & id);
void stopListen(const QString & id);
void startListen(QString id);
void stopListen(QString id);
};
}
#endif // ZP_NETLISTENTHREAD_H
......@@ -324,7 +324,7 @@ namespace ZPNetwork{
}
}
void zp_netTransThread::SendDataToClient(QObject * objClient,const QByteArray & dtarray)
void zp_netTransThread::SendDataToClient(QObject * objClient,QByteArray dtarray)
{
m_mutex_protect.lock();
if (m_clientList.find(objClient)==m_clientList.end())
......@@ -355,7 +355,7 @@ namespace ZPNetwork{
}
}
}
void zp_netTransThread::BroadcastData(QObject * objClient,const QByteArray & dtarray)
void zp_netTransThread::BroadcastData(QObject * objClient,QByteArray dtarray)
{
m_mutex_protect.lock();
QList<QObject *> clientList = m_clientList.keys();
......
......@@ -49,9 +49,9 @@ namespace ZPNetwork{
//This slot dealing with possive connecting-to method.
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,const QByteArray & dtarray);
void SendDataToClient(QObject * objClient,QByteArray dtarray);
//Broadcast dtarray to every client except objFromClient itself
void BroadcastData(QObject * objFromClient,const QByteArray & dtarray);
void BroadcastData(QObject * objFromClient,QByteArray dtarray);
//Set terminate mark, the thread will quit after last client quit.
void Deactivate();
//terminate this thread immediately
......@@ -72,12 +72,12 @@ namespace ZPNetwork{
//SSL Encrypted started
void on_encrypted();
signals:
void evt_Message(QObject * psource,const QString &);
void evt_Message(QObject * psource,QString );
void evt_SocketError(QObject * senderSock ,QAbstractSocket::SocketError socketError);
void evt_NewClientConnected(QObject * client);
void evt_ClientEncrypted(QObject * client);
void evt_ClientDisconnected(QObject * client);
void evt_Data_recieved(QObject * ,const QByteArray & );
void evt_Data_recieved(QObject * ,QByteArray );
void evt_Data_transferred(QObject * client,qint64);
};
}
......
......@@ -63,7 +63,7 @@ namespace ExampleServer{
{
return m_strDBName_useraccount;
}
void st_client_table::setDatabase_UserAcct(const QString & s)
void st_client_table::setDatabase_UserAcct(QString s)
{
m_strDBName_useraccount = s;
}
......@@ -71,7 +71,7 @@ namespace ExampleServer{
{
return m_strDBName_event;
}
void st_client_table::setDatabase_Event(const QString & s)
void st_client_table::setDatabase_Event(QString s)
{
m_strDBName_event = s;
}
......@@ -79,7 +79,7 @@ namespace ExampleServer{
{
return m_largeFileFolder;
}
void st_client_table::setLargeFileFolder(const QString & s)
void st_client_table::setLargeFileFolder(QString s)
{
m_largeFileFolder = s;
}
......@@ -249,7 +249,7 @@ namespace ExampleServer{
}
//some data arrival
void st_client_table::on_evt_Data_recieved(QObject * clientHandle,const QByteArray & datablock )
void st_client_table::on_evt_Data_recieved(QObject * clientHandle,QByteArray datablock )
{
//Push Clients to nodes if it is not exist
bool nHashContains = false;
......@@ -290,7 +290,7 @@ namespace ExampleServer{
}
//this event indicates new svr successfully hand-shaked.
void st_client_table::on_evt_NewSvrConnected(const QString & svrHandle)
void st_client_table::on_evt_NewSvrConnected(QString svrHandle)
{
//Send All Client UUIDs to new Svr
m_hash_mutex.lock();
......@@ -330,7 +330,7 @@ namespace ExampleServer{
m_pCluster->SendDataToRemoteServer(svr,array);
}
}
bool st_client_table::SendToNode(quint32 uuid, const QByteArray & msg)
bool st_client_table::SendToNode(quint32 uuid, QByteArray msg)
{
bool bres = false;
m_hash_mutex.lock();
......@@ -349,7 +349,7 @@ namespace ExampleServer{
}
//this event indicates a client disconnected.
void st_client_table::on_evt_NewSvrDisconnected(const QString & svrHandle)
void st_client_table::on_evt_NewSvrDisconnected(QString svrHandle)
{
//remove all client-maps belongs to this server.
this->cross_svr_del_uuids(svrHandle,NULL,0);
......@@ -357,7 +357,7 @@ namespace ExampleServer{
}
//some data arrival
void st_client_table::on_evt_RemoteData_recieved(const QString & svrHandle,const QByteArray & array )
void st_client_table::on_evt_RemoteData_recieved(QString svrHandle,QByteArray array )
{
emit evt_Message(this,tr("Recieved %1 bytes Msg from ").arg(array.length()) + svrHandle);
}
......@@ -378,7 +378,7 @@ namespace ExampleServer{
return pNode;
}
//reg new uuids in m_hash_remoteClient2SvrName
void st_client_table::cross_svr_add_uuids(const QString & svrname,quint32 * pUUIDs, int nUUIDs)
void st_client_table::cross_svr_add_uuids(QString svrname,quint32 * pUUIDs, int nUUIDs)
{
m_mutex_cross_svr_map.lock();
for (int i=0;i<nUUIDs;i++)
......@@ -388,7 +388,7 @@ namespace ExampleServer{
}
//del uuids in m_hash_remoteClient2SvrName, pUUIDs =0 means del all uuids belong to svrname
void st_client_table::cross_svr_del_uuids(const QString & svrname,quint32 * pUUIDs , int nUUIDs)
void st_client_table::cross_svr_del_uuids(QString svrname,quint32 * pUUIDs , int nUUIDs)
{
m_mutex_cross_svr_map.lock();
if (pUUIDs==NULL)
......@@ -414,7 +414,7 @@ namespace ExampleServer{
m_mutex_cross_svr_map.unlock();
emit evt_Message(this,tr("Removed remote %1 client uuid(s) from svr ").arg(nUUIDs) + svrname);
}
void st_client_table::cross_svr_send_data(const QString & svrname,const QByteArray & arr)
void st_client_table::cross_svr_send_data(QString svrname,QByteArray arr)
{
int nMsgLen = sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder);
QByteArray array(nMsgLen,0);
......
......@@ -37,22 +37,22 @@ namespace ExampleServer{
//Database and disk resources
QString Database_UserAcct();
void setDatabase_UserAcct(const QString & s);
void setDatabase_UserAcct(QString s);
QString Database_Event();
void setDatabase_Event(const QString & s);
void setDatabase_Event(QString s);
QString largeFileFolder();
void setLargeFileFolder(const QString & s);
void setLargeFileFolder(QString s);
ZPDatabase::DatabaseResource * dbRes();
//reg new uuids in m_hash_remoteClient2SvrName
void cross_svr_add_uuids(const QString & svrname,quint32 * pUUIDs, int nUUIDs);
void cross_svr_add_uuids(QString svrname,quint32 * pUUIDs, int nUUIDs);
//del uuids in m_hash_remoteClient2SvrName, pUUIDs =0 means del all uuids belong to svrname
void cross_svr_del_uuids(const QString & svrname,quint32 * pUUIDs , int nUUIDs);
void cross_svr_del_uuids(QString svrname,quint32 * pUUIDs , int nUUIDs);
//Tell remote servers of uuid-change
void broadcast_client_uuid(quint32 uuid, bool bActive);
//Trans user Data
void cross_svr_send_data(const QString & svrname,const QByteArray & arr);
void cross_svr_send_data(QString svrname,QByteArray arr);
//Server Name find
QString cross_svr_find_uuid(quint32 uuid);
......@@ -101,7 +101,7 @@ namespace ExampleServer{
signals:
void evt_Message (QObject * psource,const QString &);
void evt_Message (QObject * psource,QString );
protected slots:
//this event indicates new client connected.
......@@ -111,21 +111,21 @@ namespace ExampleServer{
//this event indicates a client disconnected.
void on_evt_ClientDisconnected(QObject * /*clientHandle*/);
//some data arrival
void on_evt_Data_recieved(QObject * /*clientHandle*/,const QByteArray & /*datablock*/ );
void on_evt_Data_recieved(QObject * /*clientHandle*/,QByteArray /*datablock*/ );
//a block of data has been successfuly sent
void on_evt_Data_transferred(QObject * /*clientHandle*/,qint64 /*bytes sent*/);
//this event indicates new svr successfully hand-shaked.
void on_evt_NewSvrConnected(const QString &/*svrHandle*/);
void on_evt_NewSvrConnected(QString /*svrHandle*/);
//this event indicates a client disconnected.
void on_evt_NewSvrDisconnected(const QString &/*svrHandle*/);
void on_evt_NewSvrDisconnected(QString /*svrHandle*/);
//some data arrival
void on_evt_RemoteData_recieved(const QString &/*svrHandle*/,const QByteArray & /*svrHandle*/ );
void on_evt_RemoteData_recieved(QString /*svrHandle*/,QByteArray /*array*/ );
//a block of data has been successfuly sent
void on_evt_RemoteData_transferred(QObject * /*svrHandle*/,qint64 /*bytes sent*/);
public slots:
//send msg to uuid
bool SendToNode(quint32 uuid, const QByteArray & msg);
bool SendToNode(quint32 uuid, QByteArray msg);
};
}
......
......@@ -49,6 +49,8 @@ namespace ExampleServer{
//qDebug()<<QString("%1(%2) Node Martked Deleted, return.\n").arg((unsigned int)this).arg(ref());
return 0;
}
//This is important! sometimes without this check, m_list_RawData will crash.
//For a single zp_ClusterNode instance, at anytime, there should be only ONE thread in which run() is running.
if (ref()>1)
return -1;
int nCurrSz = -1;
......@@ -108,7 +110,7 @@ namespace ExampleServer{
}
//!deal one message, affect m_currentRedOffset,m_currentMessageSize,m_currentHeader
//!return bytes Used.
int st_clientNode_baseTrans::filter_message(const QByteArray & block, int offset)
int st_clientNode_baseTrans::filter_message(QByteArray block, int offset)
{
const int blocklen = block.length();
while (blocklen>offset)
......
......@@ -35,7 +35,7 @@ namespace ExampleServer{
protected:
//!deal one message, affect m_currentRedOffset,m_currentMessageSize,m_currentHeader
//!return bytes Used.
int filter_message(const QByteArray &, int offset);
int filter_message(QByteArray , int offset);
//!in Trans-Layer, it does nothing.
virtual int deal_current_message_block();
......@@ -67,10 +67,10 @@ namespace ExampleServer{
signals:
void evt_SendDataToClient(QObject * objClient,const QByteArray & dtarray);
void evt_BroadcastData(QObject * objFromClient,const QByteArray & dtarray);
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,const QString &);
void evt_Message (QObject * psource,QString );
};
}
......
......@@ -15,7 +15,7 @@ namespace ExampleServer{
return m_st_Header.messageLen + sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) - m_currStMegSize ;
}
bool st_cross_svr_node::deal_user_data(const QByteArray &array)
bool st_cross_svr_node::deal_user_data(QByteArray array)
{
const char * pData = array.constData();
int nBlockSize = array.size();
......
......@@ -12,7 +12,7 @@ namespace ExampleServer{
void setClientTable(st_client_table * table);
protected:
//!virtual functions, dealing with the user-defined operations.
virtual bool deal_user_data(const QByteArray &);
virtual bool deal_user_data(QByteArray );
bool deal_msg();
int st_bytesLeft();
protected:
......@@ -27,7 +27,7 @@ namespace ExampleServer{
EXAMPLE_CROSSSVR_MSG::tag_msgHearder m_st_Header;
quint32 m_destin_uuid;
signals:
void evt_SendToNode(quint32 uuid, const QByteArray & msg);
void evt_SendToNode(quint32 uuid, QByteArray msg);
};
}
#endif // ST_CROSS_SVR_NODE_H
......@@ -161,7 +161,7 @@ void ZPMainFrame::initUI()
this->statusBar()->addWidget(m_pStatusLabel);
}
void ZPMainFrame::on_evt_MessageNetwork(QObject * psource,const QString & strMsg)
void ZPMainFrame::on_evt_MessageNetwork(QObject * psource,QString strMsg)
{
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + strMsg;
......@@ -172,7 +172,7 @@ void ZPMainFrame::on_evt_MessageNetwork(QObject * psource,const QString & strMs
m_pMsgModelNetwork->removeRow(m_pMsgModelNetwork->rowCount()-1);
}
void ZPMainFrame::on_evt_Message_Database(QObject * psource,const QString &strMsg)
void ZPMainFrame::on_evt_Message_Database(QObject * psource,QString strMsg)
{
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + strMsg;
......@@ -183,7 +183,7 @@ void ZPMainFrame::on_evt_Message_Database(QObject * psource,const QString &strM
m_pMsgModelDatabase->removeRow(m_pMsgModelDatabase->rowCount()-1);
}
void ZPMainFrame::on_evt_Message_Smartlink(QObject * psource,const QString &strMsg)
void ZPMainFrame::on_evt_Message_Smartlink(QObject * psource,QString strMsg)
{
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + strMsg;
......@@ -209,7 +209,7 @@ void ZPMainFrame::on_evt_SocketError(QObject * senderSock ,QAbstractSocket::Soc
}
void ZPMainFrame::on_evt_Message_Cluster(QObject * psource,const QString & strMsg)
void ZPMainFrame::on_evt_Message_Cluster(QObject * psource,QString strMsg)
{
QDateTime dtm = QDateTime::currentDateTime();
QString msg = dtm.toString("yyyy-MM-dd HH:mm:ss.zzz") + " " + strMsg;
......@@ -384,7 +384,7 @@ void ZPMainFrame::on_action_Start_Stop_triggered(bool setordel)
}
void ZPMainFrame::forkServer(const QString & config_file)
void ZPMainFrame::forkServer(QString config_file)
{
QSettings settings(config_file,QSettings::IniFormat);
int nListeners = settings.value("settings/listeners",0).toInt();
......@@ -516,7 +516,7 @@ void ZPMainFrame::on_action_About_triggered()
QApplication::aboutQt();
}
void ZPMainFrame::LoadSettings(const QString & config_file)
void ZPMainFrame::LoadSettings(QString config_file)
{
QSettings settings(config_file,QSettings::IniFormat);
int nListeners = settings.value("settings/listeners",0).toInt();
......@@ -640,7 +640,7 @@ void ZPMainFrame::LoadSettings(const QString & config_file)
}
void ZPMainFrame::SaveSettings(const QString & config_file)
void ZPMainFrame::SaveSettings(QString config_file)
{
QSettings settings(config_file,QSettings::IniFormat);
int nListeners = m_pListenerModel->rowCount();
......
......@@ -56,17 +56,17 @@ private:
ZP_Cluster::zp_ClusterTerm * m_pClusterTerm;
int m_nTimerId;
void initUI();
void LoadSettings(const QString & config_file);
void SaveSettings(const QString & config_file);
void forkServer(const QString & config_file);
void LoadSettings(QString config_file);
void SaveSettings(QString config_file);
void forkServer(QString config_file);
protected slots:
void on_evt_MessageNetwork(QObject * psource,const QString &);
void on_evt_MessageNetwork(QObject * psource,QString );
//The socket error message
void on_evt_SocketError(QObject * senderSock ,QAbstractSocket::SocketError socketError);
void on_evt_Message_Cluster(QObject * psource,const QString &);
void on_evt_Message_Database(QObject * psource,const QString &);
void on_evt_Message_Smartlink(QObject * psource,const QString &);
void on_evt_Message_Cluster(QObject * psource,QString );
void on_evt_Message_Database(QObject * psource,QString );
void on_evt_Message_Smartlink(QObject * psource,QString );
//The socket error message
void on_evt_SocketError_Cluster(QObject * senderSock ,QAbstractSocket::SocketError socketError);
public slots:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册