refactor: use optional for passing potential call errors (#396)

This switches from a raw pointer to std::optional type to pass prospective call errors to the client (using std::optional was not possible years back when sdbus-c++ was based on C++14). This makes the API a little clearer, safer, idiomatically more expressive, and removes potential confusion associated with raw pointers (like ownership, lifetime questions, etc.).
This commit is contained in:
Stanislav Angelovič
2024-01-10 15:43:37 +01:00
committed by GitHub
parent cda14c9702
commit 94b8058dc5
12 changed files with 101 additions and 98 deletions
+2 -2
View File
@@ -39,12 +39,12 @@ protected:
virtual void onConcatenatedSignal(const std::string& concatenatedString) = 0;
virtual void onConcatenateReply(const std::string& result, const sdbus::Error* error) = 0;
virtual void onConcatenateReply(const std::string& result, std::optional<sdbus::Error> error) = 0;
public:
sdbus::PendingAsyncCall concatenate(const std::map<std::string, sdbus::Variant>& params)
{
return proxy_->callMethodAsync("concatenate").onInterface(INTERFACE_NAME).withArguments(params).uponReplyInvoke([this](const sdbus::Error* error, const std::string& result){ this->onConcatenateReply(result, error); });
return proxy_->callMethodAsync("concatenate").onInterface(INTERFACE_NAME).withArguments(params).uponReplyInvoke([this](std::optional<sdbus::Error> error, const std::string& result){ this->onConcatenateReply(result, std::move(error)); });
}
private:
+2 -2
View File
@@ -309,9 +309,9 @@ public:
}
private:
virtual void onConcatenateReply(const std::string& result, [[maybe_unused]] const sdbus::Error* error) override
virtual void onConcatenateReply(const std::string& result, [[maybe_unused]] std::optional<sdbus::Error> error) override
{
assert(error == nullptr);
assert(error == std::nullopt);
std::stringstream str(result);
std::string aString;