diff options
author | saturneric <[email protected]> | 2023-10-19 10:51:20 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2023-10-19 10:51:20 +0000 |
commit | 025c268f91ee1deab17891f00dc8c90c4770224f (patch) | |
tree | 3454263c7e5d4545bc5bac624eba17ca71257654 /src/core/function/gpg/GpgAdvancedOperator.cpp | |
parent | feat: using pool for concurrent executions, not stable yet (diff) | |
download | GpgFrontend-025c268f91ee1deab17891f00dc8c90c4770224f.tar.gz GpgFrontend-025c268f91ee1deab17891f00dc8c90c4770224f.zip |
fix: improve the stability of thread system
Diffstat (limited to 'src/core/function/gpg/GpgAdvancedOperator.cpp')
-rw-r--r-- | src/core/function/gpg/GpgAdvancedOperator.cpp | 197 |
1 files changed, 101 insertions, 96 deletions
diff --git a/src/core/function/gpg/GpgAdvancedOperator.cpp b/src/core/function/gpg/GpgAdvancedOperator.cpp index 14202942..c338e69a 100644 --- a/src/core/function/gpg/GpgAdvancedOperator.cpp +++ b/src/core/function/gpg/GpgAdvancedOperator.cpp @@ -40,50 +40,53 @@ GpgFrontend::GpgAdvancedOperator::GpgAdvancedOperator(int channel) bool GpgFrontend::GpgAdvancedOperator::ClearGpgPasswordCache() { bool success = false; - GpgFrontend::GpgCommandExecutor::GetInstance().Execute( - ctx_.GetInfo().GpgConfPath, {"--reload", "gpg-agent"}, - [&](int exit_code, const std::string &p_out, const std::string &p_err) { - if (exit_code == 0) { - SPDLOG_DEBUG("gpgconf reload exit code: {}", exit_code); - success = true; - } - }); + GpgFrontend::GpgCommandExecutor::GetInstance().ExecuteSync( + {ctx_.GetInfo().GpgConfPath, + {"--reload", "gpg-agent"}, + [&](int exit_code, const std::string &p_out, const std::string &p_err) { + if (exit_code == 0) { + SPDLOG_DEBUG("gpgconf reload exit code: {}", exit_code); + success = true; + } + }}); return success; } bool GpgFrontend::GpgAdvancedOperator::ReloadGpgComponents() { bool success = false; - GpgFrontend::GpgCommandExecutor::GetInstance().Execute( - ctx_.GetInfo().GpgConfPath, {"--reload"}, - [&](int exit_code, const std::string &p_out, const std::string &p_err) { - if (exit_code == 0) { - success = true; - } else { - SPDLOG_ERROR( - "gpgconf execute error, process stderr: {}, process stdout: {}", - p_err, p_out); - return; - } - }); + GpgFrontend::GpgCommandExecutor::GetInstance().ExecuteSync( + {ctx_.GetInfo().GpgConfPath, + {"--reload"}, + [&](int exit_code, const std::string &p_out, const std::string &p_err) { + if (exit_code == 0) { + success = true; + } else { + SPDLOG_ERROR( + "gpgconf execute error, process stderr: {}, process stdout: {}", + p_err, p_out); + return; + } + }}); return success; } bool GpgFrontend::GpgAdvancedOperator::RestartGpgComponents() { bool success = false; - GpgFrontend::GpgCommandExecutor::GetInstance().Execute( - ctx_.GetInfo().GpgConfPath, {"--verbose", "--kill", "all"}, - [&](int exit_code, const std::string &p_out, const std::string &p_err) { - if (exit_code == 0) { - success = true; - return; - } else { - SPDLOG_ERROR( - "gpgconf execute error, process stderr: {}, process stdout: {}", - p_err, p_out); - return; - } - }); + GpgFrontend::GpgCommandExecutor::GetInstance().ExecuteSync( + {ctx_.GetInfo().GpgConfPath, + {"--verbose", "--kill", "all"}, + [&](int exit_code, const std::string &p_out, const std::string &p_err) { + if (exit_code == 0) { + success = true; + return; + } else { + SPDLOG_ERROR( + "gpgconf execute error, process stderr: {}, process stdout: {}", + p_err, p_out); + return; + } + }}); if (!success) return false; @@ -98,87 +101,89 @@ bool GpgFrontend::GpgAdvancedOperator::RestartGpgComponents() { bool GpgFrontend::GpgAdvancedOperator::ResetConfigures() { bool success = false; - GpgFrontend::GpgCommandExecutor::GetInstance().Execute( - ctx_.GetInfo().GpgConfPath, {"--apply-defaults"}, - [&](int exit_code, const std::string &p_out, const std::string &p_err) { - if (exit_code == 0) { - success = true; - } else { - SPDLOG_ERROR( - "gpgconf execute error, process stderr: {}, process stdout: {}", - p_err, p_out); - return; - } - }); + GpgFrontend::GpgCommandExecutor::GetInstance().ExecuteSync( + {ctx_.GetInfo().GpgConfPath, + {"--apply-defaults"}, + [&](int exit_code, const std::string &p_out, const std::string &p_err) { + if (exit_code == 0) { + success = true; + } else { + SPDLOG_ERROR( + "gpgconf execute error, process stderr: {}, process stdout: {}", + p_err, p_out); + return; + } + }}); return success; } bool GpgFrontend::GpgAdvancedOperator::StartGpgAgent() { bool success = false; - GpgFrontend::GpgCommandExecutor::GetInstance().Execute( - ctx_.GetInfo().GpgAgentPath, - {"--homedir", ctx_.GetInfo().GnuPGHomePath, "--daemon"}, - [&](int exit_code, const std::string &p_out, const std::string &p_err) { - if (exit_code == 0) { - success = true; - SPDLOG_INFO("start gpg-agent successfully"); - } else if (exit_code == 2) { - success = true; - SPDLOG_INFO("gpg-agent already started"); - } else { - SPDLOG_ERROR( - "gpg-agent execute error, process stderr: {}, process stdout: {}", - p_err, p_out); - return; - } - }); + GpgFrontend::GpgCommandExecutor::GetInstance().ExecuteSync( + {ctx_.GetInfo().GpgAgentPath, + {"--homedir", ctx_.GetInfo().GnuPGHomePath, "--daemon"}, + [&](int exit_code, const std::string &p_out, const std::string &p_err) { + if (exit_code == 0) { + success = true; + SPDLOG_INFO("start gpg-agent successfully"); + } else if (exit_code == 2) { + success = true; + SPDLOG_INFO("gpg-agent already started"); + } else { + SPDLOG_ERROR( + "gpg-agent execute error, process stderr: {}, process stdout: " + "{}", + p_err, p_out); + return; + } + }}); return success; } bool GpgFrontend::GpgAdvancedOperator::StartDirmngr() { bool success = false; - GpgFrontend::GpgCommandExecutor::GetInstance().Execute( - ctx_.GetInfo().DirmngrPath, - {"--homedir", ctx_.GetInfo().GnuPGHomePath, "--daemon"}, - [&](int exit_code, const std::string &p_out, const std::string &p_err) { - if (exit_code == 0) { - success = true; - SPDLOG_INFO("start dirmngr successfully"); - } else if (exit_code == 2) { - success = true; - SPDLOG_INFO("dirmngr already started"); - } else { - SPDLOG_ERROR( - "dirmngr execute error, process stderr: {}, process stdout: {}", - p_err, p_out); - return; - } - }); + GpgFrontend::GpgCommandExecutor::GetInstance().ExecuteSync( + {ctx_.GetInfo().DirmngrPath, + {"--homedir", ctx_.GetInfo().GnuPGHomePath, "--daemon"}, + [&](int exit_code, const std::string &p_out, const std::string &p_err) { + if (exit_code == 0) { + success = true; + SPDLOG_INFO("start dirmngr successfully"); + } else if (exit_code == 2) { + success = true; + SPDLOG_INFO("dirmngr already started"); + } else { + SPDLOG_ERROR( + "dirmngr execute error, process stderr: {}, process stdout: {}", + p_err, p_out); + return; + } + }}); return success; } bool GpgFrontend::GpgAdvancedOperator::StartKeyBoxd() { bool success = false; - GpgFrontend::GpgCommandExecutor::GetInstance().Execute( - ctx_.GetInfo().KeyboxdPath, - {"--homedir", ctx_.GetInfo().GnuPGHomePath, "--daemon"}, - [&](int exit_code, const std::string &p_out, const std::string &p_err) { - if (exit_code == 0) { - success = true; - SPDLOG_INFO("start keyboxd successfully"); - } else if (exit_code == 2) { - success = true; - SPDLOG_INFO("keyboxd already started"); - } else { - SPDLOG_ERROR( - "keyboxd execute error, process stderr: {}, process stdout: {}", - p_err, p_out); - return; - } - }); + GpgFrontend::GpgCommandExecutor::GetInstance().ExecuteSync( + {ctx_.GetInfo().KeyboxdPath, + {"--homedir", ctx_.GetInfo().GnuPGHomePath, "--daemon"}, + [&](int exit_code, const std::string &p_out, const std::string &p_err) { + if (exit_code == 0) { + success = true; + SPDLOG_INFO("start keyboxd successfully"); + } else if (exit_code == 2) { + success = true; + SPDLOG_INFO("keyboxd already started"); + } else { + SPDLOG_ERROR( + "keyboxd execute error, process stderr: {}, process stdout: {}", + p_err, p_out); + return; + } + }}); return success; } |