// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef RATECONTROLLER_H #define RATECONTROLLER_H #include #include #include class PeerWireClient; class RateController : public QObject { Q_OBJECT public: using QObject::QObject; static RateController *instance(); void addSocket(PeerWireClient *socket); void removeSocket(PeerWireClient *socket); inline int uploadLimit() const { return upLimit; } inline int downloadLimit() const { return downLimit; } inline void setUploadLimit(int bytesPerSecond) { upLimit = bytesPerSecond; } void setDownloadLimit(int bytesPerSecond); public slots: void transfer(); void scheduleTransfer(); private: QElapsedTimer stopWatch; QSet sockets; int upLimit = 0; int downLimit = 0; bool transferScheduled = false; }; #endif