Revision control
++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++
++ #ifndef CLIENT_H
++ #define CLIENT_H
++
++ #include "server.h"
++
++ #include <QAbstractSocket>
++ #include <QHash>
++ #include <QHostAddress>
++
++ class PeerManager;
++
++ class Client : public QObject
++ {
++ Q_OBJECT
++
++ public:
++ Client();
++
++ void sendMessage(const QString &message);
++ QString nickName() const;
++ bool hasConnection(const QByteArray &peerUniqueId) const;
++
++ signals:
++ void newMessage(const QString &from, const QString &message);
++ void newParticipant(const QString &nick);
++ void participantLeft(const QString &nick);
++
++ private slots:
++ void newConnection(Connection *connection);
++ void connectionError(QAbstractSocket::SocketError socketError);
++ void disconnected();
++ void readyForUse();
++
++ private:
++ void removeConnection(Connection *connection);
++
++ PeerManager *peerManager;
++ Server server;
++ QHash<QByteArray, Connection *> peers;
++ };
++
++ #endif