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