mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
ref: segregate client hashes
This commit is contained in:
@@ -118,6 +118,15 @@ public:
|
||||
id = value;
|
||||
}
|
||||
|
||||
QByteArray getClientHash()
|
||||
{
|
||||
return clientHash;
|
||||
}
|
||||
void setClientHash(const QByteArray &value)
|
||||
{
|
||||
clientHash = value;
|
||||
}
|
||||
|
||||
private:
|
||||
QString name;
|
||||
QString address;
|
||||
@@ -131,8 +140,7 @@ private:
|
||||
|
||||
TypeClientAutorization typeClient;
|
||||
UserType userType;
|
||||
QByteArray clientHash;
|
||||
};
|
||||
|
||||
#endif // CLIENT_H
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ enum PacketType
|
||||
TYPE_COMMAND =3,
|
||||
TYPE_FOLDER = 4,
|
||||
TYPE_DELETE = 5,
|
||||
TYPE_LOADING_FINISH_WITHOUT_DOCS = 6,
|
||||
UPDATE_FILES_COMPLETE = 6,
|
||||
TYPE_NEEDUPDATE = 7,
|
||||
TYPE_XMLANSWER = 8,
|
||||
TYPE_QT = 9,
|
||||
@@ -21,7 +21,7 @@ enum PacketType
|
||||
TYPE_CHECK_VERSION = 13,
|
||||
TYPE_FILESIZE = 20,
|
||||
TYPE_BIGXML = 21,
|
||||
TYPE_FULL_LOADING_FINISH = 22,
|
||||
UPDATE_DOCS_COMPLETE = 22,
|
||||
|
||||
TYPE_XMLANSWER_MESSAGE_FOR_GUI = 90,
|
||||
|
||||
@@ -54,6 +54,7 @@ enum PacketType
|
||||
RECALCULATE_HASH = 156,
|
||||
RECALCULATE_DOCS = 157,
|
||||
GET_DOCS = 158,
|
||||
SEND_HASH = 159
|
||||
|
||||
};
|
||||
template<typename T>
|
||||
@@ -68,7 +69,7 @@ inline QString enumToString(PacketType value) {
|
||||
case PacketType::TYPE_COMMAND: return "TYPE_COMMAND";
|
||||
case PacketType::TYPE_FOLDER: return "TYPE_FOLDER";
|
||||
case PacketType::TYPE_DELETE: return "TYPE_DELETE";
|
||||
case PacketType::TYPE_LOADING_FINISH_WITHOUT_DOCS: return "TYPE_LOADING_FINISH_WITHOUT_DOCS";
|
||||
case PacketType::UPDATE_FILES_COMPLETE: return "UPDATE_FILE_COMPLETE";
|
||||
case PacketType::TYPE_NEEDUPDATE: return "TYPE_NEEDUPDATE";
|
||||
case PacketType::TYPE_XMLANSWER: return "TYPE_XMLANSWER";
|
||||
case PacketType::TYPE_QT: return "TYPE_QT";
|
||||
@@ -77,7 +78,7 @@ inline QString enumToString(PacketType value) {
|
||||
case PacketType::TYPE_CHECK_VERSION: return "TYPE_CHECK_VERSION";
|
||||
case PacketType::TYPE_FILESIZE: return "TYPE_FILESIZE";
|
||||
case PacketType::TYPE_BIGXML: return "TYPE_BIGXML";
|
||||
case PacketType::TYPE_FULL_LOADING_FINISH: return "TYPE_FULL_LOADING_FINISH";
|
||||
case PacketType::UPDATE_DOCS_COMPLETE: return "UPDATE_DOCS_COMPLETE";
|
||||
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";
|
||||
@@ -99,6 +100,7 @@ inline QString enumToString(PacketType value) {
|
||||
case PacketType::RECALCULATE_HASH: return "HASH_CALCULATE_START";
|
||||
case PacketType::RECALCULATE_DOCS: return "RECALCULATE_DOCS";
|
||||
case PacketType::GET_DOCS: return "GET_DOCS";
|
||||
case PacketType::SEND_HASH: return "SEND_HASH";
|
||||
|
||||
default: return "Unknown";
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ void RecognizeSystem::initialize(UpdateController *updateController,DataParser*
|
||||
|
||||
void RecognizeSystem::recognize()
|
||||
{
|
||||
QMutexLocker locker(mutex);
|
||||
QMutexLocker locker(mutex);
|
||||
qDebug() << "Recognize thread ID " << QThread::currentThreadId();
|
||||
QDataStream stream(socket);
|
||||
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
|
||||
@@ -118,10 +118,7 @@ void RecognizeSystem::recognize()
|
||||
|
||||
if(packetType == PacketType::TYPE_CHECK_VERSION)
|
||||
{
|
||||
QFile checkFile(clientHash);
|
||||
checkFile.open(QIODevice::ReadOnly);
|
||||
updateController->compareFiles(clientHandler,checkFile.readAll());
|
||||
checkFile.close();
|
||||
updateController->compareFiles(clientHandler,client->getClientHash());
|
||||
}
|
||||
|
||||
if (packetType == PacketType::TYPE_XMLANSWER)
|
||||
@@ -454,11 +451,60 @@ void RecognizeSystem::recognize()
|
||||
emit sigSendDocs(updateController->getPathAdditionalFile(tasksAMMfileName));
|
||||
}
|
||||
|
||||
// if(packetType == PacketType::RECALCULATE_HASH)
|
||||
// {
|
||||
// emit sigCalculateHash();
|
||||
// }
|
||||
if (packetType == PacketType::SEND_HASH)
|
||||
{
|
||||
QByteArray hash;
|
||||
|
||||
forever
|
||||
{
|
||||
stream.startTransaction();
|
||||
stream >> fileSize;
|
||||
|
||||
if(!stream.commitTransaction()) continue;
|
||||
socket->waitForReadyRead(100);
|
||||
break;
|
||||
}
|
||||
|
||||
forever
|
||||
{
|
||||
stream.startTransaction();
|
||||
stream >> tmpBlock;
|
||||
|
||||
if(!stream.commitTransaction()){
|
||||
|
||||
if(socket->state() == QAbstractSocket::UnconnectedState){
|
||||
qDebug() << "UNCONNECT";
|
||||
//mutex->unlock();
|
||||
return;
|
||||
}
|
||||
if(socket->waitForReadyRead(100)){
|
||||
continue;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
hash += tmpBlock;
|
||||
sizeReceiveData += tmpBlock.length();
|
||||
countSend++;
|
||||
|
||||
tmpBlock.clear();
|
||||
|
||||
if(sizeReceiveData == fileSize) break;
|
||||
|
||||
|
||||
}
|
||||
|
||||
QString logMessage = "Load from " + client->getLogin() + " ";
|
||||
|
||||
filePath.clear();
|
||||
fileSize = 0;
|
||||
tmpBlock.clear();
|
||||
sizeReceiveData = 0;
|
||||
countSend = 0;
|
||||
packetType = PacketType::TYPE_NONE;
|
||||
client->setClientHash(hash);
|
||||
}
|
||||
packetType = PacketType::TYPE_NONE;
|
||||
}
|
||||
|
||||
|
||||
@@ -312,7 +312,8 @@ void SendSystem::updateFiles(QList<FileData> fileSendList, QList<FileData> delet
|
||||
}
|
||||
}
|
||||
|
||||
sendPacketType(PacketType::TYPE_LOADING_FINISH_WITHOUT_DOCS);
|
||||
//sendPacketType(PacketType::UPDATE_FILES_COMPLETE);
|
||||
sendPacketType(PacketType::UPDATE_FILES_COMPLETE);
|
||||
}
|
||||
|
||||
|
||||
@@ -334,7 +335,7 @@ void SendSystem::sendStop()
|
||||
void SendSystem::sendDocs(QString docsPath)
|
||||
{
|
||||
sendFileBlock(docsPath);
|
||||
sendPacketType(PacketType::TYPE_FULL_LOADING_FINISH);
|
||||
//sendPacketType(PacketType::UPDATE_DOCS_COMPLETE);
|
||||
}
|
||||
|
||||
bool SendSystem::getIsSendStopped() const
|
||||
|
||||
@@ -29,7 +29,7 @@ static const QString buildHashName = staticDataFolderName + "/buildHash.xml";
|
||||
static const QString buildDataPath = "/Application/" + projectFolderName + "/RRJ_Data/";
|
||||
static const QString tasksAMMfileName = "/docs.xml"; //"/tasksAmm.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 configFolderName = "config";
|
||||
|
||||
@@ -158,7 +158,8 @@ void ClientHandler::sendNotify(QString text)
|
||||
void ClientHandler::sendNeedUpdate(bool flag, quint64 size, quint64 fileCount,quint64 deleteCount)
|
||||
{
|
||||
emit sigNeedUpdate(flag,size,fileCount,deleteCount);
|
||||
Logger::instance().log(client->getLogin() + " send need update");
|
||||
Logger::instance().
|
||||
log(client->getLogin() + " send need update");
|
||||
}
|
||||
|
||||
void ClientHandler::sendDisable()
|
||||
|
||||
Reference in New Issue
Block a user