From 90a651b40977f5b09ef44a806b18ca65f6afd6af Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Wed, 18 Jun 2025 17:12:03 -0400 Subject: [PATCH] refactor: server use std::unique_ptr for socketFactory based on https://github.com/input-leap/input-leap/commit/ff7f23e79d24c581114d142ab7a22090a4e4256e --- src/lib/deskflow/ServerApp.cpp | 4 ++-- src/lib/deskflow/ServerApp.h | 4 +++- src/lib/server/ClientListener.cpp | 11 ++++++----- src/lib/server/ClientListener.h | 8 ++++++-- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/lib/deskflow/ServerApp.cpp b/src/lib/deskflow/ServerApp.cpp index eb6815744..8ff308f89 100644 --- a/src/lib/deskflow/ServerApp.cpp +++ b/src/lib/deskflow/ServerApp.cpp @@ -570,9 +570,9 @@ void ServerApp::handleScreenSwitched(const Event &e) // do nothing } -ISocketFactory *ServerApp::getSocketFactory() const +std::unique_ptr ServerApp::getSocketFactory() const { - return new TCPSocketFactory(m_events, getSocketMultiplexer()); + return std::make_unique(m_events, getSocketMultiplexer()); } NetworkAddress ServerApp::getAddress(const NetworkAddress &address) const diff --git a/src/lib/deskflow/ServerApp.h b/src/lib/deskflow/ServerApp.h index ffcad8ac4..c07535f52 100644 --- a/src/lib/deskflow/ServerApp.h +++ b/src/lib/deskflow/ServerApp.h @@ -17,6 +17,8 @@ #include "net/NetworkAddress.h" #include "server/Config.h" +#include + enum EServerState { kUninitialized, @@ -124,7 +126,7 @@ public: private: void handleScreenSwitched(const Event &e); - ISocketFactory *getSocketFactory() const; + std::unique_ptr getSocketFactory() const; NetworkAddress getAddress(const NetworkAddress &address) const; Server *m_server = nullptr; diff --git a/src/lib/server/ClientListener.cpp b/src/lib/server/ClientListener.cpp index 99515e335..f5fc98316 100644 --- a/src/lib/server/ClientListener.cpp +++ b/src/lib/server/ClientListener.cpp @@ -24,9 +24,10 @@ // ClientListener::ClientListener( - const NetworkAddress &address, ISocketFactory *socketFactory, IEventQueue *events, SecurityLevel securityLevel + const NetworkAddress &address, std::unique_ptr socketFactory, IEventQueue *events, + SecurityLevel securityLevel ) - : m_socketFactory(socketFactory), + : m_socketFactory{std::move(socketFactory)}, m_events(events), m_securityLevel(securityLevel), m_address(address) @@ -37,11 +38,11 @@ ClientListener::ClientListener( start(); } catch (XSocketAddressInUse &) { cleanupListenSocket(); - delete m_socketFactory; + m_socketFactory.reset(); throw; } catch (XBase &) { cleanupListenSocket(); - delete m_socketFactory; + m_socketFactory.reset(); throw; } LOG((CLOG_DEBUG1 "listening for clients")); @@ -50,7 +51,7 @@ ClientListener::ClientListener( ClientListener::~ClientListener() { stop(); - delete m_socketFactory; + m_socketFactory.reset(); } void ClientListener::setServer(Server *server) diff --git a/src/lib/server/ClientListener.h b/src/lib/server/ClientListener.h index 10637d2cd..71d3b3583 100644 --- a/src/lib/server/ClientListener.h +++ b/src/lib/server/ClientListener.h @@ -14,6 +14,7 @@ #include "server/Config.h" #include +#include #include class ClientProxy; @@ -29,7 +30,10 @@ class ClientListener { public: // The factories are adopted. - ClientListener(const NetworkAddress &, ISocketFactory *, IEventQueue *events, SecurityLevel securityLevel); + ClientListener( + const NetworkAddress &, std::unique_ptr socketFactory, IEventQueue *events, + SecurityLevel securityLevel + ); ClientListener(ClientListener const &) = delete; ClientListener(ClientListener &&) = delete; ~ClientListener(); @@ -81,7 +85,7 @@ private: using ClientSockets = std::set; IListenSocket *m_listen; - ISocketFactory *m_socketFactory; + std::unique_ptr m_socketFactory; NewClients m_newClients; WaitingClients m_waitingClients; Server *m_server = nullptr;