结构

GioDBusInterfaceVTable

自从:2.26

描述 [源]

struct GDBusInterfaceVTable {
  GDBusInterfaceMethodCallFunc method_call;
  GDBusInterfaceGetPropertyFunc get_property;
  GDBusInterfaceSetPropertyFunc set_property;
}

处理 D-Bus 接口属性和方法调用的虚拟表。

从 2.38 开始,如果您想异步处理获取/设置 D-Bus 属性,请将 NULL 作为您的 get_property()set_property() 函数。D-Bus 调用将被导向您的 method_call 函数,其中提供的 interface_name 被设置为“org.freedesktop.DBus.Properties”。

GDBusMethodInvocation 对象的所有权在传递给 method_call() 函数时转移给您的处理程序;您必须调用 GDBusMethodInvocation 的方法之一来返回一个(可能为空)回复或错误。这些函数还接管传入的调用对象的所有权,所以除非调用对象已被引用,否则它将被释放。这些函数的调用可以在您的 method_call() 实现内部进行,也可以稍后完成以异步处理方法。

对调用有效性的常规检查已执行。对于 Get 调用,如果属性不存在或权限不允许访问,则自动返回错误。同样也会对 Set 调用执行相同的检查,并且也会检查提供的值是否是正确的类型。

对于 GetSet 调用,可以通過 g_dbus_method_invocation_get_property_info() 查询传递给 method_call 处理器的 GDBusMethodInvocation,以获取属性 GDBusPropertyInfo 的指针。

如果您在接口信息中指定了可读属性,您必须确保提供非 NULLget_property() 函数,或者在您的 method_call 函数中提供 org.freedesktop.DBus.Properties 接口上 GetGetAll 方法的实现。请注意,Get 调用的所需返回类型为 (v),而不是属性的类型。GetAll 期望的返回类型是 a{sv}

如果您在接口信息中指定了可写属性,您必须确保提供非 NULLset_property() 函数或在您的 method_call 函数中提供 Set 调用的实现。在实现调用时,您必须返回类型为 G_VARIANT_TYPE_UNIT 的值。

结构成员
method_call

处理传入方法调用的函数。

get_property

获取属性的函数。

set_property

设置属性的函数。

从:2.26 开始