SetMonitoringMode
每个 MonitoredItem 有 3 种 monitoring mode:
enum class MonitoringMode : int32_t {
Disabled = 0,
Sampling = 1,
Reporting = 2,
};
| Mode | 服务端采样 | 服务端推送 | 用途 |
|---|---|---|---|
Disabled (0) | × | × | 完全停 (不采也不推) |
Sampling (1) | ✓ | × | 采样但不推 (记历史 / 死区计算) |
Reporting (2, 默认) | ✓ | ✓ | 正常运作 |
前置阅读
- 想停整条订阅 (而不是逐 MI) 看下面
SetPublishingEnabled. - 修改采样参数请看 Modify.
批量切
std::vector<Status> SetMonitoringMode(
MonitoringMode mode,
std::vector<uint32_t> const& mi_handles);
// 临时停止全部采集 (例如设备维护期间)
std::vector<uint32_t> all_handles = { h1, h2, h3, h4 };
auto statuses = sub.SetMonitoringMode(MonitoringMode::Disabled, all_handles);
单 MI 切
Status SetMode(uint32_t mi_handle, MonitoringMode mode);
sub.SetMode(handle, MonitoringMode::Disabled); // 暂停某个 MI
sub.SetMode(handle, MonitoringMode::Reporting); // 恢复
整条订阅启停 (SetPublishingEnabled)
如果想停整条订阅 (而不是逐 MI), 用 SetPublishingEnabled:
sub.SetPublishingEnabled(true); // 开启
sub.SetPublishingEnabled(false); // 暂停
三种粒度对比
| 粒度 | API | 适用 |
|---|---|---|
| 整条订阅 | sub.SetPublishingEnabled(bool) | 临时全停 (维护) |
| 一批 MI | sub.SetMonitoringMode(mode, handles) | 部分模块停 |
| 单 MI | sub.SetMode(handle, mode) | 精细控制 |
| 完全删除 | sub.Remove(handle) / Subscription 析构 | 永久不要了 |