X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fmachine%2Fmachined.c;h=6eeb053168d41e43cdece58e2a16758ab4925003;hb=30b5275ac775264fa94490ac88c1e35bc6b90b40;hp=ee6a6d6aeb60dc61f2a0410567f0101e955bfdfe;hpb=afc6adb5ec7e73bc13156c43f52fb015cd80cc68;p=elogind.git diff --git a/src/machine/machined.c b/src/machine/machined.c index ee6a6d6ae..6eeb05316 100644 --- a/src/machine/machined.c +++ b/src/machine/machined.c @@ -59,6 +59,8 @@ Manager *manager_new(void) { return NULL; } + sd_event_set_watchdog(m->event, true); + return m; } @@ -129,7 +131,7 @@ static int manager_connect_bus(Manager *m) { assert(m); assert(!m->bus); - r = sd_bus_open_system(&m->bus); + r = sd_bus_default_system(&m->bus); if (r < 0) { log_error("Failed to connect to system bus: %s", strerror(-r)); return r; @@ -217,17 +219,12 @@ static int manager_connect_bus(Manager *m) { return r; } - r = sd_bus_request_name(m->bus, "org.freedesktop.machine1", SD_BUS_NAME_DO_NOT_QUEUE); + r = sd_bus_request_name(m->bus, "org.freedesktop.machine1", 0); if (r < 0) { log_error("Failed to register name: %s", strerror(-r)); return r; } - if (r != SD_BUS_NAME_PRIMARY_OWNER) { - log_error("Failed to acquire name."); - return -EEXIST; - } - r = sd_bus_attach_event(m->bus, m->event, 0); if (r < 0) { log_error("Failed to attach bus to event loop: %s", strerror(-r)); @@ -278,26 +275,23 @@ int manager_startup(Manager *m) { return 0; } -int manager_run(Manager *m) { - int r; - - assert(m); +static bool check_idle(void *userdata) { + Manager *m = userdata; - for (;;) { - r = sd_event_get_state(m->event); - if (r < 0) - return r; - if (r == SD_EVENT_FINISHED) - return 0; + manager_gc(m, true); - manager_gc(m, true); + return hashmap_isempty(m->machines); +} - r = sd_event_run(m->event, (uint64_t) -1); - if (r < 0) - return r; - } +int manager_run(Manager *m) { + assert(m); - return 0; + return bus_event_loop_with_idle( + m->event, + m->bus, + "org.freedesktop.machine1", + DEFAULT_EXIT_USEC, + check_idle, m); } int main(int argc, char *argv[]) {