diff options
author | saturneric <[email protected]> | 2024-01-18 12:58:37 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-01-18 12:58:37 +0000 |
commit | e0d2c4021483e6e1366c1050ccb5a30e53e172bb (patch) | |
tree | 5d85739479622e7c672aea45f84d4e2f577f9332 /src/core/utils/AsyncUtils.cpp | |
parent | fix: correct a fault (diff) | |
download | GpgFrontend-e0d2c4021483e6e1366c1050ccb5a30e53e172bb.tar.gz GpgFrontend-e0d2c4021483e6e1366c1050ccb5a30e53e172bb.zip |
fix: add test cases and solve discovered issues
Diffstat (limited to 'src/core/utils/AsyncUtils.cpp')
-rw-r--r-- | src/core/utils/AsyncUtils.cpp | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/src/core/utils/AsyncUtils.cpp b/src/core/utils/AsyncUtils.cpp index 6100b83d..40c2ece1 100644 --- a/src/core/utils/AsyncUtils.cpp +++ b/src/core/utils/AsyncUtils.cpp @@ -36,15 +36,18 @@ namespace GpgFrontend { -auto RunGpgOperaAsync(GpgOperaRunnable runnable, GpgOperationCallback callback, +auto RunGpgOperaAsync(const GpgOperaRunnable& runnable, + const GpgOperationCallback& callback, const QString& operation, const QString& minial_version) -> 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); + GF_CORE_LOG_DEBUG("got gnupg version from rt: {}, operation: {}", + gnupg_version, operation); - if (CompareSoftwareVersion(gnupg_version, "2.0.15") < 0) { - GF_CORE_LOG_ERROR("operator not support"); + if (CompareSoftwareVersion(gnupg_version, minial_version) < 0) { + GF_CORE_LOG_ERROR("operaton {} not support for gnupg version: {}", + operation, gnupg_version); callback(GPG_ERR_NOT_SUPPORTED, TransferParams()); return Thread::Task::TaskHandler(nullptr); } @@ -74,7 +77,27 @@ auto RunGpgOperaAsync(GpgOperaRunnable runnable, GpgOperationCallback callback, return handler; } -auto RunIOOperaAsync(OperaRunnable runnable, OperationCallback callback, +auto RunGpgOperaSync(const GpgOperaRunnable& runnable, const QString& operation, + const QString& minial_version) + -> std::tuple<GpgError, DataObjectPtr> { + const auto gnupg_version = Module::RetrieveRTValueTypedOrDefault<>( + "core", "gpgme.ctx.gnupg_version", minial_version); + GF_CORE_LOG_DEBUG("got gnupg version from rt: {}, operation: {}", + gnupg_version, operation); + + if (CompareSoftwareVersion(gnupg_version, minial_version) < 0) { + GF_CORE_LOG_ERROR("operaton {} not support for gnupg version: {}", + operation, gnupg_version); + return {GPG_ERR_NOT_SUPPORTED, TransferParams()}; + } + + auto data_object = TransferParams(); + auto err = runnable(data_object); + return {err, data_object}; +} + +auto RunIOOperaAsync(const OperaRunnable& runnable, + const OperationCallback& callback, const QString& operation) -> Thread::Task::TaskHandler { auto handler = Thread::TaskRunnerGetter::GetInstance() |