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;