sd_bus_request_name
systemd
Developer
Lennart
Poettering
lennart@poettering.net
sd_bus_request_name
3
sd_bus_request_name
sd_bus_release_name
Request or release a well-known name on a bus
#include <systemd/sd-bus.h>
int sd_bus_request_name
sd_bus* bus
const char *name
unsigned flags
int sd_bus_release_name
sd_bus* bus
const char *name
Description
sd_bus_request_name() requests
a well-known name on a bus. It takes a bus connection,
a valid bus name and a flags parameter. The flags
parameter is a combination of the following
flags:
SD_BUS_NAME_ALLOW_REPLACEMENT
After acquiring the
name successuflly, permit other peers
to take over the name when they try to
acquire it with the
SD_BUS_NAME_REPLACE_EXISTING
flag set. If
SD_BUS_NAME_ALLOW_REPLACEMENT
is not set on the original request
such a request by other peers will be
denied.
SD_BUS_NAME_REPLACE_EXISTING
Take over a the name
if it is already acquired by a another
peer, and that other peer permitted
taking it over by setting
SD_BUS_NAME_ALLOW_REPLACEMENT
while acquiring it.
SD_BUS_NAME_DO_NOT_QUEUE
Do not queue name
acquisition when the name is already
taken.
sd_bus_release_name() releases
an acquired well-known name. It takes a bus connection
and a valid bus name as parameters.
Return Value
On success, these calls return 0 or a positive
integer. On failure, these calls return a negative
errno-style error code.
sd_bus_request_name() will
return 0 when the name is already taken by another
peer and the client has been added to the queue for
the name, unless
SD_BUS_NAME_DO_NOT_QUEUE has been
set. The caller can subscribe to
NameOwnerChanged signals to be
notified when the name is successfully
acquired. sd_bus_request_name() returns
> 0 when the name has been
acquired successfully.
Errors
Returned errors may indicate the following problems:
-EALREADY
The caller already is
the owner of the specified
name.
-EEXIST
The name has already
been acquired by a different peer, and
SD_BUS_NAME_REPLACE_EXISTING was not
specified or the other peer did not
specify SD_BUS_NAME_ALLOW_REPLACEMENT
while acquiring the
name.
-EINVAL
A specified parameter
is invalid.
-ENOTCONN
The bus connection has
been disconnected.
-ECHILD
The bus connection has
been created in a different process
than the current.
Notes
The sd_bus_acquire_name()
and sd_bus_release_bame()
interfaces are available as shared library, which can
be compiled and linked to with the
libsystemd-bus pkg-config1
file.
See Also
systemd1,
sd-bus3,
sd_bus_new3