From 7885cede659f3255be56f77c1eef2ada7387d6f1 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期日, 22 三月 2026 16:23:21 +0800
Subject: [PATCH] 初始化项目
---
src/dataCache.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/src/dataCache.js b/src/dataCache.js
new file mode 100644
index 0000000..dc28767
--- /dev/null
+++ b/src/dataCache.js
@@ -0,0 +1,56 @@
+class DataCache {
+ constructor() {
+ this.devices = new Map(); // deviceNumber -> { data, updatedAt }
+ }
+
+ setDeviceData(deviceNumber, data) {
+ const now = Date.now();
+ this.devices.set(deviceNumber, { data, updatedAt: now });
+ }
+
+ getDeviceData(deviceNumber) {
+ const entry = this.devices.get(deviceNumber);
+ return entry || null;
+ }
+
+ getAllDeviceData() {
+ const result = {};
+ for (const [deviceNumber, value] of this.devices.entries()) {
+ result[deviceNumber] = value;
+ }
+ return result;
+ }
+
+ getDeviceList() {
+ const list = [];
+ for (const [deviceNumber, value] of this.devices.entries()) {
+ list.push({ deviceNumber, updatedAt: value.updatedAt });
+ }
+ return list;
+ }
+
+ getStats() {
+ const list = this.getDeviceList();
+ return {
+ count: list.length,
+ devices: list
+ };
+ }
+
+ getIdleDevices(timeoutMs) {
+ const now = Date.now();
+ const result = [];
+ for (const [deviceNumber, value] of this.devices.entries()) {
+ if (now - value.updatedAt > timeoutMs) {
+ result.push({ deviceNumber, updatedAt: value.updatedAt });
+ }
+ }
+ return result;
+ }
+
+ clear() {
+ this.devices.clear();
+ }
+}
+
+module.exports = DataCache;
--
Gitblit v1.8.0