summaryrefslogtreecommitdiff
path: root/manager.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-02-05 00:38:41 +0100
committerLennart Poettering <lennart@poettering.net>2010-02-05 00:38:41 +0100
commitc1e1601e8c6cace85b19a0eebe50076e5d119688 (patch)
tree26fe0f48cbcdbfeb21abfef75c1de3ee37e9598e /manager.h
parentab8ea24411df95861c53aeee1dd91e765331f717 (diff)
dbus: send out signals when units/jobs come, go and change
Diffstat (limited to 'manager.h')
-rw-r--r--manager.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/manager.h b/manager.h
index ea4e0a4c6f..b92680d96c 100644
--- a/manager.h
+++ b/manager.h
@@ -89,12 +89,20 @@ struct Manager {
/* Jobs that need to be run */
LIST_HEAD(Job, run_queue); /* more a stack than a queue, too */
+ /* Units and jobs that have not yet been announced via
+ * D-Bus. When something about a job changes it is added here
+ * if it is not in there yet. This allows easy coalescing of
+ * D-Bus change signals. */
+ LIST_HEAD(Meta, dbus_unit_queue);
+ LIST_HEAD(Job, dbus_job_queue);
+
/* Jobs to be added */
Hashmap *transaction_jobs; /* Unit object => Job object list 1:1 */
JobDependency *transaction_anchor;
bool dispatching_load_queue:1;
bool dispatching_run_queue:1;
+ bool dispatching_dbus_queue:1;
bool is_init:1;
@@ -117,6 +125,7 @@ struct Manager {
/* Data specific to the D-Bus subsystem */
DBusConnection *bus;
+ Set *subscribed;
};
Manager* manager_new(void);
@@ -140,8 +149,9 @@ void manager_transaction_unlink_job(Manager *m, Job *j);
void manager_clear_jobs(Manager *m);
-void manager_dispatch_load_queue(Manager *m);
-void manager_dispatch_run_queue(Manager *m);
+unsigned manager_dispatch_load_queue(Manager *m);
+unsigned manager_dispatch_run_queue(Manager *m);
+unsigned manager_dispatch_dbus_queue(Manager *m);
int manager_loop(Manager *m);