diff --git a/Applications/IRCClient/IRCClient.cpp b/Applications/IRCClient/IRCClient.cpp index baee644a152..e98391d1f40 100644 --- a/Applications/IRCClient/IRCClient.cpp +++ b/Applications/IRCClient/IRCClient.cpp @@ -56,7 +56,7 @@ void IRCClient::set_server(const String& hostname, int port) void IRCClient::on_socket_connected() { - m_notifier = CNotifier::create(m_socket->fd(), CNotifier::Read); + m_notifier = CNotifier::construct(m_socket->fd(), CNotifier::Read); m_notifier->on_ready_to_read = [this] { receive_from_server(); }; send_user(); diff --git a/Applications/Terminal/TerminalWidget.cpp b/Applications/Terminal/TerminalWidget.cpp index b2591c07c46..67a83059580 100644 --- a/Applications/Terminal/TerminalWidget.cpp +++ b/Applications/Terminal/TerminalWidget.cpp @@ -22,7 +22,7 @@ TerminalWidget::TerminalWidget(int ptm_fd, RefPtr config) : m_terminal(*this) , m_ptm_fd(ptm_fd) - , m_notifier(CNotifier::create(ptm_fd, CNotifier::Read)) + , m_notifier(CNotifier::construct(ptm_fd, CNotifier::Read)) , m_config(move(config)) { m_cursor_blink_timer = CTimer::create(); diff --git a/Libraries/LibCore/CLocalServer.cpp b/Libraries/LibCore/CLocalServer.cpp index 93a49a14fcc..b70d31fd1ad 100644 --- a/Libraries/LibCore/CLocalServer.cpp +++ b/Libraries/LibCore/CLocalServer.cpp @@ -31,7 +31,7 @@ bool CLocalServer::listen(const String& address) ASSERT(rc == 0); m_listening = true; - m_notifier = CNotifier::create(m_fd, CNotifier::Event::Read, this); + m_notifier = CNotifier::construct(m_fd, CNotifier::Event::Read, this); m_notifier->on_ready_to_read = [this] { if (on_ready_to_accept) on_ready_to_accept(); diff --git a/Libraries/LibCore/CNotifier.h b/Libraries/LibCore/CNotifier.h index a21516725b0..f724a588b5e 100644 --- a/Libraries/LibCore/CNotifier.h +++ b/Libraries/LibCore/CNotifier.h @@ -14,11 +14,6 @@ public: Exceptional = 4, }; - static ObjectPtr create(int fd, unsigned event_mask, CObject* parent = nullptr) - { - return new CNotifier(fd, event_mask, parent); - } - virtual ~CNotifier() override; void set_enabled(bool); @@ -33,7 +28,7 @@ public: void event(CEvent&) override; private: - CNotifier(int fd, unsigned event_mask, CObject* parent); + CNotifier(int fd, unsigned event_mask, CObject* parent = nullptr); int m_fd { -1 }; unsigned m_event_mask { 0 }; diff --git a/Libraries/LibCore/CSocket.cpp b/Libraries/LibCore/CSocket.cpp index 13b43950e61..8f7cc6067ee 100644 --- a/Libraries/LibCore/CSocket.cpp +++ b/Libraries/LibCore/CSocket.cpp @@ -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 = CNotifier::create(fd(), CNotifier::Event::Write, this); + m_notifier = CNotifier::construct(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 = CNotifier::create(fd, CNotifier::Event::Read, this); + m_read_notifier = CNotifier::construct(fd, CNotifier::Event::Read, this); m_read_notifier->on_ready_to_read = [this] { if (on_ready_to_read) on_ready_to_read(); diff --git a/Libraries/LibCore/CTCPServer.cpp b/Libraries/LibCore/CTCPServer.cpp index 71a2b15906e..2091ee0b7f9 100644 --- a/Libraries/LibCore/CTCPServer.cpp +++ b/Libraries/LibCore/CTCPServer.cpp @@ -32,7 +32,7 @@ bool CTCPServer::listen(const IPv4Address& address, u16 port) ASSERT(rc == 0); m_listening = true; - m_notifier = CNotifier::create(m_fd, CNotifier::Event::Read); + m_notifier = CNotifier::construct(m_fd, CNotifier::Event::Read); m_notifier->on_ready_to_read = [this] { if (on_ready_to_accept) on_ready_to_accept(); diff --git a/Libraries/LibCore/CTCPServer.h b/Libraries/LibCore/CTCPServer.h index 67b551e22c2..a88960c94f0 100644 --- a/Libraries/LibCore/CTCPServer.h +++ b/Libraries/LibCore/CTCPServer.h @@ -9,7 +9,6 @@ class CTCPSocket; class CTCPServer : public CObject { C_OBJECT(CTCPServer) public: - explicit CTCPServer(CObject* parent = nullptr); virtual ~CTCPServer() override; bool is_listening() const { return m_listening; } @@ -20,7 +19,9 @@ public: Function on_ready_to_accept; private: + explicit CTCPServer(CObject* parent = nullptr); + int m_fd { -1 }; bool m_listening { false }; - OwnPtr m_notifier; + ObjectPtr m_notifier; }; diff --git a/Libraries/LibCore/CoreIPCClient.h b/Libraries/LibCore/CoreIPCClient.h index 79800a628ff..5845b8b1c94 100644 --- a/Libraries/LibCore/CoreIPCClient.h +++ b/Libraries/LibCore/CoreIPCClient.h @@ -51,7 +51,7 @@ namespace Client { public: Connection(const StringView& address) : m_connection(CLocalSocket::construct(this)) - , m_notifier(CNotifier::create(m_connection->fd(), CNotifier::Read, this)) + , m_notifier(CNotifier::construct(m_connection->fd(), CNotifier::Read, this)) { // We want to rate-limit our clients m_connection->set_blocking(true); @@ -241,7 +241,7 @@ namespace Client { public: ConnectionNG(const StringView& address) : m_connection(CLocalSocket::construct(this)) - , m_notifier(CNotifier::create(m_connection->fd(), CNotifier::Read, this)) + , m_notifier(CNotifier::construct(m_connection->fd(), CNotifier::Read, this)) { // We want to rate-limit our clients m_connection->set_blocking(true); diff --git a/Libraries/LibGUI/GDirectoryModel.cpp b/Libraries/LibGUI/GDirectoryModel.cpp index aa6c15c2ff9..978538250a3 100644 --- a/Libraries/LibGUI/GDirectoryModel.cpp +++ b/Libraries/LibGUI/GDirectoryModel.cpp @@ -344,7 +344,7 @@ void GDirectoryModel::open(const StringView& a_path) perror("watch_file"); ASSERT_NOT_REACHED(); } - m_notifier = CNotifier::create(watch_fd, CNotifier::Event::Read); + m_notifier = CNotifier::construct(watch_fd, CNotifier::Event::Read); m_notifier->on_ready_to_read = [this] { update(); char buffer[32]; diff --git a/Servers/TelnetServer/Client.cpp b/Servers/TelnetServer/Client.cpp index a813849a47e..5130ca73714 100644 --- a/Servers/TelnetServer/Client.cpp +++ b/Servers/TelnetServer/Client.cpp @@ -14,7 +14,7 @@ Client::Client(int id, ObjectPtr socket, int ptm_fd) : m_id(id) , m_socket(move(socket)) , m_ptm_fd(ptm_fd) - , m_ptm_notifier(CNotifier::create(ptm_fd, CNotifier::Read)) + , m_ptm_notifier(CNotifier::construct(ptm_fd, CNotifier::Read)) { m_socket->on_ready_to_read = [this] { drain_socket(); }; m_ptm_notifier->on_ready_to_read = [this] { drain_pty(); }; diff --git a/Servers/TelnetServer/main.cpp b/Servers/TelnetServer/main.cpp index e932fccad71..dee7efb29c2 100644 --- a/Servers/TelnetServer/main.cpp +++ b/Servers/TelnetServer/main.cpp @@ -1,3 +1,4 @@ +#include "Client.h" #include #include #include @@ -11,10 +12,9 @@ #include #include #include +#include #include -#include "Client.h" - static void run_command(int ptm_fd, String command) { pid_t pid = fork(); @@ -81,7 +81,7 @@ static void run_command(int ptm_fd, String command) int main(int argc, char** argv) { CEventLoop event_loop; - CTCPServer server; + auto server = CTCPServer::construct(); int opt; u16 port = 23; @@ -96,7 +96,7 @@ int main(int argc, char** argv) } } - if (!server.listen({}, port)) { + if (!server->listen({}, port)) { perror("listen"); exit(1); } @@ -104,10 +104,10 @@ int main(int argc, char** argv) HashMap> clients; int next_id = 0; - server.on_ready_to_accept = [&next_id, &clients, &server] { + server->on_ready_to_accept = [&next_id, &clients, &server] { int id = next_id++; - auto client_socket = server.accept(); + auto client_socket = server->accept(); if (!client_socket) { perror("accept"); return; @@ -122,7 +122,7 @@ int main(int argc, char** argv) run_command(ptm_fd, ""); - auto client = Client::create(id, client_socket, ptm_fd); + auto client = Client::create(id, move(client_socket), ptm_fd); client->on_exit = [&clients, id] { clients.remove(id); }; clients.set(id, client); }; diff --git a/Servers/WindowServer/WSEventLoop.cpp b/Servers/WindowServer/WSEventLoop.cpp index cd8b2a8e804..8a76065e78a 100644 --- a/Servers/WindowServer/WSEventLoop.cpp +++ b/Servers/WindowServer/WSEventLoop.cpp @@ -44,10 +44,10 @@ WSEventLoop::WSEventLoop() ASSERT(m_keyboard_fd >= 0); ASSERT(m_mouse_fd >= 0); - m_keyboard_notifier = CNotifier::create(m_keyboard_fd, CNotifier::Read); + m_keyboard_notifier = CNotifier::construct(m_keyboard_fd, CNotifier::Read); m_keyboard_notifier->on_ready_to_read = [this] { drain_keyboard(); }; - m_mouse_notifier = CNotifier::create(m_mouse_fd, CNotifier::Read); + m_mouse_notifier = CNotifier::construct(m_mouse_fd, CNotifier::Read); m_mouse_notifier->on_ready_to_read = [this] { drain_mouse(); }; WSClipboard::the().on_content_change = [&] {