我写了一些使用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 *是传递数组的预期类型。