/* * Load current front_end table information into *node_buffer_pptr */ extern int scontrol_load_front_end(front_end_info_msg_t ** front_end_buffer_pptr) { int error_code; front_end_info_msg_t *front_end_info_ptr = NULL; if (old_front_end_info_ptr) { error_code = slurm_load_front_end ( old_front_end_info_ptr->last_update, &front_end_info_ptr); if (error_code == SLURM_SUCCESS) slurm_free_front_end_info_msg (old_front_end_info_ptr); else if (slurm_get_errno () == SLURM_NO_CHANGE_IN_DATA) { front_end_info_ptr = old_front_end_info_ptr; error_code = SLURM_SUCCESS; if (quiet_flag == -1) { printf("slurm_load_front_end no change in " "data\n"); } } } else error_code = slurm_load_front_end((time_t) NULL, &front_end_info_ptr); if (error_code == SLURM_SUCCESS) { old_front_end_info_ptr = front_end_info_ptr; *front_end_buffer_pptr = front_end_info_ptr; } return error_code; }
extern int get_new_info_front_end(front_end_info_msg_t **info_ptr, int force) { static front_end_info_msg_t *new_front_end_ptr = NULL; int error_code = SLURM_NO_CHANGE_IN_DATA; time_t now = time(NULL); static time_t last; static bool changed = 0; if (g_front_end_info_ptr && !force && ((now - last) < working_sview_config.refresh_delay)) { if (*info_ptr != g_front_end_info_ptr) error_code = SLURM_SUCCESS; *info_ptr = g_front_end_info_ptr; if (changed) error_code = SLURM_SUCCESS; goto end_it; } last = now; if (g_front_end_info_ptr) { error_code = slurm_load_front_end( g_front_end_info_ptr->last_update, &new_front_end_ptr); if (error_code == SLURM_SUCCESS) { slurm_free_front_end_info_msg(g_front_end_info_ptr); changed = 1; } else if (slurm_get_errno() == SLURM_NO_CHANGE_IN_DATA) { error_code = SLURM_NO_CHANGE_IN_DATA; new_front_end_ptr = g_front_end_info_ptr; changed = 0; } } else { new_front_end_ptr = NULL; error_code = slurm_load_front_end((time_t) NULL, &new_front_end_ptr); changed = 1; } g_front_end_info_ptr = new_front_end_ptr; if (g_front_end_info_ptr && (*info_ptr != g_front_end_info_ptr)) error_code = SLURM_SUCCESS; *info_ptr = g_front_end_info_ptr; end_it: return error_code; }