feat:本地数据缓存服务增加缓存定期清理功能
This commit is contained in:
parent
3e1ef91353
commit
b740377763
|
|
@ -5,6 +5,7 @@
|
|||
#include <QObject>
|
||||
#include <QHash>
|
||||
#include <QUrl>
|
||||
#include <QTimer>
|
||||
|
||||
class QSettings;
|
||||
class QNetworkAccessManager;
|
||||
|
|
@ -27,6 +28,7 @@ public:
|
|||
private slots:
|
||||
void onReceiveRealtimeData(const QString& dataMsg);
|
||||
void onHistoricalRequestFinished(const QString& dataID, QNetworkReply* reply);
|
||||
void cleanUpDataCache();
|
||||
|
||||
private:
|
||||
struct RealtimeConfig
|
||||
|
|
@ -95,6 +97,8 @@ private:
|
|||
|
||||
//数据缓存
|
||||
QHash<QString, QSharedPointer<MeasurementData>> m_dataCache;
|
||||
QTimer m_dataCleanupTimer;
|
||||
int m_dataCleanupInterval;
|
||||
|
||||
//请求记录
|
||||
QHash<QString, QSet<QObject*>> m_dataRequesetRecord;
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
|
||||
private:
|
||||
QString m_id;
|
||||
QSet<qint64> m_timestamps; //用于快速查找是否存在改时间戳的数据
|
||||
QSet<qint64> m_timestamps; //用于快速查找是否存在该时间戳的数据
|
||||
QMap<qint64, double> m_data; //按时间戳对数据点进行排序
|
||||
qint64 m_latestTimestamp;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -55,6 +55,11 @@ void MeasurementDataManager::initialize()
|
|||
m_isVaildSettingsFile = false;
|
||||
LOG_ERROR("ReadSettingInfo", "load measurementDataService_config.ini failed");
|
||||
}
|
||||
|
||||
//开启缓存数据的定期清理
|
||||
m_dataCleanupInterval = 10 * 1000;
|
||||
m_dataCleanupTimer.setInterval(m_dataCleanupInterval);
|
||||
connect(&m_dataCleanupTimer, &QTimer::timeout, this, &MeasurementDataManager::cleanUpDataCache);
|
||||
}
|
||||
|
||||
void MeasurementDataManager::buildSubscriptionRequest(const QString& action, const QStringList& measurements)
|
||||
|
|
@ -464,3 +469,12 @@ void MeasurementDataManager::onHistoricalRequestFinished(const QString& dataID,
|
|||
|
||||
reply->deleteLater();
|
||||
}
|
||||
|
||||
void MeasurementDataManager::cleanUpDataCache()
|
||||
{
|
||||
qint64 cleanupTimestame = QDateTime::currentMSecsSinceEpoch() - (m_dataCleanupInterval * 1000);
|
||||
for(auto measurementData : std::as_const(m_dataCache))
|
||||
{
|
||||
measurementData->cleanupOldData(cleanupTimestame);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue