feat: add logger with write to file

This commit is contained in:
semenov
2025-08-06 16:04:53 +03:00
parent 305fcb2fad
commit 34dddad3cd
20 changed files with 213 additions and 154 deletions

View File

@@ -5,14 +5,11 @@ CommonClientHandler::CommonClientHandler(QObject *parent) : QObject(parent)
} }
void CommonClientHandler::initialize(QMap<int, ClientHandler *> *clientsMap, ProcessingSystem *processingSystem, DataParser *dataParser, Logger *logger) void CommonClientHandler::initialize(QMap<int, ClientHandler *> *clientsMap, ProcessingSystem *processingSystem, DataParser *dataParser)
{ {
this->clientsMap = clientsMap; this->clientsMap = clientsMap;
this->processingSystem = processingSystem; this->processingSystem = processingSystem;
this->dataParser = dataParser; this->dataParser = dataParser;
this->logger = logger;
connect(this,&CommonClientHandler::sigSendToLogger,logger,&Logger::addTextToLogger,Qt::AutoConnection);
} }
void CommonClientHandler::sendNewVersionListToAllClient() void CommonClientHandler::sendNewVersionListToAllClient()

View File

@@ -15,8 +15,7 @@ public:
explicit CommonClientHandler(QObject *parent = nullptr); explicit CommonClientHandler(QObject *parent = nullptr);
void initialize(QMap<int, ClientHandler*> *clientsMap, void initialize(QMap<int, ClientHandler*> *clientsMap,
ProcessingSystem *processingSystem, ProcessingSystem *processingSystem,
DataParser *dataParser, DataParser *dataParser);
Logger *logger);
void sendNewVersionListToAllClient(); void sendNewVersionListToAllClient();
void sendCurrentVersionToAllClient(); void sendCurrentVersionToAllClient();
@@ -32,8 +31,6 @@ private:
QMap<int, ClientHandler*> *clientsMap; QMap<int, ClientHandler*> *clientsMap;
ProcessingSystem *processingSystem; ProcessingSystem *processingSystem;
DataParser *dataParser; DataParser *dataParser;
Logger *logger;
}; };
#endif // COMMONCLIENTHANDLER_H #endif // COMMONCLIENTHANDLER_H

View File

@@ -2,10 +2,16 @@
#include <QThread> #include <QThread>
Logger::Logger() Logger::Logger()
{ {
//this->listWidget = widget; connect(this,&Logger::sigAddToLogger, this, &Logger::handleLog,Qt::QueuedConnection);
createDirectory();
}
Logger &Logger::instance()
{
static Logger logger;
return logger;
} }
Logger::~Logger() Logger::~Logger()
@@ -13,22 +19,79 @@ Logger::~Logger()
} }
void Logger::setTypeLog(QString type) void Logger::setLoggingType(LoggingType type)
{ {
typeLogger = type; this->loggingType = type;
} }
void Logger::addTextToLogger(QString msg) void Logger::log(QString message, LogLevel level)
{ {
if(typeLogger == "widget") emit sigAddToLogger(message,level);
{
emit sigSendTextToLogger(msg);
} }
else if (typeLogger == "console")
void Logger::setLogFile(QString filePath)
{ {
//qDebug() << msg; QMutexLocker locker(&mutex);
}else if (logFile.isOpen())
{ {
emit sigSendTextToLogger(msg); logFile.close();
}
logFile.setFileName(filePath);
logFile.open(QIODevice::WriteOnly | QIODevice::Append);
}
void Logger::setLogToFile(bool flag)
{
isLogToFile = flag;
if (flag)
{
QString filePath = logFolderPath + "/" + "log " + QDateTime::currentDateTime().toString("dd-MM-yyyy")+".txt";
setLogFile(filePath);
} }
} }
void Logger::handleLog(QString msg, LogLevel logLevel)
{
QString level;
switch (logLevel)
{
case INFO: level = "INFO"; break;
case WARNING: level = "WARNING"; break;
case ERROR: level = "ERROR"; break;
case CRITICAL: level = "CRITICAL"; break;
}
QString timeStamp = QDateTime::currentDateTime().toString("hh:mm:ss");
QString message = timeStamp + " " + level + " " + msg;
if (loggingType == LoggingType::WIDGET)
{
emit sigLogToWidget(message);
}
else if(loggingType == LoggingType::CONSOLE)
{
qDebug() << message;
}
if(isLogToFile)
{
QMutexLocker locker(&mutex);
if (logFile.isOpen())
{
QTextStream stream(&logFile);
stream << message << "\n";
}
}
}
void Logger::createDirectory()
{
QString directoryPath = logFolderPath;
QDir dir(directoryPath);
if(!dir.exists()) dir.mkdir(".");
}

View File

@@ -1,25 +1,58 @@
#ifndef LOGGER_H #ifndef LOGGER_H
#define LOGGER_H #define LOGGER_H
#include <QPlainTextEdit>
#include <QDateTime>
#include <QMutex>
#include <QObject> #include <QObject>
#include <QDebug>
#include <QDir>
#include "Systems/tools.h"
enum LogLevel
{
INFO,
WARNING,
ERROR,
CRITICAL
};
enum LoggingType
{
WIDGET,
CONSOLE,
TOFILE
};
class Logger : public QObject class Logger : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit Logger(); Logger();
static Logger& instance();
~Logger(); ~Logger();
void setTypeLog(QString type); void setWidget(QPlainTextEdit * widget);
void setLoggingType(LoggingType type);
void log(QString message,LogLevel level = INFO);
void setLogFile(QString filePath);
void setLogToFile(bool flag);
public slots: public slots:
void addTextToLogger(QString msg); void handleLog(QString msg,LogLevel logLevel = INFO);
signals: signals:
void sigSendTextToLogger(QString msg); void sigAddToLogger(QString msg, LogLevel logLevel = INFO);
void sigLogToWidget(QString message);
private: private:
//ServerLMSWidget *listWidget; QString msg;
QString typeLogger; QFile logFile;
LoggingType loggingType;
QMutex mutex;
bool isLogToFile;
void createDirectory();
}; };
#endif // LOGGER_H #endif // LOGGER_H

View File

@@ -13,7 +13,6 @@ ProcessingSystem::ProcessingSystem(ProviderDBLMS* providerDBLMS, UpdateControlle
void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataParser, void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataParser,
CommonClientHandler *commonClientHandler, CommonClientHandler *commonClientHandler,
Logger *logger,
UpdateController *updateController, UpdateController *updateController,
ChatSystem *chatSystem) ChatSystem *chatSystem)
{ {
@@ -27,9 +26,8 @@ void ProcessingSystem::initialize(MultiThreadServer *server, DataParser *dataPar
connect(this,&ProcessingSystem::sigStatusTasksAMMofTraineeChanged,commonClientHandler, &CommonClientHandler::slot_StatusTasksAMMofTraineeChanged,Qt::AutoConnection); connect(this,&ProcessingSystem::sigStatusTasksAMMofTraineeChanged,commonClientHandler, &CommonClientHandler::slot_StatusTasksAMMofTraineeChanged,Qt::AutoConnection);
connect(this,&ProcessingSystem::sigStatusTasksFIMofTraineeChanged,commonClientHandler, &CommonClientHandler::slot_StatusTasksFIMofTraineeChanged,Qt::AutoConnection); connect(this,&ProcessingSystem::sigStatusTasksFIMofTraineeChanged,commonClientHandler, &CommonClientHandler::slot_StatusTasksFIMofTraineeChanged,Qt::AutoConnection);
connect(this,&ProcessingSystem::sigUpdateListClients,server,&MultiThreadServer::updateClientList,Qt::AutoConnection);
connect(this,&ProcessingSystem::sigSetData,updateController,&UpdateController::setDataInfo,Qt::AutoConnection); connect(this,&ProcessingSystem::sigSetData,updateController,&UpdateController::setDataInfo,Qt::AutoConnection);
connect(this,&ProcessingSystem::sigLogMessage,logger,&Logger::addTextToLogger,Qt::QueuedConnection);
} }
void ProcessingSystem::processingClientAutorization(ClientHandler *client, ClientAutorization clientAutorization) void ProcessingSystem::processingClientAutorization(ClientHandler *client, ClientAutorization clientAutorization)
@@ -40,7 +38,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
client->sendXmlAnswer(arrayAnswer); client->sendXmlAnswer(arrayAnswer);
QString str = QString(arrayAnswer); QString str = QString(arrayAnswer);
emit sigLogMessage("To Client: " + str); Logger::instance().log("To Client: " + str);
return; return;
} }
@@ -108,7 +106,7 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli
client->sendXmlAnswer(arrayAnswer); client->sendXmlAnswer(arrayAnswer);
QString str = QString(arrayAnswer); QString str = QString(arrayAnswer);
emit sigLogMessage("To Client: " + str); Logger::instance().log("To Client: " + str);
return; return;
} }
@@ -498,6 +496,7 @@ void ProcessingSystem::processingClientQueryTasksXML(ClientHandler *client, Clie
{ {
nameFile = tasksFIMfileName; nameFile = tasksFIMfileName;
pathFile = updateController->getPathAdditionalFile(nameFile); pathFile = updateController->getPathAdditionalFile(nameFile);
Logger::instance().log(pathFile);
client->sendFileBlock(pathFile); client->sendFileBlock(pathFile);
client->sendPacketType(PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_FIM); client->sendPacketType(PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_FIM);
} }

View File

@@ -29,7 +29,6 @@ public:
void initialize(MultiThreadServer *server, void initialize(MultiThreadServer *server,
DataParser* dataParser, DataParser* dataParser,
CommonClientHandler *commonClientServer, CommonClientHandler *commonClientServer,
Logger *logger,
UpdateController *updateComtroller, UpdateController *updateComtroller,
ChatSystem *chatSystem); ChatSystem *chatSystem);
@@ -62,7 +61,6 @@ signals:
void sigListsInstructorsTraineesChanged(); void sigListsInstructorsTraineesChanged();
void sigStatusTasksAMMofTraineeChanged(int trainee_id); void sigStatusTasksAMMofTraineeChanged(int trainee_id);
void sigStatusTasksFIMofTraineeChanged(int trainee_id); void sigStatusTasksFIMofTraineeChanged(int trainee_id);
void sigLogMessage(QString log);
void sigAddToMessanger(QString login,QString text); void sigAddToMessanger(QString login,QString text);
void sigSetData(DataInfo *dataInfo); void sigSetData(DataInfo *dataInfo);

View File

@@ -139,7 +139,7 @@ void RecognizeSystem::recognize()
stream.commitTransaction(); stream.commitTransaction();
//if(!) continue; //if(!) continue;
//ПОЛУЧЕНИЕ САМОГО ФАЙЛА //ПОЛУЧЕНИЕ САМОГО ФАЙЛА
qDebug() << (Tools::getTime() + "AfterRead size and path BytesAvailable: " + socket->bytesAvailable()); Logger::instance().log("AfterRead size and path BytesAvailable: " + QString::number(socket->bytesAvailable()));
qint64 readSize = 65535; qint64 readSize = 65535;
forever forever
@@ -148,7 +148,7 @@ void RecognizeSystem::recognize()
if(fileSize < readSize) if(fileSize < readSize)
{ {
readSize = fileSize; readSize = fileSize;
qDebug() << "LastPackage: " << readSize; Logger::instance().log("LastPackage: " + QString::number(readSize));
} }
socket->waitForReadyRead(20); socket->waitForReadyRead(20);
@@ -165,7 +165,7 @@ void RecognizeSystem::recognize()
if(fileSize == 0) break; if(fileSize == 0) break;
} }
qDebug() << (Tools::getTime() + "File loaded"); Logger::instance().log("File loaded");
//ОЧИСТКА ПОСЛЕ ПЕРЕДАЧИ //ОЧИСТКА ПОСЛЕ ПЕРЕДАЧИ
fileSize = 0; fileSize = 0;
@@ -225,7 +225,7 @@ void RecognizeSystem::recognize()
if (file.exists()) if (file.exists())
{ {
file.remove(); //удаление файла, если он уже есть, но необходимо обновить file.remove(); //удаление файла, если он уже есть, но необходимо обновить
qDebug() << Tools::getTime() + "Delete exist file: " + filePath; Logger::instance().log("Delete exist file: " + filePath);
} }
if (!file.open(QFile::Append)) if (!file.open(QFile::Append))
@@ -333,11 +333,10 @@ void RecognizeSystem::recognize()
} }
QString logMessage = Tools::getTime() + " "; QString logMessage = "Load from " + client->getLogin() + " ";
logMessage.append("Load from " + client->getLogin() + " ");
logMessage.append(fileInfo.fileName()); logMessage.append(fileInfo.fileName());
emit sigSendToLogger(logMessage); Logger::instance().log(logMessage);
file.close(); file.close();

View File

@@ -1,22 +1,20 @@
#include "sendsystem.h" #include "sendsystem.h"
SendSystem::SendSystem(QObject *parent) : QObject(parent) SendSystem::SendSystem(QObject *parent) : QObject(parent)
{ {
isSendStopped = false; isSendStopped = false;
} }
void SendSystem::initialize(DataParser *dataParser,Logger *logger) void SendSystem::initialize(DataParser *dataParser,QMutex *globalMutex)
{ {
this->dataParser = dataParser; this->dataParser = dataParser;
this->logger = logger;
connect(this,&SendSystem::sigSendToLogger,logger,&Logger::addTextToLogger,Qt::AutoConnection);
connect(this,&SendSystem::sigSendXMLmessage,dataParser->ClientAnswer(),&ClientAnswerParser::message,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::sigSendNotify,dataParser->ClientAnswer(),&ClientAnswerParser::notify,Qt::DirectConnection); //потому что возвращает значение
connect(this,&SendSystem::sigSendVersion,dataParser->ClientAnswer(),&ClientAnswerParser::currentVersion,Qt::AutoConnection); connect(this,&SendSystem::sigSendVersion,dataParser->ClientAnswer(),&ClientAnswerParser::currentVersion,Qt::AutoConnection);
qDebug() << "SendSystem thread: " << QThread::currentThreadId(); qDebug() << "SendSystem thread: " << QThread::currentThreadId();
mutex = globalMutex;
} }
void SendSystem::setClient(Client *client,QTcpSocket *socket) void SendSystem::setClient(Client *client,QTcpSocket *socket)
@@ -35,30 +33,35 @@ void SendSystem::sendMessageBlock(QString message)
void SendSystem::sendFileBlock(QString path) void SendSystem::sendFileBlock(QString path)
{ {
qDebug() << "sendFileBlock thread: " << QThread::currentThreadId(); //qDebug() << "sendFileBlock thread: " << QThread::currentThreadId();
Logger::instance().log("TRY LOCK MUTEX : " + client->getLogin(),LogLevel::WARNING);
QMutexLocker locker(mutex);
Logger::instance().log("LOCK MUTEX " + client->getLogin(),LogLevel::WARNING);
QFile file(path); QFile file(path);
QFileInfo fileInfo(file); QFileInfo fileInfo(file);
Logger::instance().log("OPEN FILE : " + client->getLogin() + " " + fileInfo.fileName());
if(isSendStopped) if(isSendStopped)
{ //Поведение на случай отключения клиента { //Поведение на случай отключения клиента
file.close(); file.close();
Logger::instance().log("UNLOCK STOP MUTEX : " + client->getLogin(),LogLevel::ERROR);
return; return;
} }
QDataStream stream(socket); QDataStream stream(socket);
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion); stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
fileSize = file.size();
Logger::instance().log("size FILE :" + client->getLogin() + " " + QString::number(fileSize));
fileSize = fileInfo.size(); if (fileSize == 0)
{
if(fileSize == 0){ Logger::instance().log("Client: " + client->getLogin() + " WARNING! Zero size " + fileInfo.fileName(),LogLevel::ERROR);
emit sigSendToLogger(Tools::getTime() + " WARNING! Zero size " + path); Logger::instance().log(path,LogLevel::ERROR);
Logger::instance().log("UNLOCK SIZE MUTEX : " + client->getLogin(),LogLevel::ERROR);
return; return;
} }
stream << PacketType::TYPE_FILE; //Отправляем тип блока stream << PacketType::TYPE_FILE; //Отправляем тип блока
stream << path << fileSize; stream << path << fileSize;
@@ -77,14 +80,17 @@ void SendSystem::sendFileBlock(QString path)
//emit sigSendToLogger(Tools::getTime() + " send file " + fileInfo.fileName()); //emit sigSendToLogger(Tools::getTime() + " send file " + fileInfo.fileName());
} }
Logger::instance().log("Sended to : " + client->getLogin() + " : " + fileInfo.fileName());
file.close(); file.close();
Logger::instance().log("CLOSE FILE : " + client->getLogin() + " " + fileInfo.fileName());
countSend = 0; countSend = 0;
Logger::instance().log("UNLOCK MUTEX : " + client->getLogin(),LogLevel::WARNING);
} }
void SendSystem::sendFileBlockByteArray(QByteArray array, PacketType packetType) void SendSystem::sendFileBlockByteArray(QByteArray array, PacketType packetType)
{ {
qDebug() << "sendFileBlockByteArray thread: " << QThread::currentThreadId(); qDebug() << "sendFileBlockByteArray thread: " << QThread::currentThreadId();
QMutexLocker locker(mutex);
if(client->GETTYPE() == TypeClientAutorization::TYPE_QT_CLIENT || if(client->GETTYPE() == TypeClientAutorization::TYPE_QT_CLIENT ||
client->GETTYPE() == TypeClientAutorization::TYPE_GUI) client->GETTYPE() == TypeClientAutorization::TYPE_GUI)
{ {
@@ -94,7 +100,7 @@ void SendSystem::sendFileBlockByteArray(QByteArray array, PacketType packetType)
fileSize = array.size(); fileSize = array.size();
if(fileSize == 0){ if(fileSize == 0){
emit sigSendToLogger(Tools::getTime() + " WARNING! Zero size "); Logger::instance().log(" WARNING! Zero size ",LogLevel::ERROR);
return; return;
} }
@@ -123,6 +129,7 @@ void SendSystem::sendVersion()
void SendSystem::sendFileBlockWithRename(QString path, QString newName) void SendSystem::sendFileBlockWithRename(QString path, QString newName)
{ {
QMutexLocker locker(mutex);
qDebug() << "sendFileBlockWithRename thread: " << QThread::currentThreadId(); qDebug() << "sendFileBlockWithRename thread: " << QThread::currentThreadId();
QDataStream stream(socket); QDataStream stream(socket);
@@ -133,7 +140,7 @@ void SendSystem::sendFileBlockWithRename(QString path, QString newName)
fileSize = fileInfo.size(); fileSize = fileInfo.size();
if(fileSize == 0){ if(fileSize == 0){
emit sigSendToLogger(Tools::getTime() + " WARNING! Zero size " + path); Logger::instance().log("Client: " + client->getLogin() + " WARNING! Zero size " + fileInfo.fileName(),LogLevel::ERROR);
return; return;
} }
@@ -160,7 +167,7 @@ void SendSystem::sendFileBlockWithRename(QString path, QString newName)
countSend++; countSend++;
} }
emit sigSendToLogger(Tools::getTime() + " send file " + fileInfo.fileName()); Logger::instance().log("Send file " + fileInfo.fileName());
} }
file.close(); file.close();
@@ -194,6 +201,7 @@ void SendSystem::sendDeleteBlock(QString path)
void SendSystem::sendPacketType(PacketType packetType) void SendSystem::sendPacketType(PacketType packetType)
{ {
QMutexLocker locker(mutex);
if (client->GETTYPE() == TypeClientAutorization::TYPE_QT_CLIENT || if (client->GETTYPE() == TypeClientAutorization::TYPE_QT_CLIENT ||
client->GETTYPE() == TypeClientAutorization::TYPE_GUI) client->GETTYPE() == TypeClientAutorization::TYPE_GUI)
{ {
@@ -219,6 +227,7 @@ void SendSystem::sendHello()
void SendSystem::sendNotify(QString notify) void SendSystem::sendNotify(QString notify)
{ {
QMutexLocker locker(mutex);
qDebug() << "SendNotify thread: " << QThread::currentThreadId(); qDebug() << "SendNotify thread: " << QThread::currentThreadId();
auto answer = emit sigSendNotify(notify);//"END"); auto answer = emit sigSendNotify(notify);//"END");
sendXmlAnswer(answer); sendXmlAnswer(answer);
@@ -226,6 +235,7 @@ void SendSystem::sendNotify(QString notify)
void SendSystem::sendXmlAnswer(QByteArray array, PacketType packetType) void SendSystem::sendXmlAnswer(QByteArray array, PacketType packetType)
{ {
QMutexLocker locker(mutex);
qDebug() << "SendSystemThread: " << QThread::currentThreadId(); qDebug() << "SendSystemThread: " << QThread::currentThreadId();
if (client->GETTYPE() == TypeClientAutorization::TYPE_QT_CLIENT || if (client->GETTYPE() == TypeClientAutorization::TYPE_QT_CLIENT ||
client->GETTYPE() == TypeClientAutorization::TYPE_GUI) client->GETTYPE() == TypeClientAutorization::TYPE_GUI)

View File

@@ -4,6 +4,7 @@
#include <QObject> #include <QObject>
#include <QString> #include <QString>
#include <QtNetwork> #include <QtNetwork>
#include <QMutex>
#include <Systems/Parsers/dataparser.h> #include <Systems/Parsers/dataparser.h>
#include <Systems/tools.h> #include <Systems/tools.h>
@@ -12,7 +13,6 @@
class DataParser; class DataParser;
class FileData; class FileData;
class SendSystem : public QObject class SendSystem : public QObject
{ {
@@ -20,7 +20,7 @@ class SendSystem : public QObject
public: public:
explicit SendSystem(QObject* parent = nullptr); explicit SendSystem(QObject* parent = nullptr);
void initialize(DataParser* dataParser,Logger *logger); void initialize(DataParser* dataParser,QMutex *globalMutex);
void setClient(Client* client,QTcpSocket *socket); void setClient(Client* client,QTcpSocket *socket);
void sendMessageBlock(QString message); void sendMessageBlock(QString message);
void sendFileBlock(QString path); void sendFileBlock(QString path);
@@ -49,7 +49,6 @@ public slots:
signals: signals:
void sigLoadHash(); void sigLoadHash();
void sigSendToLogger(QString message);
QByteArray sigSendXMLmessage(QString loginFrom, QString loginTo, QString text, QString userType); QByteArray sigSendXMLmessage(QString loginFrom, QString loginTo, QString text, QString userType);
QByteArray sigSendNotify(QString message); QByteArray sigSendNotify(QString message);
QByteArray sigSendVersion(); QByteArray sigSendVersion();
@@ -58,9 +57,8 @@ private:
Client *client; Client *client;
QTcpSocket* socket; QTcpSocket* socket;
DataParser* dataParser; DataParser* dataParser;
Logger *logger;
QMutex *mutex;
quint64 fileSize; quint64 fileSize;
QMutex *mutex;
int countSend; int countSend;
bool isSendStopped; bool isSendStopped;
TypeClientAutorization type; TypeClientAutorization type;

View File

@@ -7,12 +7,6 @@ void Tools::printTime()
qDebug() << QTime::currentTime().toString("hh:mm:ss.zzz"); qDebug() << QTime::currentTime().toString("hh:mm:ss.zzz");
} }
QString Tools::getTime()
{
return QTime::currentTime().toString("hh:mm:ss.zzz");
}
QString Tools::createLocalPath(QString path) QString Tools::createLocalPath(QString path)
{ {
qint8 pos = path.indexOf(applicationFolderName); qint8 pos = path.indexOf(applicationFolderName);

View File

@@ -28,6 +28,7 @@ static const QString buildDataPath = "/Application/" + projectFolderName + "/RRJ
static const QString tasksAMMfileName = "/docs.xml"; //"/tasksAmm.xml"; static const QString tasksAMMfileName = "/docs.xml"; //"/tasksAmm.xml";
static const QString tasksFIMfileName = "/tasksFIM.xml"; static const QString tasksFIMfileName = "/tasksFIM.xml";
static const QString clientHash = staticDataFolderName + "/clientHash.xml"; static const QString clientHash = staticDataFolderName + "/clientHash.xml";
static const QString logFolderPath = "log";
static const QString baseNameVersion = "base";//может вынести комманды куда нибудь? static const QString baseNameVersion = "base";//может вынести комманды куда нибудь?

View File

@@ -7,11 +7,11 @@ UpdateController::UpdateController(QObject *parent) :
{ {
buildPath = QDir::currentPath() + "/" + applicationFolderName; buildPath = QDir::currentPath() + "/" + applicationFolderName;
sharedDataPath = QDir::currentPath() + "/" + sharedDataFolderName; sharedDataPath = QDir::currentPath() + "/" + sharedDataFolderName;
emit sigLogMessage(buildPath); Logger::instance().log(buildPath);
qDebug() << hashFileName; qDebug() << hashFileName;
} }
void UpdateController::initialize(CommonClientHandler *commonClientHandler,DataParser *dataParser,AssetsManager *assetManager,Logger *logger) void UpdateController::initialize(CommonClientHandler *commonClientHandler,DataParser *dataParser,AssetsManager *assetManager)
{ {
this->commonClientHandler = commonClientHandler; this->commonClientHandler = commonClientHandler;
this->dataParser = dataParser; this->dataParser = dataParser;
@@ -31,8 +31,6 @@ void UpdateController::initialize(CommonClientHandler *commonClientHandler,DataP
return; return;
} }
connect(this,&UpdateController::sigLogMessage,logger,&Logger::addTextToLogger,Qt::AutoConnection);
calculateFullHash(); calculateFullHash();
currentStreamingPath = assetManager->setVersion("base"); //TODO: сохрнаять предыдущую версию и загружать ее при включении currentStreamingPath = assetManager->setVersion("base"); //TODO: сохрнаять предыдущую версию и загружать ее при включении
setUpCurrentServerHash(); setUpCurrentServerHash();
@@ -82,20 +80,19 @@ void UpdateController::compareFiles(ClientHandler* handler, QByteArray array)
void UpdateController::showHash() void UpdateController::showHash()
{ {
for(FileData& str : serverDataList){ for(FileData& str : serverDataList){
emit sigLogMessage(str.hash); Logger::instance().log(str.hash);
} }
} }
void UpdateController::calculateFullHash() void UpdateController::calculateFullHash()
{ {
qDebug() << "Calculate hash..."; Logger::instance().log("Calculate hash...");
commonClientHandler->slot_sendPacketToAllClients(PacketType::BUSY); commonClientHandler->slot_sendPacketToAllClients(PacketType::BUSY);
auto *list = calculateHash(buildPath); auto *list = calculateHash(buildPath);
saveHash(buildHashName,list); saveHash(buildHashName,list);
calculateSharedHash(); calculateSharedHash();
emit sigLogMessage("Calculate hash complete"); Logger::instance().log("Calculate hash complete");
commonClientHandler->slot_sendPacketToAllClients(PacketType::FREE); commonClientHandler->slot_sendPacketToAllClients(PacketType::FREE);
qDebug() << "Calculate complete...";
} }
void UpdateController::calculateFullHashWithSetup() void UpdateController::calculateFullHashWithSetup()
@@ -175,7 +172,7 @@ QList<FileData>* UpdateController::loadHash(QString filename)
xmlReader.readNextStartElement(); xmlReader.readNextStartElement();
} }
emit sigLogMessage("Hash load from file "); Logger::instance().log("Hash load from file ");
return files; return files;
@@ -194,8 +191,8 @@ void UpdateController::calculateSize()
iterator.next(); iterator.next();
} }
emit sigLogMessage("Full size: "); Logger::instance().log("Full size: ");
emit sigLogMessage(QString::number(total)); Logger::instance().log(QString::number(total));
} }
QString UpdateController::getCommands() QString UpdateController::getCommands()
@@ -272,14 +269,13 @@ bool UpdateController::checkNeedUpdate(ClientHandler *handler)
if(forSend->length() > 0) //формирование сообщения об обновлении if(forSend->length() > 0) //формирование сообщения об обновлении
{ {
QString log; QString log;
log.append(Tools::getTime());
log.append(" Client: " + handler->getClient()->getLogin()); log.append(" Client: " + handler->getClient()->getLogin());
log.append(" Need updates: "); log.append(" Need updates: ");
log.append(QString::number(forSend->length())); log.append(QString::number(forSend->length()));
log.append(" objects"); log.append(" objects");
fileSendList = *forSend; fileSendList = *forSend;
emit sigLogMessage(log); Logger::instance().log(log);
//printFileList(*forSend); //printFileList(*forSend);
handler->sendMessageBlock(log); handler->sendMessageBlock(log);
@@ -288,16 +284,14 @@ bool UpdateController::checkNeedUpdate(ClientHandler *handler)
else else
{ {
QString log; QString log;
log.append(Tools::getTime());
log.append(" Client: " + handler->getClient()->getLogin()); log.append(" Client: " + handler->getClient()->getLogin());
log.append(" no update required"); log.append(" no update required");
emit sigLogMessage(log); Logger::instance().log(log);
handler->sendMessageBlock(log); handler->sendMessageBlock(log);
} }
if(forDelete->length() > 0){ if(forDelete->length() > 0){
QString log; QString log;
log.append(Tools::getTime());
log.append(" Client: " + handler->getClient()->getLogin()); log.append(" Client: " + handler->getClient()->getLogin());
log.append(" Need delete: "); log.append(" Need delete: ");
@@ -305,7 +299,7 @@ bool UpdateController::checkNeedUpdate(ClientHandler *handler)
log.append(" objects"); log.append(" objects");
fileDeleteList = *forDelete; fileDeleteList = *forDelete;
emit sigLogMessage(log); Logger::instance().log(log);
//printFileList(*forDelete); //printFileList(*forDelete);
handler->sendMessageBlock(log); handler->sendMessageBlock(log);
needUpdate = true; needUpdate = true;
@@ -313,11 +307,10 @@ bool UpdateController::checkNeedUpdate(ClientHandler *handler)
else else
{ {
QString log; QString log;
log.append(Tools::getTime());
log.append(" Client: " + handler->getClient()->getLogin()); log.append(" Client: " + handler->getClient()->getLogin());
log.append(" no delete required"); log.append(" no delete required");
emit sigLogMessage(log); Logger::instance().log(log);
handler->sendMessageBlock(log); handler->sendMessageBlock(log);
} }
@@ -542,7 +535,7 @@ void UpdateController::printFileList(QList<FileData> fileData)
while (iterator.hasNext()) while (iterator.hasNext())
{ {
auto next = iterator.next(); auto next = iterator.next();
emit sigLogMessage(next.path); Logger::instance().log(next.path);
} }
} }

View File

@@ -32,7 +32,7 @@ class UpdateController : public QObject
public: public:
explicit UpdateController(QObject *parent = 0); explicit UpdateController(QObject *parent = 0);
void initialize(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager,Logger *logger); void initialize(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager);
void compareFiles(ClientHandler* handler, QByteArray array); void compareFiles(ClientHandler* handler, QByteArray array);
void showHash(); void showHash();
void calculateFullHash(); void calculateFullHash();
@@ -68,7 +68,6 @@ public slots:
void setUpCurrentServerHash(); void setUpCurrentServerHash();
signals: signals:
void sigLogMessage(QString message);
void sigErrorRequired(int code); void sigErrorRequired(int code);
private: private:

View File

@@ -10,7 +10,7 @@ ClientHandler::ClientHandler( QObject *parent):
} }
void ClientHandler::initialize(int descriptor,ServerLMSWidget *serverWidget, void ClientHandler::initialize(int descriptor,ServerLMSWidget *serverWidget,
UpdateController *updateController,DataParser *dataParser,Logger *logger) UpdateController *updateController,DataParser *dataParser)
{ {
this->socket = new QTcpSocket; this->socket = new QTcpSocket;
this->thread = new QThread; this->thread = new QThread;
@@ -40,7 +40,7 @@ void ClientHandler::initialize(int descriptor,ServerLMSWidget *serverWidget,
connect(this,&ClientHandler::sigSendXmlAnswer,sendSystem,&SendSystem::sendXmlAnswer,Qt::AutoConnection); connect(this,&ClientHandler::sigSendXmlAnswer,sendSystem,&SendSystem::sendXmlAnswer,Qt::AutoConnection);
connect(this,&ClientHandler::sigInitSender,sendSystem,&SendSystem::initialize,Qt::AutoConnection); connect(this,&ClientHandler::sigInitSender,sendSystem,&SendSystem::initialize,Qt::AutoConnection);
connect(this,&ClientHandler::sigFileBlock,sendSystem,&SendSystem::sendFileBlock,Qt::AutoConnection); connect(this,&ClientHandler::sigFileBlock,sendSystem,&SendSystem::sendFileBlock,Qt::QueuedConnection);
connect(this,&ClientHandler::sigFileBlockByteArray,sendSystem,&SendSystem::sendFileBlockByteArray,Qt::AutoConnection); connect(this,&ClientHandler::sigFileBlockByteArray,sendSystem,&SendSystem::sendFileBlockByteArray,Qt::AutoConnection);
connect(this,&ClientHandler::sigFolderBlock,sendSystem,&SendSystem::sendFolderBlock,Qt::AutoConnection); connect(this,&ClientHandler::sigFolderBlock,sendSystem,&SendSystem::sendFolderBlock,Qt::AutoConnection);
connect(this,&ClientHandler::sigGetIsSendStopped,sendSystem,&SendSystem::getIsSendStopped,Qt::AutoConnection); connect(this,&ClientHandler::sigGetIsSendStopped,sendSystem,&SendSystem::getIsSendStopped,Qt::AutoConnection);
@@ -61,9 +61,7 @@ void ClientHandler::initialize(int descriptor,ServerLMSWidget *serverWidget,
recognizeSystem->initialize(updateController,dataParser,serverWidget,sendSystem, this); recognizeSystem->initialize(updateController,dataParser,serverWidget,sendSystem, this);
sendSystem->setClient(client,socket); sendSystem->setClient(client,socket);
emit sigInitSender(dataParser,serverWidget->getMutex());
connect(recognizeSystem,&RecognizeSystem::sigSendToLogger,logger,&Logger::addTextToLogger);
emit sigInitSender(dataParser,logger);
} }
void ClientHandler::setClient(Client *value) void ClientHandler::setClient(Client *value)

View File

@@ -24,7 +24,7 @@ class ClientHandler : public QObject
public: public:
ClientHandler(QObject* parent = nullptr); ClientHandler(QObject* parent = nullptr);
void initSender(DataParser *dataParser,Logger *logger); void initSender(DataParser *dataParser);
void sendXmlAnswer(QByteArray array, PacketType packetType = PacketType::TYPE_XMLANSWER); void sendXmlAnswer(QByteArray array, PacketType packetType = PacketType::TYPE_XMLANSWER);
void sendFolderBlock(QString path); void sendFolderBlock(QString path);
void sendFileBlock(QString path); void sendFileBlock(QString path);
@@ -51,7 +51,7 @@ public:
signals: signals:
void sigSendXmlAnswer(QByteArray array, PacketType packetType); void sigSendXmlAnswer(QByteArray array, PacketType packetType);
void sigInitSender (DataParser *dataParse,Logger *logger); void sigInitSender (DataParser *dataParse, QMutex *mutex);
void sigFolderBlock(QString path); void sigFolderBlock(QString path);
void sigFileBlock(QString path); void sigFileBlock(QString path);
void sigFileBlockByteArray(QByteArray array, PacketType packetType); void sigFileBlockByteArray(QByteArray array, PacketType packetType);
@@ -76,7 +76,7 @@ public :
QTcpSocket *socket; QTcpSocket *socket;
void initialize(int descriptor, ServerLMSWidget *serverWidget, void initialize(int descriptor, ServerLMSWidget *serverWidget,
UpdateController *updateController, DataParser *dataParser,Logger *logger); UpdateController *updateController, DataParser *dataParser);
void setClient(Client *value); void setClient(Client *value);
private: private:
UpdateController *updateController; UpdateController *updateController;

View File

@@ -1,18 +1,16 @@
#include "multithreadserver.h" #include "multithreadserver.h"
MultiThreadServer::MultiThreadServer(ServerLMSWidget *widget,UpdateController *updateController,ProcessingSystem *processingSystem, MultiThreadServer::MultiThreadServer(ServerLMSWidget *widget,UpdateController *updateController,ProcessingSystem *processingSystem,
DataParser *dataParser,Logger *logger,qint16 hostPort, QObject *parent ): DataParser *dataParser,qint16 hostPort, QObject *parent ):
QTcpServer(parent), QTcpServer(parent),
serverLmsWidget(widget), serverLmsWidget(widget),
hostPort(hostPort), hostPort(hostPort),
processingSystem(processingSystem), processingSystem(processingSystem),
updateController(updateController), updateController(updateController),
dataParser(dataParser), dataParser(dataParser),
logger(logger),
stateServer(stoped), stateServer(stoped),
stateBlockAutorization(unblocked) stateBlockAutorization(unblocked)
{ {
connect(this,&MultiThreadServer::sigSendToLogger,logger,&Logger::addTextToLogger);
clientsMap = new QMap<int,ClientHandler*>; clientsMap = new QMap<int,ClientHandler*>;
} }
@@ -22,13 +20,12 @@ void MultiThreadServer::incomingConnection(qintptr socketDesriptor)
connect(this,&MultiThreadServer::sigInitClient,newClient,&ClientHandler::initialize,Qt::AutoConnection); connect(this,&MultiThreadServer::sigInitClient,newClient,&ClientHandler::initialize,Qt::AutoConnection);
connect(newClient,&ClientHandler::sigClientDisconnected,this,&MultiThreadServer::slotDisconnectClient,Qt::AutoConnection); connect(newClient,&ClientHandler::sigClientDisconnected,this,&MultiThreadServer::slotDisconnectClient,Qt::AutoConnection);
emit sigInitClient(socketDesriptor,serverLmsWidget,updateController,dataParser);
emit sigInitClient(socketDesriptor,serverLmsWidget,updateController,dataParser,logger);
disconnect(this,&MultiThreadServer::sigInitClient,newClient,&ClientHandler::initialize); disconnect(this,&MultiThreadServer::sigInitClient,newClient,&ClientHandler::initialize);
addClient(socketDesriptor,newClient); addClient(socketDesriptor,newClient);
emit sigSendToLogger("To Client: " + QString(SERVER_HELLO)); Logger::instance().log("To Client: " + QString(SERVER_HELLO));
} }
bool MultiThreadServer::startServer() bool MultiThreadServer::startServer()
@@ -39,13 +36,13 @@ bool MultiThreadServer::startServer()
if(!listen(QHostAddress::Any, hostPort)) if(!listen(QHostAddress::Any, hostPort))
{ {
logger->addTextToLogger("SERVER: start ERROR"); Logger::instance().log("SERVER: start ERROR");
stateServer = stoped; stateServer = stoped;
return false; return false;
} }
else else
{ {
logger->addTextToLogger("SERVER: start OK"); Logger::instance().log("SERVER: start OK");
stateServer = started; stateServer = started;
return true; return true;
} }
@@ -131,7 +128,7 @@ void MultiThreadServer::slotDisconnectClient(QString peerAddress, QString peerPo
} }
emit signalStopSendFile(); emit signalStopSendFile();
emit sigSendToLogger("SERVER: Client " + login + " disconnected"); Logger::instance().log("SERVER: Client " + login + " disconnected");
serverLmsWidget->slotUpdateListClients(); serverLmsWidget->slotUpdateListClients();
serverLmsWidget->getProcessingSystem()->processingClientDeAutorization(login); serverLmsWidget->getProcessingSystem()->processingClientDeAutorization(login);

View File

@@ -12,7 +12,7 @@ class MultiThreadServer : public QTcpServer
public: public:
MultiThreadServer(ServerLMSWidget *widget,UpdateController *updateController,ProcessingSystem *processingSystem, MultiThreadServer(ServerLMSWidget *widget,UpdateController *updateController,ProcessingSystem *processingSystem,
DataParser *dataParser,Logger *logger, qint16 hostPort, QObject *parent = nullptr); DataParser *dataParser, qint16 hostPort, QObject *parent = nullptr);
QMap<int, ClientHandler *> *getClientsMap() const; QMap<int, ClientHandler *> *getClientsMap() const;
@@ -35,9 +35,8 @@ public:
} }
signals: signals:
void sigInitClient(int descriptor, ServerLMSWidget *serverWidget, void sigInitClient(int descriptor, ServerLMSWidget *serverWidget,
UpdateController *updateController, DataParser *dataParser,Logger *logger); UpdateController *updateController, DataParser *dataParser);
void signalStopSendFile(); void signalStopSendFile();
void sigSendToLogger(QString text);
public slots: public slots:
void slotDisconnectClient(QString peerAddress, QString peerPort); void slotDisconnectClient(QString peerAddress, QString peerPort);
@@ -51,7 +50,6 @@ private:
ProcessingSystem *processingSystem; ProcessingSystem *processingSystem;
UpdateController *updateController; UpdateController *updateController;
DataParser *dataParser; DataParser *dataParser;
Logger *logger;
EStateServer stateServer; EStateServer stateServer;
EStateBlockAutorization stateBlockAutorization; EStateBlockAutorization stateBlockAutorization;

View File

@@ -17,13 +17,14 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
dataParser(nullptr), dataParser(nullptr),
processingSystem(nullptr), processingSystem(nullptr),
updateController(nullptr), updateController(nullptr),
logger(nullptr),
providerDBLMS(nullptr) providerDBLMS(nullptr)
{ {
ui->setupUi(this); ui->setupUi(this);
mutex = new QMutex;
qRegisterMetaType<PacketType>("PacketType"); qRegisterMetaType<PacketType>("PacketType");
qRegisterMetaType<UserType>("UserType"); qRegisterMetaType<UserType>("UserType");
qRegisterMetaType<LogLevel>("LogLevel");
errorCode = 0; errorCode = 0;
ui->btnStopServer->setEnabled(false); ui->btnStopServer->setEnabled(false);
@@ -40,13 +41,9 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
providerDBLMS->ConnectionToDB(); providerDBLMS->ConnectionToDB();
providerDBLMS->deAuthorizationAll(); providerDBLMS->deAuthorizationAll();
logger = new Logger();
chatSystem = new ChatSystem(); chatSystem = new ChatSystem();
connect(providerDBLMS, &ProviderDBLMS::signal_BlockAutorization, this, &ServerLMSWidget::slot_BlockAutorization); connect(providerDBLMS, &ProviderDBLMS::signal_BlockAutorization, this, &ServerLMSWidget::slot_BlockAutorization);
connect(logger,&Logger::sigSendTextToLogger,this,&ServerLMSWidget::slotAddToLog,Qt::AutoConnection);
logger->moveToThread(loggerThread);
assetsManager = new AssetsManager; assetsManager = new AssetsManager;
assetsManager->moveToThread(updateThread); assetsManager->moveToThread(updateThread);
@@ -60,24 +57,25 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) :
dataParser = new DataParser(assetsManager,processingSystem); dataParser = new DataParser(assetsManager,processingSystem);
commonClientHandler = new CommonClientHandler; commonClientHandler = new CommonClientHandler;
server = new MultiThreadServer(this,updateController,processingSystem,dataParser,logger,6000); server = new MultiThreadServer(this,updateController,processingSystem,dataParser,6000);
loggerThread->start(); loggerThread->start();
updateThread->start(); updateThread->start();
commonClientHandler->initialize(server->getClientsMap(),processingSystem,dataParser,logger); commonClientHandler->initialize(server->getClientsMap(),processingSystem,dataParser);
processingSystem->initialize(server,dataParser,commonClientHandler,logger,updateController,chatSystem); processingSystem->initialize(server,dataParser,commonClientHandler,updateController,chatSystem);
chatSystem->initialize(commonClientHandler,dataParser,server->getClientsMap()); chatSystem->initialize(commonClientHandler,dataParser,server->getClientsMap());
logger->setTypeLog("widget"); Logger::instance().moveToThread(loggerThread);
connect(dataParser,&DataParser::sigLogMessage,logger,&Logger::addTextToLogger); Logger::instance().setLoggingType(LoggingType::CONSOLE);
Logger::instance().setLogToFile(true);
connect(this,&ServerLMSWidget::sigUpdateController,updateController,&UpdateController::initialize,Qt::DirectConnection); connect(this,&ServerLMSWidget::sigUpdateController,updateController,&UpdateController::initialize,Qt::DirectConnection);
connect(this,&ServerLMSWidget::sigLog,logger,&Logger::addTextToLogger,Qt::AutoConnection);
connect(this,&ServerLMSWidget::sigCalculateFullHash,updateController,&UpdateController::calculateFullHash,Qt::AutoConnection); connect(this,&ServerLMSWidget::sigCalculateFullHash,updateController,&UpdateController::calculateFullHash,Qt::AutoConnection);
connect(updateController,&UpdateController::sigErrorRequired,this,&ServerLMSWidget::setError); connect(updateController,&UpdateController::sigErrorRequired,this,&ServerLMSWidget::setError);
connect(&Logger::instance(),&Logger::sigLogToWidget,this, &ServerLMSWidget::addToLog,Qt::QueuedConnection);
emit sigUpdateController(commonClientHandler,dataParser,assetsManager,logger); emit sigUpdateController(commonClientHandler,dataParser,assetsManager);
on_btnStartServer_clicked(); on_btnStartServer_clicked();
first = true; first = true;
@@ -98,12 +96,6 @@ ServerLMSWidget::~ServerLMSWidget()
} }
Logger *ServerLMSWidget::getLogger() const
{
return logger;
}
void ServerLMSWidget::slotUpdateListClients() void ServerLMSWidget::slotUpdateListClients()
{ {
//Очищаем список //Очищаем список
@@ -119,7 +111,12 @@ void ServerLMSWidget::slotUpdateListClients()
} }
int countClients = (*server->getClientsMap()).count(); int countClients = (*server->getClientsMap()).count();
emit sigLog("SERVER: countClients = " + QString::number(countClients)); Logger::instance().log("SERVER: countClients = " + QString::number(countClients));
}
void ServerLMSWidget::addToLog(QString message)
{
ui->loggerTextField->appendPlainText(message);
} }
void ServerLMSWidget::slot_BlockAutorization(bool block) void ServerLMSWidget::slot_BlockAutorization(bool block)
@@ -136,12 +133,6 @@ void ServerLMSWidget::slot_LanguageChanged(QString language)
qApp->installTranslator(&qtLanguageTranslator); qApp->installTranslator(&qtLanguageTranslator);
} }
void ServerLMSWidget::slotAddToLog(QString msg)
{
ui->listWidgetLogger->addItem(msg);
ui->listWidgetLogger->scrollToBottom();
}
void ServerLMSWidget::on_btnStartServer_clicked() void ServerLMSWidget::on_btnStartServer_clicked()
{ {
if(server->startServer()) if(server->startServer())
@@ -165,6 +156,11 @@ void ServerLMSWidget::on_btnStopServer_clicked()
} }
} }
QMutex *ServerLMSWidget::getMutex() const
{
return mutex;
}
void ServerLMSWidget::changeEvent(QEvent *event) void ServerLMSWidget::changeEvent(QEvent *event)
{ {
// В случае получения события изменения языка приложения // В случае получения события изменения языка приложения

View File

@@ -58,9 +58,8 @@ protected:
signals: signals:
void sigRecognize(); void sigRecognize();
void sigLog(QString log);
void sigCalculateFullHash(); void sigCalculateFullHash();
void sigUpdateController(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager,Logger *logger); void sigUpdateController(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager);
QTcpSocket* sigGetSocket(); QTcpSocket* sigGetSocket();
@@ -68,8 +67,7 @@ public slots:
void slot_LanguageChanged(QString language); void slot_LanguageChanged(QString language);
void slotUpdateListClients(); void slotUpdateListClients();
void slot_BlockAutorization(bool block); void slot_BlockAutorization(bool block);
void slotAddToLog(QString msg); void addToLog(QString message);
public: public:
void removeClient(int socketId); void removeClient(int socketId);
@@ -83,7 +81,7 @@ public:
return processingSystem; return processingSystem;
} }
Logger *getLogger() const; QMutex *getMutex() const;
private slots: private slots:
void on_btnStartServer_clicked(); void on_btnStartServer_clicked();
@@ -96,12 +94,12 @@ private:
MultiThreadServer *server; MultiThreadServer *server;
QThread *updateThread; QThread *updateThread;
QThread *loggerThread; QThread *loggerThread;
QMutex *mutex;
DataParser *dataParser; DataParser *dataParser;
ProcessingSystem *processingSystem; ProcessingSystem *processingSystem;
UpdateController *updateController; UpdateController *updateController;
AssetsManager *assetsManager; AssetsManager *assetsManager;
Logger *logger;
CommonClientHandler *commonClientHandler; CommonClientHandler *commonClientHandler;
ChatSystem *chatSystem; ChatSystem *chatSystem;

View File

@@ -43,18 +43,9 @@
<item row="0" column="0"> <item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QListWidget" name="listWidgetLogger"> <widget class="QPlainTextEdit" name="loggerTextField">
<property name="sizePolicy"> <property name="readOnly">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred"> <bool>true</bool>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>200</height>
</size>
</property> </property>
</widget> </widget>
</item> </item>