Передача больших файлов xml с задачами кусками

This commit is contained in:
2025-06-24 12:19:25 +03:00
parent 1fde2d4609
commit 08e982177a
8 changed files with 138 additions and 20 deletions

View File

@@ -276,6 +276,86 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
case TYPE_XMLANSWER_QUERY_TASKS_AMM_FOR_TRAINEE:
case TYPE_XMLANSWER_QUERY_TASKS_FIM_FOR_TRAINEE:
{
//ПОЛУЧЕНИЕ РАЗМЕРА ФАЙЛА
forever
{
stream.startTransaction();
stream >> fileSize;
if(!stream.commitTransaction()){
emit sigSendDebugLog(Tools::getTime() + "CLIENT: fileSize - FAIL commitTransaction");
if (!socket->waitForReadyRead(TCP_READ_TIMEOUT)) {
emit sigSendDebugLog(Tools::getTime() + "CLIENT: ERROR! readyRead timeout - fileSize!!!");
return;
}
continue;
}
emit sigSendDebugLog("CLIENT: filesize: " + QString::number(fileSize));
socket->waitForReadyRead(100);
break;
}
//ПОЛУЧЕНИЕ САМОГО ФАЙЛА
emit sigSendDebugLog(Tools::getTime() + "AfterRead size and path BytesAvailable: " + socket->bytesAvailable());
QByteArray array;
forever
{
stream.startTransaction();
stream >> tmpBlock;
if(!stream.commitTransaction()){
if(socket->state() == QAbstractSocket::UnconnectedState){
emit sigSocketDisabled();
return;
}
if(socket->waitForReadyRead(TCP_READ_TIMEOUT)){
continue;
}
continue;
}
array.append(tmpBlock);
emit sigSendDebugLog(Tools::getTime() + "CLIENT: toFile :" + array.size());
sizeReceiveData += array.size();
countSend++;
tmpBlock.clear();
if(sizeReceiveData == fileSize){
emit sigSendDebugLog(Tools::getTime() + "FINAL Count send: " + QString::number(countSend));
emit sigSendDebugLog(Tools::getTime() + "FINAL Size received: " + QString::number(sizeReceiveData));
emit sigSendDebugLog(Tools::getTime() + "FINAL File size" + QString::number(fileSize));
emit sigUpdateBytesAvailable();
break;
}
}
emit sigSendDebugLog(Tools::getTime() + "File loaded");
//ОЧИСТКА ПОСЛЕ ПЕРЕДАЧИ
fileSize = 0;
tmpBlock.clear();
sizeReceiveData = 0;
countSend = 0;
xmlParserQueryToDB(packetType, array);
packetType = PacketType::TYPE_NONE;
/*
QByteArray array;
stream.startTransaction();
stream >> array;
@@ -286,6 +366,7 @@ void RecognizeSystem::recognize(QTcpSocket *socket)
xmlParserQueryToDB(packetType, array);
packetType = PacketType::TYPE_NONE;
*/
}
break;
};