diff options
author | saturneric <[email protected]> | 2023-12-30 11:55:20 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2023-12-30 11:55:20 +0000 |
commit | 9f7593eab9b2d6f6fa6d76a303975b355b6ab458 (patch) | |
tree | 551f1dde32177137962ef1fcfed9e09d188ab36c /src/core/utils/AsyncUtils.cpp | |
parent | feat: add simple archiving functions for encrypt and decrypt (diff) | |
download | GpgFrontend-9f7593eab9b2d6f6fa6d76a303975b355b6ab458.tar.gz GpgFrontend-9f7593eab9b2d6f6fa6d76a303975b355b6ab458.zip |
feat: do not load entire data to memory in libarchive operations
Diffstat (limited to 'src/core/utils/AsyncUtils.cpp')
-rw-r--r-- | src/core/utils/AsyncUtils.cpp | 56 |
1 files changed, 26 insertions, 30 deletions
diff --git a/src/core/utils/AsyncUtils.cpp b/src/core/utils/AsyncUtils.cpp index 4de7fa1e..d414ac99 100644 --- a/src/core/utils/AsyncUtils.cpp +++ b/src/core/utils/AsyncUtils.cpp @@ -49,43 +49,39 @@ void RunGpgOperaAsync(GpgOperaRunnable runnable, GpgOperationCallback callback, return; } - auto* task = new Thread::Task( - [=](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; - }, - operation, TransferParams(), - [=](int, const DataObjectPtr& data_object) { - callback(ExtractParams<GpgError>(data_object, 0), - ExtractParams<DataObjectPtr>(data_object, 1)); - }); - Thread::TaskRunnerGetter::GetInstance() .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_GPG) - ->PostTask(task); + ->PostTask( + [=](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()); } void RunIOOperaAsync(OperaRunnable runnable, OperationCallback callback, const std::string& operation) { - auto* task = new Thread::Task( - [=](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; - }, - operation, TransferParams(), - [=](int, const DataObjectPtr& data_object) { - callback(ExtractParams<GFError>(data_object, 0), - ExtractParams<DataObjectPtr>(data_object, 1)); - }); - Thread::TaskRunnerGetter::GetInstance() .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_IO) - ->PostTask(task); + ->PostTask( + [=](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()); } } // namespace GpgFrontend
\ No newline at end of file |