电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

dbus 使用介绍VIP免费

dbus 使用介绍_第1页
1/11
dbus 使用介绍_第2页
2/11
dbus 使用介绍_第3页
3/11
1.D-Bus介绍1.1D-Bus是什么D-Bus是一种本地进程间通信的机制,支持点对点的通,以及广播/订阅式的通信方式.D-Bus将要传输的数据结构化为二进制数据,包括不同长度的整数,浮点数,字符串,复合类型等,D-Bus以消息为单位.而不是字节流.这是与tcp的差异.1.2D-Bus组成部分D-Bus有两个主要组成部:1.点对点通信的支持库2.Dbus服务进程(其作用类似于总线,也称之为总线,进程可以连接到这个总线,并在总线上传输消息,一个进程想要连接到总线,就需要支持库提供的接口)1.3总线地址及连接每条总线都有总线地址,进程可以这个地址连接到总线,总线地址类似于”/tmp/dbus_**”socket接口,但也有可能是TCP端口,对于应用开发者来说,都会说客户进程打开并连接到总线.每个连接到总线的连接,我们称之为对象,即每一个连接即一个对象.总线也是一个特殊的对象,总线对象本身提供了很多接口与方法.总线上每个连接都有名字,称为busname,(也可以不设置连接名,比如你不需要提供服务),连接名都是由'.'分开的字符串组,比如hello.world.test,这个名字称为公共名,对于每一个连接都有一个唯一连接名,用于标识每一个连接.类似于dhcp一样,域名与ip的对应关系,也是多对一的关系.1.4总线,对象(接口,方法or信号)关系如下一条总线可以连接多个对象一个对象可以有多个接口一个接口可以有多个方法.2.D-Bus支持库常用接口2.1dbus_bus_get()原型:DBusConnection*dbus_bus_get(DBusBusTypetype,DBusError*error)Param1:总线类型Param2:错误信息Return:DbusConnectionorNULLDesc:连接到busdaemon总线.2.2dbus_bus_request_name()原型:intdbus_bus_request_name(DBusConnection*connection,constchar*name,unsignedintflags,DBusError*error)Param1:connection连接描述符Param2:请求的busname,例如:hello.world.testParam3:flags(ALLOW_REPLACEMENT,REPLACE_EXISTING,DO_NOT_QUEUE)Param4:错误信息Return:-1是错误,(PRIMARY_OWNER,IN_QUEUE,EXISTS,ALREADY_OWNER)Desc:请求总线分配一个busname给这个连接2.3dbus_bus_add_match()原型:voiddbus_bus_add_match(DBusConnection*connection,constchar*rule,DBusError*error)Param1:connection连接描述符Param2:rule添加一些匹配规则,例如"type=signalortype=methodorinterface=hello.world.test"Param3:错误信息Desc:添加对connection的一些匹配规则2.4dbus_bus_remove_match()Add_match()的反操作原型:voiddbus_bus_remove_match(DBusConnection*connection,constchar*rule,DBusError*error);2.5dbus_connection_flush()原型:voiddbus_connection_flush(DBusConnection*connection)Param1:connection连接描述符Desc:阻塞,只能输出消息队列为空2.6dbus_connection_send()原型:dbus_bool_tdbus_connection_send(DBusConnection*connection,DBusMessage*message,dbus_uint32_t*serial)param1:connection连接描述符param2:填充的消息实体param3:发送消息的序列号,应该是为了多线程设计的2.7dbus_message_new_signal()原型:DBusMessage*dbus_message_new_signal(constchar*path,constchar*iface,constchar*name)param1:路径param2:接口param3:信号名desc:初始化一个signal实体对象(这里说明一下总线转发步骤:对于signal来说,path->interface->signal,因为signal是广播的方式,所以不是必须指定busname.)2.8dbus_message_new_method_call()原型:DBusMessage*dbus_message_new_method_call(constchar*destination,constchar*path,constchar*iface,constchar*method)param1:目的busnameparam2:路径param3:接口param4:方法名desc:初始化一个method实体对象(这里说明一下总线转发步骤,对于method来说,bus_name->path->interface->signal,因为对于method的来说是点对点的消息传输,所以必须指定busname)2.9dbus_message_iter_init_append()原型:voiddbus_message_iter_init_append(DBusMessage*message,DBusMessageIter*iter)Param1:消息对象Param2:参数对象Desc:初始化一个参数对象,且把参数对象...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

dbus 使用介绍

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部