mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJClient.git
synced 2026-03-28 05:25:39 +03:00
fix: reconnect with old connection
This commit is contained in:
@@ -9,6 +9,7 @@ UpdateController::UpdateController(QObject *parent) :
|
|||||||
versionContainer(nullptr)
|
versionContainer(nullptr)
|
||||||
{
|
{
|
||||||
applicationFolderPath = QDir::currentPath() + applicationFolderName;
|
applicationFolderPath = QDir::currentPath() + applicationFolderName;
|
||||||
|
hashCalculator = new FastHashCalculator;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateController::initialize(VersionContainer *versionContainer,DataParserOutput *dataParserOut, SendSystem *sendSystem)
|
void UpdateController::initialize(VersionContainer *versionContainer,DataParserOutput *dataParserOut, SendSystem *sendSystem)
|
||||||
@@ -16,7 +17,6 @@ void UpdateController::initialize(VersionContainer *versionContainer,DataParserO
|
|||||||
this->versionContainer = versionContainer;
|
this->versionContainer = versionContainer;
|
||||||
this->sendSystem = sendSystem;
|
this->sendSystem = sendSystem;
|
||||||
this->dataParserOut = dataParserOut;
|
this->dataParserOut = dataParserOut;
|
||||||
hashCalculator = new FastHashCalculator;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateController::calculateCommonHash()
|
void UpdateController::calculateCommonHash()
|
||||||
@@ -56,7 +56,6 @@ QList<FileData> UpdateController::calculateHash(const QString& path,const QStrin
|
|||||||
}
|
}
|
||||||
|
|
||||||
QList<FileData> *hashes = new QList<FileData>;
|
QList<FileData> *hashes = new QList<FileData>;
|
||||||
QString fullSize = Tools::convertFileSize(getDirectorySize(path),false);
|
|
||||||
quint64 currentSize = 0;
|
quint64 currentSize = 0;
|
||||||
|
|
||||||
QStringList filter;
|
QStringList filter;
|
||||||
@@ -93,7 +92,7 @@ QList<FileData> UpdateController::calculateHash(const QString& path,const QStrin
|
|||||||
|
|
||||||
currentSize += fileInfo.size();
|
currentSize += fileInfo.size();
|
||||||
|
|
||||||
emit sigSendHashInfo(fullSize,Tools::convertFileSize(currentSize,false));
|
|
||||||
quint64 fileSize = file.size(); //буффер для хэширования крупных файлов
|
quint64 fileSize = file.size(); //буффер для хэширования крупных файлов
|
||||||
const quint64 bufferSize = 1024;
|
const quint64 bufferSize = 1024;
|
||||||
|
|
||||||
@@ -126,24 +125,6 @@ QList<FileData> UpdateController::calculateHash(const QString& path,const QStrin
|
|||||||
return *hashes;
|
return *hashes;
|
||||||
}
|
}
|
||||||
|
|
||||||
quint64 UpdateController::getDirectorySize(const QString& path)
|
|
||||||
{
|
|
||||||
quint64 totalSize = 0;
|
|
||||||
QDirIterator iterator(path, QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
|
|
||||||
|
|
||||||
while (iterator.hasNext())
|
|
||||||
{
|
|
||||||
iterator.next();
|
|
||||||
QFileInfo fileInfo = iterator.fileInfo();
|
|
||||||
if (fileInfo.isFile())
|
|
||||||
{
|
|
||||||
totalSize += fileInfo.size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return totalSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateController::updateFilesOnServer(QList<FileData> *fileSendList){
|
void UpdateController::updateFilesOnServer(QList<FileData> *fileSendList){
|
||||||
|
|
||||||
QListIterator<FileData> serverIterator(*fileSendList);
|
QListIterator<FileData> serverIterator(*fileSendList);
|
||||||
@@ -177,6 +158,11 @@ void UpdateController::updateFilesOnServer(QList<FileData> *fileSendList){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FastHashCalculator *UpdateController::getHashCalculator() const
|
||||||
|
{
|
||||||
|
return hashCalculator;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
UpdateController::~UpdateController()
|
UpdateController::~UpdateController()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -35,9 +35,11 @@ public:
|
|||||||
void updateFilesOnServer(QList<FileData> *fileSendList);
|
void updateFilesOnServer(QList<FileData> *fileSendList);
|
||||||
void checkCanUpdate();
|
void checkCanUpdate();
|
||||||
|
|
||||||
|
FastHashCalculator *getHashCalculator() const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sigUpdateComplete(bool flag);
|
void sigUpdateComplete(bool flag);
|
||||||
void sigSendHashInfo(QString fullSize,QString current);
|
|
||||||
private:
|
private:
|
||||||
SendSystem *sendSystem;
|
SendSystem *sendSystem;
|
||||||
DataParserOutput * dataParserOut;
|
DataParserOutput * dataParserOut;
|
||||||
@@ -48,7 +50,6 @@ private:
|
|||||||
QList<FileData> streamingDataList;
|
QList<FileData> streamingDataList;
|
||||||
|
|
||||||
QList<FileData> calculateHash(const QString& path,const QString& ignoreName);
|
QList<FileData> calculateHash(const QString& path,const QString& ignoreName);
|
||||||
quint64 getDirectorySize(const QString &path);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ FastHashCalculator::FastHashCalculator(QObject *parent) : QObject(parent)
|
|||||||
void FastHashCalculator::calculateHashes(const QString& path, const QString& ignoreName)
|
void FastHashCalculator::calculateHashes(const QString& path, const QString& ignoreName)
|
||||||
{
|
{
|
||||||
hashList->clear();
|
hashList->clear();
|
||||||
|
currentSize = 0;
|
||||||
if(!QDir(path).exists()){
|
if(!QDir(path).exists()){
|
||||||
QDir().mkdir(path);
|
QDir().mkdir(path);
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@ void FastHashCalculator::calculateHashes(const QString& path, const QString& ign
|
|||||||
QStringList filter;
|
QStringList filter;
|
||||||
filter << "*";
|
filter << "*";
|
||||||
QList<FileData> *folders = new QList<FileData>;
|
QList<FileData> *folders = new QList<FileData>;
|
||||||
//QString fullSize = Tools::convertFileSize(getDirectorySize(path),false);
|
fullSize = Tools::convertFileSize(getDirectorySize(path),false);
|
||||||
|
|
||||||
QDirIterator dirIterator(path,filter, QDir::AllEntries, QDirIterator::Subdirectories);
|
QDirIterator dirIterator(path,filter, QDir::AllEntries, QDirIterator::Subdirectories);
|
||||||
|
|
||||||
@@ -80,18 +80,45 @@ QByteArray FastHashCalculator::calculateFileHashOptimized(const QString &filePat
|
|||||||
if (!file.open(QIODevice::ReadOnly)) return QByteArray();
|
if (!file.open(QIODevice::ReadOnly)) return QByteArray();
|
||||||
|
|
||||||
QCryptographicHash hash(QCryptographicHash::Md5);
|
QCryptographicHash hash(QCryptographicHash::Md5);
|
||||||
const qint64 bufferSize = 2 * 1024; // 2MB
|
const qint64 bufferSize = 2048; // 2MB
|
||||||
|
quint64 completeBytes = 0;
|
||||||
QByteArray buffer;
|
QByteArray buffer;
|
||||||
buffer.resize(bufferSize);
|
buffer.resize(bufferSize);
|
||||||
|
|
||||||
while (!file.atEnd()) {
|
while (!file.atEnd()) {
|
||||||
qint64 bytesRead = file.read(buffer.data(), bufferSize);
|
qint64 bytesRead = file.read(buffer.data(), bufferSize);
|
||||||
hash.addData(buffer.constData(), bytesRead);
|
hash.addData(buffer.constData(), bytesRead);
|
||||||
|
completeBytes += bytesRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hashCounterDisplay(completeBytes);
|
||||||
return hash.result();
|
return hash.result();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FastHashCalculator::hashCounterDisplay(quint64 size)
|
||||||
|
{
|
||||||
|
currentSize += size;
|
||||||
|
emit sigSendHashInfo(fullSize,Tools::convertFileSize(currentSize,false));
|
||||||
|
}
|
||||||
|
|
||||||
|
quint64 FastHashCalculator::getDirectorySize(const QString& path)
|
||||||
|
{
|
||||||
|
quint64 totalSize = 0;
|
||||||
|
QDirIterator iterator(path, QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
|
||||||
|
|
||||||
|
while (iterator.hasNext())
|
||||||
|
{
|
||||||
|
iterator.next();
|
||||||
|
QFileInfo fileInfo = iterator.fileInfo();
|
||||||
|
if (fileInfo.isFile())
|
||||||
|
{
|
||||||
|
totalSize += fileInfo.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalSize;
|
||||||
|
}
|
||||||
|
|
||||||
QList<FileData> *FastHashCalculator::getHashList() const
|
QList<FileData> *FastHashCalculator::getHashList() const
|
||||||
{
|
{
|
||||||
return hashList;
|
return hashList;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public:
|
|||||||
QList<FileData> *getHashList() const;
|
QList<FileData> *getHashList() const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
void sigSendHashInfo(QString fullSize,QString current);
|
||||||
void finished();
|
void finished();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -27,8 +28,11 @@ private:
|
|||||||
|
|
||||||
QList<FileData>* hashList;
|
QList<FileData>* hashList;
|
||||||
QMutex _mutex;
|
QMutex _mutex;
|
||||||
|
QString fullSize;
|
||||||
quint64 currentSize;
|
quint64 currentSize;
|
||||||
|
|
||||||
|
quint64 getDirectorySize(const QString &path);
|
||||||
|
void hashCounterDisplay(quint64 size);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FASTHASHCALCULATOR_H
|
#endif // FASTHASHCALCULATOR_H
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ServerSettingsContainer>
|
<ServerSettingsContainer>
|
||||||
<ServerSettings Address="192.168.100.83" Port="6000" UseMathModel="1" AutoStart="0" DestPortMath="18003" Language="RUS" LocalPortMath="18004"/>
|
<ServerSettings Address="192.168.100.83" Port="6000" Language="RUS" AutoStart="0" DestPortMath="18003" LocalPortMath="18004" UseMathModel="1"/>
|
||||||
<VersionData Version="base" Created="Ср авг 20 17:12:35 2025" isChangable="0"/>
|
<VersionData Version="modify" isChangable="128"/>
|
||||||
</ServerSettingsContainer>
|
</ServerSettingsContainer>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,2 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ClientAutorization Login="O5" Password="5555"/>
|
<ClientNotify Code="DISABLE"/>
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ void CoreManager::binding()
|
|||||||
connect(hashComparer,&HashComparer::sigHaveDelta,this,&CoreManager::checkUpdateInfo);
|
connect(hashComparer,&HashComparer::sigHaveDelta,this,&CoreManager::checkUpdateInfo);
|
||||||
|
|
||||||
connect(updateController,&UpdateController::sigUpdateComplete,widgetManager,&WidgetManager::setCompeteState,Qt::AutoConnection);
|
connect(updateController,&UpdateController::sigUpdateComplete,widgetManager,&WidgetManager::setCompeteState,Qt::AutoConnection);
|
||||||
connect(updateController,&UpdateController::sigSendHashInfo,widgetManager->getMainWindow(),&MainWindow::updateInitInformation,Qt::AutoConnection);
|
connect(updateController->getHashCalculator(),&FastHashCalculator::sigSendHashInfo,widgetManager->getMainWindow(),&MainWindow::updateInitInformation,Qt::AutoConnection);
|
||||||
|
|
||||||
connect(client,&TCPClient::sigConnectionState,widgetManager,&WidgetManager::setConnectionState,Qt::AutoConnection);
|
connect(client,&TCPClient::sigConnectionState,widgetManager,&WidgetManager::setConnectionState,Qt::AutoConnection);
|
||||||
connect(client,&TCPClient::sigServerDisconnect,widgetManager,&WidgetManager::setServerDisconnectState,Qt::AutoConnection);
|
connect(client,&TCPClient::sigServerDisconnect,widgetManager,&WidgetManager::setServerDisconnectState,Qt::AutoConnection);
|
||||||
@@ -351,6 +351,7 @@ void CoreManager::saveServerSettingsWithConnect()
|
|||||||
|
|
||||||
if(client->getIsConnected())
|
if(client->getIsConnected())
|
||||||
{
|
{
|
||||||
|
emit sigSendXMLAnswer(cmd_Disable);
|
||||||
client->setDisconnect();
|
client->setDisconnect();
|
||||||
entryWidget->showLoginWidget(true);
|
entryWidget->showLoginWidget(true);
|
||||||
widgetManager->getMainWindow()->showOfflineButton(true);
|
widgetManager->getMainWindow()->showOfflineButton(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user