DBus研究笔记(二)

一.关于DBus Binding
      DBus binding是对DBus lower-api 的再一次封装,提供了更加便利的接口,有些binding还集成了事件循环,使用起来更加简洁。这里主要讨论的是Glib binding的一些实现。
二.一些基本概念
1.代理(proxy)
         一个代理就是一个远程其他应用里的某个进程下的对象在本地进程的表示,在之前我们看到的底层API消息传递过程中我们是自己手动创建一个消息然后再发送,接着等待应答。而如果使用代理,代理使用起来就像是一个本地对象,不过当你触发一个方法调用,它会转化为一个消息并发送给其他应用进程并等待应答,并取得返回值。
2.GObject
         GObject是一个用C语言编写的面向对象的函数库,它支持多个语言互通。它是GNOME的基础,在GTK+等应用上被广泛应用。GTK+2.0之前GObject是其一部分,后面开发者把大部分与GUI不相关的部分都移到了GObject,具体可以到http://zh.wikipedia.org/wiki/GObject这里了解。

三.利用XML描述DBus接口

        因为我们的主要目的是在GObject对象之间利用DBus进行通信。我们介绍一个最简单的方式来实现它。 dbus-bindings-tool,这个工具利用XML文件作为输入可以方便的生成服务器与客户端代码。

XML接口描述文件:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE node PUBLIC
  	"-//freedesktop//DTD D-Bus Object Introspection 1.0//EN"
  "http://standards.freedesktop.org/dbus/1.0/introspect.dtd">

<node>
  <interface name="org.maemo.Value">

	<method name="getvalue1">

	  <arg type="i" name="cur_value" direction="out"/>
	</method>

	<method name="getvalue2">
	  <arg type="d" name="cur_value" direction="out"/>
	</method>

	<method name="setvalue1">
	  <arg type="i" name="new_value" direction="in"/>
	</method>

	<method name="setvalue2">
	  <arg type="d" name="new_value" direction="in"/>
	</method>

  </interface>
</node>


说明:这里我们在接口org.maemo.Value下实现了四个接口,分别获取和设置变量值。每个Method以method为关键字一/method结尾,interface和node类似,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值