1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 20:57:35 +00:00

LibCore: Convert CNotifier to ObjectPtr

This commit is contained in:
Andreas Kling 2019-09-20 15:39:15 +02:00
parent 50a6560413
commit d1bacb9885
17 changed files with 42 additions and 32 deletions

View file

@ -31,7 +31,7 @@ bool CLocalServer::listen(const String& address)
ASSERT(rc == 0);
m_listening = true;
m_notifier = make<CNotifier>(m_fd, CNotifier::Event::Read, this);
m_notifier = CNotifier::create(m_fd, CNotifier::Event::Read, this);
m_notifier->on_ready_to_read = [this] {
if (on_ready_to_accept)
on_ready_to_accept();

View file

@ -21,5 +21,5 @@ public:
private:
int m_fd { -1 };
bool m_listening { false };
OwnPtr<CNotifier> m_notifier;
ObjectPtr<CNotifier> m_notifier;
};

View file

@ -1,7 +1,8 @@
#pragma once
#include <AK/Function.h>
#include "CObject.h"
#include <LibCore/CObject.h>
#include <LibCore/ObjectPtr.h>
class CNotifier : public CObject {
C_OBJECT(CNotifier)
@ -12,7 +13,12 @@ public:
Write = 2,
Exceptional = 4,
};
CNotifier(int fd, unsigned event_mask, CObject* parent = nullptr);
static ObjectPtr<CNotifier> create(int fd, unsigned event_mask, CObject* parent = nullptr)
{
return new CNotifier(fd, event_mask, parent);
}
virtual ~CNotifier() override;
void set_enabled(bool);
@ -27,6 +33,8 @@ public:
void event(CEvent&) override;
private:
CNotifier(int fd, unsigned event_mask, CObject* parent);
int m_fd { -1 };
unsigned m_event_mask { 0 };
};

View file

@ -85,7 +85,7 @@ bool CSocket::common_connect(const struct sockaddr* addr, socklen_t addrlen)
if (rc < 0) {
if (errno == EINPROGRESS) {
dbg() << *this << " connection in progress (EINPROGRESS)";
m_notifier = make<CNotifier>(fd(), CNotifier::Event::Write, this);
m_notifier = CNotifier::create(fd(), CNotifier::Event::Write, this);
m_notifier->on_ready_to_write = [this] {
dbg() << *this << " connected!";
m_connected = true;
@ -132,7 +132,7 @@ void CSocket::did_update_fd(int fd)
m_read_notifier = nullptr;
return;
}
m_read_notifier = make<CNotifier>(fd, CNotifier::Event::Read, this);
m_read_notifier = CNotifier::create(fd, CNotifier::Event::Read, this);
m_read_notifier->on_ready_to_read = [this] {
if (on_ready_to_read)
on_ready_to_read();

View file

@ -2,6 +2,7 @@
#include <LibCore/CIODevice.h>
#include <LibCore/CSocketAddress.h>
#include <LibCore/ObjectPtr.h>
class CNotifier;
@ -53,6 +54,6 @@ private:
bool common_connect(const struct sockaddr*, socklen_t);
Type m_type { Type::Invalid };
OwnPtr<CNotifier> m_notifier;
OwnPtr<CNotifier> m_read_notifier;
ObjectPtr<CNotifier> m_notifier;
ObjectPtr<CNotifier> m_read_notifier;
};

View file

@ -32,7 +32,7 @@ bool CTCPServer::listen(const IPv4Address& address, u16 port)
ASSERT(rc == 0);
m_listening = true;
m_notifier = make<CNotifier>(m_fd, CNotifier::Event::Read);
m_notifier = CNotifier::create(m_fd, CNotifier::Event::Read);
m_notifier->on_ready_to_read = [this] {
if (on_ready_to_accept)
on_ready_to_accept();

View file

@ -51,11 +51,11 @@ namespace Client {
public:
Connection(const StringView& address)
: m_connection(this)
, m_notifier(m_connection.fd(), CNotifier::Read, this)
, m_notifier(CNotifier::create(m_connection.fd(), CNotifier::Read, this))
{
// We want to rate-limit our clients
m_connection.set_blocking(true);
m_notifier.on_ready_to_read = [this] {
m_notifier->on_ready_to_read = [this] {
drain_messages_from_server();
CEventLoop::current().post_event(*this, make<PostProcessEvent>(m_connection.fd()));
};
@ -230,7 +230,7 @@ namespace Client {
}
CLocalSocket m_connection;
CNotifier m_notifier;
ObjectPtr<CNotifier> m_notifier;
Vector<IncomingMessageBundle> m_unprocessed_bundles;
int m_server_pid { -1 };
int m_my_client_id { -1 };
@ -242,11 +242,11 @@ namespace Client {
public:
ConnectionNG(const StringView& address)
: m_connection(this)
, m_notifier(m_connection.fd(), CNotifier::Read, this)
, m_notifier(CNotifier::create(m_connection.fd(), CNotifier::Read, this))
{
// We want to rate-limit our clients
m_connection.set_blocking(true);
m_notifier.on_ready_to_read = [this] {
m_notifier->on_ready_to_read = [this] {
drain_messages_from_server();
CEventLoop::current().post_event(*this, make<PostProcessEvent>(m_connection.fd()));
};
@ -374,7 +374,7 @@ namespace Client {
}
CLocalSocket m_connection;
CNotifier m_notifier;
ObjectPtr<CNotifier> m_notifier;
Vector<OwnPtr<IMessage>> m_unprocessed_messages;
int m_server_pid { -1 };
int m_my_client_id { -1 };