LibIPC: Also encode URL::blob_url_entry over IPC

This commit is contained in:
Shannon Booth 2024-05-05 20:35:02 +12:00 committed by Andrew Kaster
parent 27e1f4762c
commit 55cd53e4ed
Notes: sideshowbarker 2024-07-17 11:33:34 +09:00
2 changed files with 26 additions and 3 deletions

View file

@ -83,8 +83,19 @@ ErrorOr<UnixDateTime> decode(Decoder& decoder)
template<>
ErrorOr<URL::URL> decode(Decoder& decoder)
{
auto url = TRY(decoder.decode<ByteString>());
return URL::URL { url };
auto url_string = TRY(decoder.decode<ByteString>());
URL::URL url { url_string };
bool has_blob_url = TRY(decoder.decode<bool>());
if (!has_blob_url)
return url;
url.set_blob_url_entry(URL::BlobURLEntry {
.type = TRY(decoder.decode<String>()),
.byte_buffer = TRY(decoder.decode<ByteBuffer>()),
});
return url;
}
template<>

View file

@ -99,7 +99,19 @@ ErrorOr<void> encode(Encoder& encoder, UnixDateTime const& value)
template<>
ErrorOr<void> encode(Encoder& encoder, URL::URL const& value)
{
return encoder.encode(value.to_byte_string());
TRY(encoder.encode(value.serialize()));
if (!value.blob_url_entry().has_value())
return encoder.encode(false);
TRY(encoder.encode(true));
auto const& blob = value.blob_url_entry().value();
TRY(encoder.encode(blob.type));
TRY(encoder.encode(blob.byte_buffer));
return {};
}
template<>