package com.ruoyi.device.simulator; import java.time.Instant; import java.util.List; import com.ruoyi.device.model.DeviceWorkStatus; /** 持久化开发模拟器配置;实现必须在返回前确认写入成功。 */ public interface BtsSimulatorStateStore { int CURRENT_VERSION = 1; /** 读取已有状态;仅在状态不存在时原子写入并返回默认状态。 */ SimulatorState loadOrInitialize(SimulatorState defaultState); /** 完整保存下一版模拟器状态。 */ void save(SimulatorState state); /** 读取短期保留的最近请求。 */ List loadRecentRequests(); /** 保存短期保留的最近请求。 */ void saveRecentRequests(List requests); /** 人工重置主状态和最近请求。 */ void reset(SimulatorState defaultState); record SimulatorState(int version, List devices, List collectors, int nextDeviceId, int nextCollectorId, List tombstones) { public SimulatorState { if (version != CURRENT_VERSION) throw new IllegalStateException("Unsupported BTS simulator state version: " + version); devices = List.copyOf(devices); collectors = List.copyOf(collectors); tombstones = List.copyOf(tombstones); } } record DeviceState(int deviceId, String ip, boolean online, List channels) { public DeviceState { channels = List.copyOf(channels); } } record CollectorState(int collectorId, String deviceCode, String ip, String mac, String name, String manufacturer, String model, int channelCount, boolean online) { } record ChannelState(int channelId, boolean online, DeviceWorkStatus workStatus) { } record ChannelTombstone(int deviceId, String ip, int channelId, int remainingDiscoveries) { } record RecentRequest(Instant receivedAt, String command, String request) { } }