Gio.DBusConnection.prototype.register_subtree
function register_subtree(object_path: String, vtable: Gio.DBusSubtreeVTable, flags: Gio.DBusSubtreeFlags, user_data: void, user_data_free_func: GLib.DestroyNotify): Number(guint) { // Gjs wrapper for g_dbus_connection_register_subtree() }
Registers a whole subtree of dynamic objects.
The @enumerate and @introspection functions in vtable are used to convey, to remote callers, what nodes exist in the subtree rooted by object_path.
When handling remote calls into any node in the subtree, first the @enumerate function is used to check if the node exists. If the node exists or the #G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is set the @introspection function is used to check if the node supports the requested method. If so, the @dispatch function is used to determine where to dispatch the call. The collected Gio.DBusInterfaceVTable and #gpointer will be used to call into the interface vtable for processing the request.
All calls into user-provided code will be invoked in the [thread-default main context][g-main-context-push-thread-default] of the thread you are calling this method from.
If an existing subtree is already registered at object_path or then @error is set to #G_IO_ERROR_EXISTS.
Note that it is valid to register regular objects (using Gio.DBusConnection.prototype.register_object) in a subtree registered with Gio.DBusConnection.prototype.register_subtree - if so, the subtree handler is tried as the last resort. One way to think about a subtree handler is to consider it a fallback handler for object paths not registered via Gio.DBusConnection.prototype.register_object or other bindings.
Note that vtable will be copied so you cannot change it after registration.
See this [server][gdbus-subtree-server] for an example of how to use this method.
Since 2.26
- object_path
the object path to register the subtree at
- vtable
a Gio.DBusSubtreeVTable to enumerate, introspect and dispatch nodes in the subtree
- flags
flags used to fine tune the behavior of the subtree
- user_data
data to pass to functions in vtable
- user_data_free_func
function to call when the subtree is unregistered
- Returns
0 if @error is set, otherwise a subtree registration id (never 0) that can be used with Gio.DBusConnection.prototype.unregister_subtree .