static void primwatch_reload( int fd, short event, void *args) { primwatch_t *primwatch = args; if (config_manager_load(primwatch->config_manager, primwatch->config_file)) { LOG(LOG_LV_ERR, "failed in load config manager"); } }
static void window_load(Window* window) { // Layers to load inside the watchface. rect_layer_load(window); rect_sub_layer_load(window); battery_layer_load(window); text_time_layer_load(window); text_date_layer_load(window); text_phrase_bg_layer_load(window); text_phrase_layer_load(window); idol_layer_load(window); anim_bg_layer_load(window); anim_logo_layer_load(window); // Load the config_manager config_manager_load(); // Also load time_manager time_manager_load(); // Also the accel_phrase manager accel_phrase_load(); }
int main(int argc, char *argv[]) { int ret = EX_OK; primwatch_t primwatch; const char *log_type; const char *log_facility; const char *log_prefix; char log_path[MAXPATHLEN]; const char *pid_file_path; const char *cntrl_addr; const char *cntrl_port; int64_t verbose_level; if (logger_create()) { fprintf(stderr, "failed in create logger"); ret = EX_OSERR; } if (primwatch_initialize(&primwatch)) { fprintf(stderr, "failed in initaizliae"); ret = EX_OSERR; goto last; } parse_args(&primwatch, argc, argv); if (logger_set_foreground(primwatch.foreground)) { fprintf(stderr, "failed in create logger"); ret = EX_OSERR; } if (config_manager_load(primwatch.config_manager, primwatch.config_file)) { LOG(LOG_LV_ERR, "failed in load config file %s", primwatch.config_file); ret = EX_DATAERR; goto last; } if (config_manager_get_string(primwatch.config_manager, &log_type , "logType", NULL)) { LOG(LOG_LV_ERR, "failed in get log type from config"); ret = EX_DATAERR; goto last; } if (config_manager_get_string(primwatch.config_manager, &log_facility , "logFacility", NULL)) { LOG(LOG_LV_ERR, "failed in get log facility from config"); ret = EX_DATAERR; goto last; } if (config_manager_get_string(primwatch.config_manager, &log_prefix , "logPath", NULL)) { LOG(LOG_LV_ERR, "failed in get log path from config"); ret = EX_DATAERR; goto last; } if (config_manager_get_string(primwatch.config_manager, &pid_file_path , "pidFilePath", NULL)) { LOG(LOG_LV_ERR, "failed in get pid file path from config"); ret = EX_DATAERR; goto last; } if (config_manager_get_string(primwatch.config_manager, &cntrl_addr , "controllerAddress", NULL)) { LOG(LOG_LV_ERR, "failed in get controller address from config"); ret = EX_DATAERR; goto last; } if (config_manager_get_string(primwatch.config_manager, &cntrl_port , "controllerPort", NULL)) { LOG(LOG_LV_ERR, "failed in get controller port from config"); ret = EX_DATAERR; goto last; } if (config_manager_get_long(primwatch.config_manager, &verbose_level , "verboseLevel", NULL)) { LOG(LOG_LV_ERR, "failed in get verbose level from config"); ret = EX_DATAERR; goto last; } snprintf(log_path, sizeof(log_path), "%s.daemon", log_prefix); if (logger_open((log_level_t)verbose_level, log_type, PROGIDENT, LOG_PID, log_facility, log_path)) { LOG(LOG_LV_ERR, "failed in open log"); ret = EX_OSERR; goto last; } if (!primwatch.foreground) { if (daemon(1,1)) { LOG(LOG_LV_ERR, "failed in daemon"); ret = EX_OSERR; goto last; } setsid(); } if (primwatch_event_initialize(&primwatch)) { fprintf(stderr, "failed in initaizliae"); ret = EX_OSERR; goto last; } if (make_pidfile(pid_file_path)) { LOG(LOG_LV_ERR, "failed in create file of process id"); ret = EX_OSERR; goto last; } if (watcher_polling_start(primwatch.watcher)) { LOG(LOG_LV_ERR, "failed in initial polling"); ret = EX_OSERR; goto last; } if (controller_start(primwatch.controller, cntrl_addr, cntrl_port)) { LOG(LOG_LV_ERR, "failed in start controller"); ret = EX_OSERR; goto last; } signal_set(&primwatch.sig_int_event, SIGINT, primwatch_terminate, &primwatch); event_priority_set(&primwatch.sig_int_event, DEFAULT_EVENT_PRIORITY + 30); event_base_set(primwatch.event_base, &primwatch.sig_int_event); signal_add(&primwatch.sig_int_event, NULL); signal_set(&primwatch.sig_term_event, SIGTERM, primwatch_terminate, &primwatch); event_priority_set(&primwatch.sig_term_event, DEFAULT_EVENT_PRIORITY + 30); event_base_set(primwatch.event_base, &primwatch.sig_term_event); signal_add(&primwatch.sig_term_event, NULL); signal_set(&primwatch.sig_hup_event, SIGHUP, primwatch_reload, &primwatch); event_priority_set(&primwatch.sig_hup_event, DEFAULT_EVENT_PRIORITY + 30); event_base_set(primwatch.event_base, &primwatch.sig_hup_event); signal_add(&primwatch.sig_hup_event, NULL); signal_set(&primwatch.sig_chld_event, SIGCHLD, primwatch_sigchild, &primwatch); event_priority_set(&primwatch.sig_chld_event, DEFAULT_EVENT_PRIORITY + 30); event_base_set(primwatch.event_base, &primwatch.sig_chld_event); signal_add(&primwatch.sig_chld_event, NULL); if (event_base_dispatch(primwatch.event_base) == -1) { LOG(LOG_LV_ERR, "failed in event base dispatch"); ret = EX_OSERR; goto last; } last: unlink(pid_file_path); logger_close(); logger_destroy(); primwatch_finalize(&primwatch); return ret; }