我正试图将代码形式glib-dbus迁移到gdbus在早期的实现中,类结构和实例结构都可以由我定义,并且允许指针作为属性。

struct test {
  GObject parent;
  some_structure *pointer;
};

我的实例结构有指针,我可以轻松管理。
但是在gdbus中,代码是使用gdbus-codegen生成的-所有类和实例结构都是根据内省XML文件自动生成的。
所以我有两个问题
gdbus使用Gvariant,显然它不支持指针有什么解决办法吗?
我可以将内部成员添加到由gdbus-codegen创建的实例结构中吗?
我试着用谷歌搜索这些东西,但由于我对gobjects和gdbus这些东西还不熟悉,所以我不确定。

最佳答案

1)GVariant用于方法参数,而不是例如/app数据指针
(如果我理解正确的话,这就是你要问的问题)
2)对于基于gdbus的服务器实现,通常使用
信号处理程序(如
https://developer.gnome.org/gio/2.36/gdbus-codegen.html
然后,要提供应用程序数据,只需通过
g_信号_连接用户数据指针。
作为替代方案,可以使用g_object_set_data附加应用程序数据
指向实例的指针,稍后可以使用
对象获取数据。

关于c - 从glib-dbus迁移到gdbus,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16998377/

10-11 21:24