#pragma once #include #include class QLocalServer; class QJsonDocument; namespace Epistmool::Server { struct ConnectionId { int index; int generation; static ConnectionId createInvalid(); bool isInvalid() const; bool operator==(const ConnectionId&) const = default; }; uint qHash(const ConnectionId& id, uint seed = 0); class ConnectionManager : public QObject { Q_OBJECT class Private; private: QLocalServer* mLocal = nullptr; struct Connection; std::vector mConnections; public: explicit ConnectionManager(QObject* parent = nullptr); ~ConnectionManager(); bool isLocalConnectionsEnabled() const; void setLocalConnectionsEnabled(bool enabled); void replyMessage(ConnectionId id, const QJsonDocument& message); signals: void connectionEstablished(Epistmool::Server::ConnectionId id); void connectionDropped(Epistmool::Server::ConnectionId id); void messageRecieved(const QJsonDocument& message, Epistmool::Server::ConnectionId id); }; } // namespace Epistmool::Server