mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
fix: big xml code
This commit is contained in:
@@ -54,28 +54,38 @@ QString enumToString(T value);
|
|||||||
template<>
|
template<>
|
||||||
inline QString enumToString(PacketType value) {
|
inline QString enumToString(PacketType value) {
|
||||||
switch(value) {
|
switch(value) {
|
||||||
case PacketType::TYPE_NONE: return "TYPE_NONE";
|
case PacketType::TYPE_NONE: return "TYPE_NONE";
|
||||||
case PacketType::TYPE_UNITY: return "TYPE_UNITY";
|
case PacketType::TYPE_UNITY: return "TYPE_UNITY";
|
||||||
case PacketType::TYPE_FILE: return "TYPE_FILE";
|
case PacketType::TYPE_FILE: return "TYPE_FILE";
|
||||||
case PacketType::TYPE_COMMAND: return "TYPE_COMMAND";
|
case PacketType::TYPE_COMMAND: return "TYPE_COMMAND";
|
||||||
case PacketType::TYPE_FOLDER: return "TYPE_FOLDER";
|
case PacketType::TYPE_FOLDER: return "TYPE_FOLDER";
|
||||||
case PacketType::TYPE_DELETE: return "TYPE_DELETE";
|
case PacketType::TYPE_DELETE: return "TYPE_DELETE";
|
||||||
case PacketType::TYPE_FINISH: return "TYPE_FINISH";
|
case PacketType::TYPE_FINISH: return "TYPE_FINISH";
|
||||||
case PacketType::TYPE_NEEDUPDATE: return "TYPE_NEEDUPDATE";
|
case PacketType::TYPE_NEEDUPDATE: return "TYPE_NEEDUPDATE";
|
||||||
case PacketType::TYPE_XMLANSWER: return "TYPE_XMLANSWER";
|
case PacketType::TYPE_XMLANSWER: return "TYPE_XMLANSWER";
|
||||||
case PacketType::TYPE_QT: return "TYPE_QT";
|
case PacketType::TYPE_QT: return "TYPE_QT";
|
||||||
case PacketType::TYPE_DISABLE: return "TYPE_DISABLE";
|
case PacketType::TYPE_DISABLE: return "TYPE_DISABLE";
|
||||||
case PacketType::TYPE_UPDATE: return "TYPE_UPDATE";
|
case PacketType::TYPE_UPDATE: return "TYPE_UPDATE";
|
||||||
case PacketType::TYPE_CHECK_VERSION: return "TYPE_CHECK_VERSION";
|
case PacketType::TYPE_CHECK_VERSION: return "TYPE_CHECK_VERSION";
|
||||||
case PacketType::TYPE_FILESIZE: return "TYPE_FILESIZE";
|
case PacketType::TYPE_FILESIZE: return "TYPE_FILESIZE";
|
||||||
case PacketType::TYPE_BIGXML: return "TYPE_BIGXML";
|
case PacketType::TYPE_BIGXML: return "TYPE_BIGXML";
|
||||||
case PacketType::CHANGE_DATA_VERSION: return "CHANGE_DATA_VERSION";
|
case PacketType::CHANGE_DATA_VERSION: return "CHANGE_DATA_VERSION";
|
||||||
case PacketType::COPY_VERSION: return "COPY_VERSION";
|
case PacketType::COPY_VERSION: return "COPY_VERSION";
|
||||||
case PacketType::DELETE_DATA_VERSION: return "DELETE_DATA_VERSION";
|
case PacketType::DELETE_DATA_VERSION: return "DELETE_DATA_VERSION";
|
||||||
case PacketType::BUSY: return "BUSY";
|
case PacketType::BUSY: return "BUSY";
|
||||||
case PacketType::FREE: return "FREE";
|
case PacketType::FREE: return "FREE";
|
||||||
case PacketType::HASH_CALCULATE_START: return "HASH_CALCULATE_START";
|
case PacketType::HASH_CALCULATE_START: return "HASH_CALCULATE_START";
|
||||||
case PacketType::HASH_READY: return "HASH_READY";
|
case PacketType::HASH_READY: return "HASH_READY";
|
||||||
|
case PacketType::TYPE_XMLANSWER_MESSAGE_FOR_GUI: return "TYPE_XMLANSWER_MESSAGE_FOR_GUI";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_INSTRUCTORS: return "TYPE_XMLANSWER_QUERY_DB__LIST_INSTRUCTORS";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_GROUPS: return "TYPE_XMLANSWER_QUERY_DB__LIST_GROUPS";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_TRAINEES: return "TYPE_XMLANSWER_QUERY_DB__LIST_TRAINEES";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_COMPUTERS: return "TYPE_XMLANSWER_QUERY_DB__LIST_COMPUTERS";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS: return "TYPE_XMLANSWER_QUERY_DB__LIST_CLASSROOMS";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_TASKS_AMM_OF_TRAINEE: return "TYPE_XMLANSWER_QUERY_TASKS_AMM_OF_TRAINEE";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_TASKS_FIM_OF_TRAINEE: return "TYPE_XMLANSWER_QUERY_TASKS_FIM_OF_TRAINEE";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_FIM: return "TYPE_XMLANSWER_QUERY_TASKS_XML_FIM";
|
||||||
|
case PacketType::TYPE_XMLANSWER_QUERY_TASKS_XML_AMM: return "TYPE_XMLANSWER_QUERY_TASKS_XML_AMM";
|
||||||
|
|
||||||
default: return "Unknown";
|
default: return "Unknown";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -523,7 +523,7 @@ void ProcessingSystem::processingClientNotify(ClientHandler *client, ClientNotif
|
|||||||
{//Клиент готов принять задания
|
{//Клиент готов принять задания
|
||||||
client->setReady(true);
|
client->setReady(true);
|
||||||
sendTaskListToUnity(client);
|
sendTaskListToUnity(client);
|
||||||
client->getSocket()->flush();
|
//client->getSocket()->flush();
|
||||||
}
|
}
|
||||||
else if(clientNotify.Code == commandStartTimerClient)
|
else if(clientNotify.Code == commandStartTimerClient)
|
||||||
{
|
{
|
||||||
@@ -572,6 +572,8 @@ void ProcessingSystem::processingClientNotify(ClientHandler *client, ClientNotif
|
|||||||
{
|
{
|
||||||
chatSystem->sendOldMessages(client->getClient()->getId());
|
chatSystem->sendOldMessages(client->getClient()->getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logger::instance().log(client->getClient()->getLogin() + clientNotify.Code,LogLevel::DEBUG);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessingSystem::setCurrentDataInfo(DataInfo *dataInfo)
|
void ProcessingSystem::setCurrentDataInfo(DataInfo *dataInfo)
|
||||||
|
|||||||
@@ -81,7 +81,34 @@ void RecognizeSystem::recognize()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (packetType != PacketType::TYPE_NONE)
|
if (packetType != PacketType::TYPE_NONE)
|
||||||
Logger::instance().log("C: " + client->getLogin() + " RECEIVE pack " + enumToString(packetType),LogLevel::DEBUG);
|
{
|
||||||
|
QString result = enumToString(packetType);
|
||||||
|
Logger::instance().log(client->getLogin() +
|
||||||
|
" RECEIVE pack " +
|
||||||
|
result ,LogLevel::DEBUG);
|
||||||
|
//секция на случай прихода неизвестного пакета
|
||||||
|
if(result == "Unknown")
|
||||||
|
{
|
||||||
|
qDebug() << " State:" << socket->state();
|
||||||
|
qDebug() << " Error:" << socket->error();
|
||||||
|
qDebug() << " Bytes to write:" << socket->bytesToWrite();
|
||||||
|
qDebug() << " Bytes available:" << socket->bytesAvailable();
|
||||||
|
if(client->getTypeClient() == TypeClientAutorization::TYPE_UNITY_CLIENT)
|
||||||
|
{
|
||||||
|
data = socket->readAll();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stream.startTransaction();
|
||||||
|
stream >> data;
|
||||||
|
}
|
||||||
|
QString dataText = QString::fromUtf8(data);
|
||||||
|
Logger::instance().log(QString::number(packetType) + " Unknown text " + dataText);
|
||||||
|
Logger::instance().log("Client error: " + client->getLogin(),LogLevel::ERROR);
|
||||||
|
clientHandler->sendDisable();
|
||||||
|
//mutex->unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (packetType == PacketType::TYPE_COMMAND) //TODO: надо переделать под какой то нормальный тип, который уже существует
|
if (packetType == PacketType::TYPE_COMMAND) //TODO: надо переделать под какой то нормальный тип, который уже существует
|
||||||
{
|
{
|
||||||
@@ -138,12 +165,11 @@ void RecognizeSystem::recognize()
|
|||||||
socket->read(readBuffer,4);
|
socket->read(readBuffer,4);
|
||||||
fileSize = *((int*)readBuffer);
|
fileSize = *((int*)readBuffer);
|
||||||
|
|
||||||
stream.commitTransaction();
|
//if(!stream.commitTransaction()) continue;
|
||||||
//if(!) continue;
|
|
||||||
//ПОЛУЧЕНИЕ САМОГО ФАЙЛА
|
//ПОЛУЧЕНИЕ САМОГО ФАЙЛА
|
||||||
Logger::instance().log("AfterRead size and path BytesAvailable: " + QString::number(socket->bytesAvailable()));
|
Logger::instance().log("AfterRead size and path BytesAvailable: " + QString::number(socket->bytesAvailable()));
|
||||||
|
|
||||||
qint64 readSize = 65535;
|
qint64 readSize = readFileBlockSize;
|
||||||
forever
|
forever
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ void SendSystem::sendFileBlock(QString path)
|
|||||||
{
|
{
|
||||||
while(!file.atEnd())
|
while(!file.atEnd())
|
||||||
{
|
{
|
||||||
QByteArray data = file.read(1025*250);
|
QByteArray data = file.read(sendFileBlockSize);
|
||||||
stream << data;
|
stream << data;
|
||||||
//socket->waitForBytesWritten(10);
|
//socket->waitForBytesWritten(10);
|
||||||
|
|
||||||
@@ -78,35 +78,86 @@ void SendSystem::sendFileBlock(QString path)
|
|||||||
|
|
||||||
void SendSystem::sendFileBlockByteArray(QByteArray array, PacketType packetType)
|
void SendSystem::sendFileBlockByteArray(QByteArray array, PacketType packetType)
|
||||||
{
|
{
|
||||||
qDebug() << "sendFileBlockByteArray thread: " << QThread::currentThreadId();
|
// qDebug() << "sendFileBlockByteArray thread: " << QThread::currentThreadId();
|
||||||
|
// if(client->getClientType() == TypeClientAutorization::TYPE_QT_CLIENT ||
|
||||||
|
// client->getClientType() == TypeClientAutorization::TYPE_GUI)
|
||||||
|
// {
|
||||||
|
// QDataStream stream(socket);
|
||||||
|
// stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
|
||||||
|
|
||||||
|
// fileSize = array.size();
|
||||||
|
|
||||||
|
// if(fileSize == 0){
|
||||||
|
// Logger::instance().log(" WARNING! Zero size ",LogLevel::ERROR);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// stream << packetType; //Отправляем тип блока
|
||||||
|
// stream << fileSize;
|
||||||
|
// stream << array;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// sendPacketType(packetType);
|
||||||
|
// QByteArray message;
|
||||||
|
// int size = array.length();
|
||||||
|
// message.append(reinterpret_cast<char*>(&size), sizeof(int));
|
||||||
|
// socket->write(message);
|
||||||
|
// socket->write(array);
|
||||||
|
// }
|
||||||
|
|
||||||
if(client->getClientType() == TypeClientAutorization::TYPE_QT_CLIENT ||
|
if(client->getClientType() == TypeClientAutorization::TYPE_QT_CLIENT ||
|
||||||
client->getClientType() == TypeClientAutorization::TYPE_GUI)
|
client->getClientType() == TypeClientAutorization::TYPE_GUI)
|
||||||
{
|
{
|
||||||
QDataStream stream(socket);
|
QDataStream stream(socket);
|
||||||
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
|
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
|
||||||
|
|
||||||
fileSize = array.size();
|
quint64 size = array.size();
|
||||||
|
qint64 bytesSended = 0;
|
||||||
|
|
||||||
if(fileSize == 0){
|
if (size == 0)
|
||||||
Logger::instance().log(" WARNING! Zero size ",LogLevel::ERROR);
|
{
|
||||||
return;
|
Logger::instance().log(" WARNING! Zero size ",LogLevel::ERROR);
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
stream << packetType; //Отправляем тип блока
|
stream << packetType; //Отправляем тип блока
|
||||||
stream << fileSize;
|
stream << size;
|
||||||
stream << array;
|
|
||||||
|
while (size > 0)
|
||||||
|
{
|
||||||
|
QByteArray chunk = array.mid(bytesSended,sendFileBlockSize);
|
||||||
|
stream << chunk;
|
||||||
|
|
||||||
|
bytesSended += chunk.length();
|
||||||
|
size -= bytesSended;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sendPacketType(packetType);
|
sendPacketType(packetType);
|
||||||
QByteArray message;
|
quint64 size = array.size();
|
||||||
int size = array.length();
|
qint64 bytesSended = 0;
|
||||||
message.append(reinterpret_cast<char*>(&size), sizeof(int));
|
|
||||||
socket->write(message);
|
if (size == 0)
|
||||||
socket->write(array);
|
{
|
||||||
|
Logger::instance().log(" WARNING! Zero size ",LogLevel::ERROR);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QByteArray message;
|
||||||
|
message.append(reinterpret_cast<char*>(&size), sizeof(int));
|
||||||
|
socket->write(message);
|
||||||
|
|
||||||
|
while (size > 0)
|
||||||
|
{
|
||||||
|
QByteArray chunk = array.mid(bytesSended,sendFileBlockSize);
|
||||||
|
quint64 bytesSended = socket->write(chunk);
|
||||||
|
|
||||||
|
size -= bytesSended;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SendSystem::sendVersion()
|
void SendSystem::sendVersion()
|
||||||
@@ -148,7 +199,7 @@ void SendSystem::sendFileBlockWithRename(QString path, QString newName)
|
|||||||
|
|
||||||
if(file.open(QFile::ReadOnly)){
|
if(file.open(QFile::ReadOnly)){
|
||||||
while(!file.atEnd()){
|
while(!file.atEnd()){
|
||||||
QByteArray data = file.read(1025*250);
|
QByteArray data = file.read(sendFileBlockSize);
|
||||||
stream << data;
|
stream << data;
|
||||||
socket->waitForBytesWritten();
|
socket->waitForBytesWritten();
|
||||||
countSend++;
|
countSend++;
|
||||||
|
|||||||
@@ -50,6 +50,11 @@ static const QString commandUpdateFilesClient = "update";
|
|||||||
static const QString commandGetTasks = "GETTASKS";
|
static const QString commandGetTasks = "GETTASKS";
|
||||||
static const QString commandeGetOfflineMessages = "GETOFFLINEMESSAGE";
|
static const QString commandeGetOfflineMessages = "GETOFFLINEMESSAGE";
|
||||||
|
|
||||||
|
//static quint64 fileBlockSize = 1460;
|
||||||
|
static quint64 sendFileBlockSize = 256000;
|
||||||
|
static quint64 readFileBlockSize = 65535;
|
||||||
|
//1025*250
|
||||||
|
|
||||||
class Tools {
|
class Tools {
|
||||||
public:
|
public:
|
||||||
static void printTime();
|
static void printTime();
|
||||||
|
|||||||
Reference in New Issue
Block a user