OpenHarmony Sensor 模块Callback注册和回调全流程
Posted 一日丧命散
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenHarmony Sensor 模块Callback注册和回调全流程相关的知识,希望对你有一定的参考价值。
service启动阶段的回调注册流程
service 启动:
注册Service的回调函数 ZReportDataCallback()到Impl实现类中
注册实现类Impl的回调函数SensorDataCallback()到驱动层
驱动层代码:
On()订阅流程中,应用从JS到Clent端的回调注册流程
细节图:
从上面client端的回调注册, 和 service端的回调注册都分别实现。
只需要将service 和 client 串联起来即可。
service 是如何触发 client端的回调的?
答案是通过socket发送消息。触发listener的OnReadable()
在client端有个线程负责receive socket消息,
在service端有个线程负责send socket消息。
平时,service端的发送线程是处于阻塞状态。 当驱动触发了service的回调函数SensorServiceImpl::SensorDataCallback()时,SensorServiceImpl::SensorDataCallback()又会回调上一层的回调函数ZReportDataCallback()。
下面的图时注册过程,回调过程需要将箭头反向看即可。
SensorServiceImpl::SensorDataCallback()的实现:
消息发送线程:
经过多层调用:
当client端监听到有消息过来,就触发OnReadable。
接者反向往上回调,就完成了从驱动,到service,到client,到Js层的回调了。
驱动---回调方式--->service---socket方式--->client----回调方式--->JS
以上是关于OpenHarmony Sensor 模块Callback注册和回调全流程的主要内容,如果未能解决你的问题,请参考以下文章