chatcleaner: blocking other connections if one client is connected
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
#include "messagefilter.h"
|
||||
#include "cleanerconfig.h"
|
||||
|
||||
CleanerServer::CleanerServer(): config(0)
|
||||
CleanerServer::CleanerServer(): config(0), blockConnection(false)
|
||||
{
|
||||
config = new CleanerConfig;
|
||||
|
||||
@@ -36,9 +36,11 @@ CleanerServer::~CleanerServer()
|
||||
|
||||
void CleanerServer::newCon()
|
||||
{
|
||||
if(!tcpSocket->isOpen()) {
|
||||
if(!blockConnection) {
|
||||
tcpSocket = tcpServer->nextPendingConnection();
|
||||
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead()));
|
||||
connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
|
||||
blockConnection = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,6 +59,12 @@ void CleanerServer::onRead()
|
||||
tcpSocket->write(checkMessage.toAscii().data(), checkMessage.length());
|
||||
}
|
||||
|
||||
void CleanerServer::socketStateChanged(QAbstractSocket::SocketState state) {
|
||||
|
||||
qDebug() << "Socket state changed to: " << QAbstractSocket::UnconnectedState;
|
||||
if(state == QAbstractSocket::UnconnectedState) blockConnection = false;
|
||||
}
|
||||
|
||||
void CleanerServer::refreshConfig() {
|
||||
|
||||
config->fillBuffer();
|
||||
|
||||
@@ -17,7 +17,7 @@ public:
|
||||
private slots:
|
||||
void newCon();
|
||||
void onRead();
|
||||
|
||||
void socketStateChanged(QAbstractSocket::SocketState);
|
||||
void refreshConfig();
|
||||
|
||||
private:
|
||||
@@ -27,6 +27,7 @@ private:
|
||||
MessageFilter *myMessageFilter;
|
||||
|
||||
CleanerConfig *config;
|
||||
bool blockConnection;
|
||||
};
|
||||
|
||||
#endif // CLEANERSERVER_H
|
||||
|
||||
Reference in New Issue
Block a user