方法

GioDBusConnectionregister_subtree

自: 2.26

声明 [来源]

guint
g_dbus_connection_register_subtree (
  GDBusConnection* connection,
  const gchar* object_path,
  const GDBusSubtreeVTable* vtable,
  GDBusSubtreeFlags flags,
  gpointer user_data,
  GDestroyNotify user_data_free_func,
  GError** error
)

描述 [来源]

注册整个动态对象的子树。

在vtable中使用enumerate和introspection函数,将object_path根节点下的所有存在的节点信息传递给远程调用者。

处理子树中任何节点的远程调用时,首先使用enumerate函数检查节点是否存在。如果节点存在或设置了G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES标志,使用introspection函数检查节点是否支持请求的方法。如果支持,则使用dispatch函数确定调用分发位置。收集的GDBusInterfaceVTable和gpointer将被用来调用接口vtable进行处理。

gpointer将被用来调用接口vtable进行处理

请求。

所有对用户提供的代码的调用将在调用此方法时所在的线程的[线程默认主上下文][g-main-context-push-thread-default]中执行。

如果现有子树已在 object_path 注册,或者 error 被设置为 G_IO_ERROR_EXISTS

请注意,可以在使用 g_dbus_connection_register_subtree() 注册的子树下注册常规对象(使用 g_dbus_connection_register_object())-如果是这样,则最后尝试子树处理程序。可以将子树处理程序视为未通过 g_dbus_connection_register_object() 或其他绑定方式注册的对象路径的回退处理程序。

请注意,vtable 将被复制,因此您不能在注册后修改它。

有关如何使用此方法的示例,请参阅此 [服务器][gdbus-subtree-server]。

自 2.26 版本起可用。

参数

object_path

类型: const gchar*

要在其上注册子树的对象路径。

数据由方法的调用者拥有。
值是一个以 NULL 结束的 UTF-8 字符串。
vtable

类型: GDBusSubtreeVTable

用于在子树中枚举、内部检查和派发节点的 GDBusSubtreeVTable

数据由方法的调用者拥有。
flags

类型: GDBusSubtreeFlags

用于微调子树行为的标志。

user_data

类型: gpointer

传递给 vtable 中函数的数据。

该参数可以是 NULL
数据由方法的调用者拥有。
user_data_free_func

类型: GDestroyNotify

当子树注销时调用的函数。

error

类型: GError **

用于恢复错误的返回位置的 a recoverable error

该参数可以是 NULL
如果返回位置不是 NULL,那么您必须将其初始化为 NULLGError*
如果没有错误,方法将把该参数保留为 NULL
在发生错误的情况下,该参数将设置为新分配的 GError;调用者将负责任有权的数据,并负责释放它。

返回值

类型: guint

如果设置了 error,则为 0;否则,为子树注册 ID(从不为 0),可用于 g_dbus_connection_unregister_subtree()。