void task_assignment_completion (int rc, const char *value, const void *data) { switch (rc) { case ZCONNECTIONLOSS: case ZOPERATIONTIMEOUT: task_assignment((struct task_info*) data); break; case ZOK: if(data != NULL) { /* * Delete task from list of pending */ LOG_DEBUG(("Deleting pending task %s", ((struct task_info*) data)->name)); char * del_path = ""; del_path = make_path(2, "/tasks/", ((struct task_info*) data)->name); if(del_path != NULL) { delete_pending_task(del_path); } free(del_path); free_task_info((struct task_info*) data); } break; case ZNODEEXISTS: LOG_DEBUG(("Assignment has already been created: %s", value)); break; default: LOG_ERROR(("Something went wrong when checking assignment completion: %s", rc2string(rc))); break; } }
void exec_cmd(t_users *u, t_task_info *ti) { if (u->first_message == false && u->type != TGRAPHICS && u->tasks->size < 10) add_task(u, ti); else if (u->first_message == false && u->type == TGRAPHICS) answer_graphics(u, ti); else { if (ti->args && ti->args[0]) { if (!strcmp(ti->args[0], GRAPHIC_USR)) { u->type = TGRAPHICS; greet_graphics(u); } else assign_client(u, ti->args); u->first_message = false; } ti->task_failure = true; } if (ti->task_failure) free_task_info(ti); }