diff options
Diffstat (limited to 'src/core/utils/AsyncUtils.cpp')
-rw-r--r-- | src/core/utils/AsyncUtils.cpp | 73 |
1 files changed, 39 insertions, 34 deletions
diff --git a/src/core/utils/AsyncUtils.cpp b/src/core/utils/AsyncUtils.cpp index f5289b19..15979f2b 100644 --- a/src/core/utils/AsyncUtils.cpp +++ b/src/core/utils/AsyncUtils.cpp @@ -38,7 +38,7 @@ namespace GpgFrontend { auto RunGpgOperaAsync(GpgOperaRunnable runnable, GpgOperationCallback callback, const QString& operation, const QString& minial_version) - -> std::tuple<QPointer<Thread::Task>, Thread::Task::TaskTrigger> { + -> Thread::Task::TaskHandler { const auto gnupg_version = Module::RetrieveRTValueTypedOrDefault<>( "core", "gpgme.ctx.gnupg_version", minial_version); GF_CORE_LOG_DEBUG("got gnupg version from rt: {}", gnupg_version); @@ -46,45 +46,50 @@ auto RunGpgOperaAsync(GpgOperaRunnable runnable, GpgOperationCallback callback, if (CompareSoftwareVersion(gnupg_version, "2.0.15") < 0) { GF_CORE_LOG_ERROR("operator not support"); callback(GPG_ERR_NOT_SUPPORTED, TransferParams()); - return {nullptr, {}}; + return Thread::Task::TaskHandler(nullptr); } - return Thread::TaskRunnerGetter::GetInstance() - .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_GPG) - ->RegisterTask( - operation, - [=](const DataObjectPtr& data_object) -> int { - auto custom_data_object = TransferParams(); - GpgError err = runnable(custom_data_object); + auto handler = + Thread::TaskRunnerGetter::GetInstance() + .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_GPG) + ->RegisterTask( + operation, + [=](const DataObjectPtr& data_object) -> int { + auto custom_data_object = TransferParams(); + GpgError err = runnable(custom_data_object); - data_object->Swap({err, custom_data_object}); - return 0; - }, - [=](int, const DataObjectPtr& data_object) { - callback(ExtractParams<GpgError>(data_object, 0), - ExtractParams<DataObjectPtr>(data_object, 1)); - }, - TransferParams()); + data_object->Swap({err, custom_data_object}); + return 0; + }, + [=](int, const DataObjectPtr& data_object) { + callback(ExtractParams<GpgError>(data_object, 0), + ExtractParams<DataObjectPtr>(data_object, 1)); + }, + TransferParams()); + handler.Start(); + return handler; } auto RunIOOperaAsync(OperaRunnable runnable, OperationCallback callback, - const QString& operation) - -> std::tuple<QPointer<Thread::Task>, Thread::Task::TaskTrigger> { - return Thread::TaskRunnerGetter::GetInstance() - .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_IO) - ->RegisterTask( - operation, - [=](const DataObjectPtr& data_object) -> int { - auto custom_data_object = TransferParams(); - GpgError err = runnable(custom_data_object); + const QString& operation) -> Thread::Task::TaskHandler { + auto handler = + Thread::TaskRunnerGetter::GetInstance() + .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_IO) + ->RegisterTask( + operation, + [=](const DataObjectPtr& data_object) -> int { + auto custom_data_object = TransferParams(); + GpgError err = runnable(custom_data_object); - data_object->Swap({err, custom_data_object}); - return 0; - }, - [=](int, const DataObjectPtr& data_object) { - callback(ExtractParams<GFError>(data_object, 0), - ExtractParams<DataObjectPtr>(data_object, 1)); - }, - TransferParams()); + data_object->Swap({err, custom_data_object}); + return 0; + }, + [=](int, const DataObjectPtr& data_object) { + callback(ExtractParams<GFError>(data_object, 0), + ExtractParams<DataObjectPtr>(data_object, 1)); + }, + TransferParams()); + handler.Start(); + return handler; } } // namespace GpgFrontend
\ No newline at end of file |