const express = require('express'); const router = express.Router(); const { initializeMonitor, cleanupMonitor } = require('../utils/systemMonitor'); // 存储监控服务的状态 let monitorStatus = { isInitialized: false, domainId: null, lastError: null, activeMonitors: new Set() // 添加活跃监控器集合 }; // 初始化监控服务 router.post('/initialize', async (req, res) => { try { const { domainId, monitorId } = req.body; if (!domainId || !monitorId) { return res.status(400).json({ error: '缺少必要的参数' }); } // 如果已经初始化,检查是否是新的监控器 if (monitorStatus.isInitialized) { if (monitorStatus.domainId !== domainId) { return res.status(400).json({ error: 'DDS域ID不匹配' }); } monitorStatus.activeMonitors.add(monitorId); return res.json({ message: '监控器已注册', status: monitorStatus }); } // 首次初始化 const result = initializeMonitor(domainId); if (result && result.includes('失败')) { monitorStatus.lastError = result; return res.status(500).json({ error: result }); } monitorStatus.isInitialized = true; monitorStatus.domainId = domainId; monitorStatus.lastError = null; monitorStatus.activeMonitors.add(monitorId); res.json({ message: '监控服务初始化成功', status: monitorStatus }); } catch (error) { console.error('初始化监控服务失败:', error); monitorStatus.lastError = error.message; res.status(500).json({ error: '初始化监控服务失败', message: error.message }); } }); // 注销监控器 router.post('/unregister', async (req, res) => { try { const { monitorId } = req.body; if (!monitorId) { return res.status(400).json({ error: '缺少必要的monitorId参数' }); } monitorStatus.activeMonitors.delete(monitorId); // 如果没有活跃的监控器了,清理资源 if (monitorStatus.activeMonitors.size === 0) { cleanupMonitor(); monitorStatus = { isInitialized: false, domainId: null, lastError: null, activeMonitors: new Set() }; } res.json({ message: '监控器注销成功', status: monitorStatus }); } catch (error) { console.error('注销监控器失败:', error); res.status(500).json({ error: '注销监控器失败', message: error.message }); } }); // 获取监控服务状态 router.get('/status', (req, res) => { res.json(monitorStatus); }); module.exports = router;