mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
IPCCompiler: Remove invalid state from IPC message classes
At some point, we stopped ever constructing invalid messages. This makes that clearer, and will allow us to stop requiring that IPC arguments be default-constructible.
This commit is contained in:
@@ -69,7 +69,6 @@ public:
|
|||||||
virtual u32 endpoint_magic() const = 0;
|
virtual u32 endpoint_magic() const = 0;
|
||||||
virtual int message_id() const = 0;
|
virtual int message_id() const = 0;
|
||||||
virtual char const* message_name() const = 0;
|
virtual char const* message_name() const = 0;
|
||||||
virtual bool valid() const = 0;
|
|
||||||
virtual ErrorOr<MessageBuffer> encode() const = 0;
|
virtual ErrorOr<MessageBuffer> encode() const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -345,7 +345,6 @@ public:)~~~");
|
|||||||
typedef class @message.response_type@ ResponseType;)~~~");
|
typedef class @message.response_type@ ResponseType;)~~~");
|
||||||
|
|
||||||
message_generator.appendln(R"~~~(
|
message_generator.appendln(R"~~~(
|
||||||
@message.pascal_name@(decltype(nullptr)) : m_ipc_message_valid(false) { }
|
|
||||||
@message.pascal_name@(@message.pascal_name@ const&) = default;
|
@message.pascal_name@(@message.pascal_name@ const&) = default;
|
||||||
@message.pascal_name@(@message.pascal_name@&&) = default;
|
@message.pascal_name@(@message.pascal_name@&&) = default;
|
||||||
@message.pascal_name@& operator=(@message.pascal_name@ const&) = default;
|
@message.pascal_name@& operator=(@message.pascal_name@ const&) = default;
|
||||||
@@ -412,12 +411,8 @@ public:)~~~");
|
|||||||
})~~~");
|
})~~~");
|
||||||
|
|
||||||
message_generator.appendln(R"~~~(
|
message_generator.appendln(R"~~~(
|
||||||
virtual bool valid() const override { return m_ipc_message_valid; }
|
|
||||||
|
|
||||||
virtual ErrorOr<IPC::MessageBuffer> encode() const override
|
virtual ErrorOr<IPC::MessageBuffer> encode() const override
|
||||||
{
|
{
|
||||||
VERIFY(valid());
|
|
||||||
|
|
||||||
IPC::MessageBuffer buffer;
|
IPC::MessageBuffer buffer;
|
||||||
IPC::Encoder stream(buffer);
|
IPC::Encoder stream(buffer);
|
||||||
TRY(stream.encode(endpoint_magic()));
|
TRY(stream.encode(endpoint_magic()));
|
||||||
@@ -445,8 +440,7 @@ public:)~~~");
|
|||||||
}
|
}
|
||||||
|
|
||||||
message_generator.appendln(R"~~~(
|
message_generator.appendln(R"~~~(
|
||||||
private:
|
private:)~~~");
|
||||||
bool m_ipc_message_valid { true };)~~~");
|
|
||||||
|
|
||||||
for (auto const& parameter : parameters) {
|
for (auto const& parameter : parameters) {
|
||||||
auto parameter_generator = message_generator.fork();
|
auto parameter_generator = message_generator.fork();
|
||||||
@@ -715,8 +709,6 @@ public:
|
|||||||
message_generator.appendln(R"~~~(
|
message_generator.appendln(R"~~~(
|
||||||
[[maybe_unused]] auto& request = static_cast<const Messages::@endpoint.name@::@message.pascal_name@&>(message);
|
[[maybe_unused]] auto& request = static_cast<const Messages::@endpoint.name@::@message.pascal_name@&>(message);
|
||||||
auto response = @handler_name@(@arguments@);
|
auto response = @handler_name@(@arguments@);
|
||||||
if (!response.valid())
|
|
||||||
return Error::from_string_literal("Failed to handle @endpoint.name@::@message.pascal_name@ message");
|
|
||||||
return make<IPC::MessageBuffer>(TRY(response.encode()));)~~~");
|
return make<IPC::MessageBuffer>(TRY(response.encode()));)~~~");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user