本文档分析主应用进程 (soft_bus) 是否还需要 m_busCore (DeviceBusCore 实例),以及在分离架构中的使用场景。
src/serial_manager/, src/can_manager/storeRawData() - 存储原始数据到数据库storeBusMessage() - 存储总线消息到数据库registerDevice() - 注册设备到数据库updateDevice() - 更新设备信息到数据库updateDeviceStatus() - 更新设备状态到数据库SerialManager 和 CanManager 在主应用中运行,负责设备发现、数据接收和存储src/view_serial/serialdockpage.cppupdateDevice() - 更新设备配置(串口配置、Modbus配置)queryRawData())queryBusMessages())getDeviceInfoByPortname() 已改为通过 SoftBusAPI 从守护进程获取getDeviceInfo(deviceId) 用于通过设备ID查询(UI显示)deviceRegistered - 设备注册信号deviceUnregistered - 设备注销信号busMessageStored - 总线消息存储信号rawDataStored - 原始数据存储信号这些信号用于实时更新UI,当数据写入数据库时触发。
主应用进程 (soft_bus)
├── CoreService
│ └── DeviceBusCore (m_busCore)
│ ├── 数据库连接 (soft_bus_db)
│ ├── 设备管理(内存缓存)
│ └── 数据存储/查询
├── SerialManager
│ └── 需要 m_busCore 存储数据
├── CanManager
│ └── 需要 m_busCore 存储数据
└── UI 组件
└── 需要 m_busCore 查询数据和连接信号
守护进程 (soft_bus_daemon)
├── CoreService
│ └── DeviceBusCore
│ ├── 数据库连接 (soft_bus_db) [共享]
│ ├── 设备管理(内存缓存)
│ └── 数据存储/查询
└── 设备扫描和管理
两个进程共享同一个 SQLite 数据库文件 soft_bus_db:
数据存储需求
SerialManager 和 CanManager 在主应用中运行,需要直接写入数据库数据查询需求
信号连接需求
DeviceBusCore 的信号机制用于通知UI更新向后兼容
设备信息获取
SoftBusAPI::getDeviceByPortName() 从守护进程获取m_busCore->getDeviceInfo(deviceId) 用于通过ID查询(UI显示)数据存储
SerialManager 和 CanManager 继续使用 m_busCore 存储数据m_busCore->updateDevice()数据查询
m_busCore 查询数据信号连接
m_busCore 的信号m_busCore 和守护进程的 DeviceBusCore 有独立的内存缓存deviceRegistered、busMessageStored 等信号m_busCore 信号,避免重复处理| 操作类型 | 是否需要 m_busCore | 说明 |
|---|---|---|
| 设备信息获取 | ⚠️ 部分需要 | 通过端口名获取:使用 SoftBusAPI(从守护进程)通过ID获取:使用 m_busCore(UI显示) |
| 数据存储 | ✅ 需要 | SerialManager、CanManager 存储数据设备配置更新 |
| 数据查询 | ✅ 需要 | UI 组件查询历史数据 |
| 信号连接 | ✅ 需要 | UI 实时更新 |
结论: 主应用进程仍然需要 m_busCore,主要用于:
但设备信息的获取应该优先从守护进程获取(已实现),以确保数据一致性。