我有一些使用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,但这就是我现在所困扰的。
答案 0 :(得分:0)
看来编组码是一个红色的鲱鱼,我正在思考它。
实验表明,简单的GArray *是传递数组的预期类型。