Files
deskflow/src/lib/net/TCPSocketFactory.cpp
sithlord48 879283f46f refactor: Make IArchNetwork::EAddressFamily enum class IArchNetwork::AddressFamily
confirm AddressFamily items to naming convention
2025-07-03 03:24:16 +00:00

50 lines
1.5 KiB
C++

/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
* SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
* SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
*/
#include "net/TCPSocketFactory.h"
#include "arch/Arch.h"
#include "base/Log.h"
#include "net/SecureListenSocket.h"
#include "net/SecureSocket.h"
#include "net/TCPListenSocket.h"
#include "net/TCPSocket.h"
//
// TCPSocketFactory
//
TCPSocketFactory::TCPSocketFactory(IEventQueue *events, SocketMultiplexer *socketMultiplexer)
: m_events(events),
m_socketMultiplexer(socketMultiplexer)
{
// do nothing
}
IDataSocket *TCPSocketFactory::create(IArchNetwork::AddressFamily family, SecurityLevel securityLevel) const
{
if (securityLevel != SecurityLevel::PlainText) {
auto *secureSocket = new SecureSocket(m_events, m_socketMultiplexer, family, securityLevel);
secureSocket->initSsl(false);
return secureSocket;
} else {
return new TCPSocket(m_events, m_socketMultiplexer, family);
}
}
IListenSocket *TCPSocketFactory::createListen(IArchNetwork::AddressFamily family, SecurityLevel securityLevel) const
{
IListenSocket *socket = nullptr;
if (securityLevel != SecurityLevel::PlainText) {
socket = new SecureListenSocket(m_events, m_socketMultiplexer, family, securityLevel);
} else {
socket = new TCPListenSocket(m_events, m_socketMultiplexer, family);
}
return socket;
}