如何高效率的使用DBUS作client/server架构

本文介绍了在嵌入式系统中如何高效地使用DBUS作为Client/Server架构,重点在于如何克服dbus数据封装复杂和接口扩展困难的问题。通过定义通用的API XML接口描述和利用GArray容器传递任意类型数据,简化了接口定义和提高了数据传输效率。
摘要由CSDN通过智能技术生成


在嵌入式系统中使用dbus主要有两个方面的用途:
1:进程间通信
2:实现client/server模式;

2也是1的具体表现形式;

包括dbus自带的例子,都是采用dbus对数据的封装,实现client/server模式的,
缺点有二:
1 一个API要定义一个xml接口描述
2 数据封装非常复杂,非常不利于以后接口的扩展;

为了客服上面的缺点,提高可扩展性和效率,可以这样做:
如果一个应用分为client,server两端的话,要高效率的实现client/server之间
的通信,可以采用如下方式:


第一步:定义一个通用的API xml 接口描述,暂命令为dbus_general.xml

<?xml version="1.0" encoding="UTF-8" ?>
<node name="/org/freedesktop/DBus/General_api">
  <interface name="org.freedesktop.DBus.general_api">
    <method name="client_request">
      <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="__client_request_cb"/>
      <arg type="i" name="action_id" direction="in" />   //这个地方就是不同API的ID
      <arg type="i" name="input_int" direction="in" />   //这个参数可以用,也可以不用
   <arg type="ay" name="input_garray" direction="in" />  //这个Garray用来从client传递数据,包括复杂的数据结构到server
   <arg type="i" name="outut_int" direction="out" />    //这个可以用,也可以不用

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值