【发布时间】:2018-01-24 19:51:32
【问题描述】:
我正在尝试通过 DBus 向另一个请求 Unix 文件描述符的 DBus 发送控制消息,从而在应用程序之间发送大量数据。我有它,以便客户端可以请求这个,服务器创建一个包含UnixFDList 的 DBus 消息,客户端收到回复消息但它不包含任何内容。在 Vala 的服务器端,DBusConnection 对象是使用 register_object 设置的,不幸的是,Vapi 隐藏了所有 C 示例使用的 DBusInterfaceVTable 参数,这让我可以为方法调用指定一个委托。我尝试改用 register_object_with_closures,但我似乎无法让它工作,而且 Vala 中的 Closure 对象可悲的是没有记录。
在我看来,我需要其中一种方法来接收来自 DBusMethodInvocation 对象的消息,该消息是通过调用 DBusInterfaceMethodCallFunc 委托获得的,您可以使用该方法创建回复消息。有没有办法指定一个与register_object_with_closures 一起使用的闭包类,或者指定一个DBusInterfaceVTable 对象作为服务数据的一部分?
我知道一种选择是只在 C 中创建服务,但我更愿意弄清楚并了解它在 Vala 中是如何工作的。
【问题讨论】: