在dbus-glib服务器中传递数组

时间:2014-08-12 18:20:47

标签: glib dbus gobject

我有一些使用dbus-glib编写服务器导出和通过dbus接口。

我正在尝试编写一个以字节数组作为输入的方法,但是我很难确定在我的方法参数中使用哪些类型。

例如,如果我在XML定义中有一个类似于此的方法:

<method name="SetData">
  <arg type="ay" name="data" direction="in" />
</method>

我原本以为我需要这样的方法:

gboolean set_data(MyObj *obj, GArray *arr, GError **error);

如果我看一下直接调用该方法的生成的编组代码,它会期望像这样的函数签名:

  typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_POINTER) (gpointer     data1,
                                                           gpointer     arg_1,
                                                           gpointer     arg_2,
                                                           gpointer     data2)

data1和data2匹配* obj和**错误,因此arg_1和arg_2之间可能与数组有关。这可能是一个长度和值,但在这种情况下,为什么它们都是指针?或者它是GArray和某些类型的信息还是什么?

我知道我应该使用GDBus,但这就是我现在所困扰的。

1 个答案:

答案 0 :(得分:0)

看来编组码是一个红色的鲱鱼,我正在思考它。

实验表明,简单的GArray *是传递数组的预期类型。