mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 16:47:44 +00:00
IPCCompiler+LibIPC: Generate message decoders with better TRY semantics
Instead of a bunch of manual error checking and returning a null OwnPtr, we can propagate the errors up and return NonnullOwnPtr on success.
This commit is contained in:
parent
dc77ec733f
commit
765c5b416f
2 changed files with 52 additions and 50 deletions
|
@ -139,14 +139,23 @@ protected:
|
|||
break;
|
||||
index += sizeof(message_size);
|
||||
auto remaining_bytes = ReadonlyBytes { bytes.data() + index, message_size };
|
||||
if (auto message = LocalEndpoint::decode_message(remaining_bytes, fd_passing_socket())) {
|
||||
m_unprocessed_messages.append(message.release_nonnull());
|
||||
} else if (auto message = PeerEndpoint::decode_message(remaining_bytes, fd_passing_socket())) {
|
||||
m_unprocessed_messages.append(message.release_nonnull());
|
||||
} else {
|
||||
dbgln("Failed to parse a message");
|
||||
break;
|
||||
|
||||
auto local_message = LocalEndpoint::decode_message(remaining_bytes, fd_passing_socket());
|
||||
if (!local_message.is_error()) {
|
||||
m_unprocessed_messages.append(local_message.release_value());
|
||||
continue;
|
||||
}
|
||||
|
||||
auto peer_message = PeerEndpoint::decode_message(remaining_bytes, fd_passing_socket());
|
||||
if (!peer_message.is_error()) {
|
||||
m_unprocessed_messages.append(peer_message.release_value());
|
||||
continue;
|
||||
}
|
||||
|
||||
dbgln("Failed to parse a message");
|
||||
dbgln("Local endpoint error: {}", local_message.error());
|
||||
dbgln("Peer endpoint error: {}", peer_message.error());
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue