mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
TrayServerLMS рабочая версия
This commit is contained in:
@@ -29,7 +29,8 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
|
||||
providerDBLMS(nullptr),
|
||||
first (true),
|
||||
language(languageENG),
|
||||
errorCode(0)
|
||||
errorCode(0),
|
||||
flStartInitialization(false)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
@@ -41,96 +42,68 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
|
||||
|
||||
setLanguageInterfase();
|
||||
|
||||
mutex = new QMutex;
|
||||
startInitialization();
|
||||
|
||||
ui->btnStopServer->setEnabled(false);
|
||||
ui->btnStartServer->setEnabled(true);
|
||||
|
||||
updateThread = new QThread;
|
||||
loggerThread = new QThread;
|
||||
|
||||
providerDBLMS = new ProviderDBLMS(this);
|
||||
providerDBLMS->ConnectionToDB();
|
||||
providerDBLMS->deAuthorizationAll();
|
||||
|
||||
//Настройки БД
|
||||
DataBaseSettings dbSettings = providerDBLMS->getDBSettings();
|
||||
QString strDBsettings = QString("%1 (%2) %3 : %4").arg(dbSettings.dbName,
|
||||
dbSettings.dbType,
|
||||
dbSettings.dbHostName,
|
||||
QString::number(dbSettings.dbPort));
|
||||
ui->lblDBsettings->setText(strDBsettings);
|
||||
|
||||
chatSystem = new ChatSystem();
|
||||
|
||||
connect(providerDBLMS, &ProviderDBLMS::signal_BlockAutorization, this, &ServerLMSWidget::slot_BlockAutorization);
|
||||
|
||||
assetsManager = new AssetsManager;
|
||||
assetsManager->moveToThread(updateThread);
|
||||
|
||||
updateController = new UpdateController;
|
||||
updateController->moveToThread(updateThread);
|
||||
|
||||
processingSystem = new ProcessingSystem(providerDBLMS, updateController);
|
||||
//processingSystem->moveToThread(updateThread);
|
||||
|
||||
dataParser = new DataParser(assetsManager,processingSystem);
|
||||
|
||||
commonClientHandler = new CommonClientHandler;
|
||||
server = new MultiThreadServer(this,updateController,processingSystem,dataParser,6000);
|
||||
|
||||
loggerThread->start();
|
||||
updateThread->start();
|
||||
|
||||
commonClientHandler->initialize(server->getClientsMap(),processingSystem,dataParser);
|
||||
processingSystem->initialize(server,dataParser,commonClientHandler,updateController,chatSystem);
|
||||
chatSystem->initialize(commonClientHandler,dataParser,server->getClientsMap());
|
||||
|
||||
Logger::instance().moveToThread(loggerThread);
|
||||
Logger::instance().setLoggingType(LoggingType::WIDGET);
|
||||
Logger::instance().setLogToFile(true);
|
||||
|
||||
connect(this,&ServerLMSWidget::sigUpdateController,updateController,&UpdateController::initialize,Qt::DirectConnection);
|
||||
connect(this,&ServerLMSWidget::sigCalculateFullHash,updateController,&UpdateController::calculateFullHash,Qt::AutoConnection);
|
||||
connect(updateController,&UpdateController::sigErrorRequired,this,&ServerLMSWidget::setError);
|
||||
connect(&Logger::instance(),&Logger::sigLogToWidget,this, &ServerLMSWidget::addToLog,Qt::QueuedConnection);
|
||||
|
||||
emit sigUpdateController(commonClientHandler,dataParser,assetsManager);
|
||||
on_btnStartServer_clicked();
|
||||
tryConnectionToDB();
|
||||
}
|
||||
|
||||
ServerLMSWidget::~ServerLMSWidget()
|
||||
{
|
||||
server->stopServer();
|
||||
updateThread->exit();
|
||||
loggerThread->exit();
|
||||
if(flStartInitialization)
|
||||
{
|
||||
server->stopServer();
|
||||
|
||||
//updateThread->exit();
|
||||
updateThread->quit();
|
||||
updateThread->wait();
|
||||
delete updateThread;
|
||||
|
||||
delete server;
|
||||
delete commonClientHandler;
|
||||
delete dataParser;
|
||||
delete processingSystem;
|
||||
delete updateController;
|
||||
delete assetsManager;
|
||||
delete chatSystem;
|
||||
|
||||
delete mutex;
|
||||
|
||||
//loggerThread->exit();
|
||||
loggerThread->quit();
|
||||
loggerThread->wait();
|
||||
delete loggerThread;
|
||||
}
|
||||
|
||||
delete server;
|
||||
delete commonClientHandler;
|
||||
delete dataParser;
|
||||
delete processingSystem;
|
||||
delete updateController;
|
||||
delete assetsManager;
|
||||
delete chatSystem;
|
||||
delete providerDBLMS;
|
||||
delete loggerThread;
|
||||
delete updateThread;
|
||||
delete mutex;
|
||||
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ServerLMSWidget::setError(int code)
|
||||
void ServerLMSWidget::changeEvent(QEvent *event)
|
||||
{
|
||||
errorCode = code;
|
||||
// В случае получения события изменения языка приложения
|
||||
if (event->type() == QEvent::LanguageChange)
|
||||
{
|
||||
ui->retranslateUi(this); // переведём окно заново
|
||||
|
||||
if(providerDBLMS->DBisConnected())
|
||||
{
|
||||
//Настройки БД
|
||||
DataBaseSettings dbSettings = providerDBLMS->getDBSettings();
|
||||
QString strDBsettings = QString("%1 (%2) %3 : %4").arg(dbSettings.dbName,
|
||||
dbSettings.dbType,
|
||||
dbSettings.dbHostName,
|
||||
QString::number(dbSettings.dbPort));
|
||||
ui->lblDBsettings->setText(strDBsettings);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->lblDBsettings->setText("");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString ServerLMSWidget::getLanguage()
|
||||
{
|
||||
return language;
|
||||
}
|
||||
|
||||
void ServerLMSWidget::slotUpdateListClients()
|
||||
void ServerLMSWidget::slot_UpdateListClients()
|
||||
{
|
||||
//Очищаем список
|
||||
ui->listWidget_Clients->clear();
|
||||
@@ -148,7 +121,7 @@ void ServerLMSWidget::slotUpdateListClients()
|
||||
Logger::instance().log("SERVER: countClients = " + QString::number(countClients));
|
||||
}
|
||||
|
||||
void ServerLMSWidget::addToLog(QString message)
|
||||
void ServerLMSWidget::slot_AddMessageToLog(QString message)
|
||||
{
|
||||
ui->loggerTextField->appendPlainText(message);
|
||||
}
|
||||
@@ -185,6 +158,7 @@ void ServerLMSWidget::on_btnStartServer_clicked()
|
||||
ui->btnStartServer->setEnabled(false);
|
||||
ui->btnStopServer->setEnabled(true);
|
||||
ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/switchOn.png")));
|
||||
slot_BlockAutorization(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,29 +169,7 @@ void ServerLMSWidget::on_btnStopServer_clicked()
|
||||
ui->btnStopServer->setEnabled(false);
|
||||
ui->btnStartServer->setEnabled(true);
|
||||
ui->lblOnOff->setPixmap(QPixmap(QStringLiteral(":/resources/icons/switchOff.png")));
|
||||
slot_BlockAutorization(false);
|
||||
}
|
||||
}
|
||||
|
||||
QMutex *ServerLMSWidget::getMutex() const
|
||||
{
|
||||
return mutex;
|
||||
}
|
||||
|
||||
void ServerLMSWidget::changeEvent(QEvent *event)
|
||||
{
|
||||
// В случае получения события изменения языка приложения
|
||||
if (event->type() == QEvent::LanguageChange)
|
||||
{
|
||||
ui->retranslateUi(this); // переведём окно заново
|
||||
|
||||
//Настройки БД
|
||||
DataBaseSettings dbSettings = providerDBLMS->getDBSettings();
|
||||
QString strDBsettings = QString("%1 (%2) %3 : %4").arg(dbSettings.dbName,
|
||||
dbSettings.dbType,
|
||||
dbSettings.dbHostName,
|
||||
QString::number(dbSettings.dbPort));
|
||||
ui->lblDBsettings->setText(strDBsettings);
|
||||
slot_BlockAutorization(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,20 +188,19 @@ void ServerLMSWidget::on_btnSettings_clicked()
|
||||
{
|
||||
language = dlg.getSettings().Language;
|
||||
|
||||
if(dlg.settingsServerIsChanged())
|
||||
{//TODO Здесь нужно переподключать БД
|
||||
|
||||
//SpecialMessageBox(this, SpecialMessageBox::TypeSpecMsgBox::warningClose, tr("Server settings have been changed. Please reconnect to the server.")).exec();
|
||||
if(dlg.settingsDBisChanged())
|
||||
{
|
||||
on_btnStopServer_clicked();
|
||||
|
||||
providerDBLMS->deAuthorizationAll();
|
||||
|
||||
on_btnStopServer_clicked();
|
||||
|
||||
providerDBLMS->DisConnectionFromDB();
|
||||
|
||||
providerDBLMS->ConnectionToDB();
|
||||
ui->lblDBsettings->setText("");
|
||||
|
||||
//on_btnStartServer_clicked();
|
||||
QMessageBox::warning(this, tr("Warning!"), tr("Database settings have been changed.\nThe server will be restarted."));
|
||||
|
||||
tryConnectionToDB();
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -308,3 +259,78 @@ QString ServerLMSWidget::loadStyleSheet()
|
||||
return style;
|
||||
}
|
||||
}
|
||||
|
||||
void ServerLMSWidget::startInitialization()
|
||||
{
|
||||
providerDBLMS = new ProviderDBLMS(this);
|
||||
connect(providerDBLMS, &ProviderDBLMS::signal_BlockAutorization, this, &ServerLMSWidget::slot_BlockAutorization);
|
||||
|
||||
mutex = new QMutex;
|
||||
|
||||
updateThread = new QThread;
|
||||
loggerThread = new QThread;
|
||||
|
||||
chatSystem = new ChatSystem();
|
||||
|
||||
assetsManager = new AssetsManager;
|
||||
assetsManager->moveToThread(updateThread);
|
||||
|
||||
updateController = new UpdateController;
|
||||
updateController->moveToThread(updateThread);
|
||||
|
||||
processingSystem = new ProcessingSystem(providerDBLMS, updateController);
|
||||
//processingSystem->moveToThread(updateThread);
|
||||
|
||||
dataParser = new DataParser(assetsManager,processingSystem);
|
||||
|
||||
commonClientHandler = new CommonClientHandler;
|
||||
server = new MultiThreadServer(this,updateController,processingSystem,dataParser,6000);
|
||||
|
||||
loggerThread->start();
|
||||
updateThread->start();
|
||||
|
||||
commonClientHandler->initialize(server->getClientsMap(),processingSystem,dataParser);
|
||||
processingSystem->initialize(server,dataParser,commonClientHandler,updateController,chatSystem);
|
||||
chatSystem->initialize(commonClientHandler,dataParser,server->getClientsMap());
|
||||
|
||||
Logger::instance().moveToThread(loggerThread);
|
||||
Logger::instance().setLoggingType(LoggingType::WIDGET);
|
||||
Logger::instance().setLogToFile(true);
|
||||
|
||||
connect(this,&ServerLMSWidget::sigUpdateController,updateController,&UpdateController::initialize,Qt::DirectConnection);
|
||||
connect(this,&ServerLMSWidget::sigCalculateFullHash,updateController,&UpdateController::calculateFullHash,Qt::AutoConnection);
|
||||
connect(updateController,&UpdateController::sigErrorRequired,this,&ServerLMSWidget::setError);
|
||||
connect(&Logger::instance(),&Logger::sigLogToWidget,this, &ServerLMSWidget::slot_AddMessageToLog,Qt::QueuedConnection);
|
||||
|
||||
emit sigUpdateController(commonClientHandler,dataParser,assetsManager);
|
||||
|
||||
ui->btnStopServer->setEnabled(false);
|
||||
ui->btnStartServer->setEnabled(true);
|
||||
|
||||
flStartInitialization = true;
|
||||
}
|
||||
|
||||
void ServerLMSWidget::tryConnectionToDB()
|
||||
{
|
||||
if(! providerDBLMS->ConnectionToDB())
|
||||
{
|
||||
ui->lblDBsettings->setText("");
|
||||
ui->btnStopServer->setEnabled(false);
|
||||
ui->btnStartServer->setEnabled(false);
|
||||
QMessageBox::critical(this, tr("Error!"), tr("Database connection error"));
|
||||
}
|
||||
else
|
||||
{
|
||||
providerDBLMS->deAuthorizationAll();
|
||||
|
||||
//Настройки БД
|
||||
DataBaseSettings dbSettings = providerDBLMS->getDBSettings();
|
||||
QString strDBsettings = QString("%1 (%2) %3 : %4").arg(dbSettings.dbName,
|
||||
dbSettings.dbType,
|
||||
dbSettings.dbHostName,
|
||||
QString::number(dbSettings.dbPort));
|
||||
ui->lblDBsettings->setText(strDBsettings);
|
||||
|
||||
on_btnStartServer_clicked();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user