From 923b017b4cafdd403b4dede621edfc8da925ec00 Mon Sep 17 00:00:00 2001 From: jiubingdao <2135482699@qq.com> Date: 星期三, 30 七月 2025 09:16:47 +0800 Subject: [PATCH] Merge branch 'master' of ssh://115.28.86.8:29418/~admin/天开景运_0405_250719 --- Server/付林涛/code/tianKai/vcsmainwindow.cpp | 130 +++++++------------------------------------ 1 files changed, 22 insertions(+), 108 deletions(-) diff --git "a/Server/\344\273\230\346\236\227\346\266\233/code/tianKai/vcsmainwindow.cpp" "b/Server/\344\273\230\346\236\227\346\266\233/code/tianKai/vcsmainwindow.cpp" index a711c3e..288f764 100644 --- "a/Server/\344\273\230\346\236\227\346\266\233/code/tianKai/vcsmainwindow.cpp" +++ "b/Server/\344\273\230\346\236\227\346\266\233/code/tianKai/vcsmainwindow.cpp" @@ -3,6 +3,10 @@ #include <QFileInfo> #include <QMessageBox> +#include "struct_data.h" +std::mutex _mutex; +std::condition_variable _conv; +int g_flag = 1; VCSMainWindow::VCSMainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::VCSMainWindow) @@ -22,8 +26,10 @@ ui->stackedWidget->setCurrentWidget(m_addFile); - connect(m_addFile,SIGNAL(addFileSignal(QString, QString)),this,SLOT(addFileSlot(QString, QString))); - + connect(m_addFile,SIGNAL(addFileSignal(std::shared_ptr<char>,int)),this,SLOT(addFileSlot(std::shared_ptr<char>,int))); + connect(this,SIGNAL(releaseSignal()),m_release,SLOT(releaseSlot())); + connect(m_addFile,SIGNAL(addFileMsg(QString)),this,SLOT(msgSlot(QString))); + connect(m_release,SIGNAL(releaseSignal(std::shared_ptr<char>,int)),this,SLOT(addFileSlot(std::shared_ptr<char>,int))); } VCSMainWindow::~VCSMainWindow() @@ -36,9 +42,11 @@ ui->stackedWidget->setCurrentWidget(m_addFile); } +// 涓婁紶 void VCSMainWindow::on_pushButton_2_clicked() { ui->stackedWidget->setCurrentWidget(m_release); + emit releaseSignal(); } void VCSMainWindow::on_pushButton_4_clicked() @@ -51,115 +59,21 @@ ui->stackedWidget->setCurrentWidget(m_readLog); } -void VCSMainWindow::addFileSlot(QString file, QString versionMessage) +void VCSMainWindow::addFileSlot(std::shared_ptr<char> buf, int len) { - QFileInfo fileInfo(file); - // 鑾峰彇鏂囦欢鍩烘湰淇℃伅 - QString fileName = fileInfo.fileName(); - qint64 size = fileInfo.size(); + if (!buf || len <= 0) { - - - // 璁$畻澶存秷鎭暱搴︼紝骞跺垎閰嶇┖闂� - int len = sizeof(UpLoadPkgHead)+fileName.size()+1; - UpLoadPkgHead *head = (UpLoadPkgHead*)malloc(len); - - // 澶存秷鎭俊鎭~鍏� - head->head.type = UPLOAD_REQ; - head->head.len = len; - head->upLoadType = HEAD_UPLOAD_REQ; - head->fileNameLen = fileName.size(); - memcpy(head->fileName,fileName.data(),fileName.size()); - head->fileName[fileName.size()] = '\0'; - - // 鍙戦�佸ご娑堟伅 - - int ret = m_upLoad->upfile((char*)head,len); - if(ret < len){ - qDebug()<<"浼犺緭鏈夐棶棰�: "; - free(head); - head = nullptr; - return ; - } - free(head); - head = nullptr; - QFile *pFile = new QFile(file); - if(!pFile){ - return; - } - - // 璇绘枃浠跺唴瀹� - - if (!pFile->open(QIODevice::ReadOnly)) { - qDebug() << "Failed to open file for reading:" << pFile->errorString(); - m_msg->warning(nullptr, "鎻愮ず", "鏂囦欢鎵撳紑澶辫触"); - return; - } - const int bufferSize = 8 * 1024; - char buffer[bufferSize] = {0}; - - qint64 totalBytesRead = 0; - int flag = 0; - while (!pFile->atEnd()) { - qint64 bytesRead = pFile->read(buffer, bufferSize); - if (bytesRead == -1) { - qDebug() << "Error during read operation:" << pFile->errorString(); - break; + return; } - totalBytesRead += bytesRead; - int dtlen = sizeof(UpLoadPkgData)+fileName.size()+bytesRead+2; - UpLoadPkgData *dataPkg = (UpLoadPkgData *)malloc(dtlen); - memset(dataPkg, 0, dtlen); - dataPkg->head.len = len; - dataPkg->head.type = UPLOAD_REQ; - dataPkg->upLoadType = DATA_UPLOAD_REQ; - dataPkg->fileNameLen = fileName.size(); - dataPkg->dataLen = bytesRead; - dataPkg->flag = ++flag; - memcpy(dataPkg->data,fileName.data(),fileName.size()); - dataPkg->data[fileName.size()] = '\0'; - strcpy(&(dataPkg->data[fileName.size()+1]),buffer); - ret = m_upLoad->upfile((char*)dataPkg,dtlen); - if(ret < dtlen){ - qDebug()<<"鏁版嵁浼犺緭鏈夐棶棰�"; - free(dataPkg); - dataPkg = nullptr; - m_msg->warning(nullptr, "鎻愮ず", "鏁版嵁浼犺緭鏈夐棶棰�"); - return ; + int ret = m_upLoad->upfile(buf, len); // 澶勭悊鏁版嵁 + if(ret < len){ + qDebug()<<"浼犺緭鏈夐棶棰�"; } - free(dataPkg); - dataPkg = nullptr; - } - if(totalBytesRead != size){ - qDebug()<<"鏁版嵁鍙戦�佷笉瀹屾暣"; - m_msg->warning(nullptr, "鎻愮ず", "鏁版嵁鍙戦�佷笉瀹屾暣"); - return; - } - qDebug()<<"鏁版嵁鍙戦�佸畬鎴愶紝鍙戦�佹暟鎹簱鍖�"; - - int finLen = sizeof(UpLoadPkgFin)+fileName.size()+versionMessage.size()+2; - UpLoadPkgFin *finPkg = (UpLoadPkgFin *)malloc(finLen); - finPkg->head.len = finLen; - finPkg->head.type = UPLOAD_REQ; - finPkg->fileNameLen = fileName.size(); - finPkg->cnt = flag; - memcpy(finPkg->fileName,fileName.data(),fileName.size()); - finPkg->fileName[fileName.size()] = '\0'; - memcpy(&(finPkg->fileName[fileName.size()+1]),versionMessage.data(),versionMessage.size()); - finPkg->fileName[fileName.size()+versionMessage.size()+1] = '\0'; - - ret = m_upLoad->upfile((char*)finPkg,finLen); - if(ret < finLen){ - qDebug()<<"fin鍖呬紶杈撴湁闂"; - free(finPkg); - finPkg = nullptr; - m_msg->warning(nullptr, "鎻愮ず", "涓婁紶澶辫触锛�"); - return ; - } - free(finPkg); - finPkg = nullptr; - qDebug()<<"鏁版嵁搴撳寘鍙戦�佸畬鎴�"; - - m_msg->information(nullptr, "鎻愮ず", "涓婁紶鎴愬姛锛�"); } + +void VCSMainWindow::msgSlot(QString msg) +{ + m_msg->information(this,"鎻愮ず",msg); +} + -- Gitblit v1.8.0