2022-12-15-Fastdds回调掩码

简介: 2022-12-15-Fastdds回调掩码

层级关系式从下往上依次降低

当事件产生的时候会触发回调,例如消息接收事件,当事件触发的时候,事件会层层冒泡从高层级往低层级传递时间,在传递的过程中层层过滤,在domainparticipantlistener这一层中是没有任何的过滤器的,也就是说这一层不用关闭任何过滤器就可以让消息通过,传递到下一层,到了下一层的话比如是到了subscriberlistener这一层,这一层有一个on_data_reader过滤器,如果这个过滤器处于开启状态这个事件就会触发on_data_reader停止冒泡了,否则继续往下一层冒泡,到达datawriterlistener这一层, 这一层的话也有一个消息过滤器(其他的可能是别的事件的过滤器,不一定是消息到达事件的过滤器),该过滤器的作用和上一层的on_data_reader过滤器的作用是一样的,都是对消息事件进行处理的作用,同样如果开启状态事件就会触发on_data_ava也就不再冒泡了

对于mask的书写如果是增量那么就是StatusMask::none()<<StatusMask::xxx()

如果是减量的话就是StatusMask::all()>>StatusMask::xxx()

注意在subscriberlistener如果把on_data_ava过滤器关闭的话也会误打误撞把on_data_reader过滤器关掉,所以消息事件会继续向下冒泡的,一个事件在不同的地方调用的是不同的方法 ,这个Sub里面是获取不到送给哪个dataReader的, 那么o_d_a是自然调用不了的, ,所以退而求其次, 去调用了o_d_r ,每个层级有每个层级能处理的事件, 事件是事件, 过滤器(回调)是过滤器 ,只有事件的类型和属性 ,每个层级根据自己能够怎么处理这个事件选择自身的过滤器 ,在subscriberlistener就只透过 “收到消息事件” 的话完全可以写成StatusMask::all() >> StatusMask::data_reader()


目录
相关文章
|
11月前
|
JavaScript
判断函数是否标记为async
判断函数是否标记为async
判断函数是否标记为async
|
3月前
|
人工智能 语音技术 vr&ar
接收返回的识别结果
【8月更文挑战第4天】接收返回的识别结果。
31 8
|
5月前
|
网络协议 Linux 网络安全
Iptables深度解析:四表五链与动作参数
Iptables深度解析:四表五链与动作参数
454 0
|
6月前
|
JavaScript 前端开发
在页面中监听多个广播通道
使用 JavaScript 的 `BroadcastChannel` 可以监听多个广播通道。示例展示了如何创建并处理两个通道&quot;channel1&quot;和&quot;channel2&quot;的事件。每个通道都有独立的`onmessage`事件处理程序,接收到消息时会在控制台打印。可以按需创建多个通道,并在不再需要时调用`channel.close()`关闭以释放资源。
|
6月前
|
传感器 人工智能 算法
掌握C++中的状态-事件回调矩阵:打造强大的有限状态机
掌握C++中的状态-事件回调矩阵:打造强大的有限状态机
128 0
|
机器学习/深度学习 Serverless Python
​注意力机制中的掩码详解
注意力机制的掩码允许我们发送不同长度的批次数据一次性的发送到transformer中。在代码中是通过将所有序列填充到相同的长度,然后使用“attention_mask”张量来识别哪些令牌是填充的来做到这一点,本文将详细介绍这个掩码的原理和机制。
351 0
|
C++
UE C++延迟调用实现(LatentAction方法)
UE C++延迟调用实现(LatentAction方法)
271 0
|
机器学习/深度学习 前端开发 JavaScript
路由动画详解(附加代码效果)
路由动画详解(附加代码效果)
105 0
|
机器学习/深度学习 PyTorch 算法框架/工具
自编码器实现异常值检测?
自编码器可以用于异常值检测的一个常见方法是使用重构误差。具体地,你可以将自编码器训练用于将输入数据重新构造出来。然后,对于给定的输入数据,你可以将其传递到自编码器中并计算其重构误差。如果重构误差很大,那么这个输入数据可能是异常值。 下面是一个可能的步骤: 准备数据:将输入数据分成特征和标签,其中特征是前7列,标签是最后一列。然后,将特征标准化,以便它们具有相似的尺度。 创建自编码器:使用keras或pytorch等框架来创建一个自编码器。自编码器的输入和输出应该具有相同的形状,也就是前7列特征的形状。 训练自编码器:将准备好的数据用于训练自编码器。自编码器应该在输入数据上拟合得很好,并
494 0
|
PyTorch 算法框架/工具
如何将网络参数初始化,或者如何将网络参数还原成原始参数状态
在以上代码中,_initialize_weights()方法用于对网络参数进行初始化。其中,init.ones_表示将权重初始化为1,init.zeros_表示将偏置初始化为0。 3. 如果想将网络参数恢复到初始状态,则可以重新调用_initialize_weights()方法
311 0