DBusObjectManagerClient#

Added in version 2.30.

class DBusObjectManagerClient(**properties: Any)#

Superclasses: Object

Implemented Interfaces: AsyncInitable, DBusObjectManager, Initable

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

Once an instance of this type has been created, you can connect to the object_added and object_removed signals and inspect the DBusObjectProxy objects returned by 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. get_objects returns the empty list) and the 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 notify signal to watch for changes on the name_owner property. When the name owner vanishes, the behavior is that name_owner is set to NULL (this includes emission of the notify signal) and then object_removed signals are synthesized for all currently existing object proxies. Since 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 DBusObjectManager. Similarly, when a new name owner appears, object_added signals are synthesized while name_owner is still NULL. Only when all object proxies have been added, the name_owner is set to the new name owner (this includes emission of the notify signal). Furthermore, you are guaranteed that 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 DBusProxy instances. All signals (including the org.freedesktop.DBus.Properties::PropertiesChanged signal) delivered to DBusProxy 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 DBusObjectProxy and DBusProxy objects, the interface_added, interface_removed, g_properties_changed and g_signal signals are also emitted on the GDBusObjectManagerClient instance managing these objects. The signals emitted are interface_added, interface_removed, interface_proxy_properties_changed and interface_proxy_signal.

Note that all callbacks and signals are emitted in the thread-default main context (see push_thread_default) that the GDBusObjectManagerClient object was constructed in. Additionally, the DBusObjectProxy and DBusProxy objects originating from the GDBusObjectManagerClient object will be created in the same context and, consequently, will deliver signals in the same main loop.

Constructors#

class DBusObjectManagerClient
classmethod new_finish(res: AsyncResult) DBusObjectManagerClient#

Finishes an operation started with new().

Added in version 2.30.

Parameters:

res – A AsyncResult obtained from the AsyncReadyCallback passed to new().

classmethod new_for_bus_finish(res: AsyncResult) DBusObjectManagerClient#

Finishes an operation started with new_for_bus().

Added in version 2.30.

Parameters:

res – A AsyncResult obtained from the AsyncReadyCallback passed to new_for_bus().

classmethod new_for_bus_sync(bus_type: BusType, flags: DBusObjectManagerClientFlags, name: str, object_path: str, get_proxy_type_func: Callable[[DBusObjectManagerClient, str, str | None, Any], GType] | None = None, get_proxy_type_user_data: Any = None, cancellable: Cancellable | None = None) DBusObjectManagerClient#

Like new_sync() but takes a BusType instead of a DBusConnection.

This is a synchronous failable constructor - the calling thread is blocked until a reply is received. See new_for_bus() for the asynchronous version.

Added in version 2.30.

Parameters:
  • bus_type – A BusType.

  • flags – Zero or more flags from the DBusObjectManagerClientFlags enumeration.

  • name – The owner of the control object (unique or well-known name).

  • object_path – The object path of the control object.

  • get_proxy_type_func – A DBusProxyTypeFunc function or None to always construct DBusProxy proxies.

  • get_proxy_type_user_data – User data to pass to get_proxy_type_func.

  • cancellable – A Cancellable or None

classmethod new_sync(connection: DBusConnection, flags: DBusObjectManagerClientFlags, name: str | None, object_path: str, get_proxy_type_func: Callable[[DBusObjectManagerClient, str, str | None, Any], GType] | None = None, get_proxy_type_user_data: Any = None, cancellable: Cancellable | None = None) DBusObjectManagerClient#

Creates a new DBusObjectManagerClient object.

This is a synchronous failable constructor - the calling thread is blocked until a reply is received. See new() for the asynchronous version.

Added in version 2.30.

Parameters:
  • connection – A DBusConnection.

  • flags – Zero or more flags from the DBusObjectManagerClientFlags enumeration.

  • name – The owner of the control object (unique or well-known name), or None when not using a message bus connection.

  • object_path – The object path of the control object.

  • get_proxy_type_func – A DBusProxyTypeFunc function or None to always construct DBusProxy proxies.

  • get_proxy_type_user_data – User data to pass to get_proxy_type_func.

  • cancellable – A Cancellable or None

Methods#

class DBusObjectManagerClient
do_interface_proxy_properties_changed(self, object_proxy: DBusObjectProxy, interface_proxy: DBusProxy, changed_properties: Variant, invalidated_properties: str) None#
Parameters:
  • object_proxy

  • interface_proxy

  • changed_properties

  • invalidated_properties

do_interface_proxy_signal(self, object_proxy: DBusObjectProxy, interface_proxy: DBusProxy, sender_name: str, signal_name: str, parameters: Variant) None#
Parameters:
  • object_proxy

  • interface_proxy

  • sender_name

  • signal_name

  • parameters

get_connection() DBusConnection#

Gets the DBusConnection used by manager.

Added in version 2.30.

get_flags() DBusObjectManagerClientFlags#

Gets the flags that manager was constructed with.

Added in version 2.30.

get_name() str#

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

Added in version 2.30.

get_name_owner() str | None#

The unique name that owns the name that manager is for or None if no-one currently owns that name. You can connect to the Object::notify signal to track changes to the DBusObjectManagerClient:name-owner property.

Added in version 2.30.

classmethod new(connection: DBusConnection, flags: DBusObjectManagerClientFlags, name: str, object_path: str, get_proxy_type_func: Callable[[DBusObjectManagerClient, str, str | None, Any], GType] | None = None, get_proxy_type_user_data: Any = None, cancellable: Cancellable | None = None, callback: Callable[[Object | None, AsyncResult, Any], None] | None = None, user_data: Any = None) None#

Asynchronously creates a new DBusObjectManagerClient object.

This is an asynchronous failable constructor. When the result is ready, callback will be invoked in the thread-default main context (see push_thread_default) of the thread you are calling this method from. You can then call new_finish() to get the result. See new_sync() for the synchronous version.

Added in version 2.30.

Parameters:
  • connection – A DBusConnection.

  • flags – Zero or more flags from the DBusObjectManagerClientFlags enumeration.

  • name – The owner of the control object (unique or well-known name).

  • object_path – The object path of the control object.

  • get_proxy_type_func – A DBusProxyTypeFunc function or None to always construct DBusProxy proxies.

  • get_proxy_type_user_data – User data to pass to get_proxy_type_func.

  • cancellable – A Cancellable or None

  • callback – A AsyncReadyCallback to call when the request is satisfied.

  • user_data – The data to pass to callback.

classmethod new_for_bus(bus_type: BusType, flags: DBusObjectManagerClientFlags, name: str, object_path: str, get_proxy_type_func: Callable[[DBusObjectManagerClient, str, str | None, Any], GType] | None = None, get_proxy_type_user_data: Any = None, cancellable: Cancellable | None = None, callback: Callable[[Object | None, AsyncResult, Any], None] | None = None, user_data: Any = None) None#

Like new() but takes a BusType instead of a DBusConnection.

This is an asynchronous failable constructor. When the result is ready, callback will be invoked in the thread-default main context (see push_thread_default) of the thread you are calling this method from. You can then call new_for_bus_finish() to get the result. See new_for_bus_sync() for the synchronous version.

Added in version 2.30.

Parameters:
  • bus_type – A BusType.

  • flags – Zero or more flags from the DBusObjectManagerClientFlags enumeration.

  • name – The owner of the control object (unique or well-known name).

  • object_path – The object path of the control object.

  • get_proxy_type_func – A DBusProxyTypeFunc function or None to always construct DBusProxy proxies.

  • get_proxy_type_user_data – User data to pass to get_proxy_type_func.

  • cancellable – A Cancellable or None

  • callback – A AsyncReadyCallback to call when the request is satisfied.

  • user_data – The data to pass to callback.

Properties#

class DBusObjectManagerClient
props.bus_type: BusType#

If this property is not NONE, then DBusObjectManagerClient:connection must be None and will be set to the DBusConnection obtained by calling bus_get() with the value of this property.

Added in version 2.30.

props.connection: DBusConnection#

The DBusConnection to use.

Added in version 2.30.

props.flags: DBusObjectManagerClientFlags#

Flags from the DBusObjectManagerClientFlags enumeration.

Added in version 2.30.

props.get_proxy_type_destroy_notify: Any#

A DestroyNotify for the gpointer user_data in DBusObjectManagerClient:get-proxy-type-user-data.

Added in version 2.30.

props.get_proxy_type_func: Any#

The DBusProxyTypeFunc to use when determining what Type to use for interface proxies or None.

Added in version 2.30.

props.get_proxy_type_user_data: Any#

The gpointer user_data to pass to DBusObjectManagerClient:get-proxy-type-func.

Added in version 2.30.

props.name: str#

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

Added in version 2.30.

props.name_owner: str#

The unique name that owns DBusObjectManagerClient:name or None if no-one is currently owning the name. Connect to the Object::notify signal to track changes to this property.

Added in version 2.30.

props.object_path: str#

The object path the manager is for.

Added in version 2.30.

Signals#

class DBusObjectManagerClient.signals
interface_proxy_properties_changed(object_proxy: DBusObjectProxy, interface_proxy: DBusProxy, changed_properties: Variant, invalidated_properties: list[str]) None#

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 None (either may be empty though).

This signal exists purely as a convenience to avoid having to connect signals to all interface proxies managed by manager.

This signal is emitted in the thread-default main context (see push_thread_default) that manager was constructed in.

Added in version 2.30.

Parameters:
  • object_proxy – The DBusObjectProxy on which an interface has properties that are changing.

  • interface_proxy – The DBusProxy that has properties that are changing.

  • changed_properties – A Variant containing the properties that changed (type: a{sv}).

  • invalidated_properties – A None terminated array of properties that were invalidated.

interface_proxy_signal(object_proxy: DBusObjectProxy, interface_proxy: DBusProxy, sender_name: str, signal_name: str, parameters: Variant) None#

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

This signal exists purely as a convenience to avoid having to connect signals to all interface proxies managed by manager.

This signal is emitted in the thread-default main context (see push_thread_default) that manager was constructed in.

Added in version 2.30.

Parameters:
  • object_proxy – The DBusObjectProxy on which an interface is emitting a D-Bus signal.

  • interface_proxy – The DBusProxy that is emitting a D-Bus signal.

  • sender_name – The sender of the signal or NULL if the connection is not a bus connection.

  • signal_name – The signal name.

  • parameters – A Variant tuple with parameters for the signal.

Virtual Methods#

class DBusObjectManagerClient
do_interface_proxy_properties_changed(object_proxy: DBusObjectProxy, interface_proxy: DBusProxy, changed_properties: Variant, invalidated_properties: str) None#

Signal class handler for the DBusObjectManagerClient::interface-proxy-properties-changed signal.

Parameters:
  • object_proxy

  • interface_proxy

  • changed_properties

  • invalidated_properties

do_interface_proxy_signal(object_proxy: DBusObjectProxy, interface_proxy: DBusProxy, sender_name: str, signal_name: str, parameters: Variant) None#

Signal class handler for the DBusObjectManagerClient::interface-proxy-signal signal.

Parameters:
  • object_proxy

  • interface_proxy

  • sender_name

  • signal_name

  • parameters

Fields#

class DBusObjectManagerClient
parent_instance#
priv#