sylixos下DBUS替换方案

1.1 SylixOS下替换原理

上一篇博客中介绍了DBUS通信原理以及常用函数接口,本文档介绍SylixOS下DBUS功能替换方案。

SylixOS有多种进程间通信方法,可以实现类DBUS的进程间通信功能。根据DBUS通信原理,SylixOS下可设计替换方案如图 11所示。

替换方案需先创建一个后台进程,负责接收进程发送的消息,根据消息类型进行处理。若接收的消息是信号类型,则依次转发至其他进程,若消息类型是函数调用类型,则转发至目标进程,等待函数调用的返回值。替换方案中进程间通信通过UDP通信实现,通过后台进程的转发,可以实现DBUS函数调用以及信号广播的功能,不同进程用不同的端口号区分。

如图 1-1所示,替换方案中后台进程功能类似于DBUS中的总线功能,UDP通信替代域套接字,由此实现类DBUS的进程间通信功能。

图 1-1替换方案

替换方案中消息类型可分为:

1. 请求连接消息

2. 断开连接消息

3. 信号消息

4. 函数调用消息

5. 函数返回值消息

6. 函数注册消息

7. 错误消息

替换方案中需实现类DBUS功能,其中包括:

1. 进程请求连接到后台进程以及断开连接

2. 信号发送

3. 信号接收

4. 函数调用

5. 等待函数调用

6. 提供函数调用

2. 技术实现

2.1 连接到后台进程

进程间通信前需连接到后台进程,SylixOS实现替换方案中,需要通信进程构造消息,向后台进程发送请求连接类型的消息。

如图 2-1所示,后台进程判定消息为请求连接消息时,把该进程端口号加入到进程管理链表中。程序执行结束时,进程需要断开和后台进程的连接,送请求断开连接的消息至后台进程,后台进程把该进程对应的端口号从管理链表中删除。

图 2-1请求连接、断开

2.2 信号发送

DBUS中信号可以实现一种广播的机制,进程发送信号前需构造信号类型消息,然后发送至后台进程,且不需要等待响应消息。

SylixOS下实现信号发送流程如图 2-2所示,构造信号类型消息,通过UDP发送至后台进程。

图 2-2信号发送

2.3 信号接收

当后台进程接收到信号类型的消息时,遍历所有已经连接到后台的进程,依次转发信号,实现信号的广播功能。

已经连接到后台的进程需告知自己感兴趣的信号,然后等待消息,信号接收流程图 2-3所示。

图 2-3信号接收

2.4 函数调用

函数调用同信号类似,进程调用函数前需构造消息,消息包括函数名、函数参数以及本进程端口号。然后发送消息至后台进程,阻塞等待函数执行的返回值,流程图 2-4所示。

图 2-4函数调用

后台进程接收到函数调用类型的消息时,先检查该调用函数是否存在,函数存在则转发该消息至对应提供函数的进程,等待执行结果。若检查该调用函数不存在,则返回错误消息到调用函数的进程。后台进程处理流程图 2-5所示。

图 2-5后台处理函数调用

2.5 等待函数调用

等待函数调用,需等待调用消息。接收到后台进程转发的函数调用消息时,解析消息中的参数,然后执行函数,构造返回消息发送至后台进程,执行流程图 2-6所示。

图 2-6等待函数调用

2.6 提供函数调用

提供函数调用的进程需要把函数注册到后台进程,当其他进程调用函数时,后台进程会检查该函数是否存在,若存在则发送消息至目标进程,否则回复错误消息,执行流程图 2-7所示。后台进程接收到该消息,把函数添加到管理链表中。

图 2-7提供函数调用

3.小结

DBUS是一种高效、易用的进程间通信方式。本文档介绍了DBUS的通信原理,以及SylixOS下替换该通信机制的实现方案。本文以信号收发和函数调用模块为框架,介绍了SylixOS下替换DBUS功能具体实现步骤。

时间: 2024-12-08 11:29:49

sylixos下DBUS替换方案的相关文章

7,装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。继承关系的一个替换方案。

装饰( Decorator )模式又叫做包装模式.通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案. 装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地.按顺序地使用装饰功能包装对象. 在装饰模式中的各个角色有: 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象. 具体构件(Concrete Component)角色:定义一个将要接收附加责任的类. 装饰(Decorator)角色

友盟更新 自动更新替换方案

自动更新替换方案 这个服务因为目前面临N多非技术的挑战,导致我们很难再维护好这个服务: iOS的自动更新已经被苹果官方严格禁止了,苹果官方也数次联系友盟,要求我们及早把iOS的更新服务停掉: Android面临的问题更多,比如应用市场(集成友盟自动更新插件会导致市场审核被拒).部分系统厂商(部分厂商系统上,增量更新功能不能正常工作)以及部分运营商的拦截(比如有开发者反馈我们的下载CDN链接在某些地区的运营商会被禁止访问). 4.1日起,我们已经停止向新用户透出该服务:今年10.15以后,老用户也

Microsoft.AspNet.Web.Optimization.Bundle的完美替换方案

Web应用程序中包含大量的样式(css)和脚本(js)文件,这些文件的引用.管理和发布有很多解决方案.在Asp.Net MVC应用程序中,大家最熟悉的解决方案应属Microsoft.AspNet.Web.Optimization这个package.这个package的使用也挺方便,对我来说,它依赖太多package,这点不合我胃口,我是比较崇尚精简的那种.接下来介绍这个package的使用及如何将它完美的替换. 1. Microsoft.AspNet.Web.Optimization的Bundl

windows下备份mysql方案

总体思想 定时任务调用备份脚本 1.定时任务, 自行研究 2.脚本 c:\mysql_bak\bin\mysqldump.exe -ugbds -pxxxx gbds --hex-blob>c:\mysql_bak\sql\gbds_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.sql 备注: 对于mysqldump.exe可以使用快捷方式复制到使用目录 windows下备份mysql方案,布布扣,bubu

SylixOS下移植C++工程

1.使用范围 本文档适用于在RealEvo-IDE开发环境下移植C++工程的用户,使用者应熟悉使用RealEvo-IDE开发环境,并具备C++语言编程的基础知识. 2. 准备工作 2.1 环境准备 在使用之前,须安装有翼辉信息开发的集成开发套件,由于系统上安装的防火墙软件或者杀毒软件可能会影响到集成开发软件的使用,因此,在使用本套件前请关闭计算机上的windows防火墙以及杀毒软件. 因后续操作需要在模拟器上进行展示,所以在进行后续章节操作前,请完成mini2440模拟器的配置并启动,具体配置步

上一条下一条方案对比

今天CPU狂飙了一把,分析SQL后揪出真凶: 上一条下一条方案对比,布布扣,bubuko.com

SylixOS下IIS驱动编程

目录 1. IIS简介    1 2. 数字声音简介    1 2.1    采样频率    1 2.2    量化位数    1 2.3    声道数    1 3. WAV音频文件格式简介    2 3.1    文件格式    2 3.2    原始声音数据的组织方式    2 4. Mini2440声卡的连接方式    3 4.1    相关连线说明    3 5. SylixOS下的OSS音频驱动接口    3 6. 播放声音流程    4 7. 录音流程    5 IIS简介 IIS

SylixOS下基于NUC970的NAND驱动

开发环境 开发环境 宿主机: Windows7 64bits 系统 开发板: 安米MDK972 软件环境: RealEvo-IDE3.0 NAND Flash: S34ML02G100TF100 S34ML02G100TF100芯片参数 Density:2 Gbit Input / Output Bus Width: 8-bits Page Size:2112 (2048 + 64) bytes; 64 bytes is spare area Block Size: 64 Pages;128k

Google Earth API 替换方案

众所周知,GE API将会在15年12月25日结束服务,对于众多采用该API的软件,需要一些替换方案. 例如google map或者cesiumjs http://cesiumjs.org/ 或者尝试 D3js http://d3js.org/ Kartograph http://kartograph.org/ 另外支持C#的3D Map还有 http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=2105231 微软自家的bing