qt6windows7/examples/network/torrent/ratecontroller.h

42 lines
942 B
C
Raw Normal View History

2023-10-30 06:33:08 +08:00
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef RATECONTROLLER_H
#define RATECONTROLLER_H
#include <QObject>
#include <QSet>
#include <QElapsedTimer>
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<PeerWireClient *> sockets;
int upLimit = 0;
int downLimit = 0;
bool transferScheduled = false;
};
#endif