Make fileprovidersocketmanager keep track of connected sockets

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2022-12-22 13:30:36 +01:00
parent 7fc80bc4eb
commit ffed4d7933
No known key found for this signature in database
GPG key ID: C839200C384636B0
2 changed files with 28 additions and 0 deletions

View file

@ -16,6 +16,8 @@
#include <QLocalSocket>
#include "fileprovidersocketcontroller.h"
namespace OCC
{
@ -61,6 +63,26 @@ void FileProviderSocketManager::slotNewConnection()
return;
}
connect(socket, &QLocalSocket::disconnected,
this, &FileProviderSocketManager::slotOnDisconnected);
connect(socket, &QLocalSocket::destroyed,
this, &FileProviderSocketManager::slotSocketDestroyed);
const FileProviderSocketControllerPtr controller(new FileProviderSocketController(socket));
_socketControllers.insert(socket, controller);
}
void FileProviderSocketManager::slotOnDisconnected()
{
const auto socket = qobject_cast<QLocalSocket *>(sender());
Q_ASSERT(socket);
socket->deleteLater();
}
void FileProviderSocketManager::slotSocketDestroyed(QObject *object)
{
const auto socket = qobject_cast<QLocalSocket *>(object);
_socketControllers.remove(socket);
}
} // namespace Mac

View file

@ -23,6 +23,9 @@ namespace OCC
namespace Mac {
class FileProviderSocketController;
using FileProviderSocketControllerPtr = QSharedPointer<FileProviderSocketController>;
#ifdef Q_OS_MACOS
QString fileProviderSocketPath();
#endif
@ -37,10 +40,13 @@ public:
private slots:
void startListening();
void slotNewConnection();
void slotOnDisconnected();
void slotSocketDestroyed(QObject *object);
private:
QString _socketPath;
QLocalServer _socketServer;
QHash<QLocalSocket*, FileProviderSocketControllerPtr> _socketControllers;
};
} // namespace Mac