trans: success to trans one file.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(frelay VERSION 0.1.1 LANGUAGES CXX)
|
project(frelay VERSION 0.1.2 LANGUAGES CXX)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ void ClientCore::UseFrame(QSharedPointer<FrameBuffer> frame)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FrameBufferType::FBT_SER_MSG_FORWARD_FAILED: {
|
case FrameBufferType::FBT_SER_MSG_FORWARD_FAILED: {
|
||||||
|
qCritical() << QString(tr("************************** forward failed."));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FrameBufferType::FBT_CLI_REQ_SEND: {
|
case FrameBufferType::FBT_CLI_REQ_SEND: {
|
||||||
@@ -111,31 +112,31 @@ void ClientCore::UseFrame(QSharedPointer<FrameBuffer> frame)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FrameBufferType::FBT_CLI_TRANS_DONE: {
|
case FrameBufferType::FBT_CLI_TRANS_DONE: {
|
||||||
sigTransDone(frame);
|
emit sigTransDone(frame);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FrameBufferType::FBT_CLI_CAN_SEND: {
|
case FrameBufferType::FBT_CLI_CAN_SEND: {
|
||||||
sigCanSend(frame);
|
emit sigCanSend(frame);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FrameBufferType::FBT_CLI_CANOT_SEND: {
|
case FrameBufferType::FBT_CLI_CANOT_SEND: {
|
||||||
sigCanotSend(frame);
|
emit sigCanotSend(frame);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FBT_CLI_CANOT_DOWN: {
|
case FBT_CLI_CANOT_DOWN: {
|
||||||
sigCanotDown(frame);
|
emit sigCanotDown(frame);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FBT_CLI_CAN_DOWN: {
|
case FBT_CLI_CAN_DOWN: {
|
||||||
sigCanDown(frame);
|
emit sigCanDown(frame);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FBT_CLI_FILE_BUFFER: {
|
case FBT_CLI_FILE_BUFFER: {
|
||||||
sigFileBuffer(frame);
|
emit sigFileBuffer(frame);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FBT_CLI_TRANS_FAILED: {
|
case FBT_CLI_TRANS_FAILED: {
|
||||||
sigTransFailed(frame);
|
emit sigTransFailed(frame);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ void FileTrans::ReqSendFile(const TransTask& task)
|
|||||||
sendTask_->state = TaskState::STATE_RUNNING;
|
sendTask_->state = TaskState::STATE_RUNNING;
|
||||||
sendTask_->totalSize = info.size;
|
sendTask_->totalSize = info.size;
|
||||||
sendTask_->tranSize = 0;
|
sendTask_->tranSize = 0;
|
||||||
|
sendTask_->task = task;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileTrans::ReqDownFile(const TransTask& task)
|
void FileTrans::ReqDownFile(const TransTask& task)
|
||||||
@@ -269,14 +270,15 @@ SendThread::SendThread(ClientCore* clientCore) : cliCore_(clientCore)
|
|||||||
void SendThread::run()
|
void SendThread::run()
|
||||||
{
|
{
|
||||||
// task's file shoule be already opened.
|
// task's file shoule be already opened.
|
||||||
auto frame = QSharedPointer<FrameBuffer>::create();
|
|
||||||
frame->tid = task_->task.remoteId;
|
|
||||||
frame->type = FBT_CLI_FILE_BUFFER;
|
|
||||||
frame->call = [this](QSharedPointer<FrameBuffer> frame) { sendCall(frame); };
|
|
||||||
|
|
||||||
isSuccess_ = true;
|
isSuccess_ = true;
|
||||||
while (!task_->file.atEnd()) {
|
while (!task_->file.atEnd()) {
|
||||||
|
|
||||||
|
auto frame = QSharedPointer<FrameBuffer>::create();
|
||||||
|
frame->tid = task_->task.remoteId;
|
||||||
|
frame->type = FBT_CLI_FILE_BUFFER;
|
||||||
|
frame->call = [this](QSharedPointer<FrameBuffer> frame) { sendCall(frame); };
|
||||||
frame->data.resize(CHUNK_BUF_SIZE);
|
frame->data.resize(CHUNK_BUF_SIZE);
|
||||||
|
|
||||||
auto br = task_->file.read(frame->data.data(), CHUNK_BUF_SIZE);
|
auto br = task_->file.read(frame->data.data(), CHUNK_BUF_SIZE);
|
||||||
if (br == -1) {
|
if (br == -1) {
|
||||||
qCritical() << QString(tr("read file failed: %1")).arg(task_->file.errorString());
|
qCritical() << QString(tr("read file failed: %1")).arg(task_->file.errorString());
|
||||||
@@ -303,6 +305,15 @@ void SendThread::run()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (curSendCount_ > 0) {
|
||||||
|
QThread::msleep(1);
|
||||||
|
// shoule add abort action mark.
|
||||||
|
}
|
||||||
|
|
||||||
|
InfoMsg info;
|
||||||
|
auto f = cliCore_->GetBuffer(info, FBT_CLI_TRANS_DONE, task_->task.remoteId);
|
||||||
|
ClientCore::asyncInvoke(cliCore_, [this, f]() { return cliCore_->Send(f); });
|
||||||
task_->file.close();
|
task_->file.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "CompareControl.h"
|
#include "CompareControl.h"
|
||||||
|
|
||||||
#include "ui_CompareControl.h"
|
#include "ui_CompareControl.h"
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ void TransForm::SetClientCore(ClientCore* clientCore)
|
|||||||
|
|
||||||
void TransForm::SetTasks(const QVector<TransTask>& tasks)
|
void TransForm::SetTasks(const QVector<TransTask>& tasks)
|
||||||
{
|
{
|
||||||
exis_ = true;
|
|
||||||
tasks_ = tasks;
|
tasks_ = tasks;
|
||||||
|
exis_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransForm::startTask()
|
void TransForm::startTask()
|
||||||
@@ -75,6 +75,8 @@ void TransForm::startTask()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
tasks_.clear();
|
||||||
|
qDebug() << "TransForm::startTask exit....";
|
||||||
}
|
}
|
||||||
|
|
||||||
void TransForm::setProgress(double val)
|
void TransForm::setProgress(double val)
|
||||||
@@ -111,7 +113,13 @@ void TransForm::showEvent(QShowEvent* event)
|
|||||||
{
|
{
|
||||||
QDialog::showEvent(event);
|
QDialog::showEvent(event);
|
||||||
workTh_ = new TranFromTh(this, this);
|
workTh_ = new TranFromTh(this, this);
|
||||||
fileTrans_->moveToThread(workTh_);
|
//fileTrans_->moveToThread(workTh_);
|
||||||
connect(workTh_, &QThread::finished, fileTrans_, &QObject::deleteLater);
|
connect(workTh_, &QThread::finished, workTh_, &QObject::deleteLater);
|
||||||
workTh_->start();
|
workTh_->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TransForm::closeEvent(QCloseEvent* event)
|
||||||
|
{
|
||||||
|
exis_ = true;
|
||||||
|
QDialog::closeEvent(event);
|
||||||
|
}
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ private:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
void showEvent(QShowEvent* event) override;
|
void showEvent(QShowEvent* event) override;
|
||||||
|
void closeEvent(QCloseEvent* event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool exis_{ false };
|
bool exis_{ false };
|
||||||
@@ -57,7 +58,6 @@ public:
|
|||||||
explicit TranFromTh(TransForm* tf, QObject* parent = nullptr) : QThread(parent), tf_(tf)
|
explicit TranFromTh(TransForm* tf, QObject* parent = nullptr) : QThread(parent), tf_(tf)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void run() override
|
void run() override
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ int main(int argc, char* argv[])
|
|||||||
QFont font("Microsoft YaHei", 9);
|
QFont font("Microsoft YaHei", 9);
|
||||||
a.setFont(font);
|
a.setFont(font);
|
||||||
a.setWindowIcon(QIcon(":/ico/main.ico"));
|
a.setWindowIcon(QIcon(":/ico/main.ico"));
|
||||||
//a.setStyle("Windows");
|
a.setStyle("Windows");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
frelayGUI w;
|
frelayGUI w;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "Server.h"
|
#include "Server.h"
|
||||||
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
@@ -130,7 +130,6 @@ void Server::processClientData(QSharedPointer<ClientInfo> client)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
frame->fid = client->id;
|
frame->fid = client->id;
|
||||||
|
|
||||||
if (frame->type <= 30) {
|
if (frame->type <= 30) {
|
||||||
frame->tid = "server";
|
frame->tid = "server";
|
||||||
replyRequest(client, frame);
|
replyRequest(client, frame);
|
||||||
@@ -145,6 +144,7 @@ void Server::processClientData(QSharedPointer<ClientInfo> client)
|
|||||||
bool Server::forwardData(QSharedPointer<ClientInfo> client, QSharedPointer<FrameBuffer> frame)
|
bool Server::forwardData(QSharedPointer<ClientInfo> client, QSharedPointer<FrameBuffer> frame)
|
||||||
{
|
{
|
||||||
QSharedPointer<ClientInfo> targetClient;
|
QSharedPointer<ClientInfo> targetClient;
|
||||||
|
|
||||||
{
|
{
|
||||||
QReadLocker locker(&rwLock_);
|
QReadLocker locker(&rwLock_);
|
||||||
targetClient = clients_.value(frame->tid);
|
targetClient = clients_.value(frame->tid);
|
||||||
|
|||||||
Reference in New Issue
Block a user