Class

GioDBusObjectManagerClient

Description [src]

class Gio.DBusObjectManagerClient : GObject.Object {
  /* No available fields */
}

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 [thread-default main context][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.

Available since:2.30

Hierarchy

hierarchy this GDBusObjectManagerClient implements_0 GAsyncInitable this--implements_0 implements_1 GDBusObjectManager this--implements_1 implements_2 GInitable this--implements_2 ancestor_0 GObject ancestor_0--this

Ancestors

Constructors

g_dbus_object_manager_client_new_finish

Finishes an operation started with g_dbus_object_manager_client_new().

Available since: 2.30

g_dbus_object_manager_client_new_for_bus_finish

Finishes an operation started with g_dbus_object_manager_client_new_for_bus().

Available since: 2.30

g_dbus_object_manager_client_new_for_bus_sync

Like g_dbus_object_manager_client_new_sync() but takes a GBusType instead of a GDBusConnection.

Available since: 2.30

g_dbus_object_manager_client_new_sync

Creates a new GDBusObjectManagerClient object.

Available since: 2.30

Functions

g_dbus_object_manager_client_new

Asynchronously creates a new GDBusObjectManagerClient object.

Available since: 2.30

g_dbus_object_manager_client_new_for_bus

Like g_dbus_object_manager_client_new() but takes a GBusType instead of a GDBusConnection.

Available since: 2.30

Instance methods

g_dbus_object_manager_client_get_connection

Gets the GDBusConnection used by manager.

Available since: 2.30

g_dbus_object_manager_client_get_flags

Gets the flags that manager was constructed with.

Available since: 2.30

g_dbus_object_manager_client_get_name

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

Available since: 2.30

g_dbus_object_manager_client_get_name_owner

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.

Available since: 2.30

Methods inherited from GObject (43)
Methods inherited from GAsyncInitable (3)
g_async_initable_init_async

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.

Available since: 2.22

g_async_initable_init_finish

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

Available since: 2.22

g_async_initable_new_finish

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

Available since: 2.22

Methods inherited from GDBusObjectManager (4)
g_dbus_object_manager_get_interface

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

Available since: 2.30

g_dbus_object_manager_get_object

Gets the GDBusObjectProxy at object_path, if any.

Available since: 2.30

g_dbus_object_manager_get_object_path

Gets the object path that manager is for.

Available since: 2.30

g_dbus_object_manager_get_objects

Gets all GDBusObject objects known to manager.

Available since: 2.30

Methods inherited from GInitable (1)
g_initable_init

Initializes the object implementing the interface.

Available since: 2.22

Properties

Gio.DBusObjectManagerClient:bus-type

If this property is not G_BUS_TYPE_NONE, then GDBusObjectManagerClient:connection must be NULL and will be set to the GDBusConnection obtained by calling g_bus_get() with the value of this property.

Available since: 2.30

Gio.DBusObjectManagerClient:connection

The GDBusConnection to use.

Available since: 2.30

Gio.DBusObjectManagerClient:flags

Flags from the GDBusObjectManagerClientFlags enumeration.

Available since: 2.30

Gio.DBusObjectManagerClient:get-proxy-type-destroy-notify

A GDestroyNotify for the #gpointer user_data in GDBusObjectManagerClient:get-proxy-type-user-data.

Available since: 2.30

Gio.DBusObjectManagerClient:get-proxy-type-func

The GDBusProxyTypeFunc to use when determining what GType to use for interface proxies or NULL.

Available since: 2.30

Gio.DBusObjectManagerClient:get-proxy-type-user-data

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

Available since: 2.30

Gio.DBusObjectManagerClient:name

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

Available since: 2.30

Gio.DBusObjectManagerClient:name-owner

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.

Available since: 2.30

Gio.DBusObjectManagerClient:object-path

The object path the manager is for.

Available since: 2.30

Signals

Gio.DBusObjectManagerClient::interface-proxy-properties-changed

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).

Available since: 2.30

Gio.DBusObjectManagerClient::interface-proxy-signal

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

Available since: 2.30

Signals inherited from GObject (1)
Signals inherited from GDBusObjectManager (4)
Gio.DBusObjectManager::interface-added

Emitted when interface is added to object.

Available since: 2.30

Gio.DBusObjectManager::interface-removed

Emitted when interface has been removed from object.

Available since: 2.30

Gio.DBusObjectManager::object-added

Emitted when object is added to manager.

Available since: 2.30

Gio.DBusObjectManager::object-removed

Emitted when object is removed from manager.

Available since: 2.30

Class structure

struct GioDBusObjectManagerClientClass {
  GObjectClass parent_class;
  void (* interface_proxy_signal) (
    GDBusObjectManagerClient* manager,
    GDBusObjectProxy* object_proxy,
    GDBusProxy* interface_proxy,
    const gchar* sender_name,
    const gchar* signal_name,
    GVariant* parameters
  );
  void (* interface_proxy_properties_changed) (
    GDBusObjectManagerClient* manager,
    GDBusObjectProxy* object_proxy,
    GDBusProxy* interface_proxy,
    GVariant* changed_properties,
    const gchar* const* invalidated_properties
  );
  
}
Class members
parent_class
GObjectClass
 

The parent class.

interface_proxy_signal
void (* interface_proxy_signal) (
    GDBusObjectManagerClient* manager,
    GDBusObjectProxy* object_proxy,
    GDBusProxy* interface_proxy,
    const gchar* sender_name,
    const gchar* signal_name,
    GVariant* parameters
  )
  No description available.
interface_proxy_properties_changed
void (* interface_proxy_properties_changed) (
    GDBusObjectManagerClient* manager,
    GDBusObjectProxy* object_proxy,
    GDBusProxy* interface_proxy,
    GVariant* changed_properties,
    const gchar* const* invalidated_properties
  )
  No description available.