From b74037776300ede40d9091005b807b5f663f240e Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Tue, 20 Jan 2026 16:49:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=9C=AC=E5=9C=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=9C=8D=E5=8A=A1=E5=A2=9E=E5=8A=A0=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=AE=9A=E6=9C=9F=E6=B8=85=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/measurementDataManager.h | 4 ++++ include/measurementDataUtils.h | 2 +- source/measurementDataManager.cpp | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/include/measurementDataManager.h b/include/measurementDataManager.h index 7949e57..3945e3a 100644 --- a/include/measurementDataManager.h +++ b/include/measurementDataManager.h @@ -5,6 +5,7 @@ #include #include #include +#include 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> m_dataCache; + QTimer m_dataCleanupTimer; + int m_dataCleanupInterval; //请求记录 QHash> m_dataRequesetRecord; diff --git a/include/measurementDataUtils.h b/include/measurementDataUtils.h index 4c4e1d6..3ed255f 100644 --- a/include/measurementDataUtils.h +++ b/include/measurementDataUtils.h @@ -49,7 +49,7 @@ public: private: QString m_id; - QSet m_timestamps; //用于快速查找是否存在改时间戳的数据 + QSet m_timestamps; //用于快速查找是否存在该时间戳的数据 QMap m_data; //按时间戳对数据点进行排序 qint64 m_latestTimestamp; }; diff --git a/source/measurementDataManager.cpp b/source/measurementDataManager.cpp index 6290f71..90e6e17 100644 --- a/source/measurementDataManager.cpp +++ b/source/measurementDataManager.cpp @@ -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); + } +}