Registers a whole subtree of dynamic objects.
introspection functions in
vtable are used to convey, to remote callers, what nodes
exist in the subtree rooted by
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 DISPATCH_TO_UNENUMERATED_NODES
flag is set the
introspection function is used to check if the node supports the requested method. If so, the
function is used to determine where to dispatch the call. The collected
DBusInterfaceVTable and pointer 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 of the thread you are calling this method from.
If an existing subtree is already registered at
object_path or then throws is set to
Note that it is valid to register regular objects (using register_object) in a subtree registered with 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 register_object or other bindings.
vtable will be copied so you cannot change it after registration.
See this server for an example of how to use this method.
the object path to register the subtree at
a DBusSubtreeVTable to enumerate, introspect and dispatch nodes in the subtree
flags used to fine tune the behavior of the subtree
data to pass to functions in
function to call when the subtree is unregistered
0 if throws is set, otherwise a subtree registration id (never 0) that can be used with unregister_subtree .