aboutsummaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/function/ArchiveFileOperator.cpp2
-rw-r--r--src/core/function/CacheManager.cpp86
-rw-r--r--src/core/function/CacheManager.h70
-rw-r--r--src/core/function/GlobalSettingStation.cpp56
-rw-r--r--src/core/function/GlobalSettingStation.h21
-rw-r--r--src/core/function/KeyPackageOperator.cpp6
-rw-r--r--src/core/function/gpg/GpgAdvancedOperator.h10
-rw-r--r--src/core/function/gpg/GpgCommandExecutor.cpp7
-rw-r--r--src/core/function/gpg/GpgContext.cpp8
-rw-r--r--src/core/function/gpg/GpgFileOpera.cpp6
-rw-r--r--src/core/model/GpgPassphraseContext.cpp7
-rw-r--r--src/core/model/GpgPassphraseContext.h5
-rw-r--r--src/core/module/ModuleManager.cpp1
-rw-r--r--src/core/utils/AsyncUtils.cpp24
-rw-r--r--src/core/utils/CacheUtils.cpp16
-rw-r--r--src/core/utils/CacheUtils.h7
16 files changed, 179 insertions, 153 deletions
diff --git a/src/core/function/ArchiveFileOperator.cpp b/src/core/function/ArchiveFileOperator.cpp
index 60b8b004..a4b90698 100644
--- a/src/core/function/ArchiveFileOperator.cpp
+++ b/src/core/function/ArchiveFileOperator.cpp
@@ -32,8 +32,6 @@
#include <archive_entry.h>
#include <sys/fcntl.h>
-#include <fstream>
-
#include "core/utils/AsyncUtils.h"
namespace GpgFrontend {
diff --git a/src/core/function/CacheManager.cpp b/src/core/function/CacheManager.cpp
index 58adede4..719c962d 100644
--- a/src/core/function/CacheManager.cpp
+++ b/src/core/function/CacheManager.cpp
@@ -30,6 +30,7 @@
#include <algorithm>
#include <shared_mutex>
+#include <utility>
#include "core/function/DataObjectOperator.h"
#include "core/utils/MemoryUtils.h"
@@ -101,9 +102,9 @@ class CacheManager::Impl : public QObject {
load_all_cache_storage();
}
- void SaveCache(QString key, const QJsonDocument& value, bool flush) {
+ void SaveDurableCache(QString key, const QJsonDocument& value, bool flush) {
auto data_object_key = get_data_object_key(key);
- cache_storage_.insert(key, value);
+ durable_cache_storage_.insert(key, value);
if (!key_storage_.contains(key)) {
GF_CORE_LOG_DEBUG("register new key of cache", key);
@@ -113,36 +114,50 @@ class CacheManager::Impl : public QObject {
if (flush) slot_flush_cache_storage();
}
- auto LoadCache(const QString& key) -> QJsonDocument {
+ auto LoadDurableCache(const QString& key) -> QJsonDocument {
auto data_object_key = get_data_object_key(key);
- if (!cache_storage_.exists(key)) {
- cache_storage_.insert(key, load_cache_storage(key, {}));
+ if (!durable_cache_storage_.exists(key)) {
+ durable_cache_storage_.insert(key, load_cache_storage(key, {}));
}
- auto cache = cache_storage_.get(key);
+ auto cache = durable_cache_storage_.get(key);
if (cache.has_value()) return cache.value();
return {};
}
- auto LoadCache(const QString& key, QJsonDocument default_value)
+ auto LoadDurableCache(const QString& key, QJsonDocument default_value)
-> QJsonDocument {
auto data_object_key = get_data_object_key(key);
- if (!cache_storage_.exists(key)) {
- cache_storage_.insert(key,
- load_cache_storage(key, std::move(default_value)));
+ if (!durable_cache_storage_.exists(key)) {
+ durable_cache_storage_.insert(
+ key, load_cache_storage(key, std::move(default_value)));
}
- auto cache = cache_storage_.get(key);
+ auto cache = durable_cache_storage_.get(key);
if (cache.has_value()) return cache.value();
return {};
}
- auto ResetCache(const QString& key) -> bool {
+ auto ResetDurableCache(const QString& key) -> bool {
auto data_object_key = get_data_object_key(key);
- return cache_storage_.remove(key);
+ return durable_cache_storage_.remove(key);
}
+ void FlushCacheStorage() { this->slot_flush_cache_storage(); }
+
+ void SaveCache(const QString& key, QString value) {
+ runtime_cache_storage_.insert(key, new QString(std::move(value)));
+ }
+
+ auto LoadCache(const QString& key) -> QString {
+ auto* value = runtime_cache_storage_.object(key);
+ if (value == nullptr) return {};
+ return *value;
+ }
+
+ void ResetCache(const QString& key) { runtime_cache_storage_.remove(key); }
+
private slots:
/**
@@ -150,7 +165,7 @@ class CacheManager::Impl : public QObject {
*
*/
void slot_flush_cache_storage() {
- for (const auto& cache : cache_storage_.mirror()) {
+ for (const auto& cache : durable_cache_storage_.mirror()) {
auto key = get_data_object_key(cache.first);
GF_CORE_LOG_TRACE("save cache into filesystem, key {}", key);
GpgFrontend::DataObjectOperator::GetInstance().SaveDataObj(
@@ -161,7 +176,8 @@ class CacheManager::Impl : public QObject {
}
private:
- ThreadSafeMap<QString, QJsonDocument> cache_storage_;
+ QCache<QString, QString> runtime_cache_storage_;
+ ThreadSafeMap<QString, QJsonDocument> durable_cache_storage_;
QJsonArray key_storage_;
QTimer* flush_timer_;
const QString drk_key_ = "__cache_manage_data_register_key_list";
@@ -172,7 +188,7 @@ class CacheManager::Impl : public QObject {
* @param key
* @return QString
*/
- static auto get_data_object_key(QString key) -> QString {
+ static auto get_data_object_key(const QString& key) -> QString {
return QString("__cache_data_%1").arg(key);
}
@@ -183,9 +199,9 @@ class CacheManager::Impl : public QObject {
* @param default_value
* @return QJsonObject
*/
- static auto load_cache_storage(QString key, QJsonDocument default_value)
- -> QJsonDocument {
- auto data_object_key = get_data_object_key(std::move(key));
+ static auto load_cache_storage(const QString& key,
+ QJsonDocument default_value) -> QJsonDocument {
+ auto data_object_key = get_data_object_key(key);
auto stored_data =
GpgFrontend::DataObjectOperator::GetInstance().GetDataObject(
data_object_key);
@@ -231,26 +247,38 @@ CacheManager::CacheManager(int channel)
: SingletonFunctionObject<CacheManager>(channel),
p_(SecureCreateUniqueObject<Impl>()) {}
-CacheManager::~CacheManager() = default;
+CacheManager::~CacheManager() { p_->FlushCacheStorage(); }
-void CacheManager::SaveCache(QString key, const QJsonDocument& value,
- bool flush) {
- p_->SaveCache(std::move(key), value, flush);
+void CacheManager::SaveDurableCache(const QString& key,
+ const QJsonDocument& value, bool flush) {
+ p_->SaveDurableCache(key, value, flush);
}
-auto CacheManager::LoadCache(QString key) -> QJsonDocument {
- return p_->LoadCache(key);
+auto CacheManager::LoadDurableCache(const QString& key) -> QJsonDocument {
+ return p_->LoadDurableCache(key);
}
-auto CacheManager::LoadCache(QString key, QJsonDocument default_value)
+auto CacheManager::LoadDurableCache(const QString& key,
+ QJsonDocument default_value)
-> QJsonDocument {
- return p_->LoadCache(key, std::move(default_value));
+ return p_->LoadDurableCache(key, std::move(default_value));
}
-auto CacheManager::ResetCache(QString key) -> bool {
- return p_->ResetCache(key);
+auto CacheManager::ResetDurableCache(const QString& key) -> bool {
+ return p_->ResetDurableCache(key);
+}
+
+void CacheManager::SaveCache(const QString& key, QString value) {
+ p_->SaveCache(key, std::move(value));
+}
+
+auto CacheManager::LoadCache(const QString& key) -> QString {
+ return p_->LoadCache(key);
}
+void CacheManager::ResetCache(const QString& key) {
+ return p_->ResetCache(key);
+}
} // namespace GpgFrontend
#include "CacheManager.moc" \ No newline at end of file
diff --git a/src/core/function/CacheManager.h b/src/core/function/CacheManager.h
index 96496648..67e7fd75 100644
--- a/src/core/function/CacheManager.h
+++ b/src/core/function/CacheManager.h
@@ -35,18 +35,80 @@ namespace GpgFrontend {
class GPGFRONTEND_CORE_EXPORT CacheManager
: public SingletonFunctionObject<CacheManager> {
public:
+ /**
+ * @brief Construct a new Cache Manager object
+ *
+ * @param channel
+ */
explicit CacheManager(
int channel = SingletonFunctionObject::GetDefaultChannel());
+ /**
+ * @brief Destroy the Cache Manager object
+ *
+ */
~CacheManager() override;
- void SaveCache(QString key, const QJsonDocument& value, bool flush = false);
+ /**
+ * @brief
+ *
+ * @param key
+ * @param value
+ */
+ void SaveCache(const QString& key, QString value);
- auto LoadCache(QString key) -> QJsonDocument;
+ /**
+ * @brief
+ *
+ * @param key
+ * @param value
+ * @param flush
+ */
+ void SaveDurableCache(const QString& key, const QJsonDocument& value,
+ bool flush = false);
- auto LoadCache(QString key, QJsonDocument default_value) -> QJsonDocument;
+ /**
+ * @brief
+ *
+ * @param key
+ * @param value
+ */
+ auto LoadCache(const QString& key) -> QString;
- auto ResetCache(QString key) -> bool;
+ /**
+ * @brief
+ *
+ * @param key
+ * @return QJsonDocument
+ */
+ auto LoadDurableCache(const QString& key) -> QJsonDocument;
+
+ /**
+ * @brief
+ *
+ * @param key
+ * @param default_value
+ * @return QJsonDocument
+ */
+ auto LoadDurableCache(const QString& key, QJsonDocument default_value)
+ -> QJsonDocument;
+
+ /**
+ * @brief
+ *
+ * @param key
+ * @return auto
+ */
+ void ResetCache(const QString& key);
+
+ /**
+ * @brief
+ *
+ * @param key
+ * @return true
+ * @return false
+ */
+ auto ResetDurableCache(const QString& key) -> bool;
private:
class Impl;
diff --git a/src/core/function/GlobalSettingStation.cpp b/src/core/function/GlobalSettingStation.cpp
index 04129186..0158e8b3 100644
--- a/src/core/function/GlobalSettingStation.cpp
+++ b/src/core/function/GlobalSettingStation.cpp
@@ -70,7 +70,6 @@ class GlobalSettingStation::Impl {
GF_CORE_LOG_INFO("app data path: {}", app_data_path_);
GF_CORE_LOG_INFO("app log path: {}", app_log_path_);
- GF_CORE_LOG_INFO("app locale path: {}", app_locale_path_);
GF_CORE_LOG_INFO("app log files total size: {}", GetLogFilesSize());
GF_CORE_LOG_INFO("app data objects files total size: {}",
@@ -127,33 +126,6 @@ class GlobalSettingStation::Impl {
*/
[[nodiscard]] auto GetLogDir() const -> QString { return app_log_path_; }
- /**
- * @brief Get the Locale Dir object
- *
- * @return QString
- */
- [[nodiscard]] auto GetLocaleDir() const -> QString {
- return app_locale_path_;
- }
-
- /**
- * @brief Get the Resource Dir object
- *
- * @return QString
- */
- [[nodiscard]] auto GetResourceDir() const -> QString {
- return app_resource_path_;
- }
-
- /**
- * @brief Get the Certs Dir object
- *
- * @return QString
- */
- [[nodiscard]] auto GetCertsDir() const -> QString {
- return app_resource_path_ + "/certs";
- }
-
private:
QString working_path_ = QDir::currentPath();
@@ -165,22 +137,6 @@ class GlobalSettingStation::Impl {
QString app_data_objs_path_ =
app_data_path_ + "/data_objs"; ///< Object storage path
-#ifdef LINUX_INSTALL_BUILD
- QString app_resource_path_ =
- QString(APP_LOCALSTATE_PATH) / "gpgfrontend"; ///< Program Data Location
-#else
- QString app_resource_path_ =
- RESOURCE_DIR_PATH(GetAppDir()); ///< Program Data Location
-#endif
-
-#ifdef LINUX_INSTALL_BUILD
- QString app_locale_path_ =
- QString(APP_LOCALE_PATH); ///< Program Data Location
-#else
- QString app_locale_path_ =
- app_resource_path_ + "/locales"; ///< Program Data Location
-#endif
-
bool portable_mode_ = false; ///<
QString app_portable_config_path_ =
working_path_ + "/config.ini"; ///< take effect only in portable mode
@@ -214,18 +170,6 @@ auto GlobalSettingStation::GetAppDataPath() const -> QString {
return p_->GetLogDir();
}
-auto GlobalSettingStation::GetLocaleDir() const -> QString {
- return p_->GetLocaleDir();
-}
-
-auto GlobalSettingStation::GetResourceDir() const -> QString {
- return p_->GetResourceDir();
-}
-
-auto GlobalSettingStation::GetCertsDir() const -> QString {
- return p_->GetCertsDir();
-}
-
auto GlobalSettingStation::GetLogFilesSize() const -> QString {
return p_->GetLogFilesSize();
}
diff --git a/src/core/function/GlobalSettingStation.h b/src/core/function/GlobalSettingStation.h
index f8d3068e..85ac57b4 100644
--- a/src/core/function/GlobalSettingStation.h
+++ b/src/core/function/GlobalSettingStation.h
@@ -83,27 +83,6 @@ class GPGFRONTEND_CORE_EXPORT GlobalSettingStation
[[nodiscard]] auto GetLogDir() const -> QString;
/**
- * @brief Get the Locale Dir object
- *
- * @return QString
- */
- [[nodiscard]] auto GetLocaleDir() const -> QString;
-
- /**
- * @brief Get the Resource Dir object
- *
- * @return QString
- */
- [[nodiscard]] auto GetResourceDir() const -> QString;
-
- /**
- * @brief Get the Certs Dir object
- *
- * @return QString
- */
- [[nodiscard]] auto GetCertsDir() const -> QString;
-
- /**
* @brief Get the Log Files Size object
*
* @return QString
diff --git a/src/core/function/KeyPackageOperator.cpp b/src/core/function/KeyPackageOperator.cpp
index d15859a3..abb84512 100644
--- a/src/core/function/KeyPackageOperator.cpp
+++ b/src/core/function/KeyPackageOperator.cpp
@@ -64,8 +64,10 @@ void KeyPackageOperator::GenerateKeyPackage(const QString& key_package_path,
return;
}
- if (data_obj == nullptr || !data_obj->Check<GFBuffer>()) {
- throw std::runtime_error("data object doesn't pass checking");
+ if (CheckGpgError(err) == GPG_ERR_USER_1 || data_obj == nullptr ||
+ !data_obj->Check<GFBuffer>()) {
+ cb(-1, data_obj);
+ return;
}
auto gf_buffer = ExtractParams<GFBuffer>(data_obj, 0);
diff --git a/src/core/function/gpg/GpgAdvancedOperator.h b/src/core/function/gpg/GpgAdvancedOperator.h
index 4f6ba8bb..d6b57095 100644
--- a/src/core/function/gpg/GpgAdvancedOperator.h
+++ b/src/core/function/gpg/GpgAdvancedOperator.h
@@ -52,7 +52,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator {
* @return true
* @return false
*/
- static void ReloadGpgComponents(OperationCallback cb);
+ static void ReloadGpgComponents(OperationCallback);
/**
* @brief
@@ -68,7 +68,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator {
* @return true
* @return false
*/
- static void ResetConfigures(OperationCallback cb);
+ static void ResetConfigures(OperationCallback);
/**
* @brief
@@ -76,7 +76,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator {
* @return true
* @return false
*/
- static void StartGpgAgent(OperationCallback cb);
+ static void StartGpgAgent(OperationCallback);
/**
* @brief
@@ -84,7 +84,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator {
* @return true
* @return false
*/
- static void StartDirmngr(OperationCallback cb);
+ static void StartDirmngr(OperationCallback);
/**
* @brief
@@ -92,7 +92,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator {
* @return true
* @return false
*/
- static void StartKeyBoxd(OperationCallback cb);
+ static void StartKeyBoxd(OperationCallback);
};
} // namespace GpgFrontend
diff --git a/src/core/function/gpg/GpgCommandExecutor.cpp b/src/core/function/gpg/GpgCommandExecutor.cpp
index 886c70db..8c994515 100644
--- a/src/core/function/gpg/GpgCommandExecutor.cpp
+++ b/src/core/function/gpg/GpgCommandExecutor.cpp
@@ -27,7 +27,6 @@
*/
#include "GpgCommandExecutor.h"
-#include "core/function/basic/GpgFunctionObject.h"
#include "core/model/DataObject.h"
#include "core/module/Module.h"
#include "core/thread/Task.h"
@@ -53,7 +52,8 @@ auto BuildTaskFromExecCtx(const GpgCommandExecutor::ExecuteContext &context)
"data object args count of cmd executor result callback: {}",
data_object->GetObjectSize());
if (!data_object->Check<int, QString, GpgCommandExecutorCallback>()) {
- throw std::runtime_error("invalid data object size");
+ GF_CORE_LOG_ERROR("data object checking failed");
+ return;
}
auto exit_code = ExtractParams<int>(data_object, 0);
@@ -76,7 +76,8 @@ auto BuildTaskFromExecCtx(const GpgCommandExecutor::ExecuteContext &context)
if (!data_object->Check<QString, QStringList, GpgCommandExecutorInteractor,
GpgCommandExecutorCallback>()) {
- throw std::runtime_error("invalid data object size");
+ GF_CORE_LOG_ERROR("data object checking failed");
+ return -1;
}
// get arguments
diff --git a/src/core/function/gpg/GpgContext.cpp b/src/core/function/gpg/GpgContext.cpp
index 0849f240..104e254f 100644
--- a/src/core/function/gpg/GpgContext.cpp
+++ b/src/core/function/gpg/GpgContext.cpp
@@ -38,8 +38,9 @@
#include "core/function/basic/GpgFunctionObject.h"
#include "core/model/GpgPassphraseContext.h"
#include "core/module/ModuleManager.h"
+#include "core/utils/CacheUtils.h"
#include "core/utils/GpgUtils.h"
-#include "utils/MemoryUtils.h"
+#include "core/utils/MemoryUtils.h"
#ifdef _WIN32
#include <windows.h>
@@ -108,11 +109,13 @@ class GpgContext::Impl {
static auto CustomPassphraseCb(void *hook, const char *uid_hint,
const char *passphrase_info, int prev_was_bad,
int fd) -> gpgme_error_t {
+ auto context_cache = GetCacheValue("PinentryContext");
+ bool ask_for_new = context_cache == "NEW_PASSPHRASE";
auto context =
QSharedPointer<GpgPassphraseContext>(new GpgPassphraseContext(
uid_hint != nullptr ? uid_hint : "",
passphrase_info != nullptr ? passphrase_info : "",
- prev_was_bad != 0));
+ prev_was_bad != 0, ask_for_new));
GF_CORE_LOG_DEBUG(
"custom passphrase cb called, uid: {}, info: {}, last_was_bad: {}",
@@ -129,6 +132,7 @@ class GpgContext::Impl {
context);
looper.exec();
+ ResetCacheValue("PinentryContext");
auto passphrase = context->GetPassphrase().toStdString();
auto passpahrase_size = passphrase.size();
GF_CORE_LOG_DEBUG("get passphrase from pinentry size: {}",
diff --git a/src/core/function/gpg/GpgFileOpera.cpp b/src/core/function/gpg/GpgFileOpera.cpp
index a4663150..e3d47cf6 100644
--- a/src/core/function/gpg/GpgFileOpera.cpp
+++ b/src/core/function/gpg/GpgFileOpera.cpp
@@ -100,7 +100,8 @@ void GpgFileOpera::EncryptDirectory(std::vector<GpgKey> keys,
ArchiveFileOperator::NewArchive2DataExchanger(
in_path, ex, [=](GFError err, const DataObjectPtr&) {
- GF_CORE_LOG_DEBUG("new archive 2 fd operation, err: {}", err);
+ GF_CORE_LOG_DEBUG("new archive 2 data exchanger operation, err: {}",
+ err);
});
}
@@ -128,7 +129,8 @@ void GpgFileOpera::DecryptArchive(const QString& in_path,
ArchiveFileOperator::ExtractArchiveFromDataExchanger(
ex, out_path, [](GFError err, const DataObjectPtr&) {
- GF_CORE_LOG_DEBUG("extract archive from fd operation, err: {}", err);
+ GF_CORE_LOG_DEBUG(
+ "extract archive from data exchanger operation, err: {}", err);
});
RunGpgOperaAsync(
diff --git a/src/core/model/GpgPassphraseContext.cpp b/src/core/model/GpgPassphraseContext.cpp
index 45aab442..5df3f5a8 100644
--- a/src/core/model/GpgPassphraseContext.cpp
+++ b/src/core/model/GpgPassphraseContext.cpp
@@ -32,10 +32,11 @@ namespace GpgFrontend {
GpgPassphraseContext::GpgPassphraseContext(const QString& uids_info,
const QString& passphrase_info,
- bool prev_was_bad)
+ bool prev_was_bad, bool ask_for_new)
: passphrase_info_(passphrase_info),
uids_info_(uids_info),
- prev_was_bad_(prev_was_bad) {}
+ prev_was_bad_(prev_was_bad),
+ ask_for_new_(ask_for_new) {}
GpgPassphraseContext::GpgPassphraseContext() = default;
@@ -54,4 +55,6 @@ auto GpgPassphraseContext::GetPassphraseInfo() const -> QString {
}
auto GpgPassphraseContext::IsPreWasBad() const -> bool { return prev_was_bad_; }
+
+auto GpgPassphraseContext::IsAskForNew() const -> bool { return ask_for_new_; }
} // namespace GpgFrontend
diff --git a/src/core/model/GpgPassphraseContext.h b/src/core/model/GpgPassphraseContext.h
index 3e6ce4d0..2bc1ac75 100644
--- a/src/core/model/GpgPassphraseContext.h
+++ b/src/core/model/GpgPassphraseContext.h
@@ -36,7 +36,7 @@ class GPGFRONTEND_CORE_EXPORT GpgPassphraseContext : public QObject {
Q_OBJECT
public:
GpgPassphraseContext(const QString& uids_info, const QString& passphrase_info,
- bool prev_was_bad);
+ bool prev_was_bad, bool ask_for_new);
GpgPassphraseContext();
@@ -50,11 +50,14 @@ class GPGFRONTEND_CORE_EXPORT GpgPassphraseContext : public QObject {
[[nodiscard]] auto IsPreWasBad() const -> bool;
+ [[nodiscard]] auto IsAskForNew() const -> bool;
+
private:
QString passphrase_info_;
QString uids_info_;
QString passphrase_;
bool prev_was_bad_;
+ bool ask_for_new_;
};
} // namespace GpgFrontend \ No newline at end of file
diff --git a/src/core/module/ModuleManager.cpp b/src/core/module/ModuleManager.cpp
index fd65a0ab..83e7c1ff 100644
--- a/src/core/module/ModuleManager.cpp
+++ b/src/core/module/ModuleManager.cpp
@@ -35,7 +35,6 @@
#include "core/module/GlobalRegisterTable.h"
#include "core/module/Module.h"
#include "core/thread/Task.h"
-#include "core/thread/TaskRunner.h"
#include "function/SecureMemoryAllocator.h"
#include "function/basic/GpgFunctionObject.h"
#include "thread/TaskRunnerGetter.h"
diff --git a/src/core/utils/AsyncUtils.cpp b/src/core/utils/AsyncUtils.cpp
index 15979f2b..6100b83d 100644
--- a/src/core/utils/AsyncUtils.cpp
+++ b/src/core/utils/AsyncUtils.cpp
@@ -56,14 +56,18 @@ auto RunGpgOperaAsync(GpgOperaRunnable runnable, GpgOperationCallback callback,
operation,
[=](const DataObjectPtr& data_object) -> int {
auto custom_data_object = TransferParams();
- GpgError err = runnable(custom_data_object);
-
+ auto 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));
+ [=](int rtn, const DataObjectPtr& data_object) {
+ if (rtn < 0) {
+ callback(GPG_ERR_USER_1,
+ ExtractParams<DataObjectPtr>(data_object, 1));
+ } else {
+ callback(ExtractParams<GpgError>(data_object, 0),
+ ExtractParams<DataObjectPtr>(data_object, 1));
+ }
},
TransferParams());
handler.Start();
@@ -84,9 +88,13 @@ auto RunIOOperaAsync(OperaRunnable runnable, OperationCallback callback,
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));
+ [=](int rtn, const DataObjectPtr& data_object) {
+ if (rtn < 0) {
+ callback(-1, ExtractParams<DataObjectPtr>(data_object, 1));
+ } else {
+ callback(ExtractParams<GFError>(data_object, 0),
+ ExtractParams<DataObjectPtr>(data_object, 1));
+ }
},
TransferParams());
handler.Start();
diff --git a/src/core/utils/CacheUtils.cpp b/src/core/utils/CacheUtils.cpp
index 5e8657fa..e521870c 100644
--- a/src/core/utils/CacheUtils.cpp
+++ b/src/core/utils/CacheUtils.cpp
@@ -32,21 +32,15 @@
namespace GpgFrontend {
-void SetTempCacheValue(const QString& key, const QString& value) {
- QJsonDocument json;
- json.setObject(QJsonObject({{key, value}}));
- CacheManager::GetInstance().SaveCache(key, json);
+void SetCacheValue(const QString& key, QString value) {
+ CacheManager::GetInstance().SaveCache(key, std::move(value));
}
-auto GetTempCacheValue(const QString& key) -> QString {
- QJsonDocument json = CacheManager::GetInstance().LoadCache(key);
- if (!json.isObject()) return {};
- auto json_object = json.object();
- if (!json_object.contains(key) && json_object[key].isString()) return {};
- return json_object[key].toString();
+auto GetCacheValue(const QString& key) -> QString {
+ return CacheManager::GetInstance().LoadCache(key);
}
-void ResetTempCacheValue(const QString& key) {
+void ResetCacheValue(const QString& key) {
CacheManager::GetInstance().ResetCache(key);
}
diff --git a/src/core/utils/CacheUtils.h b/src/core/utils/CacheUtils.h
index 67a41335..48b9ac4b 100644
--- a/src/core/utils/CacheUtils.h
+++ b/src/core/utils/CacheUtils.h
@@ -34,8 +34,7 @@ namespace GpgFrontend {
* @brief set a temp cache under a certain key
*
*/
-void GPGFRONTEND_CORE_EXPORT SetTempCacheValue(const QString &,
- const QString &);
+void GPGFRONTEND_CORE_EXPORT SetCacheValue(const QString &key, QString value);
/**
* @brief after get the temp cache, its value will be imediately ease in
@@ -43,13 +42,13 @@ void GPGFRONTEND_CORE_EXPORT SetTempCacheValue(const QString &,
*
* @return QString
*/
-auto GPGFRONTEND_CORE_EXPORT GetTempCacheValue(const QString &) -> QString;
+auto GPGFRONTEND_CORE_EXPORT GetCacheValue(const QString &key) -> QString;
/**
* @brief imediately ease temp cache in storage
*
* @return QString
*/
-void GPGFRONTEND_CORE_EXPORT ResetTempCacheValue(const QString &);
+void GPGFRONTEND_CORE_EXPORT ResetCacheValue(const QString &);
} // namespace GpgFrontend