machined: implement exit-on-idle

This commit is contained in:
Lennart Poettering
2013-12-19 22:18:39 +01:00
parent 37224a5ff5
commit d9e34bfda3
+14 -17
View File
@@ -275,26 +275,23 @@ int manager_startup(Manager *m) {
return 0; return 0;
} }
int manager_run(Manager *m) { static bool check_idle(void *userdata) {
int r; Manager *m = userdata;
manager_gc(m, true);
return hashmap_isempty(m->machines);
}
int manager_run(Manager *m) {
assert(m); assert(m);
for (;;) { return bus_event_loop_with_idle(
r = sd_event_get_state(m->event); m->event,
if (r < 0) m->bus,
return r; "org.freedesktop.machine1",
if (r == SD_EVENT_FINISHED) DEFAULT_EXIT_USEC,
return 0; check_idle, m);
manager_gc(m, true);
r = sd_event_run(m->event, (uint64_t) -1);
if (r < 0)
return r;
}
return 0;
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {