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