DBusObjectManagerClient

open class DBusObjectManagerClient(pointer: <Error class: unknown class><<Error class: unknown class>>) : AsyncInitable, DBusObjectManager, Initable

#GDBusObjectManagerClient is used to create, monitor and delete object proxies for remote objects exported by a #GDBusObjectManagerServer (or any code implementing the org.freedesktop.DBus.ObjectManager interface).

Once an instance of this type has been created, you can connect to the #GDBusObjectManager::object-added and #GDBusObjectManager::object-removed signals and inspect the #GDBusObjectProxy objects returned by g_dbus_object_manager_get_objects().

If the name for a #GDBusObjectManagerClient is not owned by anyone at object construction time, the default behavior is to request the message bus to launch an owner for the name. This behavior can be disabled using the %G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START flag. It's also worth noting that this only works if the name of interest is activatable in the first place. E.g. in some cases it is not possible to launch an owner for the requested name. In this case, #GDBusObjectManagerClient object construction still succeeds but there will be no object proxies (e.g. g_dbus_object_manager_get_objects() returns the empty list) and the #GDBusObjectManagerClient:name-owner property is null.

The owner of the requested name can come and go (for example consider a system service being restarted) – #GDBusObjectManagerClient handles this case too; simply connect to the #GObject::notify signal to watch for changes on the #GDBusObjectManagerClient:name-owner property. When the name owner vanishes, the behavior is that #GDBusObjectManagerClient:name-owner is set to null (this includes emission of the #GObject::notify signal) and then #GDBusObjectManager::object-removed signals are synthesized for all currently existing object proxies. Since #GDBusObjectManagerClient:name-owner is null when this happens, you can use this information to disambiguate a synthesized signal from a genuine signal caused by object removal on the remote #GDBusObjectManager. Similarly, when a new name owner appears, #GDBusObjectManager::object-added signals are synthesized while #GDBusObjectManagerClient:name-owner is still null. Only when all object proxies have been added, the #GDBusObjectManagerClient:name-owner is set to the new name owner (this includes emission of the #GObject::notify signal). Furthermore, you are guaranteed that #GDBusObjectManagerClient:name-owner will alternate between a name owner (e.g. :1.42) and null even in the case where the name of interest is atomically replaced

Ultimately, #GDBusObjectManagerClient is used to obtain #GDBusProxy instances. All signals (including the org.freedesktop.DBus.Properties::PropertiesChanged signal) delivered to #GDBusProxy instances are guaranteed to originate from the name owner. This guarantee along with the behavior described above, means that certain race conditions including the "half the proxy is from the old owner and the other half is from the new owner" problem cannot happen.

To avoid having the application connect to signals on the returned #GDBusObjectProxy and #GDBusProxy objects, the #GDBusObject::interface-added, #GDBusObject::interface-removed, #GDBusProxy::g-properties-changed and #GDBusProxy::g-signal signals are also emitted on the #GDBusObjectManagerClient instance managing these objects. The signals emitted are #GDBusObjectManager::interface-added, #GDBusObjectManager::interface-removed, #GDBusObjectManagerClient::interface-proxy-properties-changed and #GDBusObjectManagerClient::interface-proxy-signal.

Note that all callbacks and signals are emitted in the g-main-context-push-thread-default that the #GDBusObjectManagerClient object was constructed in. Additionally, the #GDBusObjectProxy and #GDBusProxy objects originating from the #GDBusObjectManagerClient object will be created in the same context and, consequently, will deliver signals in the same main loop.

Skipped during bindings generation

  • method bus-type: Property has no getter nor setter

  • method get-proxy-type-destroy-notify: Property has no getter nor setter

  • method get-proxy-type-func: Property has no getter nor setter

  • method get-proxy-type-user-data: Property has no getter nor setter

  • method object-path: Property has no getter nor setter

  • constructor new_for_bus_sync: C function g_dbus_object_manager_client_new_for_bus_sync is ignored

  • constructor new_sync: C function g_dbus_object_manager_client_new_sync is ignored

  • parameter callback: AsyncReadyCallback

  • parameter callback: AsyncReadyCallback

Since

2.30

Constructors

Link copied to clipboard
constructor(res: AsyncResult)

Finishes an operation started with g_dbus_object_manager_client_new().

constructor(pointer: <Error class: unknown class><<Error class: unknown class>>)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

The #GDBusConnection to use.

Link copied to clipboard

Flags from the #GDBusObjectManagerClientFlags enumeration.

Link copied to clipboard
open override val gioAsyncInitablePointer: <Error class: unknown class><<Error class: unknown class>>
Link copied to clipboard
val gioDBusObjectManagerClientPointer: <Error class: unknown class><<Error class: unknown class>>
Link copied to clipboard
open override val gioDBusObjectManagerPointer: <Error class: unknown class><<Error class: unknown class>>
Link copied to clipboard
open override val gioInitablePointer: <Error class: unknown class><<Error class: unknown class>>
Link copied to clipboard
open val name: String

The well-known name or unique name that the manager is for.

Link copied to clipboard
open val nameOwner: String

The unique name that owns #GDBusObjectManagerClient:name or null if no-one is currently owning the name. Connect to the #GObject::notify signal to track changes to this property.

Functions

Link copied to clipboard
open fun connectInterfaceAdded(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: (object: DBusObject, interface: DBusInterface) -> Unit): <Error class: unknown class>

Emitted when @interface is added to @object.

Link copied to clipboard
fun connectInterfaceProxyPropertiesChanged(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: (objectProxy: DBusObjectProxy, interfaceProxy: DBusProxy, <Error class: unknown class>, invalidatedProperties: List<String>) -> Unit): <Error class: unknown class>

Emitted when one or more D-Bus properties on proxy changes. The local cache has already been updated when this signal fires. Note that both @changed_properties and @invalidated_properties are guaranteed to never be null (either may be empty though).

Link copied to clipboard
fun connectInterfaceProxySignal(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: (objectProxy: DBusObjectProxy, interfaceProxy: DBusProxy, senderName: String, signalName: String, <Error class: unknown class>) -> Unit): <Error class: unknown class>

Emitted when a D-Bus signal is received on @interface_proxy.

Link copied to clipboard
open fun connectInterfaceRemoved(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: (object: DBusObject, interface: DBusInterface) -> Unit): <Error class: unknown class>

Emitted when @interface has been removed from @object.

Link copied to clipboard
open fun connectObjectAdded(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: (object: DBusObject) -> Unit): <Error class: unknown class>

Emitted when @object is added to @manager.

Link copied to clipboard
open fun connectObjectRemoved(connectFlags: <Error class: unknown class> = ConnectFlags(0u), handler: (object: DBusObject) -> Unit): <Error class: unknown class>

Emitted when @object is removed from @manager.

Link copied to clipboard

Gets the #GDBusConnection used by @manager.

Link copied to clipboard

Gets the flags that @manager was constructed with.

Link copied to clipboard
open fun getInterface(objectPath: String, interfaceName: String): DBusInterface?

Gets the interface proxy for @interface_name at @object_path, if any.

Link copied to clipboard
open fun getName(): String

Gets the name that @manager is for, or null if not a message bus connection.

Link copied to clipboard
open fun getNameOwner(): String

The unique name that owns the name that @manager is for or null if no-one currently owns that name. You can connect to the #GObject::notify signal to track changes to the #GDBusObjectManagerClient:name-owner property.

Link copied to clipboard
open fun getObject(objectPath: String): DBusObject?

Gets the #GDBusObject at @object_path, if any.

Link copied to clipboard
open fun getObjectPath(): String

Gets the object path that @manager is for.

Link copied to clipboard
open fun getObjects(): <Error class: unknown class>

Gets all #GDBusObject objects known to @manager.

Link copied to clipboard
open fun init(cancellable: Cancellable? = null): <Error class: unknown class><Boolean>

Initializes the object implementing the interface.

Link copied to clipboard
open fun initAsync(ioPriority: Int, cancellable: Cancellable? = null, callback: AsyncReadyCallback)

Starts asynchronous initialization of the object implementing the interface. This must be done before any real use of the object after initial construction. If the object also implements #GInitable you can optionally call g_initable_init() instead.

Link copied to clipboard
open fun initFinish(res: AsyncResult): <Error class: unknown class><Boolean>

Finishes asynchronous initialization and returns the result. See g_async_initable_init_async().

Link copied to clipboard
open fun newFinish(res: AsyncResult): <Error class: unknown class><<Error class: unknown class>>

Finishes the async construction for the various g_async_initable_new calls, returning the created object or null on error.