chiark / gitweb /
timedated: use libsystemd-bus instead of libdbus for bus communication
[elogind.git] / src / libsystemd-bus / bus-internal.h
index 6499d6b013a76c5ee0f2b7434a0e8b26c4de298a..1726b618418a45f76f6fc976478340e5816bdc6b 100644 (file)
@@ -240,14 +240,12 @@ struct sd_bus {
         uint64_t hello_flags;
 
         uint64_t match_cookie;
-};
-
-static inline void bus_unrefp(sd_bus **b) {
-        sd_bus_unref(*b);
-}
 
-#define _cleanup_bus_unref_ __attribute__((cleanup(bus_unrefp)))
-#define _cleanup_bus_error_free_ __attribute__((cleanup(sd_bus_error_free)))
+        sd_event_source *input_io_event_source;
+        sd_event_source *output_io_event_source;
+        sd_event_source *time_event_source;
+        sd_event *event;
+};
 
 #define BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC))
 
@@ -294,3 +292,9 @@ bool bus_pid_changed(sd_bus *bus);
         for (char *_slash = ({ strcpy((prefix), (path)); streq((prefix), "/") ? NULL : strrchr((prefix), '/'); }) ; \
              _slash && !(_slash[(_slash) == (prefix)] = 0);             \
              _slash = streq((prefix), "/") ? NULL : strrchr((prefix), '/'))
+
+/* If we are invoking callbacks of a bus object, ensure unreffing the
+ * bus from the callback doesn't destroy the object we are working
+ * on */
+#define BUS_DONT_DESTROY(bus) \
+        _cleanup_bus_unref_ sd_bus *_dont_destroy_##bus = sd_bus_ref(bus)