mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Индикация и возм обновл docs из ГУИ
This commit is contained in:
@@ -38,6 +38,9 @@ enum PacketType
|
||||
TYPE_XMLANSWER_QUERY_TASKS_XML_FIM = 130,
|
||||
TYPE_XMLANSWER_QUERY_TASKS_XML_AMM = 131,
|
||||
|
||||
//оповещение об изменении docs.xml
|
||||
TYPE_XMLANSWER_DOCS_CHANGED = 132,
|
||||
|
||||
//ответы по обновлениям
|
||||
HASH_READY = 150,
|
||||
CHANGE_DATA_VERSION = 151,
|
||||
|
||||
@@ -141,3 +141,30 @@ void CommonClientHandler::slot_sendTaskToClient(QString fullNameClient,QString t
|
||||
}
|
||||
}
|
||||
|
||||
void CommonClientHandler::slot_DocsChanged()
|
||||
{
|
||||
//Проходим все открытые сокеты
|
||||
foreach(int idSocket, clientsMap->keys())
|
||||
{
|
||||
ClientHandler *handler = clientsMap->value(idSocket);
|
||||
|
||||
//Проверяем, есть ли клиенты TYPE_GUI
|
||||
if(handler->getClient()->getTypeClient() == TypeClientAutorization::TYPE_GUI)
|
||||
{//Отправляем этому клиенту оповещение об изменении docs.xml
|
||||
|
||||
/*
|
||||
ClientQueryTasksXML clientQueryTasksXML;
|
||||
clientQueryTasksXML.Type = "amm";
|
||||
processingSystem->processingClientQueryTasksXML(handler, clientQueryTasksXML);
|
||||
*/
|
||||
|
||||
handler->sendPacketType(PacketType::TYPE_XMLANSWER_DOCS_CHANGED);
|
||||
}
|
||||
|
||||
if(handler->getClient()->getClientType() == TypeClientAutorization::TYPE_UNITY_CLIENT)
|
||||
{
|
||||
handler->sendPacketType(PacketType::TYPE_XMLANSWER_DOCS_CHANGED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@ public:
|
||||
void slot_sendPacketToAllClients(PacketType packetType);
|
||||
bool slotSendMessage(QString loginFrom, QString loginTo, QString text);
|
||||
void slot_sendTaskToClient(QString fullNameClient, QString textTask);
|
||||
|
||||
void slot_DocsChanged();
|
||||
signals:
|
||||
void sigSendToLogger(QString text);
|
||||
private:
|
||||
|
||||
@@ -16,6 +16,16 @@ DocsUpdater::~DocsUpdater()
|
||||
|
||||
}
|
||||
|
||||
void DocsUpdater::lockAccessToDocs()
|
||||
{
|
||||
mtxAccess.lock();
|
||||
}
|
||||
|
||||
void DocsUpdater::unLockAccessToDocs()
|
||||
{
|
||||
mtxAccess.unlock();
|
||||
}
|
||||
|
||||
bool DocsUpdater::slot_update()
|
||||
{
|
||||
QMutexLocker locker(&mtxAccess);
|
||||
@@ -39,6 +49,7 @@ bool DocsUpdater::slot_update()
|
||||
if(! Tools::saveDOMtoXML(pathDocsFile, &docTasksDOM))
|
||||
return false;
|
||||
|
||||
//emit signal_DocsChanged();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ class DocsUpdater : public QObject
|
||||
public:
|
||||
DocsUpdater(UpdateController* updateController, QObject *parent = nullptr);
|
||||
~DocsUpdater();
|
||||
public:
|
||||
void lockAccessToDocs();
|
||||
void unLockAccessToDocs();
|
||||
|
||||
public slots:
|
||||
bool slot_update();
|
||||
|
||||
@@ -3,13 +3,15 @@
|
||||
|
||||
#include <clienthandler.h>
|
||||
|
||||
ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, QObject *parent):
|
||||
ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, DocsUpdater* docsUpdater, QObject *parent):
|
||||
QObject(parent),
|
||||
updateController(nullptr),
|
||||
docsUpdater(nullptr),
|
||||
providerDBLMS(nullptr)
|
||||
{
|
||||
this->providerDBLMS = providerDBLMS;
|
||||
this->updateController = updateController;
|
||||
this->docsUpdater = docsUpdater;
|
||||
}
|
||||
|
||||
void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataParser,
|
||||
@@ -514,8 +516,10 @@ void ProcessingSystem::processingClientQueryTasksXML(ClientHandler *client, Clie
|
||||
{
|
||||
nameFile = tasksAMMfileName;
|
||||
pathFile = updateController->getPathAdditionalFile(nameFile);
|
||||
docsUpdater->lockAccessToDocs();
|
||||
client->sendFileBlock(pathFile);
|
||||
client->sendPacketType(PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_AMM);
|
||||
docsUpdater->unLockAccessToDocs();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
//#include "instructorsandtraineeswidget.h"
|
||||
#include "chatsystem.h"
|
||||
#include "providerdblms.h"
|
||||
#include "docsupdater.h"
|
||||
|
||||
class SendSystem;
|
||||
class ServerLMSWidget;
|
||||
@@ -24,7 +25,7 @@ class ProcessingSystem : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, QObject *parent = nullptr);
|
||||
explicit ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateController* updateController, DocsUpdater* docsUpdater, QObject *parent = nullptr);
|
||||
|
||||
void initialize(MultiThreadServer *server,
|
||||
DataParser* dataParser,
|
||||
@@ -70,6 +71,7 @@ private:
|
||||
MultiThreadServer *server;
|
||||
DataParser *dataParser;
|
||||
UpdateController *updateController;
|
||||
DocsUpdater* docsUpdater;
|
||||
ProviderDBLMS* providerDBLMS;
|
||||
ChatSystem *chatSystem;
|
||||
void sendTaskListToUnity(ClientHandler *client);
|
||||
|
||||
@@ -119,6 +119,7 @@ void ServerLMSWidget::slot_UpdateDocs()
|
||||
{
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
emit signal_DocsUpdaterUpdate();
|
||||
emit signal_DocsChanged();
|
||||
QApplication::restoreOverrideCursor();
|
||||
}
|
||||
|
||||
@@ -300,12 +301,16 @@ void ServerLMSWidget::startInitialization()
|
||||
updateController = new UpdateController;
|
||||
updateController->moveToThread(updateThread);
|
||||
|
||||
processingSystem = new ProcessingSystem(providerDBLMS, updateController);
|
||||
//processingSystem->moveToThread(updateThread);
|
||||
docsUpdater = new DocsUpdater(updateController, this);
|
||||
connect(this, &ServerLMSWidget::signal_DocsUpdaterUpdate, docsUpdater, &DocsUpdater::slot_update,Qt::DirectConnection);
|
||||
|
||||
processingSystem = new ProcessingSystem(providerDBLMS, updateController, docsUpdater);
|
||||
|
||||
dataParser = new DataParser(assetsManager,processingSystem);
|
||||
|
||||
commonClientHandler = new CommonClientHandler;
|
||||
connect(this,&ServerLMSWidget::signal_DocsChanged,commonClientHandler, &CommonClientHandler::slot_DocsChanged);
|
||||
|
||||
server = new MultiThreadServer(this,updateController,processingSystem,dataParser,6000);
|
||||
|
||||
loggerThread->start();
|
||||
@@ -326,9 +331,6 @@ void ServerLMSWidget::startInitialization()
|
||||
|
||||
emit sigUpdateController(commonClientHandler,dataParser,assetsManager);
|
||||
|
||||
docsUpdater = new DocsUpdater(updateController, this);
|
||||
connect(this, &ServerLMSWidget::signal_DocsUpdaterUpdate, docsUpdater, &DocsUpdater::slot_update,Qt::DirectConnection);
|
||||
docsUpdater->moveToThread(updateThread);
|
||||
slot_UpdateDocs();
|
||||
|
||||
ui->btnStopServer->setEnabled(false);
|
||||
|
||||
@@ -80,6 +80,8 @@ signals:
|
||||
|
||||
void signal_DocsUpdaterUpdate();
|
||||
|
||||
void signal_DocsChanged();
|
||||
|
||||
public slots:
|
||||
void slot_LanguageChanged(QString language);
|
||||
void slot_UpdateListClients();
|
||||
|
||||
@@ -349,7 +349,7 @@
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="ServerLMS.qrc">:/resources/icons/open.png</pixmap>
|
||||
<pixmap resource="ServerLMS.qrc">:/resources/icons/lock.png</pixmap>
|
||||
</property>
|
||||
<property name="scaledContents">
|
||||
<bool>true</bool>
|
||||
|
||||
Reference in New Issue
Block a user