machined: implement exit-on-idle
This commit is contained in:
+14
-17
@@ -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[]) {
|
||||||
|
|||||||
Reference in New Issue
Block a user