Переделано под один мега-проект LMS с общим CMakeLists.txt

This commit is contained in:
krivoshein
2025-01-15 12:34:56 +03:00
parent 3064818931
commit 1c93b1f94d
219 changed files with 68 additions and 51 deletions

View 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);
}