]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-bus: add new sd_bus_is_ready() API
authorLennart Poettering <lennart@poettering.net>
Tue, 19 Dec 2017 14:47:09 +0000 (15:47 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 5 Jan 2018 12:58:32 +0000 (13:58 +0100)
This new call is much light sd_bus_is_open(), but returns true only if
the connection is fully set up, i.e. after we finished with the
authentication and Hello() phase. This API is useful for clients in
particular when using the "watch_bind" feature, as that way it can be
determined in advance whether it makes sense to sync on some operation.

src/libsystemd/libsystemd.sym
src/libsystemd/sd-bus/sd-bus.c
src/systemd/sd-bus.h

index 05c3b99bd6b8cb00e04db14618f1484fc9d28126..af4226c73af9acd5dcb4a75bfab152104a1daa88 100644 (file)
@@ -540,4 +540,5 @@ global:
         sd_bus_add_match_async;
         sd_bus_match_signal;
         sd_bus_match_signal_async;
+        sd_bus_is_ready;
 } LIBSYSTEMD_236;
index 0266fbaf5536d410ff5ca7bf9663891ed7960ead..7967aac7c67d78c005f3bcc2fbf6f276e187729a 100644 (file)
@@ -1396,6 +1396,13 @@ _public_ int sd_bus_is_open(sd_bus *bus) {
         return BUS_IS_OPEN(bus->state);
 }
 
+_public_ int sd_bus_is_ready(sd_bus *bus) {
+        assert_return(bus, -EINVAL);
+        assert_return(!bus_pid_changed(bus), -ECHILD);
+
+        return bus->state == BUS_RUNNING;
+}
+
 _public_ int sd_bus_can_send(sd_bus *bus, char type) {
         int r;
 
index 9a6581348c11d3e13757dd9788cc1f0b4eaf5005..76bd5eff95e08752cfd81ba5c286490d5dc327d7 100644 (file)
@@ -165,6 +165,7 @@ sd_bus *sd_bus_flush_close_unref(sd_bus *bus);
 void sd_bus_default_flush_close(void);
 
 int sd_bus_is_open(sd_bus *bus);
+int sd_bus_is_ready(sd_bus *bus);
 
 int sd_bus_get_bus_id(sd_bus *bus, sd_id128_t *id);
 int sd_bus_get_scope(sd_bus *bus, const char **scope);