From b695522a681360912c5231d7d7cff6ab933d8c10 Mon Sep 17 00:00:00 2001 From: semenov Date: Mon, 22 Sep 2025 11:53:54 +0300 Subject: [PATCH] ref: delete duplicate meth --- DOCS/Образец отправки сообщения с маркером.md | 36 ---------- DOCS/Отправка.md | 67 +++++++++++++++++++ ServerLMS/Systems/sendsystem.cpp | 14 ++-- ServerLMS/Systems/updatecontroller.cpp | 2 +- ServerLMS/clienthandler.cpp | 5 +- ServerLMS/clienthandler.h | 3 +- 6 files changed, 75 insertions(+), 52 deletions(-) delete mode 100644 DOCS/Образец отправки сообщения с маркером.md create mode 100644 DOCS/Отправка.md diff --git a/DOCS/Образец отправки сообщения с маркером.md b/DOCS/Образец отправки сообщения с маркером.md deleted file mode 100644 index 16b4ae2..0000000 --- a/DOCS/Образец отправки сообщения с маркером.md +++ /dev/null @@ -1,36 +0,0 @@ -``` -void SendSystem::sendMessageBlock(QString message) -{ - QDataStream stream(socket); - stream.setVersion(QDataStream::Qt_DefaultCompiledVersion); - QByteArray result = sendMessage(message); - stream << PacketType::TYPE_XMLANSWER; - stream << sendMessage(message); - socket->waitForBytesWritten(); - socket->flush(); -} - -или файлом - -void ServerLMSWidget::sendQDataStream(QTcpSocket *socket,QByteArray data) -{ - QDataStream stream(socket); - stream.setVersion(QDataStream::Qt_DefaultCompiledVersion); - stream << PacketType::TYPE_XMLANSWER; - stream << data; - socket->waitForBytesWritten(); - socket->flush(); -} - -``` - -Типы сообщений QT->Unity: -TYPE_XMLANSWER -Остальные QT->QT - -Сообщение порядок приема данных QDataStream: -1. размер сообщения(отсылается неявно) -2. само сообщение в бинарном формате(в нашем случае XML) - -UNITY: при переходе на новую систему общения пакетами нужно: -отправлять пакет о типе XML ответа при каждой отправке diff --git a/DOCS/Отправка.md b/DOCS/Отправка.md new file mode 100644 index 0000000..2889608 --- /dev/null +++ b/DOCS/Отправка.md @@ -0,0 +1,67 @@ +Отправка сообщений QT сервер: +Отправка маленьких XML пакетов без информации о размере. TYPE_XMLANSWER + +``` +void SendSystem::sendXmlAnswer(QByteArray array, PacketType packetType) +{ + qDebug() << "SendSystemThread: " << QThread::currentThreadId(); + Logger::instance().log("C: " + client->getLogin() + " send pack " + enumToString(packetType) + + " " + QString::fromUtf8(array),LogLevel::DEBUG); + if (client->getClientType() == TypeClientAutorization::TYPE_QT_CLIENT || + client->getClientType() == TypeClientAutorization::TYPE_GUI) + + { + // для QT + QDataStream stream(socket); + stream.setVersion(QDataStream::Qt_DefaultCompiledVersion); + stream << packetType; + stream << array; + socket->waitForBytesWritten(); + } + else + { // для Unity + sendPacketType(packetType); + QByteArray message; + int size = array.length(); + message.append(reinterpret_cast(&size), sizeof(int)); + socket->write(message); + socket->write(array); + } +} + +``` + +Отправка пакета без вложения: +`void SendSystem::sendPacketType(PacketType packetType) +{ + if (client->getClientType() == TypeClientAutorization::TYPE_QT_CLIENT || + client->getClientType() == TypeClientAutorization::TYPE_GUI) + { + //Для QT + QDataStream stream(socket); + stream.setVersion(QDataStream::Qt_DefaultCompiledVersion); + stream << packetType; + socket->waitForReadyRead(100); + } + else + { + //для Unity + QByteArray message; + int type = (int)packetType; + message.append(reinterpret_cast(&type), sizeof(int)); + socket->write(message); + } +}` + +Не подходит для последнего сообщения (например при отключении клиента) +Типы сообщений QT->Unity: +TYPE_XMLANSWER +Остальные QT->QT + +Сообщение порядок приема данных QDataStream: +1. размер сообщения(отсылается неявно) +2. само сообщение в бинарном формате(в нашем случае XML) + +UNITY: при переходе на новую систему общения пакетами нужно: +отправлять пакет о типе XML ответа при каждой отправке + diff --git a/ServerLMS/Systems/sendsystem.cpp b/ServerLMS/Systems/sendsystem.cpp index bc4cd1f..5449752 100644 --- a/ServerLMS/Systems/sendsystem.cpp +++ b/ServerLMS/Systems/sendsystem.cpp @@ -24,10 +24,11 @@ void SendSystem::setClient(Client *client,QTcpSocket *socket) isSendStopped = false; } -void SendSystem::sendMessageBlock(QString message) +void SendSystem::sendNotify(QString notify) { - auto messageBlock = emit sigSendNotify(message); - sendXmlAnswer(messageBlock); + qDebug() << "SendNotify thread: " << QThread::currentThreadId(); + auto answer = emit sigSendNotify(notify); + sendXmlAnswer(answer); } void SendSystem::sendFileBlock(QString path) @@ -234,13 +235,6 @@ void SendSystem::sendHello() socket->write(SERVER_HELLO); } -void SendSystem::sendNotify(QString notify) -{ - qDebug() << "SendNotify thread: " << QThread::currentThreadId(); - auto answer = emit sigSendNotify(notify);//"END"); - sendXmlAnswer(answer); -} - void SendSystem::sendXmlAnswer(QByteArray array, PacketType packetType) { qDebug() << "SendSystemThread: " << QThread::currentThreadId(); diff --git a/ServerLMS/Systems/updatecontroller.cpp b/ServerLMS/Systems/updatecontroller.cpp index 8d005b6..7506836 100644 --- a/ServerLMS/Systems/updatecontroller.cpp +++ b/ServerLMS/Systems/updatecontroller.cpp @@ -360,7 +360,7 @@ QList* UpdateController::calculateHash(QString path) QFile file(fileInfo.absoluteFilePath()); quint64 fileSize = file.size(); //буффер для хэширования крупных файлов - const quint64 bufferSize = 10240; + const quint64 bufferSize = 1024; if(fileInfo.isHidden()) continue; diff --git a/ServerLMS/clienthandler.cpp b/ServerLMS/clienthandler.cpp index 42382fa..ba292f2 100644 --- a/ServerLMS/clienthandler.cpp +++ b/ServerLMS/clienthandler.cpp @@ -45,7 +45,6 @@ void ClientHandler::initialize(int descriptor,ServerLMSWidget *serverWidget, connect(this,&ClientHandler::sigFolderBlock,sendSystem,&SendSystem::sendFolderBlock,Qt::AutoConnection); connect(this,&ClientHandler::sigGetIsSendStopped,sendSystem,&SendSystem::getIsSendStopped,Qt::AutoConnection); connect(this,&ClientHandler::sigSendDeleteBlock,sendSystem,&SendSystem::sendDeleteBlock,Qt::AutoConnection); - connect(this,&ClientHandler::sigSendMessageBlock,sendSystem,&SendSystem::sendMessageBlock,Qt::AutoConnection); connect(this,&ClientHandler::sigNeedUpdate,sendSystem,&SendSystem::sendNeedUpdate,Qt::AutoConnection); connect(this,&ClientHandler::sigSendNotify,sendSystem,&SendSystem::sendNotify,Qt::AutoConnection); connect(this,&ClientHandler::sigSendFileBlockWithRename,sendSystem,&SendSystem::sendFileBlockWithRename,Qt::AutoConnection); @@ -151,9 +150,9 @@ void ClientHandler::sendDeleteBlock(QString path) emit sigSendDeleteBlock(path); } -void ClientHandler::sendMessageBlock(QString text) +void ClientHandler::sendNotify(QString text) { - emit sigSendMessageBlock(text); + emit sigSendNotify(text); } void ClientHandler::sendNeedUpdate(bool flag, quint64 size, quint64 fileCount,quint64 deleteCount) diff --git a/ServerLMS/clienthandler.h b/ServerLMS/clienthandler.h index 69dbae4..2bbdcd4 100644 --- a/ServerLMS/clienthandler.h +++ b/ServerLMS/clienthandler.h @@ -32,7 +32,7 @@ public: bool getIsSendStopped(); void sendDeleteBlock(QString path); void sendFinish(); - void sendMessageBlock(QString text); + void sendNotify(QString text); void sendNeedUpdate(bool flag, quint64 size,quint64 fileCount,quint64 deleteCount); void sendDisable(); void recognize(); @@ -57,7 +57,6 @@ signals: void sigFileBlockByteArray(QByteArray array, PacketType packetType); bool sigGetIsSendStopped(); void sigSendDeleteBlock(QString path); - void sigSendMessageBlock(QString text); void sigNeedUpdate(bool flag,quint64 size,quint64 fileCount,quint64 deleteCount); void sigClientDisconnected(QString address,QString port); void sigSendHash();