mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
145 lines
4.7 KiB
C++
145 lines
4.7 KiB
C++
#include "commonclienthandler.h"
|
|
|
|
CommonClientHandler::CommonClientHandler(QObject *parent) : QObject(parent)
|
|
{
|
|
|
|
}
|
|
|
|
void CommonClientHandler::initialize(QMap<int, ClientHandler *> *clientsMap, ProcessingSystem *processingSystem, DataParser *dataParser, Logger *logger)
|
|
{
|
|
this->clientsMap = clientsMap;
|
|
this->processingSystem = processingSystem;
|
|
this->dataParser = dataParser;
|
|
this->logger = logger;
|
|
|
|
connect(this,&CommonClientHandler::sigSendToLogger,logger,&Logger::addTextToLogger,Qt::AutoConnection);
|
|
}
|
|
|
|
void CommonClientHandler::sendNewVersionListToAllClient()
|
|
{
|
|
foreach(int idSocket,clientsMap->keys())
|
|
{
|
|
ClientHandler *handler = clientsMap->value(idSocket);
|
|
|
|
if (!handler->getClient()->getIsLoggedIn()) continue;
|
|
|
|
handler->sendVersionList();
|
|
}
|
|
}
|
|
|
|
void CommonClientHandler::sendCurrentVersionToAllClient()
|
|
{
|
|
foreach(int idSocket,clientsMap->keys())
|
|
{
|
|
ClientHandler *handler = clientsMap->value(idSocket);
|
|
|
|
if (!handler->getClient()->getIsLoggedIn()) continue;
|
|
handler->sendVersion();
|
|
|
|
}
|
|
}
|
|
|
|
void CommonClientHandler::slot_ListsInstructorsTraineesChanged()
|
|
{
|
|
//Проходим все открытые сокеты
|
|
foreach(int idSocket, clientsMap->keys())
|
|
{
|
|
ClientHandler *handler = clientsMap->value(idSocket);
|
|
//Проверяем, есть ли клиенты TYPE_GUI
|
|
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
|
|
{//Отправляем этому клиенту обновление списков
|
|
ClientQueryToDB queryToDB;
|
|
queryToDB.typeQuery = TypeQueryToDB::TYPE_QUERY_GET_ALL_LISTS;
|
|
processingSystem->processingClientQueryToDB(handler, queryToDB);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommonClientHandler::slot_sendPacketToAllClients(PacketType packetType)
|
|
{
|
|
foreach(int idSocket, clientsMap->keys())
|
|
{
|
|
ClientHandler *handler = clientsMap->value(idSocket);
|
|
|
|
if (!handler->getClient()->getIsLoggedIn()) continue;
|
|
|
|
handler->sendPacketType(packetType);
|
|
}
|
|
}
|
|
|
|
void CommonClientHandler::slot_msgToClientFromGUI(QString login, QString text)
|
|
{
|
|
QString textMsg = text;
|
|
|
|
QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(textMsg);
|
|
|
|
//Проходим все открытые сокеты, ищем нужный
|
|
foreach(int idSocket, clientsMap->keys())
|
|
{
|
|
ClientHandler *handler = clientsMap->value(idSocket);
|
|
if(handler->getClient()->getLogin() == login)
|
|
{//Отправляем ему
|
|
|
|
handler->sendXmlAnswer(byteArrayMsg);
|
|
|
|
QString peerAddress = handler->getSocket()->peerAddress().toString();
|
|
QString peerPort = QString::number(handler->getSocket()->peerPort());
|
|
|
|
QString str = "Msg To Client [" + peerAddress + ":" + peerPort + "] : " + textMsg;
|
|
|
|
emit sigSendToLogger(str);
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommonClientHandler::slot_msgToGUIfromClient(QString login, QString text)
|
|
{
|
|
QString textMsg = text;
|
|
|
|
QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(textMsg, login);
|
|
|
|
//Проходим все открытые сокеты, ищем нужный
|
|
foreach(int idSocket, clientsMap->keys())
|
|
{
|
|
ClientHandler *handler = clientsMap->value(idSocket);;
|
|
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
|
|
{//Отправляем GUI-клиенту для отображения в Мессенджере
|
|
|
|
handler->sendXmlAnswer(byteArrayMsg, PacketType::TYPE_XMLANSWER);
|
|
|
|
QString peerAddress = handler->getSocket()->peerAddress().toString();
|
|
QString peerPort = QString::number(handler->getSocket()->peerPort());
|
|
|
|
QString str = "Msg From Client [" + peerAddress + ":" + peerPort + "] : " + textMsg;
|
|
|
|
emit sigSendToLogger(str);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void CommonClientHandler::slot_sendTaskToClient(QString fullNameClient,QString textTask)
|
|
{
|
|
QByteArray byteArrayTask = dataParser->ClientAnswer()->task(textTask);
|
|
|
|
//Проходим все открытые сокеты
|
|
foreach(int idSocket, clientsMap->keys())
|
|
{
|
|
ClientHandler *handler = clientsMap->value(idSocket);
|
|
|
|
if(handler->getClient()->getFullName() == fullNameClient)
|
|
{//Отправляем ему
|
|
handler->getSocket()->write(byteArrayTask);
|
|
|
|
QString peerAddress = handler->getSocket()->peerAddress().toString();
|
|
QString peerPort = QString::number(handler->getSocket()->peerPort());
|
|
|
|
QString str = "Task To Client [" + peerAddress + ":" + peerPort + "] : " + textTask;
|
|
emit sigSendToLogger(str);
|
|
}
|
|
}
|
|
}
|
|
|