DBusNames.ownName

Starts acquiring name on the bus specified by bus_type and calls name_acquired_handler and name_lost_handler when the name is acquired respectively lost. Callbacks will be invoked in the [thread-default main context][g-main-context-push-thread-default] of the thread you are calling this function from.

You are guaranteed that one of the name_acquired_handler and name_lost_handler callbacks will be invoked after calling this function - there are three possible cases:

- name_lost_handler with a NULL connection (if a connection to the bus can't be made).

- bus_acquired_handler then name_lost_handler (if the name can't be obtained)

- bus_acquired_handler then name_acquired_handler (if the name was obtained).

When you are done owning the name, just call Bus.unownName with the owner id this function returns.

If the name is acquired or lost (for example another application could acquire the name if you allow replacement or the application currently owning the name exits), the handlers are also invoked. If the gio.DBusConnection that is used for attempting to own the name closes, then name_lost_handler is invoked since it is no longer possible for other processes to access the process.

You cannot use Bus.ownName several times for the same name (unless interleaved with calls to Bus.unownName) - only the first call will work.

Another guarantee is that invocations of name_acquired_handler and name_lost_handler are guaranteed to alternate; that is, if name_acquired_handler is invoked then you are guaranteed that the next time one of the handlers is invoked, it will be name_lost_handler. The reverse is also true.

If you plan on exporting objects (using e.g. g_dbus_connection_register_object()), note that it is generally too late to export the objects in name_acquired_handler. Instead, you can do this in bus_acquired_handler since you are guaranteed that this will run before name is requested from the bus.

This behavior makes it very simple to write applications that wants to [own names][gdbus-owning-names] and export objects. Simply register objects to be exported in bus_acquired_handler and unregister the objects (if any) in name_lost_handler.

Parameters

busType GBusType

the type of bus to own a name on

name string

the well-known name to own

flags GBusNameOwnerFlags

a set of flags from the GBusNameOwnerFlags enumeration

busAcquiredHandler GBusAcquiredCallback

handler to invoke when connected to the bus of type bus_type or NULL

nameAcquiredHandler GBusNameAcquiredCallback

handler to invoke when name is acquired or NULL

nameLostHandler GBusNameLostCallback

handler to invoke when name is lost or NULL

userData void*

user data to pass to handlers

userDataFreeFunc GDestroyNotify

function for freeing user_data or NULL

Return Value

Type: uint

an identifier (never 0) that can be used with Bus.unownName to stop owning the name.

Meta

Since

2.26