结构
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
调用执行相同的检查,并且也会检查提供的值是否是正确的类型。
对于 Get
和 Set
调用,可以通過 g_dbus_method_invocation_get_property_info()
查询传递给 method_call
处理器的 GDBusMethodInvocation
,以获取属性 GDBusPropertyInfo
的指针。
如果您在接口信息中指定了可读属性,您必须确保提供非 NULL
的 get_property
() 函数,或者在您的 method_call
函数中提供 org.freedesktop.DBus.Properties 接口上 Get
和 GetAll
方法的实现。请注意,Get
调用的所需返回类型为 (v)
,而不是属性的类型。GetAll
期望的返回类型是 a{sv}
。
如果您在接口信息中指定了可写属性,您必须确保提供非 NULL
的 set_property
() 函数或在您的 method_call
函数中提供 Set
调用的实现。在实现调用时,您必须返回类型为 G_VARIANT_TYPE_UNIT
的值。
结构成员
method_call
处理传入方法调用的函数。
get_property
获取属性的函数。
set_property
设置属性的函数。
从:2.26 开始