mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:07:44 +00:00
LibIPC: Use NonnullOwnPtrVector<Message> in IPC::ServerConnection
We never want to store null messages, so make it impossible to do so.
This commit is contained in:
parent
d69fd87b50
commit
25db315b29
1 changed files with 9 additions and 15 deletions
|
@ -84,11 +84,8 @@ public:
|
||||||
// Double check we don't already have the event waiting for us.
|
// Double check we don't already have the event waiting for us.
|
||||||
// Otherwise we might end up blocked for a while for no reason.
|
// Otherwise we might end up blocked for a while for no reason.
|
||||||
for (size_t i = 0; i < m_unprocessed_messages.size(); ++i) {
|
for (size_t i = 0; i < m_unprocessed_messages.size(); ++i) {
|
||||||
if (m_unprocessed_messages[i]->message_id() == MessageType::static_message_id()) {
|
if (m_unprocessed_messages[i].message_id() == MessageType::static_message_id())
|
||||||
auto message = move(m_unprocessed_messages[i]);
|
return m_unprocessed_messages.take(i).template release_nonnull<MessageType>();
|
||||||
m_unprocessed_messages.remove(i);
|
|
||||||
return message.template release_nonnull<MessageType>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for (;;) {
|
for (;;) {
|
||||||
fd_set rfds;
|
fd_set rfds;
|
||||||
|
@ -103,11 +100,8 @@ public:
|
||||||
if (!drain_messages_from_server())
|
if (!drain_messages_from_server())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
for (size_t i = 0; i < m_unprocessed_messages.size(); ++i) {
|
for (size_t i = 0; i < m_unprocessed_messages.size(); ++i) {
|
||||||
if (m_unprocessed_messages[i]->message_id() == MessageType::static_message_id()) {
|
if (m_unprocessed_messages[i].message_id() == MessageType::static_message_id())
|
||||||
auto message = move(m_unprocessed_messages[i]);
|
return m_unprocessed_messages.take(i).template release_nonnull<MessageType>();
|
||||||
m_unprocessed_messages.remove(i);
|
|
||||||
return message.template release_nonnull<MessageType>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,9 +156,9 @@ private:
|
||||||
for (size_t index = 0; index < bytes.size(); index += decoded_bytes) {
|
for (size_t index = 0; index < bytes.size(); index += decoded_bytes) {
|
||||||
auto remaining_bytes = ByteBuffer::wrap(bytes.data() + index, bytes.size() - index);
|
auto remaining_bytes = ByteBuffer::wrap(bytes.data() + index, bytes.size() - index);
|
||||||
if (auto message = LocalEndpoint::decode_message(remaining_bytes, decoded_bytes)) {
|
if (auto message = LocalEndpoint::decode_message(remaining_bytes, decoded_bytes)) {
|
||||||
m_unprocessed_messages.append(move(message));
|
m_unprocessed_messages.append(message.release_nonnull());
|
||||||
} else if (auto message = PeerEndpoint::decode_message(remaining_bytes, decoded_bytes)) {
|
} else if (auto message = PeerEndpoint::decode_message(remaining_bytes, decoded_bytes)) {
|
||||||
m_unprocessed_messages.append(move(message));
|
m_unprocessed_messages.append(message.release_nonnull());
|
||||||
} else {
|
} else {
|
||||||
ASSERT_NOT_REACHED();
|
ASSERT_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
@ -183,15 +177,15 @@ private:
|
||||||
{
|
{
|
||||||
auto messages = move(m_unprocessed_messages);
|
auto messages = move(m_unprocessed_messages);
|
||||||
for (auto& message : messages) {
|
for (auto& message : messages) {
|
||||||
if (message->endpoint_magic() == LocalEndpoint::static_magic())
|
if (message.endpoint_magic() == LocalEndpoint::static_magic())
|
||||||
m_local_endpoint.handle(*message);
|
m_local_endpoint.handle(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalEndpoint& m_local_endpoint;
|
LocalEndpoint& m_local_endpoint;
|
||||||
RefPtr<Core::LocalSocket> m_connection;
|
RefPtr<Core::LocalSocket> m_connection;
|
||||||
RefPtr<Core::Notifier> m_notifier;
|
RefPtr<Core::Notifier> m_notifier;
|
||||||
Vector<OwnPtr<Message>> m_unprocessed_messages;
|
NonnullOwnPtrVector<Message> m_unprocessed_messages;
|
||||||
int m_server_pid { -1 };
|
int m_server_pid { -1 };
|
||||||
int m_my_client_id { -1 };
|
int m_my_client_id { -1 };
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue