diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/serve_api/serve_service/TARGETS | 1 | ||||
-rw-r--r-- | src/buildtool/serve_api/serve_service/serve_server_implementation.cpp | 22 |
2 files changed, 5 insertions, 18 deletions
diff --git a/src/buildtool/serve_api/serve_service/TARGETS b/src/buildtool/serve_api/serve_service/TARGETS index c2f7f44c..5085cd00 100644 --- a/src/buildtool/serve_api/serve_service/TARGETS +++ b/src/buildtool/serve_api/serve_service/TARGETS @@ -90,6 +90,7 @@ , ["src/buildtool/execution_api/execution_service", "operations_server"] , ["src/buildtool/execution_api/local", "local_api"] , ["src/buildtool/execution_api/serve", "mr_local_api"] + , ["src/buildtool/file_system", "atomic"] , ["src/buildtool/file_system", "file_system_manager"] , ["src/buildtool/file_system", "git_repo"] , ["src/buildtool/logging", "log_level"] diff --git a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp index c8426469..f8c391b6 100644 --- a/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp +++ b/src/buildtool/serve_api/serve_service/serve_server_implementation.cpp @@ -23,7 +23,6 @@ #endif #include <filesystem> -#include <fstream> #include <memory> #include <utility> #include <variant> @@ -46,6 +45,7 @@ #include "src/buildtool/execution_api/execution_service/operations_server.hpp" #include "src/buildtool/execution_api/local/local_api.hpp" #include "src/buildtool/execution_api/serve/mr_local_api.hpp" +#include "src/buildtool/file_system/atomic.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" #include "src/buildtool/file_system/git_repo.hpp" #include "src/buildtool/logging/log_level.hpp" @@ -58,21 +58,6 @@ #include "src/utils/cpp/expected.hpp" #include "src/utils/cpp/type_safe_arithmetic.hpp" -namespace { -template <typename T> -auto TryWrite(std::string const& file, T const& content) noexcept -> bool { - std::ofstream of{file}; - if (not of.good()) { - Logger::Log(LogLevel::Error, - "Could not open {}. Make sure to have write permissions", - file); - return false; - } - of << content; - return true; -} -} // namespace - auto ServeServerImpl::Create(std::optional<std::string> interface, std::optional<int> port, std::optional<std::string> info_file, @@ -248,7 +233,8 @@ auto ServeServerImpl::Run( {"interface", interface_}, {"port", port_}, {"pid", pid}}; if (not pid_file_.empty()) { - if (not TryWrite(pid_file_, pid)) { + if (not FileSystemAtomic::WriteFile(pid_file_, + fmt::format("{}", pid))) { server->Shutdown(); return false; } @@ -263,7 +249,7 @@ auto ServeServerImpl::Run( info_str); if (not info_file_.empty()) { - if (not TryWrite(info_file_, info_str)) { + if (not FileSystemAtomic::WriteFile(info_file_, info_str)) { server->Shutdown(); return false; } |