mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-30 04:39:06 +00:00
LibIPC: Add some type aliases and MessageBuffer helpers
To re-use some of these wordy types outside of LibIPC, let's add some aliases.
This commit is contained in:
parent
8dd259b8d8
commit
fd6d868ae2
Notes:
github-actions[bot]
2025-07-18 14:11:24 +00:00
Author: https://github.com/trflynn89
Commit: fd6d868ae2
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5492
Reviewed-by: https://github.com/ADKaster
Reviewed-by: https://github.com/shannonbooth
4 changed files with 30 additions and 5 deletions
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
namespace IPC {
|
namespace IPC {
|
||||||
|
|
||||||
|
class AutoCloseFileDescriptor;
|
||||||
class Decoder;
|
class Decoder;
|
||||||
class Encoder;
|
class Encoder;
|
||||||
class Message;
|
class Message;
|
||||||
|
@ -23,4 +24,7 @@ ErrorOr<void> encode(Encoder&, T const&);
|
||||||
template<typename T>
|
template<typename T>
|
||||||
ErrorOr<T> decode(Decoder&);
|
ErrorOr<T> decode(Decoder&);
|
||||||
|
|
||||||
|
using MessageDataType = Vector<u8, 1024>;
|
||||||
|
using MessageFileType = Vector<NonnullRefPtr<AutoCloseFileDescriptor>, 1>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,13 @@ ErrorOr<void> MessageBuffer::append_file_descriptor(int fd)
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ErrorOr<void> MessageBuffer::extend(MessageBuffer&& buffer)
|
||||||
|
{
|
||||||
|
TRY(m_data.try_extend(move(buffer.m_data)));
|
||||||
|
TRY(m_fds.try_extend(move(buffer.m_fds)));
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
ErrorOr<void> MessageBuffer::transfer_message(Transport& transport)
|
ErrorOr<void> MessageBuffer::transfer_message(Transport& transport)
|
||||||
{
|
{
|
||||||
Checked<MessageSizeType> checked_message_size { m_data.size() };
|
Checked<MessageSizeType> checked_message_size { m_data.size() };
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <AK/Error.h>
|
#include <AK/Error.h>
|
||||||
#include <AK/Vector.h>
|
#include <AK/Vector.h>
|
||||||
#include <LibIPC/AutoCloseFileDescriptor.h>
|
#include <LibIPC/AutoCloseFileDescriptor.h>
|
||||||
|
#include <LibIPC/Forward.h>
|
||||||
#include <LibIPC/Transport.h>
|
#include <LibIPC/Transport.h>
|
||||||
|
|
||||||
namespace IPC {
|
namespace IPC {
|
||||||
|
@ -18,7 +19,7 @@ class MessageBuffer {
|
||||||
public:
|
public:
|
||||||
MessageBuffer();
|
MessageBuffer();
|
||||||
|
|
||||||
MessageBuffer(Vector<u8, 1024> data, Vector<NonnullRefPtr<AutoCloseFileDescriptor>, 1> fds)
|
MessageBuffer(MessageDataType data, MessageFileType fds)
|
||||||
: m_data(move(data))
|
: m_data(move(data))
|
||||||
, m_fds(move(fds))
|
, m_fds(move(fds))
|
||||||
{
|
{
|
||||||
|
@ -29,14 +30,19 @@ public:
|
||||||
|
|
||||||
ErrorOr<void> append_file_descriptor(int fd);
|
ErrorOr<void> append_file_descriptor(int fd);
|
||||||
|
|
||||||
|
ErrorOr<void> extend(MessageBuffer&& buffer);
|
||||||
|
|
||||||
ErrorOr<void> transfer_message(Transport& transport);
|
ErrorOr<void> transfer_message(Transport& transport);
|
||||||
|
|
||||||
auto const& data() const { return m_data; }
|
MessageDataType const& data() const { return m_data; }
|
||||||
auto take_fds() { return move(m_fds); }
|
MessageDataType take_data() { return move(m_data); }
|
||||||
|
|
||||||
|
MessageFileType const& fds() const { return m_fds; }
|
||||||
|
MessageFileType take_fds() { return move(m_fds); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Vector<u8, 1024> m_data;
|
MessageDataType m_data;
|
||||||
Vector<NonnullRefPtr<AutoCloseFileDescriptor>, 1> m_fds;
|
MessageFileType m_fds;
|
||||||
#ifdef AK_OS_WINDOWS
|
#ifdef AK_OS_WINDOWS
|
||||||
Vector<size_t> m_handle_offsets;
|
Vector<size_t> m_handle_offsets;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -55,6 +55,14 @@ ErrorOr<void> MessageBuffer::append_file_descriptor(int handle)
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ErrorOr<void> MessageBuffer::extend(MessageBuffer&& buffer)
|
||||||
|
{
|
||||||
|
TRY(m_data.try_extend(move(buffer.m_data)));
|
||||||
|
TRY(m_fds.try_extend(move(buffer.m_fds)));
|
||||||
|
TRY(m_handle_offsets.try_extend(move(buffer.m_handle_offsets)));
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
ErrorOr<void> MessageBuffer::transfer_message(Transport& transport)
|
ErrorOr<void> MessageBuffer::transfer_message(Transport& transport)
|
||||||
{
|
{
|
||||||
Checked<MessageSizeType> checked_message_size { m_data.size() };
|
Checked<MessageSizeType> checked_message_size { m_data.size() };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue