refactor: TCPListenSocket, replace make protected members private, use protected methods to acces them in the subclasses
This commit is contained in:
@ -34,12 +34,12 @@ SecureListenSocket::SecureListenSocket(
|
||||
|
||||
std::unique_ptr<IDataSocket> SecureListenSocket::accept()
|
||||
{
|
||||
std::unique_ptr<SecureSocket> socket;
|
||||
std::unique_ptr<SecureSocket> secureSocket;
|
||||
try {
|
||||
socket = std::make_unique<SecureSocket>(
|
||||
m_events, m_socketMultiplexer, ARCH->acceptSocket(m_socket, nullptr), m_securityLevel
|
||||
secureSocket = std::make_unique<SecureSocket>(
|
||||
events(), socketMultiplexer(), ARCH->acceptSocket(socket(), nullptr), m_securityLevel
|
||||
);
|
||||
socket->initSsl(true);
|
||||
secureSocket->initSsl(true);
|
||||
|
||||
setListeningJob();
|
||||
|
||||
@ -51,20 +51,20 @@ std::unique_ptr<IDataSocket> SecureListenSocket::accept()
|
||||
certificateFilename = ArgParser::argsBase().m_tlsCertFile;
|
||||
}
|
||||
|
||||
if (!socket->loadCertificates(certificateFilename)) {
|
||||
if (!secureSocket->loadCertificates(certificateFilename)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
socket->secureAccept();
|
||||
secureSocket->secureAccept();
|
||||
|
||||
return socket;
|
||||
return secureSocket;
|
||||
} catch (XArchNetwork &) {
|
||||
if (socket) {
|
||||
if (secureSocket) {
|
||||
setListeningJob();
|
||||
}
|
||||
return nullptr;
|
||||
} catch (std::exception &ex) {
|
||||
if (socket) {
|
||||
if (secureSocket) {
|
||||
setListeningJob();
|
||||
}
|
||||
throw ex;
|
||||
|
||||
@ -44,10 +44,24 @@ public:
|
||||
protected:
|
||||
void setListeningJob();
|
||||
|
||||
IEventQueue *m_events;
|
||||
ArchSocket m_socket;
|
||||
SocketMultiplexer *m_socketMultiplexer;
|
||||
ArchSocket socket() const
|
||||
{
|
||||
return m_socket;
|
||||
}
|
||||
|
||||
IEventQueue *events() const
|
||||
{
|
||||
return m_events;
|
||||
}
|
||||
|
||||
SocketMultiplexer *socketMultiplexer() const
|
||||
{
|
||||
return m_socketMultiplexer;
|
||||
}
|
||||
|
||||
private:
|
||||
ArchSocket m_socket;
|
||||
IEventQueue *m_events;
|
||||
SocketMultiplexer *m_socketMultiplexer;
|
||||
std::mutex m_mutex;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user