summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildtool/common/remote/client_common.hpp42
1 files changed, 24 insertions, 18 deletions
diff --git a/src/buildtool/common/remote/client_common.hpp b/src/buildtool/common/remote/client_common.hpp
index cf06831d..6a13de34 100644
--- a/src/buildtool/common/remote/client_common.hpp
+++ b/src/buildtool/common/remote/client_common.hpp
@@ -45,32 +45,38 @@
return grpc::CreateChannel(address, creds);
}
-[[maybe_unused]] static inline void LogStatus(Logger const* logger,
- LogLevel level,
- grpc::Status const& s) noexcept {
- if (logger == nullptr) {
- Logger::Log(level,
- "{}: {}",
- static_cast<int>(s.error_code()),
- s.error_message());
- }
- else {
- logger->Emit(level,
- "{}: {}",
- static_cast<int>(s.error_code()),
- s.error_message());
- }
+[[nodiscard]] static inline auto StatusString(
+ grpc::Status const& s,
+ std::optional<std::string> const& prefix = std::nullopt) noexcept
+ -> std::string {
+ return fmt::format("{}{}: {}",
+ (prefix.has_value() ? fmt::format("{}: ", *prefix) : ""),
+ static_cast<int>(s.error_code()),
+ s.error_message());
+}
+
+[[nodiscard]] static inline auto StatusString(
+ google::rpc::Status const& s,
+ std::optional<std::string> const& prefix = std::nullopt) noexcept
+ -> std::string {
+ return fmt::format("{}{}: {}",
+ (prefix.has_value() ? fmt::format("{}: ", *prefix) : ""),
+ static_cast<int>(s.code()),
+ s.message());
}
+template <typename T_Status>
[[maybe_unused]] static inline void LogStatus(
Logger const* logger,
LogLevel level,
- google::rpc::Status const& s) noexcept {
+ T_Status const& s,
+ std::optional<std::string> const& prefix = std::nullopt) noexcept {
+ auto msg = [&s, &prefix]() { return StatusString(s, prefix); };
if (logger == nullptr) {
- Logger::Log(level, "{}: {}", static_cast<int>(s.code()), s.message());
+ Logger::Log(level, msg);
}
else {
- logger->Emit(level, "{}: {}", static_cast<int>(s.code()), s.message());
+ logger->Emit(level, msg);
}
}