#include "commonclienthandler.h" CommonClientHandler::CommonClientHandler(QObject *parent) : QObject(parent) { } void CommonClientHandler::initialize(QMap *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); } } }