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;
    }
}
Beispiel #2
0
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);
}