#include <QLocalSocket>
+#include "fileprovidersocketcontroller.h"
+
namespace OCC
{
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
namespace Mac {
+class FileProviderSocketController;
+using FileProviderSocketControllerPtr = QSharedPointer<FileProviderSocketController>;
+
#ifdef Q_OS_MACOS
QString fileProviderSocketPath();
#endif
private slots:
void startListening();
void slotNewConnection();
+ void slotOnDisconnected();
+ void slotSocketDestroyed(QObject *object);
private:
QString _socketPath;
QLocalServer _socketServer;
+ QHash<QLocalSocket*, FileProviderSocketControllerPtr> _socketControllers;
};
} // namespace Mac