From 0e3f4852fe77667ee1e607bc5bfbbb579ad91cfd Mon Sep 17 00:00:00 2001 From: semenov Date: Tue, 14 Jan 2025 13:18:27 +0300 Subject: [PATCH] ref: segregate clientAnswer --- DOCS/.obsidian/workspace.json | 6 +- DOCS/Алексей/DataParser scheme.md | 379 ++++++++++-------- ServerLMS/ServerLMS/CMakeLists.txt | 6 +- .../Systems/Parsers/clientanswerparser.cpp | 126 ++++++ .../Systems/Parsers/clientanswerparser.h | 30 ++ .../Systems/{ => Parsers}/dataparser.cpp | 122 +----- .../Systems/{ => Parsers}/dataparser.h | 14 +- .../ServerLMS/Systems/commonclienthandler.cpp | 7 +- .../ServerLMS/Systems/processingsystem.cpp | 18 +- ServerLMS/ServerLMS/Systems/recognizesystem.h | 2 +- ServerLMS/ServerLMS/Systems/sendsystem.cpp | 8 +- ServerLMS/ServerLMS/Systems/sendsystem.h | 3 +- ServerLMS/ServerLMS/Systems/tools.cpp | 2 + .../ServerLMS/Systems/updatecontroller.h | 2 +- ServerLMS/ServerLMS/clienthandler.h | 1 + ServerLMS/ServerLMS/serverlmswidget.cpp | 2 +- ServerLMS/ServerLMS/serverlmswidget.h | 2 +- 17 files changed, 411 insertions(+), 319 deletions(-) create mode 100644 ServerLMS/ServerLMS/Systems/Parsers/clientanswerparser.cpp create mode 100644 ServerLMS/ServerLMS/Systems/Parsers/clientanswerparser.h rename ServerLMS/ServerLMS/Systems/{ => Parsers}/dataparser.cpp (84%) rename ServerLMS/ServerLMS/Systems/{ => Parsers}/dataparser.h (80%) diff --git a/DOCS/.obsidian/workspace.json b/DOCS/.obsidian/workspace.json index 0e9c7f9..ba81223 100644 --- a/DOCS/.obsidian/workspace.json +++ b/DOCS/.obsidian/workspace.json @@ -219,15 +219,15 @@ }, "active": "9608f84166966ca9", "lastOpenFiles": [ - "AssetManagerScheme.md", "Алексей/DataParser scheme.md", - "Алексей/AssetManagerScheme.md", + "Алексей/ProcessingSystem scheme.md", "MainScheme.md", + "AssetManagerScheme.md", + "Алексей/AssetManagerScheme.md", "Как умеем принимать, как умеем отправлять!.md", "Порядок сборки Unity билда под сервер.md", "Образец отправки сообщения с маркером.md", "Алексей/Board.md", - "Алексей/ProcessingSystem scheme.md", "Что умеем отправлять Server - Client QT.md", "CLIENT SERVER.canvas", "Алексей/Рефакторинг.md", diff --git a/DOCS/Алексей/DataParser scheme.md b/DOCS/Алексей/DataParser scheme.md index bab96e2..7305a3d 100644 --- a/DOCS/Алексей/DataParser scheme.md +++ b/DOCS/Алексей/DataParser scheme.md @@ -201,6 +201,21 @@ createVersionListXmlAnswer ^uRIhHTin saveVersionToFile ^DEH45jEC +DataParser ^KfdeayYP + +DBAnswer ^6rX77Wwj + +ClientAnswer ^56vhFlyh + +Reader ^RQ7AS3nW + +dataParser->DBAnswer->ListGroups ^ZpoysGi9 + +dataParser->Reader->ClientAuth + ^LSRSjfYq + +dataParser->Answer-> ^vSQuWpXz + %% ## Drawing ```compressed-json @@ -216,344 +231,368 @@ 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 ``` %% \ No newline at end of file diff --git a/ServerLMS/ServerLMS/CMakeLists.txt b/ServerLMS/ServerLMS/CMakeLists.txt index 8805faa..8cd8b7e 100644 --- a/ServerLMS/ServerLMS/CMakeLists.txt +++ b/ServerLMS/ServerLMS/CMakeLists.txt @@ -51,8 +51,10 @@ add_library(ServerLMS SHARED Systems/commonclienthandler.h Systems/logger.cpp Systems/logger.h - Systems/dataparser.cpp - Systems/dataparser.h + Systems/Parsers/dataparser.cpp + Systems/Parsers/dataparser.h + Systems/Parsers/clientanswerparser.cpp + Systems/Parsers/clientanswerparser.h Systems/processingsystem.cpp Systems/processingsystem.h Systems/sendsystem.cpp diff --git a/ServerLMS/ServerLMS/Systems/Parsers/clientanswerparser.cpp b/ServerLMS/ServerLMS/Systems/Parsers/clientanswerparser.cpp new file mode 100644 index 0000000..a9505d8 --- /dev/null +++ b/ServerLMS/ServerLMS/Systems/Parsers/clientanswerparser.cpp @@ -0,0 +1,126 @@ +#include "clientanswerparser.h" + +ClientAnswerParser::ClientAnswerParser(QObject *parent) : QObject(parent) +{ + +} + +void ClientAnswerParser::initialize(DataParser *dataParser) +{ + this->dataParser = dataParser; +} + +QByteArray ClientAnswerParser::authorization(bool result, QString instructorName,QString clientName, QString accessType, QString login) +{ + + QList listTag; + + SAttribute attribute1 = {"Result", result? "true" : "false"}; + SAttribute attribute2 = {"InstructorName", instructorName}; + SAttribute attribute3 = {"ClientName", clientName}; + SAttribute attribute4 = {"AccessType", accessType}; + SAttribute attribute5 = {"Login", login}; + QList listAttr = {attribute1, attribute2, attribute3, attribute4, attribute5}; + SXmlAnswerTag tag = {"ServerAuthorization", listAttr}; + + listTag.append(tag); + + return dataParser->xmlAnswer(listTag); +} + +QByteArray ClientAnswerParser::deAuthorization(bool result, QString login) +{ + QList listTag; + + SAttribute attribute1 = {"Result", result? "true" : "false"}; + SAttribute attribute2 = {"Login", login}; + QList listAttr = {attribute1, attribute2}; + SXmlAnswerTag tag = {"ServerDeAuthorization", listAttr}; + + listTag.append(tag); + + return dataParser->xmlAnswer(listTag); +} + +QByteArray ClientAnswerParser::message(QString text, QString login) +{ + QList listTag; + SAttribute attribute2; + + SAttribute attribute1 = {"Text", text}; + QList listAttr = {attribute1}; + if(login != "") + { + attribute2 = {"Login", login}; + listAttr.append(attribute2); + } + SXmlAnswerTag tag = {"ServerMessage", listAttr}; + + listTag.append(tag); + + return dataParser->xmlAnswer(listTag); +} + +QByteArray ClientAnswerParser::task(QString text) +{ + QList listTag; + + SAttribute attribute1 = {"Text", text}; + QList listAttr = {attribute1}; + SXmlAnswerTag tag = {"ServerTask", listAttr}; + + listTag.append(tag); + + return dataParser->xmlAnswer(listTag); +} + +QByteArray ClientAnswerParser::notify(QString code) +{ + QList listTag; + + SAttribute attribute1 = {"Code", code}; + QList listAttr = {attribute1}; + SXmlAnswerTag tag = {"ServerNotify", listAttr}; + + listTag.append(tag); + + return dataParser->xmlAnswer(listTag); +} + +QByteArray ClientAnswerParser::tasks(QStringList listTasks) +{ + QList listTag; + + foreach(QString task, listTasks) + { + QList listAttr; + + SAttribute attribute1 = {"Head", task}; + SAttribute attribute2 = {"IsComplete", "false"}; + listAttr.append(attribute1); + listAttr.append(attribute2); + + SXmlAnswerTag tag = {"ServerTask", listAttr}; + listTag.append(tag); + } + + return dataParser->xmlAnswer(listTag, "TaskArray", "Tasks"); +} + +QByteArray ClientAnswerParser::currentVersion() +{ + QByteArray array; + QFile fileR(version); + if (!fileR.open(QFile::ReadOnly | QFile::Text)) + { + QString str = "Не удалось открыть файл"; + qDebug() << "xmlAnswer: " << str; + } + else + { + array = fileR.readAll(); + fileR.close(); // Закрываем файл + } + + return array; +} diff --git a/ServerLMS/ServerLMS/Systems/Parsers/clientanswerparser.h b/ServerLMS/ServerLMS/Systems/Parsers/clientanswerparser.h new file mode 100644 index 0000000..141e5d8 --- /dev/null +++ b/ServerLMS/ServerLMS/Systems/Parsers/clientanswerparser.h @@ -0,0 +1,30 @@ +#ifndef CLIENTANSWERPARSER_H +#define CLIENTANSWERPARSER_H + +#include + +#include +#include + + +class ClientAnswerParser : public QObject +{ + Q_OBJECT +public: + explicit ClientAnswerParser(QObject *parent = nullptr); + void initialize(DataParser *dataParser); + + QByteArray authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login); + QByteArray deAuthorization(bool result, QString login); + QByteArray message(QString text, QString login = ""); + QByteArray task(QString text); + QByteArray notify(QString code); + QByteArray tasks(QStringList listTasks); + QByteArray currentVersion(); +signals: + +private: + DataParser *dataParser; +}; + +#endif // CLIENTANSWERPARSER_H diff --git a/ServerLMS/ServerLMS/Systems/dataparser.cpp b/ServerLMS/ServerLMS/Systems/Parsers/dataparser.cpp similarity index 84% rename from ServerLMS/ServerLMS/Systems/dataparser.cpp rename to ServerLMS/ServerLMS/Systems/Parsers/dataparser.cpp index 291834a..1c6b478 100644 --- a/ServerLMS/ServerLMS/Systems/dataparser.cpp +++ b/ServerLMS/ServerLMS/Systems/Parsers/dataparser.cpp @@ -8,6 +8,8 @@ QObject(parent) { this->processingSystem = processingSystem; this->assetsManager = assetManager; + clientAnswer = new ClientAnswerParser; + clientAnswer->initialize(this); mutex = new QMutex; if (!QDir(staticDataFolderName).exists()){ @@ -296,38 +298,6 @@ QByteArray DataParser::xmlAnswer(QList listTag, QString elemUp1, } -QByteArray DataParser::xmlAnswer_authorization(bool result, QString instructorName,QString clientName, QString accessType, QString login) -{ - - QList listTag; - - SAttribute attribute1 = {"Result", result? "true" : "false"}; - SAttribute attribute2 = {"InstructorName", instructorName}; - SAttribute attribute3 = {"ClientName", clientName}; - SAttribute attribute4 = {"AccessType", accessType}; - SAttribute attribute5 = {"Login", login}; - QList listAttr = {attribute1, attribute2, attribute3, attribute4, attribute5}; - SXmlAnswerTag tag = {"ServerAuthorization", listAttr}; - - listTag.append(tag); - - return xmlAnswer(listTag); -} - -QByteArray DataParser::xmlAnswer_deAuthorization(bool result, QString login) -{ - QList listTag; - - SAttribute attribute1 = {"Result", result? "true" : "false"}; - SAttribute attribute2 = {"Login", login}; - QList listAttr = {attribute1, attribute2}; - SXmlAnswerTag tag = {"ServerDeAuthorization", listAttr}; - - listTag.append(tag); - - return xmlAnswer(listTag); -} - bool DataParser::loadBlankXML(QString nameFile, QDomDocument *commonDOM) { QFile blankFile(nameFile); @@ -456,89 +426,6 @@ QByteArray DataParser::xmlAnswer_ClientQueryToDB_ListTasks(bool result, QList listTag; - SAttribute attribute2; - - SAttribute attribute1 = {"Text", text}; - QList listAttr = {attribute1}; - if(login != "") - { - attribute2 = {"Login", login}; - listAttr.append(attribute2); - } - SXmlAnswerTag tag = {"ServerMessage", listAttr}; - - listTag.append(tag); - - return xmlAnswer(listTag); -} - -QByteArray DataParser::xmlAnswer_task(QString text) -{ - QList listTag; - - SAttribute attribute1 = {"Text", text}; - QList listAttr = {attribute1}; - SXmlAnswerTag tag = {"ServerTask", listAttr}; - - listTag.append(tag); - - return xmlAnswer(listTag); -} - -QByteArray DataParser::xmlAnswer_notify(QString code) -{ - QList listTag; - - SAttribute attribute1 = {"Code", code}; - QList listAttr = {attribute1}; - SXmlAnswerTag tag = {"ServerNotify", listAttr}; - - listTag.append(tag); - - return xmlAnswer(listTag); -} - -QByteArray DataParser::xmlAnswer_tasks(QStringList listTasks) -{ - QList listTag; - - foreach(QString task, listTasks) - { - QList listAttr; - - SAttribute attribute1 = {"Head", task}; - SAttribute attribute2 = {"IsComplete", "false"}; - listAttr.append(attribute1); - listAttr.append(attribute2); - - SXmlAnswerTag tag = {"ServerTask", listAttr}; - listTag.append(tag); - } - - return xmlAnswer(listTag, "TaskArray", "Tasks"); -} - -QByteArray DataParser::xmlAnswer_currentVersion() -{ - QByteArray array; - QFile fileR(version); - if (!fileR.open(QFile::ReadOnly | QFile::Text)) - { - QString str = "Не удалось открыть файл"; - qDebug() << "xmlAnswer: " << str; - } - else - { - array = fileR.readAll(); - fileR.close(); // Закрываем файл - } - - return array; -} - QByteArray DataParser::readTempFile() { QByteArray array; @@ -561,3 +448,8 @@ DataParser::~DataParser() { } + +ClientAnswerParser *DataParser::ClientAnswer() const +{ + return clientAnswer; +} diff --git a/ServerLMS/ServerLMS/Systems/dataparser.h b/ServerLMS/ServerLMS/Systems/Parsers/dataparser.h similarity index 80% rename from ServerLMS/ServerLMS/Systems/dataparser.h rename to ServerLMS/ServerLMS/Systems/Parsers/dataparser.h index 5cc1eea..35b421b 100644 --- a/ServerLMS/ServerLMS/Systems/dataparser.h +++ b/ServerLMS/ServerLMS/Systems/Parsers/dataparser.h @@ -4,7 +4,8 @@ #include "Systems/processingsystem.h" #include "Systems/tools.h" #include "Systems/assetsmanager.h" -#include "logger.h" +#include "Systems/logger.h" +#include "Systems/Parsers/clientanswerparser.h" #include "serverlmswidget.h" #include @@ -18,6 +19,7 @@ class ProcessingSystem; class ClientHandler; class AssetsManager; +class ClientAnswerParser; class DataParser : public QObject { @@ -29,8 +31,6 @@ public: void xmlFileDataParse(QByteArray array); QByteArray xmlAnswer(QList listTag,QString elemUp1 = "", QString elemUp2 = ""); - QByteArray xmlAnswer_authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login); - QByteArray xmlAnswer_deAuthorization(bool result, QString login); bool loadBlankXML(QString nameFile, QDomDocument* commonDOM); bool saveDOMtoXML(QString nameFile, QDomDocument* commonDOM); @@ -41,14 +41,11 @@ public: QByteArray xmlAnswer_ClientQueryToDB_ListClassrooms(bool result, QList *listClassrooms); QByteArray xmlAnswer_ClientQueryToDB_ListTasks(bool result, QList *listTasks); - QByteArray xmlAnswer_message(QString text, QString login = ""); - QByteArray xmlAnswer_task(QString text); - QByteArray xmlAnswer_notify(QString code); - QByteArray xmlAnswer_tasks(QStringList listTasks); - QByteArray xmlAnswer_currentVersion(); ~DataParser(); + ClientAnswerParser *ClientAnswer() const; + signals: void sigLogMessage(QString log); @@ -58,6 +55,7 @@ private: ProcessingSystem *processingSystem; AssetsManager *assetsManager; + ClientAnswerParser *clientAnswer; QByteArray readTempFile(); }; diff --git a/ServerLMS/ServerLMS/Systems/commonclienthandler.cpp b/ServerLMS/ServerLMS/Systems/commonclienthandler.cpp index 64d4c09..6012e3e 100644 --- a/ServerLMS/ServerLMS/Systems/commonclienthandler.cpp +++ b/ServerLMS/ServerLMS/Systems/commonclienthandler.cpp @@ -69,7 +69,7 @@ void CommonClientHandler::slot_msgToClientFromGUI(QString login, QString text) { QString textMsg = text; - QByteArray byteArrayMsg = dataParser->xmlAnswer_message(textMsg); + QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(textMsg); //Проходим все открытые сокеты, ищем нужный foreach(int idSocket, clientsMap->keys()) @@ -95,7 +95,7 @@ void CommonClientHandler::slot_msgToGUIfromClient(QString login, QString text) { QString textMsg = text; - QByteArray byteArrayMsg = dataParser->xmlAnswer_message(textMsg, login); + QByteArray byteArrayMsg = dataParser->ClientAnswer()->message(textMsg, login); //Проходим все открытые сокеты, ищем нужный foreach(int idSocket, clientsMap->keys()) @@ -119,7 +119,7 @@ void CommonClientHandler::slot_msgToGUIfromClient(QString login, QString text) void CommonClientHandler::slot_sendTaskToClient(QString fullNameClient,QString textTask) { - QByteArray byteArrayTask = dataParser->xmlAnswer_task(textTask); + QByteArray byteArrayTask = dataParser->ClientAnswer()->task(textTask); //Проходим все открытые сокеты foreach(int idSocket, clientsMap->keys()) @@ -138,3 +138,4 @@ void CommonClientHandler::slot_sendTaskToClient(QString fullNameClient,QString t } } } + diff --git a/ServerLMS/ServerLMS/Systems/processingsystem.cpp b/ServerLMS/ServerLMS/Systems/processingsystem.cpp index 10aba0f..0696d44 100644 --- a/ServerLMS/ServerLMS/Systems/processingsystem.cpp +++ b/ServerLMS/ServerLMS/Systems/processingsystem.cpp @@ -25,7 +25,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien { if(server->getStateBlockAutorization() == blocked) { - QByteArray arrayAnswer = dataParser->xmlAnswer_notify(NOTIFY_SERVER_BLOCKED); + QByteArray arrayAnswer = dataParser->ClientAnswer()->notify(NOTIFY_SERVER_BLOCKED); client->sendXmlAnswer(arrayAnswer); QString str = QString(arrayAnswer); @@ -49,7 +49,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien instructorName = providerDBLMS->getMainInstructorName(); traineeName = providerDBLMS->getNameTraineeByLogin(clientAutorization.Login); - arrayAnswer = dataParser->xmlAnswer_authorization(true, instructorName, traineeName, "trainee", clientAutorization.Login); + arrayAnswer = dataParser->ClientAnswer()->authorization(true, instructorName, traineeName, "trainee", clientAutorization.Login); } else if(providerDBLMS->authorizationInstructor(clientAutorization.Login, clientAutorization.Password)) {//Авторизуется инструктор @@ -60,11 +60,11 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien instructorName = providerDBLMS->getNameInstructorByLogin(clientAutorization.Login); - arrayAnswer = dataParser->xmlAnswer_authorization(true, instructorName, instructorName, "instructor", clientAutorization.Login); + arrayAnswer = dataParser->ClientAnswer()->authorization(true, instructorName, instructorName, "instructor", clientAutorization.Login); } else {//Никто не авторизовался - arrayAnswer = dataParser->xmlAnswer_authorization(false, "", "", "", ""); + arrayAnswer = dataParser->ClientAnswer()->authorization(false, "", "", "", ""); } client->sendXmlAnswer(arrayAnswer); client->sendVersion(); @@ -80,7 +80,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli { if(server->getStateBlockAutorization() == blocked) { - QByteArray arrayAnswer = dataParser->xmlAnswer_notify(NOTIFY_SERVER_BLOCKED); + QByteArray arrayAnswer = dataParser->ClientAnswer()->notify(NOTIFY_SERVER_BLOCKED); client->sendXmlAnswer(arrayAnswer); QString str = QString(arrayAnswer); @@ -98,7 +98,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli client->getClient()->setLogin(""); emit sigUpdateListClients(); - arrayAnswer = dataParser->xmlAnswer_deAuthorization(true, clientDeAutorization.Login); + arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login); } else if(providerDBLMS->deAuthorizationInstructor(clientDeAutorization.Login)) {//ДеАвторизуется инструктор @@ -106,11 +106,11 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli client->getClient()->setLogin(""); emit sigUpdateListClients(); - arrayAnswer = dataParser->xmlAnswer_deAuthorization(true, clientDeAutorization.Login); + arrayAnswer = dataParser->ClientAnswer()->deAuthorization(true, clientDeAutorization.Login); } else {//Никто не ДеАвторизовался - arrayAnswer = dataParser->xmlAnswer_deAuthorization(false, ""); + arrayAnswer = dataParser->ClientAnswer()->deAuthorization(false, ""); } client->sendXmlAnswer(arrayAnswer); @@ -259,7 +259,7 @@ void ProcessingSystem::processingClientNotify(ClientHandler *client, ClientNotif //TODO KAV redact //listTasks = pInstructorsAndTrainees->getDbLMS()->getWhatItDoes(client->getClient()->getLogin()); - QByteArray arrayAnswer = dataParser->xmlAnswer_tasks(listTasks); + QByteArray arrayAnswer = dataParser->ClientAnswer()->tasks(listTasks); client->sendXmlAnswer(arrayAnswer); QString str = QString(arrayAnswer); diff --git a/ServerLMS/ServerLMS/Systems/recognizesystem.h b/ServerLMS/ServerLMS/Systems/recognizesystem.h index 8478139..7d5c97c 100644 --- a/ServerLMS/ServerLMS/Systems/recognizesystem.h +++ b/ServerLMS/ServerLMS/Systems/recognizesystem.h @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include diff --git a/ServerLMS/ServerLMS/Systems/sendsystem.cpp b/ServerLMS/ServerLMS/Systems/sendsystem.cpp index 3debd94..29b2324 100644 --- a/ServerLMS/ServerLMS/Systems/sendsystem.cpp +++ b/ServerLMS/ServerLMS/Systems/sendsystem.cpp @@ -12,9 +12,9 @@ void SendSystem::initialize(DataParser *dataParser,Logger *logger) this->logger = logger; connect(this,&SendSystem::sigSendToLogger,logger,&Logger::addTextToLogger,Qt::AutoConnection); - connect(this,&SendSystem::sigSendXMLmessage,dataParser,&DataParser::xmlAnswer_message,Qt::AutoConnection); - connect(this,&SendSystem::sigSendNotify,dataParser,&DataParser::xmlAnswer_notify,Qt::DirectConnection); //потому что возвращает значение - connect(this,&SendSystem::sigSendVersion,dataParser,&DataParser::xmlAnswer_currentVersion,Qt::AutoConnection); + connect(this,&SendSystem::sigSendXMLmessage,dataParser->ClientAnswer(),&ClientAnswerParser::message,Qt::AutoConnection); + connect(this,&SendSystem::sigSendNotify,dataParser->ClientAnswer(),&ClientAnswerParser::notify,Qt::DirectConnection); //потому что возвращает значение + connect(this,&SendSystem::sigSendVersion,dataParser->ClientAnswer(),&ClientAnswerParser::currentVersion,Qt::AutoConnection); qDebug() << "SendSystem thread: " << QThread::currentThreadId(); } @@ -83,7 +83,7 @@ void SendSystem::sendFileBlock(QString path) void SendSystem::sendVersion() { - QByteArray data = dataParser->xmlAnswer_currentVersion(); + QByteArray data = dataParser->ClientAnswer()->currentVersion(); sendXmlAnswer(data); } diff --git a/ServerLMS/ServerLMS/Systems/sendsystem.h b/ServerLMS/ServerLMS/Systems/sendsystem.h index 0f08878..7742e7c 100644 --- a/ServerLMS/ServerLMS/Systems/sendsystem.h +++ b/ServerLMS/ServerLMS/Systems/sendsystem.h @@ -5,13 +5,14 @@ #include #include -#include +#include #include #include #include class DataParser; class FileData; + class SendSystem : public QObject { diff --git a/ServerLMS/ServerLMS/Systems/tools.cpp b/ServerLMS/ServerLMS/Systems/tools.cpp index 3b55145..68de94f 100644 --- a/ServerLMS/ServerLMS/Systems/tools.cpp +++ b/ServerLMS/ServerLMS/Systems/tools.cpp @@ -85,3 +85,5 @@ QString Tools::createFolderPath(QString path) return folderPath; } + + diff --git a/ServerLMS/ServerLMS/Systems/updatecontroller.h b/ServerLMS/ServerLMS/Systems/updatecontroller.h index ddb4cf7..d8037a9 100644 --- a/ServerLMS/ServerLMS/Systems/updatecontroller.h +++ b/ServerLMS/ServerLMS/Systems/updatecontroller.h @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include diff --git a/ServerLMS/ServerLMS/clienthandler.h b/ServerLMS/ServerLMS/clienthandler.h index 8b2f478..7e035b8 100644 --- a/ServerLMS/ServerLMS/clienthandler.h +++ b/ServerLMS/ServerLMS/clienthandler.h @@ -16,6 +16,7 @@ class Logger; class ServerLMSWidget; class UpdateController; class RecognizeSystem; +class ClientAnswerParser; class ClientHandler : public QObject { diff --git a/ServerLMS/ServerLMS/serverlmswidget.cpp b/ServerLMS/ServerLMS/serverlmswidget.cpp index c1b09d4..c943ec0 100644 --- a/ServerLMS/ServerLMS/serverlmswidget.cpp +++ b/ServerLMS/ServerLMS/serverlmswidget.cpp @@ -137,7 +137,7 @@ bool ServerLMSWidget::stopServer() { if(stateServer == started) { - QByteArray arrayAnswer = dataParser->xmlAnswer_notify(NOTIFY_SERVER_END); + QByteArray arrayAnswer = dataParser->ClientAnswer()->notify(NOTIFY_SERVER_END); //Закрываем все открытые сокеты foreach(int idSocket, clientsMap.keys()) diff --git a/ServerLMS/ServerLMS/serverlmswidget.h b/ServerLMS/ServerLMS/serverlmswidget.h index 75c60f0..d5e697e 100644 --- a/ServerLMS/ServerLMS/serverlmswidget.h +++ b/ServerLMS/ServerLMS/serverlmswidget.h @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include #include