【问题标题】:Migration from glib-dbus to gdbus从 glib-dbus 迁移到 gdbus
【发布时间】:2014-01-02 01:08:48
【问题描述】:

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

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

我的实例结构有指针,我可以轻松管理。

但是在gdbus 中,代码是使用gdbus-codegen 生成的——所有的类和实例结构都是根据自省XML 文件自动生成的。

所以我有两个问题

  1. gdbus 使用 Gvariant,它明确提到它不支持指针。有什么解决方法吗?
  2. 我可以向gdbus-codegen创建的实例结构添加内部成员吗?

我试图用谷歌搜索这些东西,但由于我是 gobjects 和 gdbus 的新手,所以我不确定。

【问题讨论】:

    标签: c glib


    【解决方案1】:

    1) GVariant 用于方法参数,而不是实例/应用数据指针 (如果我理解正确,这就是您要问的问题)

    2) 对于基于 gdbus 的服务器实现,您通常会使用 信号处理程序(如在 https://developer.gnome.org/gio/2.36/gdbus-codegen.html)

    然后,要提供应用程序数据,您可以简单地将其传递给 g_signal_connect 用户数据指针。

    作为替代方案,可以使用 g_object_set_data 附加应用数据 指向您的实例的指针,您可以稍后使用 g_object_get_data。

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2014-10-31
      • 1970-01-01
      • 2011-12-06
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多