Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57051
  • 博文数量: 20
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 225
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-29 01:11
文章分类
文章存档

2011年(1)

2010年(19)

我的朋友

分类: LINUX

2010-01-29 01:14:15

假设dbus的服务器端会发送一个信号,
比如(服务器端用python实现)
  @dbus.service.signal(INTERFACE_URI,
                         signature='i')
    def StatusChanged(self, status):
        pass

这里,服务器发送一个状态变化的信号,信号传过来的参数是一个int型

现在现在客户端捕捉这个信号
首先假设已经连上dbus,并 获得DBusGProxy *对象 proxy。

1。 要先注册监听信号
dbus_g_proxy_add_signal(proxy, StatusChanged, G_TYPE_INT, G_TYPE_INVALID);

第一个参数是代理对象, 第二个参数是要监听的信号名, 接下来是信号传递的参数描述,最后以

G_TYPE_INVALID来结束参数的描述

2。 指定处理函数
dbus_g_proxy_connect_signal(proxy, StatusChanged, G_CALLBACK(handler), NULL, NULL)

第一个参数是代理对象, 第二个参数是要监听的信号名, 第三个是处理函数, 第4个是额外传递给处理函数的数据
第5个是释放第4个参数所占内存的函数

3。声明处理函数

void handler(DBusGProxy *proxy, int status, gpointer user_data);

第一个参数是代理对象,接下来的是信号传过来的参数,在这个例子中就只要一个int, 最后是在

dbus_g_proxy_connect_signal中指定的额外数据,即第4个参数,这里是NULL
阅读(1699) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~