当前位置: 首页> 教育> 就业 > 网页设计心得体会正文_企业管理系统大全免费_百度网盘官方网站_网络营销渠道有哪三类

网页设计心得体会正文_企业管理系统大全免费_百度网盘官方网站_网络营销渠道有哪三类

时间:2025/7/15 13:18:03来源:https://blog.csdn.net/weixin_42108533/article/details/142406666 浏览次数:0次
网页设计心得体会正文_企业管理系统大全免费_百度网盘官方网站_网络营销渠道有哪三类

☞ 返回总目录

5.3.7 Fields

从概念上讲,与 Event 不同,Field 在任何时候都具有一定的值。这与 Event 相比,带来了以下附加内容:

  • 如果对 Field 进行了订阅,“立即” 会以类似事件通知的模式将当前值发送回订阅者。
  • 当前 Field 的值可以通过调用 Get () 方法进行查询,或者通过 Set () 方法进行更新。

请注意,Field 提供的所有功能都是可选的:在 Field 的配置(IDL)中,您可以决定它是否具有 “on-change-notification”、Get () 或 Set ()。在我们的示例 Field(见下文)中,我们配置了所有这三种机制。

对于远程服务提供的每个字段,Proxy Class 都包含一个特定于该字段的包装类的成员。在我们的示例中,该成员的名称为 UpdateRate(类型为 fields::UpdateRate)。

与 Event 和 Method 的包装类一样,Proxy Class 所需的 Field 包装类在特定的命名空间 fields 中生成,该命名空间包含在代理命名空间内。

故意把 Field 的解释放在 Event 和 Method 的解释之后,因为 Field 的概念大致是一个包含相关 get ()/set () 方法的 Event 的聚合。因此,从技术上讲,我们也将 ara::com 字段的表示实现为 ara::com 事件和方法的组合。

因此,代理中的 Field 成员用于:

  • 使用与常规方法完全相同的机制调用 Field 的 Get () 或 Set () 方法。
  • 以事件 / 事件数据的形式访问 Field 更新通知,这些通知由我们的代理连接的服务实例发送,其机制与常规事件完全相同。

让我们看一下为我们的示例 UpdateRate 字段生成的 Field 包装类:

class UpdateRate 
{ /*** \brief 事件数据类型的快捷方式。*/using FieldType = uint32_t;/*** \brief 有关详细信息,请参阅 Events,因为字段包含通知的可能性,其中包含在那里描述的接口的详细信息。*/ara::core::Result<void> Subscribe(size_t maxSampleCount);size_t GetFreeSampleCount() const noexcept;ara::com::SubscriptionState GetSubscriptionState() const;void Unsubscribe();ara::core::Result<void> SetReceiveHandler(ara::com::EventReceiveHandler handler);ara::core::Result<void> UnsetReceiveHandler();ara::core::Result<void> SetSubscriptionStateChangeHandler(ara::com::SubscriptionStateChangeHandler handler);void UnsetSubscriptionStateChangeHandler();template <typename F>ara::core::Result<size_t> GetNewSamples(F&& f,size_t maxNumberOfSamples = std::numeric_limits<size_t>::max());/*** 该 getter 允许请求服务提供者的实际值。* * 有关 future 的描述,请参阅该方法。* 它应该表现得像一个方法。*/ara::core::Future<FieldType> Get();/*** 该 setter 允许请求设置一个新值。* 由服务提供者决定是否接受请求或修改它。* 新值应作为响应发送回请求者。* * 有关 future 的描述,请参阅该方法。* 它应该表现得像一个方法。*/ara::core::Future<FieldType> Set(const FieldType& value);
};

这里没有更多要描述的内容了。关于该字段中类似 Event 的部分的机制文档,请查看 5.3.5 小节;关于该 Field 中类似方法的部分的文档,请查看 5.3.6 小节。

5.3.8 触发器(Triggers)

触发器只是一类无数据的事件。这意味着 5.3.5 小节中的所有文档也适用于触发器,除了与数据相关的部分在本节中进行描述。从代理的角度来看,订阅触发器与 5.3.5.1 小节中描述的相同,但没有本地缓存部分。

/*** 应用程序期望通信管理(CM)订阅该事件。*/
ara::core::Result<void> Subscribe();

一个Subscribe()调用将通知通信管理接收触发器更新。其他订阅功能(例如SubscribeChangeSetSubscriptionHandler()、Unsubscribe())与事件相同。

与事件的一个很大区别是接收触发器更新。与事件不同,在事件中我们对接收的数据感兴趣,而对于触发器,我们只对自上次检查以来接收到的触发器数量感兴趣。因此,GetNewTriggers()GetNewSamples()更简单:

/*** 获取如果有接收到的触发器的数量。* * 返回结果,表示新触发器的数量(零意味着没有新的触发器已被接收)。*/
size_t GetNewTriggers();

返回值表示自上次调用GetNewTriggers()以来发生的已接收触发器的数量。如 5.3.5.5 小节中提到的基于轮询和事件驱动的访问也适用于触发器。

关键字:网页设计心得体会正文_企业管理系统大全免费_百度网盘官方网站_网络营销渠道有哪三类

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: