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 .