mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Переделано под один мега-проект LMS с общим CMakeLists.txt
This commit is contained in:
62
ServerLMS/multithreadserver.cpp
Normal file
62
ServerLMS/multithreadserver.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "multithreadserver.h"
|
||||
|
||||
MultiThreadServer::MultiThreadServer(ServerLMSWidget *widget,UpdateController *updateController,
|
||||
DataParser *dataParser,Logger *logger,QObject *parent):
|
||||
QTcpServer(parent),
|
||||
serverLmsWidget(widget),
|
||||
updateController(updateController),
|
||||
dataParser(dataParser),
|
||||
logger(logger)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void MultiThreadServer::incomingConnection(qintptr socketDesriptor)
|
||||
{
|
||||
ClientHandler* newClient = new ClientHandler;
|
||||
|
||||
connect(this,&MultiThreadServer::sigInitClient,newClient,&ClientHandler::initialize,Qt::AutoConnection);
|
||||
connect(newClient,&ClientHandler::sigClientDisconnected,this,&MultiThreadServer::slotDisconnectClient,Qt::QueuedConnection);
|
||||
|
||||
emit sigInitClient(socketDesriptor,serverLmsWidget,updateController,dataParser,logger);
|
||||
disconnect(this,&MultiThreadServer::sigInitClient,newClient,&ClientHandler::initialize);
|
||||
|
||||
serverLmsWidget->addClient(socketDesriptor,newClient);
|
||||
|
||||
logger->addTextToLogger("To Client: " + QString(SERVER_HELLO));
|
||||
}
|
||||
|
||||
void MultiThreadServer::slotDisconnectClient(QString peerAddress, QString peerPort)
|
||||
{
|
||||
auto clientsMap = serverLmsWidget->getClientsMap();
|
||||
QString login = "";
|
||||
qDebug() << peerAddress << " " << peerPort << " " << "disconnect";
|
||||
|
||||
//Проходим все открытые сокеты, ищем нужный
|
||||
foreach(int idSocket, clientsMap.keys())
|
||||
{
|
||||
ClientHandler *client = clientsMap[idSocket];
|
||||
|
||||
if(client->getClient()->getAddress() == peerAddress && client->getClient()->getPort() == peerPort)
|
||||
{
|
||||
login = client->getClient()->getLogin();
|
||||
|
||||
ClientDeAutorization clientDeAutorization;
|
||||
clientDeAutorization.Login = login;
|
||||
serverLmsWidget->getProcessingSystem()->processingClientDeAutorization(client, clientDeAutorization);
|
||||
|
||||
serverLmsWidget->removeClient(idSocket);
|
||||
delete client;
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
emit signalStopSendFile();
|
||||
|
||||
logger->addTextToLogger("SERVER: Client " + login + " disconnected");
|
||||
|
||||
serverLmsWidget->slotUpdateListClients();
|
||||
serverLmsWidget->autorizationHandler(login);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user