53 lines
1014 B
C++
53 lines
1014 B
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);
|
|
|
|
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
|