本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
遍历所订阅实体的事件
使用 AllSubscriptionEvents()
可获取所订阅实体(应用程序订阅区域中的实体)的事件列表。该函数具有以下签名:
Result<SubscriptionChangeList> AllSubscriptionEvents(Transaction& txn)
然后使用循环遍历各个实体,如以下示例所示。
例 示例
WEAVERRUNTIME_TRY(Api::SubscriptionChangeList subscriptionChangeList, Api::AllSubscriptionEvents(transaction)); for (const Api::SubscriptionEvent& event : subscriptionChangeList.changes) { Api::Entity entity = event.entity; Api::ChangeListAction action = event.action; switch (action) { case Api::ChangeListAction::None: // insert code to handle the event break; case Api::ChangeListAction::Remove: // insert code to handle the event break; case Api::ChangeListAction::Add: // insert code to handle the event break; case Api::ChangeListAction::Update: // insert code to handle the event break; case Api::ChangeListAction::Reject: // insert code to handle the event break; } }
事件类型
None
– 实体位于该区域内,未修改其位置和字段数据。Remove
– 实体已从该区域内移除。Add
– 实体已添加到该区域内。Update
– 实体位于该区域内且已被修改。Reject
– 应用程序未能将实体从该区域内移除。
注意
如果发生 Reject
事件,应用程序将在下一个刻度再次尝试转移。