Directory * directory_new(AppServerOptions options, Event * event) { Directory * directory; if((directory = object_new(sizeof(*directory))) == NULL) return NULL; _new_config(directory); directory->appserver = appserver_new_event(PACKAGE, options, event); if(directory->config == NULL || directory->appserver == NULL) { directory_delete(directory); return NULL; } config = directory->config; /* FIXME ugly work-around */ return directory; }
/* probe */ static int _probe(AppServerOptions options) { Probe probe; AppServer * appserver; Event * event; struct timeval tv; memset(&probe, 0, sizeof(Probe)); if(_probe_timeout(&probe) != 0) { free(probe.ifinfo); free(probe.volinfo); return 1; } if((event = event_new()) == NULL) { free(probe.ifinfo); free(probe.volinfo); return _probe_error(1); } if((appserver = appserver_new_event(&probe, options, "Probe", NULL, event)) == NULL) { free(probe.ifinfo); free(probe.volinfo); event_delete(event); return _probe_error(1); } tv.tv_sec = PROBE_REFRESH; tv.tv_usec = 0; if(event_register_timeout(event, &tv, (EventTimeoutFunc)_probe_timeout, &probe) != 0) _probe_error(0); else event_loop(event); appserver_delete(appserver); event_delete(event); free(probe.ifinfo); free(probe.volinfo); return 1; }