refactor: server use std::unique_ptr for socketFactory

based on ff7f23e79d
This commit is contained in:
sithlord48 2025-06-18 17:12:03 -04:00 committed by Nick Bolton
parent dbc7aebfbc
commit 90a651b409
4 changed files with 17 additions and 10 deletions

View file

@ -570,9 +570,9 @@ void ServerApp::handleScreenSwitched(const Event &e)
// do nothing // do nothing
} }
ISocketFactory *ServerApp::getSocketFactory() const std::unique_ptr<ISocketFactory> ServerApp::getSocketFactory() const
{ {
return new TCPSocketFactory(m_events, getSocketMultiplexer()); return std::make_unique<TCPSocketFactory>(m_events, getSocketMultiplexer());
} }
NetworkAddress ServerApp::getAddress(const NetworkAddress &address) const NetworkAddress ServerApp::getAddress(const NetworkAddress &address) const

View file

@ -17,6 +17,8 @@
#include "net/NetworkAddress.h" #include "net/NetworkAddress.h"
#include "server/Config.h" #include "server/Config.h"
#include <memory>
enum EServerState enum EServerState
{ {
kUninitialized, kUninitialized,
@ -124,7 +126,7 @@ public:
private: private:
void handleScreenSwitched(const Event &e); void handleScreenSwitched(const Event &e);
ISocketFactory *getSocketFactory() const; std::unique_ptr<ISocketFactory> getSocketFactory() const;
NetworkAddress getAddress(const NetworkAddress &address) const; NetworkAddress getAddress(const NetworkAddress &address) const;
Server *m_server = nullptr; Server *m_server = nullptr;

View file

@ -24,9 +24,10 @@
// //
ClientListener::ClientListener( ClientListener::ClientListener(
const NetworkAddress &address, ISocketFactory *socketFactory, IEventQueue *events, SecurityLevel securityLevel const NetworkAddress &address, std::unique_ptr<ISocketFactory> socketFactory, IEventQueue *events,
SecurityLevel securityLevel
) )
: m_socketFactory(socketFactory), : m_socketFactory{std::move(socketFactory)},
m_events(events), m_events(events),
m_securityLevel(securityLevel), m_securityLevel(securityLevel),
m_address(address) m_address(address)
@ -37,11 +38,11 @@ ClientListener::ClientListener(
start(); start();
} catch (XSocketAddressInUse &) { } catch (XSocketAddressInUse &) {
cleanupListenSocket(); cleanupListenSocket();
delete m_socketFactory; m_socketFactory.reset();
throw; throw;
} catch (XBase &) { } catch (XBase &) {
cleanupListenSocket(); cleanupListenSocket();
delete m_socketFactory; m_socketFactory.reset();
throw; throw;
} }
LOG((CLOG_DEBUG1 "listening for clients")); LOG((CLOG_DEBUG1 "listening for clients"));
@ -50,7 +51,7 @@ ClientListener::ClientListener(
ClientListener::~ClientListener() ClientListener::~ClientListener()
{ {
stop(); stop();
delete m_socketFactory; m_socketFactory.reset();
} }
void ClientListener::setServer(Server *server) void ClientListener::setServer(Server *server)

View file

@ -14,6 +14,7 @@
#include "server/Config.h" #include "server/Config.h"
#include <deque> #include <deque>
#include <memory>
#include <set> #include <set>
class ClientProxy; class ClientProxy;
@ -29,7 +30,10 @@ class ClientListener
{ {
public: public:
// The factories are adopted. // The factories are adopted.
ClientListener(const NetworkAddress &, ISocketFactory *, IEventQueue *events, SecurityLevel securityLevel); ClientListener(
const NetworkAddress &, std::unique_ptr<ISocketFactory> socketFactory, IEventQueue *events,
SecurityLevel securityLevel
);
ClientListener(ClientListener const &) = delete; ClientListener(ClientListener const &) = delete;
ClientListener(ClientListener &&) = delete; ClientListener(ClientListener &&) = delete;
~ClientListener(); ~ClientListener();
@ -81,7 +85,7 @@ private:
using ClientSockets = std::set<IDataSocket *>; using ClientSockets = std::set<IDataSocket *>;
IListenSocket *m_listen; IListenSocket *m_listen;
ISocketFactory *m_socketFactory; std::unique_ptr<ISocketFactory> m_socketFactory;
NewClients m_newClients; NewClients m_newClients;
WaitingClients m_waitingClients; WaitingClients m_waitingClients;
Server *m_server = nullptr; Server *m_server = nullptr;