From 8761644af158c5e7f05e999e9834b6496ce414e7 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 29 八月 2026 16:04:31 +0800
Subject: [PATCH] 优化采集器长时历史的有界读取
---
ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java b/ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java
index e417b5a..58a90fe 100644
--- a/ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java
+++ b/ruoyi-device/src/main/java/com/ruoyi/device/simulator/BtsSimulatorStateStore.java
@@ -9,6 +9,7 @@
public interface BtsSimulatorStateStore
{
int CURRENT_VERSION = 1;
+ int MAX_HISTORY_BATCH_SIZE = 1000;
/** 读取已有状态;仅在状态不存在时原子写入并返回默认状态。 */
SimulatorState loadOrInitialize(SimulatorState defaultState);
@@ -27,10 +28,14 @@
save(state);
}
- /** 读取指定采集器的只追加原始历史。 */
- default List<CollectorMeasurementRecord> loadCollectorHistory(String collectorCode)
+ /** 按原始写入顺序或反向顺序读取有界历史批次。 */
+ default CollectorHistoryBatch loadCollectorHistoryPage(String collectorCode, long offset, int limit,
+ boolean reverse)
{
- return List.of();
+ if (offset < 0) throw new IllegalArgumentException("offset must not be negative");
+ if (limit < 1 || limit > MAX_HISTORY_BATCH_SIZE)
+ throw new IllegalArgumentException("limit must be between 1 and " + MAX_HISTORY_BATCH_SIZE);
+ return new CollectorHistoryBatch(offset, 0, false, 0, List.of());
}
/** 原子保存删除采集器后的主状态,并删除该采集器的独立历史。 */
@@ -110,6 +115,12 @@
public CollectorHistoryAppend { records = List.copyOf(records); }
}
+ record CollectorHistoryBatch(long offset, long nextOffset, boolean hasMore, long total,
+ List<CollectorMeasurementRecord> records)
+ {
+ public CollectorHistoryBatch { records = List.copyOf(records); }
+ }
+
record CollectorHistoryFaults(List<Long> missingSequences, Long duplicateSequence,
Long conflictingSequence, boolean outOfOrder)
{
--
Gitblit v1.7.1