aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/utils/AsyncUtils.cpp
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-01-18 12:58:37 +0000
committersaturneric <[email protected]>2024-01-18 12:58:37 +0000
commite0d2c4021483e6e1366c1050ccb5a30e53e172bb (patch)
tree5d85739479622e7c672aea45f84d4e2f577f9332 /src/core/utils/AsyncUtils.cpp
parentfix: correct a fault (diff)
downloadGpgFrontend-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.cpp33
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()