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