# cloud_interact 类调用关系速查 > 配合 [cloud_interact_analysis.md](./cloud_interact_analysis.md) 使用 --- ## 1. 按命名空间 pr 的完整类列表 ### 1.1 cloud_interact 模块(15 个公开类 + 内部私有类) | # | 类名 | 基类/模式 | 创建方式 | 主要被谁调用 | |---|------|----------|---------|-------------| | 1 | `CCommuInteraction` | `CBaseThread` | `CreateInstance()` | main | | 2 | `CCommuInterData` | 内部类 | CommuInteraction 构造 | CCommuInteraction | | 3 | `CCommunicatorHelper` | 独立 | `CreateInstance()` | CCommuInteraction, CDownstreamCommand, CForwardHelper | | 4 | `CCommunicatorHelperPrivate` | 内部类 | — | CCommunicatorHelper | | 5 | `CForwardHelper` | 独立 | `CreateInstance()` | CCommuInteraction, CDownstreamCommand | | 6 | `CForwardHelperPrivate` | 内部类 | — | CForwardHelper | | 7 | `CDownstreamCommand` | 独立 | `CreateInstance()` | CCommuInteraction | | 8 | `CDownstreamCommandPrivate` | 内部类 | — | CDownstreamCommand | | 9 | `CDataCache` | 单例 | `Instance()` | main, CCommuInteraction, Offline/Fault Task | | 10 | `CCachePrivate` | 内部类 | — | CDataCache | | 11 | `CStateManager` | 单例 | `Instance()` | main, CCommuInteraction, CAuthManager | | 12 | `CStateCache` | 内部类 | — | CStateManager | | 13 | `CAuthManager` | 独立 | `CreateInstance()` | main | | 14 | `CAuthManagerPrivate` | 内部类 | — | CAuthManager | | 15 | `CCloudConnectivityDetector` | 独立 | `CreateInstance()` | CAuthManager | | 16 | `CConnectivityData` | 内部类 | — | CCloudConnectivityDetector | | 17 | `CAuthQueryHandler` | 独立 | `CreateInstance()` | CAuthManager | | 18 | `CAuthQueryData` | 内部类 | — | CAuthQueryHandler | | 19 | `CAuthDistributeTask` | `CBaseThread` | `CreateInstance()` | CAuthManager (EMS) | | 20 | `CAuthDistributeData` | 内部类 | — | CAuthDistributeTask | | 21 | `CAuthReceiveHandler` | 独立 | `CreateInstance()` | CAuthManager (非EMS) | | 22 | `CAuthReceiveData` | 内部类 | — | CAuthReceiveHandler | | 23 | `COfflineDataTask` | `CBaseThread` | `CreateInstance()` | main | | 24 | `COfflineTaskPrivate` | 内部类 | — | COfflineDataTask | | 25 | `CFaultRecordTask` | `CBaseThread` | `CreateInstance()` | main | | 26 | `CFaultRecordPrivate` | 内部类 | — | CFaultRecordTask | | 27 | `CRemoteSshHelper` | 单例 | `Instance()` | main, CDownstreamCommand | | 28 | `CRemoteSshData` | 内部类 | — | CRemoteSshHelper | ### 1.2 reuse_utils 模块 | 类名 | 模式 | 主要被谁调用 | |------|------|-------------| | `CConfigManager` | 单例 | main, CCommuInteraction, CDownstreamCommand | | `CFrameManager` | 独立 | CCommuInteraction | | `CFrameHelper` | 静态工具 | CFrameManager, CCommuInteraction, Auth 模块 | | `CProtocolSinglton` | 单例 | main, CCommuInteraction, CFrameManager | | `CSSLLibSinglton` | 单例 | CDataProcesser (加解密) | | `CDowloadTask` | 独立 | CCommuInteraction (升级下载) | | `CFtpDownloadTask` | 独立 | CDowloadTask | | `CSftpDowloadTask` | 独立 | CDowloadTask | | `CFtpUploadTask` | 独立 | 上传场景 | | `CUdpSender` / `CUdpReceiver` | 独立 | Auth 广播 | | `CSSHHelper` | 工具 | CRemoteSshHelper | ### 1.3 processers 模块 — 数据处理器继承树 ``` CDataProcesser (抽象基类) ├── CLoginProcesser # 登录 ├── CHeartBeatProcesser # 心跳 ├── CGeneralDataProcesser (通用中间层) │ ├── [DeviceManage] CVersionInfoProcesser, CDeviceInfoProcesser, CDeviceStateProcesser │ ├── [Overview] COverallOverviewProcesser, CTerminalOverviewProcesser, CESSProcesser, │ │ CGatewayPowerMeterOverviewProcesser, CLoadPowerMeterOverviewProcesser, │ │ CSolarGenerationOverviewProcesser, CWindGenerationOverviewProcesser, │ │ CDieselGenerationOverviewProcesser, CVirtualPowerPlantOverviewProcesser, │ │ CEssBranchOverviewProcesser │ ├── [DeviceData] CPCSProcesser, CPowerMeterProcesser, CSolarInverterProcesser, │ │ CWindInverterProcesser, CChargePileProcesser, CDieselGeneratorProcesser, │ │ CPowerEnvironProcesser, CSolarDcProcesser │ ├── [BMS] CBMSSummaryProcesser, CBMSExtremeProcesser, CBMSChangedCellsProcesser, │ │ CBMSCellDetailsProcesser │ ├── [Alarm] CTeleSignalingProcesser, CRealtimeAlarmProcesser, │ │ CHistoryAlarmProcesser, CHistoryEventProcesser │ ├── [Statistics] COverviewTOUProcesser, CDeviceTOUProcesser, CRevenueStatisticsProcesser │ ├── [EMS Strategy Read] CDownstreamSchedulingTaskReadProcesser, │ │ CDownstreamPeakShavingReadProcesser, CDownstreamLoadResponseReadProcesser, │ │ CDownstreamDemandResponseReadProcesser, CDownstreamCapacityExpansionReadProcesser, │ │ CDownstreamGridRestrictionReadProcesser, CDownstreamTOUParamsReadProcesser, │ │ CDownstreamPVWorkingReadProcesser, CDownstreamPva*ReadProcesser (6个) │ ├── [EMS Strategy Write] CDownstreamSchedulingTaskWriteProcesser, ... (对应 Write 系列) │ ├── [Tariff] CDownstreamTariffTypeRead/WriteProcesser, CDownstreamTariffTemplateRead/WriteProcesser, │ │ CDownstreamTimeTemplateRead/WriteProcesser, CDownstreamTariffSettingRead/WriteProcesser, │ │ CUpstreamTariffTypeNofityProcesser │ ├── [Battery] CDownstreamSafeProtectionRead/WriteProcesser, CDownstreamSOCCalibrationRead/WriteProcesser, │ │ CDownstreamCapacityCalibrationRead/WriteProcesser, CDownstreamInsulationDetectionRead/WriteProcesser │ ├── [Control] CDownstreamEMSControlProcesser, CDownstreamDeviceControlProcesser │ ├── [Upgrade] CUpstreamUpgradeTaskQueryProcesser, CUpstreamUpgradeTaskResultProcesser, │ │ CUpstreamUpgradeTerminalResultProcesser, CDownstreamnUpgradeTaskNotificationProcesser │ ├── [Offline] CUpstreamOfflineRequestProcesser │ ├── [FaultRecord] CUpstreamFaultRecRequestProcesser │ ├── [RemoteManage] CDownstreamSshStartProcesser, CDownstreamSshStopProcesser │ └── [Setup] CDownstreamTermUpdateProcesser ├── CProcesserDataHelper (单例, 非继承) # 数据Id与上报状态管理 └── CTerminalCache (单例, 非继承) # 终端列表缓存 ``` --- ## 2. 核心调用链 ### 2.1 启动阶段 ``` main() ├─ LibCreateMutexLog() ├─ CDataCache::UpdateRunningDurationPeriodically() ├─ RegisterHandleSigs() → CStateManager::NotifyQuit() ├─ CAuthManager::CreateInstance() │ ├─ CCloudConnectivityDetector::CreateInstance() │ ├─ CAuthQueryHandler::CreateInstance() │ ├─ [EMS] CAuthDistributeTask::CreateInstance() │ └─ [非EMS] CAuthReceiveHandler::CreateInstance() ├─ CAuthManager::Execute() ← 阻塞直到授权完成 ├─ CStateManager::Notify*() 重置状态 ├─ CConfigManager::Initialize() ├─ CProtocolSinglton::Create() ├─ CCommuInteraction::CreateInstance() → Initialize(STATION_CONFIG) │ └─ CCommuInterData::Initialize() │ ├─ CFrameManager::CreateInstance() → CreateDataProcessers() │ ├─ CCommunicatorHelper::CreateInstance() │ ├─ CForwardHelper::CreateInstance() │ └─ CDownstreamCommand::CreateInstance() ├─ [可选] COfflineDataTask / CFaultRecordTask └─ CThreadWatchDog::Initialize() → Start() ``` ### 2.2 通信线程单次 Handle 调用链 ``` CCommuInteraction::Handle() ├─ CDataCache::Initialize() [首次] ├─ ConnectCloud() │ └─ CCommunicatorHelper::Connect() │ └─ ICloudCommunicator::Connect() ├─ LoginCloud() │ ├─ CFrameManager::GetDataProcesserByFrameType(LOGIN) │ ├─ CLoginProcesser::EncodeUpstreamRequest() │ ├─ CFrameHelper::EncodeUpstreamFrame() │ ├─ CCommunicatorHelper::Send() │ ├─ ReceiveDownstreamFrame*() │ ├─ CFrameManager::DecodeDownstreamFrame() │ └─ CConfigManager::UpdateLoginResponse() ├─ HandleLastUncompletedUpgradeTask() ├─ CDownstreamCommand::CheckDownstreamCommandResults() ├─ HandleDownstreamData() │ ├─ CCommunicatorHelper::Receive() │ ├─ CFrameManager::DecodeDownstreamFrame() │ ├─ [命令] CDownstreamCommand::HandleDownstreamRequest() │ │ ├─ HandleTerminalUpdateRequest() │ │ ├─ HandleDownstreamCommandRequest() │ │ ├─ HandleDownstreamParams*Request() │ │ ├─ HandleDownstreamSsh*Request() → CRemoteSshHelper │ │ └─ HandleDownstreamUpgradeNotificationRequest() │ └─ [转发] CForwardHelper::ForwardDownstreamData() ├─ HandleUpstreamData() │ └─ for (priority → processer) │ ├─ TimeToEncodeUpstreamRequest() │ ├─ FillUpstreamRequestData() │ ├─ EncodeUpstreamRequest() │ ├─ SendUpstreamFrame() │ └─ Receive + DecodeDownstreamResponse() ├─ CForwardHelper::ForwardUpstreamData() [EMS] ├─ CForwardHelper::ForwardFaultRecord() [EMS] ├─ CForwardHelper::ForwardOfflineData() [EMS] └─ CDataCache::CalculateTotalOnlineDuration() [每5分钟] ``` ### 2.3 下行命令处理链(CDownstreamCommand) ``` CDownstreamCommand::HandleDownstreamRequest() ├─ IsDownstreamRequest(frameType) ? ├─ pDataProcesser->DecodeDownstreamRequest() ├─ 按帧类型分发: │ ├─ TERM_UPDATE → HandleTerminalUpdateRequest/Response │ ├─ UPGRADE_NOTIFY → HandleDownstreamUpgradeNotificationRequest │ ├─ READ_*_PARAMS → HandleDownstreamParamsReadingRequest │ ├─ WRITE_*_PARAMS → HandleDownstreamParamsWritingRequest │ ├─ CONTROL_COMMAND → HandleDownstreamCommandRequest │ └─ START/STOP_SSH → HandleDownstreamSshStart/StopRequest ├─ pDataProcesser->EncodeUpstreamResponse() └─ CCommunicatorHelper::Send() 回复云平台 CDownstreamCommand::CheckDownstreamCommandResults() └─ 轮询 librunning_data / libcloud_command 获取异步执行结果并上报 ``` --- ## 3. 单例与生命周期 | 单例类 | 创建时机 | 销毁时机 | |--------|---------|---------| | `CStateManager` | 首次 Instance() | 进程结束 | | `CDataCache` | 首次 Instance() | 进程结束 | | `CConfigManager` | main 中 Initialize | 进程结束 | | `CProtocolSinglton` | main 中 Create | main 退出前 Free(),重授权时也会 Free/Create | | `CRemoteSshHelper` | 首次 Instance() | 进程结束 | | `CThreadWatchDog` | main 中 Initialize | main 退出前 Stop() | | `CProcesserDataHelper` | 首次 Instance() | 进程结束 | | `CTerminalCache` | 首次 Instance() | 进程结束 | **线程对象生命周期:** | 对象 | 所有者 | 启停 | |------|--------|------| | `CCommuInteraction` | main 局部 shared_ptr | main 循环 Start/Stop,重授权时 Deinitialize | | `COfflineDataTask` | main 局部 shared_ptr | main 循环按需 Start | | `CFaultRecordTask` | main 局部 shared_ptr | main 循环按需 Start | | `CAuthDistributeTask` | CAuthManager 内部 | EMS 授权成功后 Start(detached) | | `CAuthManager` | main 局部 shared_ptr | 全程存活,退出前 Deinitialize | --- ## 4. 共享库接口(跨模块数据通道) | 库 | cloud_interact 中的用途 | |----|------------------------| | `librunning_data` | 云连接/登录状态、终端信息、授权状态、进程喂狗 | | `libcloud_data` | 数据上报状态、离线数据、数据Id生成 | | `libcloud_command` | 下行控制指令队列与执行结果 | | `libcloud_repeater` | EMS 中继转发缓冲 | | `libruntime_environ` | 运行环境、站点配置加载、终端透传有效性 | | `libcloud_protocol` | 协议编解码(通过 ICloudProtocol 接口) | | `libcloud_communicator` | TCP 通信(通过 ICloudCommunicator 接口) | --- ## 5. 帧类型 → Processor 映射表(节选) 完整映射见 `reuse_utils/src/FrameManager.cpp` 中 `mapType2ProcesserCreator`。 | 帧类型常量 | Processor 类 | 方向 | 优先级 | |-----------|---------------|------|--------| | `UPSTREAM_LOGIN` | CLoginProcesser | 上行请求 | 1 | | `UPSTREAM_VERSION_INFOS` | CVersionInfoProcesser | 上行请求 | 2 | | `UPSTREAM_DEVICE_INFOS` | CDeviceInfoProcesser | 上行请求 | 3 | | `UPSTREAM_DEVICE_STATES` | CDeviceStateProcesser | 上行请求 | 4 | | `UPSTREAM_HEART_BEAT` | CHeartBeatProcesser | 上行请求 | 2001 | | `UPSTREAM_REALTIME_ALARM_DATA` | CRealtimeAlarmProcesser | 上行请求 | 302 | | `UPSTREAM_OVERALL_OVERVIEW` | COverallOverviewProcesser | 上行请求 | 401 | | `UPSTREAM_OFFLINE_DATA_REQUEST` | CUpstreamOfflineRequestProcesser | 上行请求 | 501 | | `UPSTREAM_FAULT_RECORD` | CUpstreamFaultRecRequestProcesser | 上行请求 | 303 | | `UPSTREAM_UPGRADE_TASK_QUERY` | CUpstreamUpgradeTaskQueryProcesser | 上行请求 | 200 | | `DOWNSTREAM_EMS_CONTROL_COMMAND` | CDownstreamEMSControlProcesser | 下行请求 | 801 | | `DOWNSTREAM_DEVICE_CONTROL_COMMAND` | CDownstreamDeviceControlProcesser | 下行请求 | 802 | | `DOWNSTREAM_READ_SCHEDULING_TASK_PARAMS` | CDownstreamSchedulingTaskReadProcesser | 下行请求 | 901 | | `DOWNSTREAM_WRITE_SCHEDULING_TASK_PARAMS` | CDownstreamSchedulingTaskWriteProcesser | 下行请求 | 902 | | `DOWNSTREAM_START_SSH` | CDownstreamSshStartProcesser | 下行请求 | 1201 | | `DOWNSTREAM_STOP_SSH` | CDownstreamSshStopProcesser | 下行请求 | 1202 | | `DOWNSTREAM_UPGRADE_TASK_NOTIFICATION` | CDownstreamnUpgradeTaskNotificationProcesser | 下行请求 | 203 | > 注:优先级数值越小越先上报;下行命令类帧不参与自动上行优先级排序,由云平台主动下发触发。