事件载荷

基础使用

载荷Payload用于事件触发时附带的额外参数,通过继承UDidaEventPayload来定义。

触发时,通过结点设置载荷参数。

concept-invoke-payload

监听时,通过Cast成目标类型来获取载荷参数。

concept-payload-cast

生成载荷

如果因为自身需求不能使用K2Node自动实例化Payload,可以调用事件的函数库中的静态函数来自己实例化一个Payload,相关函数为:UDidaEventLibrary::SpawnDidaEventPayload,然后使用函数库中的静态函数UDidaEventLibrary::InvokeEvent在触发事件即可。

重载解析

Payload允许重载以下两个函数:

参数描述
MakeString根据载荷数据生成字符串
LoadString从字符串中赋值载荷数据

他们会在RPC与TCP收发事件时被调用,用作编码载荷的数据。

目前默认会根据反射信息把数据生成一个Json字符串,但对于指针等特殊类型,需要自己定义一个编码与解码的逻辑,实现相关函数后,便能实现无感知的在网络上发送事件。

载荷回收

为了优化生成载荷的开销,所以提供了载荷的回收。为了避免未正确实现回收函数而造成的异常,所以默认关闭了载荷的回收。如果需要开启,则可以创建一个基于UDidaEventPayloadRecyclable的子类,并实现NativeOnRecycled或K2_OnRecycled。

载荷会在创建时尝试从回收池中获取,在事件Invoke后回收。

需要正确实现载荷的回收函数避免调用异常或长时间持有对象,同时应避免在回收后继续使用载荷。