// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef PEERMANAGER_H #define PEERMANAGER_H #include #include #include #include #include class Client; class Connection; class PeerManager : public QObject { Q_OBJECT public: explicit PeerManager(Client *client); void setServerPort(int port); QString userName() const; QByteArray uniqueId() const; void startBroadcasting(); bool isLocalHostAddress(const QHostAddress &address) const; signals: void newConnection(Connection *connection); private slots: void sendBroadcastDatagram(); void readBroadcastDatagram(); private: void updateAddresses(); Client *client = nullptr; QList broadcastAddresses; QList ipAddresses; QUdpSocket broadcastSocket; QTimer broadcastTimer; QString username; QByteArray localUniqueId; int serverPort = 0; }; #endif