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;
|