chiark / gitweb /
dbus: introduce parse_unit_info
[elogind.git] / src / shared / dbus-common.h
index 7294206bc42c317d84f97d131d873050e02e7859..f7f614cdcd4a9e9e6df622c7d3fdcb64bdaf08a5 100644 (file)
@@ -22,6 +22,8 @@
 ***/
 
 #include <dbus/dbus.h>
+#include <inttypes.h>
+#include <sys/types.h>
 
 #ifndef DBUS_ERROR_UNKNOWN_OBJECT
 #define DBUS_ERROR_UNKNOWN_OBJECT "org.freedesktop.DBus.Error.UnknownObject"
@@ -112,6 +114,10 @@ typedef struct BusBoundProperties {
         const void *const base;          /* base pointer to which the offset must be added to reach data */
 } BusBoundProperties;
 
+dbus_bool_t bus_maybe_send_reply (DBusConnection   *c,
+                                  DBusMessage *message,
+                                  DBusMessage *reply);
+
 DBusHandlerResult bus_send_error_reply(
                 DBusConnection *c,
                 DBusMessage *message,
@@ -191,6 +197,22 @@ unsigned bus_events_to_flags(uint32_t events);
 
 int bus_parse_strv(DBusMessage *m, char ***_l);
 int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l);
+int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l);
+
+struct unit_info {
+        const char *id;
+        const char *description;
+        const char *load_state;
+        const char *active_state;
+        const char *sub_state;
+        const char *following;
+        const char *unit_path;
+        uint32_t job_id;
+        const char *job_type;
+        const char *job_path;
+};
+
+int bus_parse_unit_info(DBusMessageIter *iter, struct unit_info *u);
 
 int bus_append_strv_iter(DBusMessageIter *iter, char **l);
 
@@ -214,5 +236,9 @@ int bus_method_call_with_reply(DBusConnection *bus,
                                DBusError *return_error,
                                int first_arg_type, ...);
 
-void dbus_message_unref_p(DBusMessage **reply);
-#define _cleanup_dbus_msg_unref_ __attribute__((cleanup(dbus_message_unref_p)))
+const char *bus_message_get_sender_with_fallback(DBusMessage *m);
+
+void bus_message_unrefp(DBusMessage **reply);
+
+#define _cleanup_dbus_message_unref_ __attribute__((cleanup(bus_message_unrefp)))
+#define _cleanup_dbus_error_free_ __attribute__((cleanup(dbus_error_free)))