From: Joel Rosdahl Date: Thu, 14 May 2026 12:10:45 +0000 (+0200) Subject: refactor: Extract common "receive error message" code into helper X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=da9db79da04e8b827cc7dfa9e98b8191865f7a40;p=thirdparty%2Fccache.git refactor: Extract common "receive error message" code into helper --- diff --git a/src/ccache/storage/remote/client.cpp b/src/ccache/storage/remote/client.cpp index 8fb8d90e..119d4a40 100644 --- a/src/ccache/storage/remote/client.cpp +++ b/src/ccache/storage/remote/client.cpp @@ -323,6 +323,14 @@ Client::receive_u64() return value; } +tl::expected +Client::receive_error_string() +{ + TRY_ASSIGN(uint8_t msg_len, receive_u8()); + TRY_ASSIGN(auto msg_bytes, receive_bytes(msg_len)); + return std::string(msg_bytes.begin(), msg_bytes.end()); +} + tl::expected, Client::Error> Client::receive_response_get() { @@ -340,10 +348,8 @@ Client::receive_response_get() return std::nullopt; case Status::error: { - TRY_ASSIGN(uint8_t msg_len, receive_u8()); - TRY_ASSIGN(auto msg_bytes, receive_bytes(msg_len)); - std::string error_msg(msg_bytes.begin(), msg_bytes.end()); - return tl::unexpected(Error(Failure::error, error_msg)); + TRY_ASSIGN(auto err_msg, receive_error_string()); + return tl::unexpected(Error(Failure::error, err_msg)); } default: @@ -366,10 +372,8 @@ Client::receive_response_bool() return false; case Status::error: { - TRY_ASSIGN(uint8_t msg_len, receive_u8()); - TRY_ASSIGN(auto msg_bytes, receive_bytes(msg_len)); - std::string error_msg(msg_bytes.begin(), msg_bytes.end()); - return tl::unexpected(Error(Failure::error, error_msg)); + TRY_ASSIGN(auto err_msg, receive_error_string()); + return tl::unexpected(Error(Failure::error, err_msg)); } default: @@ -393,10 +397,8 @@ Client::receive_response_void() return {}; case Status::error: { - TRY_ASSIGN(uint8_t msg_len, receive_u8()); - TRY_ASSIGN(auto msg_bytes, receive_bytes(msg_len)); - std::string error_msg(msg_bytes.begin(), msg_bytes.end()); - return tl::unexpected(Error(Failure::error, error_msg)); + TRY_ASSIGN(auto err_msg, receive_error_string()); + return tl::unexpected(Error(Failure::error, err_msg)); } default: diff --git a/src/ccache/storage/remote/client.hpp b/src/ccache/storage/remote/client.hpp index 5935067c..4091c293 100644 --- a/src/ccache/storage/remote/client.hpp +++ b/src/ccache/storage/remote/client.hpp @@ -124,6 +124,7 @@ private: tl::expected receive_bytes(size_t count); tl::expected receive_u8(); tl::expected receive_u64(); + tl::expected receive_error_string(); tl::expected, Error> receive_response_get(); tl::expected receive_response_bool(); tl::expected receive_response_void();