sd_bus_set_property, sd_bus_set_propertyv, sd_bus_get_property, sd_bus_get_property_trivial, sd_bus_get_property_string, sd_bus_get_property_strv — Set or query D-Bus service properties
#include <systemd/sd-bus.h>
int sd_bus_set_property( | sd_bus *bus, |
| const char *destination, | |
| const char *path, | |
| const char *interface, | |
| const char *member, | |
| sd_bus_error *ret_error, | |
| const char *type, | |
...); |
int sd_bus_set_propertyv( | sd_bus *bus, |
| const char *destination, | |
| const char *path, | |
| const char *interface, | |
| const char *member, | |
| sd_bus_error *ret_error, | |
| const char *type, | |
va_list ap); |
int sd_bus_get_property( | sd_bus *bus, |
| const char *destination, | |
| const char *path, | |
| const char *interface, | |
| const char *member, | |
| sd_bus_error *ret_error, | |
| sd_bus_message **reply, | |
const char *type); |
int sd_bus_get_property_trivial( | sd_bus *bus, |
| const char *destination, | |
| const char *path, | |
| const char *interface, | |
| const char *member, | |
| sd_bus_error *ret_error, | |
| char type, | |
void *ret_ptr); |
int sd_bus_get_property_string( | sd_bus *bus, |
| const char *destination, | |
| const char *path, | |
| const char *interface, | |
| const char *member, | |
| sd_bus_error *ret_error, | |
char **ret); |
int sd_bus_get_property_strv( | sd_bus *bus, |
| const char *destination, | |
| const char *path, | |
| const char *interface, | |
| const char *member, | |
| sd_bus_error *ret_error, | |
char ***ret); |
These functions set or query D-Bus properties. D-Bus properties are service fields exposed
via the org.freedesktop.DBus.Properties interface. Under the hood, these
functions call methods of the org.freedesktop.DBus.Properties interface and
as a result their semantics are similar to
sd_bus_call_method(3).
sd_bus_set_property() sets a D-Bus property. If setting the property
fails or an internal error occurs, an error is returned and an extended description of the error
is optionally stored in ret_error if it is not NULL.
type and the arguments that follow it describe the new value of the
property and must follow the format described in
sd_bus_message_append(3).
sd_bus_set_propertyv() is equivalent to
sd_bus_set_property(), except that it is called with a
"va_list" instead of a variable number of arguments.
sd_bus_get_property() queries a D-Bus property. If retrieving the
property fails or an internal error occurs, an error is returned and an extended description of
the error is optionally stored in ret_error if it is not
NULL. On success, the property is stored in reply.
type describes the property type and must follow the format described in
sd_bus_message_append(3).
sd_bus_get_property_trivial(),
sd_bus_get_property_string() and
sd_bus_get_property_strv() are shorthands for
sd_bus_get_property() that are used to query basic, string and string
vector properties respectively. The caller is responsible for freeing the string and string
vector results stored in ret by
sd_bus_get_property_string() and
sd_bus_get_property_strv().
On success, these functions return a non-negative integer. On failure, they return a negative errno-style error code.
Functions described here are available as a shared
library, which can be compiled against and linked to with the
libsystemd pkg-config(1)
file.
All functions listed here are thread-agnostic and only a single thread may operate on a given object at any given time. Different threads may access the same object at different times. Multiple independent objects may be used from different threads in parallel.
The code described here uses
getenv(3),
which is declared to be not multi-thread-safe. This means that the code calling the functions described
here must not call
setenv(3)
from a parallel thread. It is recommended to only do calls to setenv()
from an early phase of the program when no other threads have been started.
sd_bus_set_property(),
sd_bus_set_propertyv(),
sd_bus_get_property(),
sd_bus_get_property_trivial(),
sd_bus_get_property_string(), and
sd_bus_get_property_strv() were added in version 246.