From 8c16677f55fe27708fcccf22cab772b1abd514ba Mon Sep 17 00:00:00 2001
From: mmhguo <604881159@qq.com>
Date: 星期三, 30 七月 2025 09:20:11 +0800
Subject: [PATCH] Merge branch 'master' of ssh://115.28.86.8:29418/~admin/天开景运_0405_250719 0729

---
 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