mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
ref: segregate client hashes
This commit is contained in:
@@ -15,6 +15,7 @@ kanban-plugin: board
|
|||||||
- [ ] не отправлять updateDocs если не залогинен
|
- [ ] не отправлять updateDocs если не залогинен
|
||||||
- [ ] Отменить изменения работает некрасиво
|
- [ ] Отменить изменения работает некрасиво
|
||||||
- [ ] BUSY не меняет иконку блокировки
|
- [ ] BUSY не меняет иконку блокировки
|
||||||
|
- [ ] не работают ссылки при выгрузке в QT Client
|
||||||
|
|
||||||
|
|
||||||
## feature client Unity
|
## feature client Unity
|
||||||
|
|||||||
@@ -118,6 +118,15 @@ public:
|
|||||||
id = value;
|
id = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QByteArray getClientHash()
|
||||||
|
{
|
||||||
|
return clientHash;
|
||||||
|
}
|
||||||
|
void setClientHash(const QByteArray &value)
|
||||||
|
{
|
||||||
|
clientHash = value;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString name;
|
QString name;
|
||||||
QString address;
|
QString address;
|
||||||
@@ -131,8 +140,7 @@ private:
|
|||||||
|
|
||||||
TypeClientAutorization typeClient;
|
TypeClientAutorization typeClient;
|
||||||
UserType userType;
|
UserType userType;
|
||||||
|
QByteArray clientHash;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CLIENT_H
|
#endif // CLIENT_H
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ enum PacketType
|
|||||||
TYPE_COMMAND =3,
|
TYPE_COMMAND =3,
|
||||||
TYPE_FOLDER = 4,
|
TYPE_FOLDER = 4,
|
||||||
TYPE_DELETE = 5,
|
TYPE_DELETE = 5,
|
||||||
TYPE_LOADING_FINISH_WITHOUT_DOCS = 6,
|
UPDATE_FILES_COMPLETE = 6,
|
||||||
TYPE_NEEDUPDATE = 7,
|
TYPE_NEEDUPDATE = 7,
|
||||||
TYPE_XMLANSWER = 8,
|
TYPE_XMLANSWER = 8,
|
||||||
TYPE_QT = 9,
|
TYPE_QT = 9,
|
||||||
@@ -21,7 +21,7 @@ enum PacketType
|
|||||||
TYPE_CHECK_VERSION = 13,
|
TYPE_CHECK_VERSION = 13,
|
||||||
TYPE_FILESIZE = 20,
|
TYPE_FILESIZE = 20,
|
||||||
TYPE_BIGXML = 21,
|
TYPE_BIGXML = 21,
|
||||||
TYPE_FULL_LOADING_FINISH = 22,
|
UPDATE_DOCS_COMPLETE = 22,
|
||||||
|
|
||||||
TYPE_XMLANSWER_MESSAGE_FOR_GUI = 90,
|
TYPE_XMLANSWER_MESSAGE_FOR_GUI = 90,
|
||||||
|
|
||||||
@@ -54,6 +54,7 @@ enum PacketType
|
|||||||
RECALCULATE_HASH = 156,
|
RECALCULATE_HASH = 156,
|
||||||
RECALCULATE_DOCS = 157,
|
RECALCULATE_DOCS = 157,
|
||||||
GET_DOCS = 158,
|
GET_DOCS = 158,
|
||||||
|
SEND_HASH = 159
|
||||||
|
|
||||||
};
|
};
|
||||||
template<typename T>
|
template<typename T>
|
||||||
@@ -68,7 +69,7 @@ inline QString enumToString(PacketType value) {
|
|||||||
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_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_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";
|
||||||
@@ -77,7 +78,7 @@ inline QString enumToString(PacketType value) {
|
|||||||
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::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_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_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_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_HASH: return "HASH_CALCULATE_START";
|
||||||
case PacketType::RECALCULATE_DOCS: return "RECALCULATE_DOCS";
|
case PacketType::RECALCULATE_DOCS: return "RECALCULATE_DOCS";
|
||||||
case PacketType::GET_DOCS: return "GET_DOCS";
|
case PacketType::GET_DOCS: return "GET_DOCS";
|
||||||
|
case PacketType::SEND_HASH: return "SEND_HASH";
|
||||||
|
|
||||||
default: return "Unknown";
|
default: return "Unknown";
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ void RecognizeSystem::initialize(UpdateController *updateController,DataParser*
|
|||||||
|
|
||||||
void RecognizeSystem::recognize()
|
void RecognizeSystem::recognize()
|
||||||
{
|
{
|
||||||
QMutexLocker locker(mutex);
|
QMutexLocker locker(mutex);
|
||||||
qDebug() << "Recognize thread ID " << QThread::currentThreadId();
|
qDebug() << "Recognize thread ID " << QThread::currentThreadId();
|
||||||
QDataStream stream(socket);
|
QDataStream stream(socket);
|
||||||
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
|
stream.setVersion(QDataStream::Qt_DefaultCompiledVersion);
|
||||||
@@ -118,10 +118,7 @@ void RecognizeSystem::recognize()
|
|||||||
|
|
||||||
if(packetType == PacketType::TYPE_CHECK_VERSION)
|
if(packetType == PacketType::TYPE_CHECK_VERSION)
|
||||||
{
|
{
|
||||||
QFile checkFile(clientHash);
|
updateController->compareFiles(clientHandler,client->getClientHash());
|
||||||
checkFile.open(QIODevice::ReadOnly);
|
|
||||||
updateController->compareFiles(clientHandler,checkFile.readAll());
|
|
||||||
checkFile.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packetType == PacketType::TYPE_XMLANSWER)
|
if (packetType == PacketType::TYPE_XMLANSWER)
|
||||||
@@ -454,11 +451,60 @@ void RecognizeSystem::recognize()
|
|||||||
emit sigSendDocs(updateController->getPathAdditionalFile(tasksAMMfileName));
|
emit sigSendDocs(updateController->getPathAdditionalFile(tasksAMMfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(packetType == PacketType::RECALCULATE_HASH)
|
if (packetType == PacketType::SEND_HASH)
|
||||||
// {
|
{
|
||||||
// emit sigCalculateHash();
|
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;
|
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)
|
void SendSystem::sendDocs(QString docsPath)
|
||||||
{
|
{
|
||||||
sendFileBlock(docsPath);
|
sendFileBlock(docsPath);
|
||||||
sendPacketType(PacketType::TYPE_FULL_LOADING_FINISH);
|
//sendPacketType(PacketType::UPDATE_DOCS_COMPLETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SendSystem::getIsSendStopped() const
|
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 buildDataPath = "/Application/" + projectFolderName + "/RRJ_Data/";
|
||||||
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 logFolderPath = "log";
|
||||||
|
|
||||||
static const QString configFolderName = "config";
|
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)
|
void ClientHandler::sendNeedUpdate(bool flag, quint64 size, quint64 fileCount,quint64 deleteCount)
|
||||||
{
|
{
|
||||||
emit sigNeedUpdate(flag,size,fileCount,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()
|
void ClientHandler::sendDisable()
|
||||||
|
|||||||
Reference in New Issue
Block a user