| | |
| | | |
| | | #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) |
| | |
| | | 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() |
| | |
| | | ui->stackedWidget->setCurrentWidget(m_addFile); |
| | | } |
| | | |
| | | // ä¸ä¼ |
| | | void VCSMainWindow::on_pushButton_2_clicked() |
| | | { |
| | | ui->stackedWidget->setCurrentWidget(m_release); |
| | | emit releaseSignal(); |
| | | } |
| | | |
| | | void VCSMainWindow::on_pushButton_4_clicked() |
| | |
| | | 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); |
| | | } |
| | | |