// // Created by fly on 2021/12/27. // #ifndef RATESEVERAL_RATESEVERAL_H #define RATESEVERAL_RATESEVERAL_H #include #include #include #include #include #include #include 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 vInterval; QList>> recordList; QAtomicInteger recordTimestamp; }; #endif //RATESEVERAL_RATESEVERAL_H