Files
RateSeveral/RateSeveral.h
2021-12-28 11:02:06 +08:00

55 lines
1.0 KiB
C++

//
// Created by fly on 2021/12/27.
//
#ifndef RATESEVERAL_RATESEVERAL_H
#define RATESEVERAL_RATESEVERAL_H
#include <QObject>
#include <QPair>
#include <QList>
#include <QAtomicInt>
#include <QVector>
#include <QTimer>
#include <QReadWriteLock>
class RateSeveral : public QObject {
Q_OBJECT
public:
explicit RateSeveral(QObject *parent = nullptr);
virtual ~RateSeveral();
void setTimerInterval(qint32 second);
void addRateInterval(quint32 second);
void removeRateInterval(quint32 second);
void record(quint32 val = 1);
quint32 getMaxListSize() const;
void setMaxListSize(quint32 maxSize);
signals:
void RateSignals(quint32 interval, quint32 rate);
protected slots:
void onTimerTimeout();
protected:
QReadWriteLock intervalLock;
QReadWriteLock listLock;
quint32 maxListSize{1000};
QTimer timer;
QVector<quint32> vInterval;
QList<QPair<qint64, QAtomicInteger<quint32>>> recordList;
QAtomicInteger<qint64> recordTimestamp;
};
#endif //RATESEVERAL_RATESEVERAL_H