【发布时间】:2014-10-05 22:35:58
【问题描述】:
我有一些使用 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,但这是我目前所坚持的。
【问题讨论】: