`
javasogo
  • 浏览: 1844701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

D-Bus学习(十):在D-Bus上的telepathy[一]:纸上谈兵

阅读更多

  现在我们在网上都有很多身份,例如我自己,就有三/四个MSN帐号,还有QQ,GTalk,而web方式的,还有几个Blog,几个vblog,总之很多。而尺寸小的手机、MID这类手持设备,我们不可以好像desktop那样,开着N个client,打开N个网页,其实我们不在乎我们在使用那个软件,我们只希望找到找到联系人。D-Bus提供了IPC通信基础,有很多机制都建立在D-Bus上面,D-Bus给出基础的通道,而在这个通道上有还有很多高层的封装,针对某些特定的应用。telepathy是其中之一,针对char,voip类应用。很满足我们的需求,因此有必要研究一下。

  wiki的telepathy给出下面这个图:

来自wifi

Telepathy是灵活的,模块化的,支持pluggable实时的通信协议的通信框架。使用D-Bus作为分属不同进程组件的IPC。telepathy客户端使用D-Bus API(telepathy-glib)共享多个客户端(例如IM,Email应用的呈现等等)之间的连接。有下面的特点:

  • 实时性 : Telepathy支持IM(支持点对点和群组) ,语音呼叫和视频呼叫,和D-Bus一样,他不适合存储转发的应用,例如email的收发)

  • 整合性 : 不同的开发者都可以从这些通信中获益,Telepathy可将开发者将各自的程序整合在一起。

  • 模块化 : Telepathy组件是模块化的,开发者可以集中精力开发各自的组件。

  从网上的资料看telepathy是NOKIA发展起来的。在NOKIA的maemo中包含。在Moblin/MeeGO中也含有这部分。XMPP支持大部分我们常见的IM协议,例如Gtalk SIP,MSN,ICQ,OO,Facebook char,AIM,QQ,IRC。对于我们,最商用的就是MSN和QQ。而Nokia还将其扩展到电话通信,例如Voip的Skype,2G/3G移动通信Phone/SMS。看起来非常之吸引,所以值得认真学习一看,看看是否带来惊喜。在http://telepathy.freedesktop.org/wiki/Protocols%20Support 给出一个表,给出这些IM在语音聊天、视频聊天、文件传输、Invisible mode下目前telepathy是否支持。invisible mode不是很理解,可能是“潜水”。对于支持上网的handset设备,这些特点我觉得还不算很需求,但是一个重要的,提高价值的,锦上添花的,证明有档次的应用(^_^)。

  下面是一些重要的资料,也是下一阶段要学习的。

http://telepathy.freedesktop.org/wiki/Setup :关于安装不过moblin,阿土(ubuntu)和fadora都支持,到是缺那个包就用那个。

http://telepathy.freedesktop.org/spec/ :描述D-Bus接口定义

http://telepathy.freedesktop.org/wiki/System%20Overview :框架结构介绍

http://people.collabora.co.uk/~danni/telepathy-book/ :开发人员手册

http://telepathy.freedesktop.org/doc/telepathy-glib/ :telepathy-glib手册

http://telepathy.freedesktop.org/doc/telepathy-qt4/ :telepathy-qt4手册

很多资料都可以从wiki入口中寻找。

  Telepaphy是一个规范(spec),定义一套D-Bus的接口,以及一堆应用(是接口规范,但是是否包含应用就不是很明确,看怎么理解吧)。针对处理我们常见的IM类应用,除了常见的文字聊天,包括聊天室,还可以涉及音通话,视频通话,以及文件传输,它定义了一套IPC的通信机制,对这些IM应用进行操作,获取联系人的状态,信息,以及触发某个处理。

  通过读取.manager文件,需要建立一个proxy对象。在.manager文件中描述了连接管理支持的协议以及所需的参数。给这个链接管理器一个unique名字,则建立一个D-Bus Proxy。

这里我们用D-Bus的标准语言描述一下,在Telepathy中,server是IM这些应用,我们的开发程序是client。为连接管理器为应用建立了一条与DBus的连接,给出远端接口的路径,建立了一个proxy,通过对Proxy的操作,实际操作远端接口的方法。这一步骤有些类似之前在D-Bus中学习中client建立与远端某个接口的连接。

proxy = dbus_g_proxy_new_for_name(conn/*连接管理器*/,"com.wei.test"/*remote的bus name*/, "/com/wei/MyObject"/*remote的对象名*/,"com.wei.MyObject.MyInterface"/*remote的接口名*/);

  在标准的D-Bus中,没有.manager,这是telepathy定义的,如果我们需要使用gabble,使用gabble.manager文件。我们与远端对象名'org.freedesktop.Telepathy.ConnectionMananger.gabble',接口路径为'/org/freedesktop/Telepathy/ConnectionManager/gabble',建立连接(其中远端应用的Bus name的well known名字是org.freedesktop.Telepathy.ConnectionManager.gabble) 。如果连接失败,则D-Bus daemon会使用gabble.service文件启动Gabble服务。如果连接上,可以使用RequestMethod来调用method。

   在telepathy还有一些新的概念。以IM例子,在接口上,我们使用RequestHandles (1/*1是handle的类型,1==contact*/, ['your@jid.org ']*/ ),将返回一个[2],例如是numbers的list,我们与其中一个number进行通信。 在这个例子中1表示的类型,就 是D-Bus中的参数类型,例如u == uint32, au == array of uint32, a(uu) == array of (struct of uint32, uint32), s == string, a{su} == dictionary of (string to uint), aau == array of (array of uint32)。接着 我们将请求一个channel,RequestChannel ('org.freedesktop.Telepathy.Channel.Type.Text', 1, 2, True ),第一个参数是interface的名字,1是handle的类型,2是handle。“true”表示telepathy client说明要试图获取此channel的handle。如果连接管理器同意你的请求,他将返回string,说明D-Bus object的路径,这样我们通过connection的bus名字和获取的路径名,为那个channel对象建立proxy,并利用proxy调用那个channel的call method。

telepathy和普通的D-Bus向比较,它定义了一套学习机制,使得client能够学习server的D-BUS接口,而无需一开始就明确D-Bus的xml表述。如果server升级后出现接口变化,client能够自动适配这种变化。进程之间的通信不会因为某个一个进程升级,接口修改,而导致所有进程修订。换句话,它是智能的。

相关链接: 我 的Linux相关文章

分享到:
评论

相关推荐

    vlc configure 参数说明

    - **--enable-macosx-defaults**:在Mac OS X上构建默认配置(默认启用)。 - **--with-macosx-sdk=DIR**:使用指定目录下的SDK进行编译。 - **--with-macosx-version-min=VERSION**:编译用于指定版本及更高版本的...

    telepathy-maemo-summit-2009

    ### Telepathy-Maemo Summit 2009:一种模块化的实时通信框架 #### 一、概述 Telepathy 是一个为桌面 Linux 和移动 Linux 平台(如 Maemo 和 MeeGo)设计的实时通信框架。它通过将复杂的通信功能分解成独立的组件...

    haze-accounts-extensions-skypeweb:Telepathy Haze 库 Skypweb 的扩展插件

    在技术实现上,这个扩展插件主要基于QML(Qt Quick Markup Language),QML是Qt框架下的一种声明式语言,用于构建用户界面。通过QML,开发者能够用简洁的代码定义UI元素和逻辑,使得程序的界面设计变得直观且高效。...

    telepathy-mission-control-4.60.tar.gz_mission

    在工作原理上,"telepathy-mission-control-4.60"基于组件化的设计思想,由多个模块组成,每个模块负责特定的通信任务。例如,连接管理器负责建立和维护网络连接,而通道提供者则处理具体的通话通道。这样的设计使得...

    haze-accounts-extensions:Telepathy Haze 库的扩展插件

    Telepathy Haze 是一个通信框架,用于在 SailfishOS 操作系统上实现即时通讯功能。"Haze"可能指的是它在复杂或模糊的通信场景下提供清晰、简单的接口。"accounts-extensions"部分则意味着这个项目专注于扩展账户管理...

    telepathy-glib-devel-0.24.1-1.el7.x64-86.rpm.tar.gz

    从给定的文件信息中,我们可以提取到以下知识点: ...该压缩包文件是一个用于在Linux环境下安装Telepathy-GLib开发环境的软件包集合,包含了必需的库和开发工具,旨在为开发人员提供Telepathy即时通讯框架的开发支持。

    telepathy-tank:Telepathy框架的矩阵连接运算符

    **正文** `telepathy-tank` 是一个基于 Telepathy 框架的矩阵连接运算符,主要用于在 Qt 应用程序中...对于那些希望在自己的 Qt 应用中添加类似功能的开发者来说,`telepathy-tank` 是一个宝贵的学习资源和参考实现。

    telepathy-farstream-0.6.0-5.el7.x64-86.rpm.tar.gz

    在给出的文件信息中,我们看到了一个以.tar.gz为后缀的压缩包文件名“telepathy-farstream-0.6.0-5.el7.x64-86.rpm.tar.gz”。虽然文件名有些复杂,但它实际上包含了两个部分:一个是.tar.gz格式的压缩包,另一个是...

    telepathy-farstream-devel-0.6.0-5.el7.x64-86.rpm.tar.gz

    1、文件内容:telepathy-farstream-devel-0.6.0-5.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf telepathy-farstream-devel-0.6.0-5.el7.tar.gz #Step2、进入解压后的目录...

    telepathy-haze-0.8.0-1.el7.x86_64.rpm

    离线安装包,亲测可用

    telepathy-morse:Telepathy框架的电报连接管理器

    telepathy-morse:Telepathy框架的电报连接管理器

    telepathy-logger-devel-0.8.0-5.el7.x64-86.rpm.tar.gz

    1、文件内容:telepathy-logger-devel-0.8.0-5.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/telepathy-logger-devel-0.8.0-5.el7.tar.gz #Step2、进入...

    telepathy-farstream-0.6.0-5.el7.x86_64.rpm

    离线安装包,亲测可用

    telepathy-glib-0.24.1-1.el7.x64-86.rpm.tar.gz

    1、文件内容:telepathy-glib-0.24.1-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/telepathy-glib-0.24.1-1.el7.tar.gz #Step2、进入解压后的目录,...

    telepathy-logger-0.8.0-5.el7.x64-86.rpm.tar.gz

    1、文件内容:telepathy-logger-0.8.0-5.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/telepathy-logger-0.8.0-5.el7.tar.gz #Step2、进入解压后的目录,...

    telepathy-glib-vala-0.24.1-1.el7.x64-86.rpm.tar.gz

    1、文件内容:telepathy-glib-vala-0.24.1-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/telepathy-glib-vala-0.24.1-1.el7.tar.gz #Step2、进入解压后...

    pidgin-im-gnome-shell-extension:使 Pidgin IM 对话出现在 Gnome Shell 消息托盘中

    不知道如何在 Pidgin 中设置看不见的状态即使通知设置允许,锁定屏幕上也没有通知。 因为 Gnome Shell 在屏幕锁定时禁用了所有扩展支持的 Gnome Shell 版本v31:3.10 - 3.30 v32:3.32 v36:3.36安装要求由于此扩展...

    telepathy-qt:心灵感应Qt绑定

    总结,`telepathy-qt`是Qt平台上实现即时通讯功能的重要工具,它通过提供简洁的API,使得开发者能够在Qt环境中轻松集成聊天、音视频通话等功能。结合Qt Creator和QtC++模板,开发者可以快速搭建并调试基于`telepathy...

    Telepathy-SofiaSIP-开源

    Telepathy-SofiaSIP 是一款开源项目,它作为 Telepathy 框架的一个重要组成部分,专门负责处理 SIP(Session Initiation Protocol)通信。Telepathy 是一个设计用于即时通讯(IM)和多媒体通信的接口库,它提供了一...

    Telepathy:C#中基于消息的简单MMO Scale TCP网络。 而且没有魔术

    Telepathy最初在UDP地狱中使用了3年后才为设计。 我们需要一个库: 稳定且无错误: Telepathy仅使用700行代码。 没有魔术。 高性能:心灵感应可以处理数千个连接和数据包。 并发: Telepathy每个连接使用两个...

Global site tag (gtag.js) - Google Analytics