我写了一些使用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和** error匹配,因此arg_1和arg_2可能与数组有关。这大概是一个长度和值,但是在那种情况下为什么它们都是指针?还是GArray和某些类型信息之类的东西?

我知道我可能应该改用GDBus,但这是我目前所坚持的。

最佳答案

似乎编组代码是一条红色的鲱鱼,而我对此却考虑过度。

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

10-05 23:50