Changeset - 50915ba5beb7
[Not reviewed]
default
0 3 0
Nathan Brink (binki) - 16 years ago 2010-02-14 16:38:42
ohnobinki@ohnopublishing.net
fix merge conflicts I left in last commit, implement 3 mysql functions
3 files changed with 38 insertions and 143 deletions:
0 comments (0 inline, 0 general)
src/server/distrend.c
Show inline comments
 
@@ -196,7 +196,7 @@ int main(int argc, char *argv[])
 
      /* If the client is idle, must be modified for climbing through linked list of clients (client->clientnum) */
 
      if(clientstatus == CLIENTSTATUS_IDLE)
 
	{
 
	  int returnnum = find_jobframe(slaveKey, &job->jobnum, &frame->num, conn); // Finds a frame to render @FIXME: Slavenum :D
 
	  int returnnum = find_jobframe(general_info.conn, slaveKey, job->jobnum, frame->num); // Finds a frame to render @FIXME: Slavenum :D
 
	  if(returnnum)
 
	    {
 
	      fprintf(stderr,"No frames are available to render at this time. Idling...\n");
src/server/mysql.c
Show inline comments
 
@@ -171,114 +171,15 @@ int mysqlResultFree(distrend_mysql_resul
 
  return 0;
 
}
 

	
 
<<<<<<< local
 

	
 

	
 
/*
 
   Individual query functions:
 
=======
 
/**
 
   Querying Functions
 
>>>>>>> other
 
 */
 

	
 
<<<<<<< local
 
=======
 
/** Finish-Setter: Sets a frame to the "completed" status.*/
 
// @QUERY: update `distren`.`Job` set `Finish_Confirmed`=1 where `Job_Key`='1' and `Frame` = somenumber;
 
void finish_frame(int slaveKey, int jobKey, int frameNum, distrend_mysql_con_t conn)
 
void finish_frame(distrend_mysql_conn_t conn, int32_t jobkey, int32_t framenum)
 
{
 
  MYSQL_RES *result;
 
  MYSQL_ROW row;
 
>>>>>>> other
 

	
 
<<<<<<< local
 
void finish_frame(distrend_mysql_conn_t conn, int32_t jobkey, int32_t framenum)
 
=======
 
  char *query = "update `distren`.`Job` set `Finish_Confirmed`=1 where `Job_Key`='1' and `Frame` = somenumber;";
 
  result = mysqlQuery(conn, query);
 

	
 
  // Check to make sure the slavekey is the one who rendered the frame before finishing :D
 
  /*
 
  distrenjob->frameset[frame].status = FRAMESETSTATUS_DONE;
 
  distrenjob->total_render_time = distrenjob->total_render_time + (clock() - distrenjob->frameset[frame].start_time);
 
  distrenjob->completed_frames ++;
 
  distrenjob->assigned_frames --;
 
  geninfo->total_frames_rendered ++; //< Increase total frames var for stats
 
  update_general_info(geninfo);
 
  updateJobStatsXML(distrenjob);
 
  */
 
}
 

	
 
/** Changes the priority of an existing (and maybe running) job. @arg head I may end up changing the head if job == head */
 
// @QUERY: update `distren`.`Job` set `Priority`='12', `Finish_Confirmed`=1 where `Job_Key`='1';
 
int change_job_priority(int jobKey, int newPriority, distrend_mysql_con_t conn){
 
  /*
 
  struct distrenjob *current_job;
 
  struct distrenjob *prev_job;
 
  char *serialname;
 

	
 
  distrenjob_remove(geninfo, job);
 
  job->priority = new_priority;
 

	
 
  prev_job = &geninfo->head;
 

	
 
  if(job->frameset[0].status == FRAMESETSTATUS_UNASSIGNED)
 

	
 
      //  if job was not yet started
 
  char *query;
 
  distrend_mysql_result_t result;
 

	
 
    {
 
      distrenjob_enqueue(geninfo, job);
 
      return 0;
 
    }
 

	
 

	
 
    // iterate through linked list of jobs
 
    for(current_job = &geninfo->head;
 
        current_job != NULL
 
          && job->priority > current_job->priority;
 
        current_job = current_job->next)
 
      prev_job = current_job;
 

	
 
    prev_job->next = job;
 
    job->next = current_job;
 

	
 

	
 
  update_xml_joblist(geninfo);
 
  // reserialize after changes
 
  job_getserialfilename(&serialname, geninfo, job->jobnum, 0);
 
  distrenjob_serialize(job, serialname);
 
  free(serialname);
 
*/
 
  return 0;
 
}
 

	
 
/**
 
  Frame Finder: Finds a frame for a slave to render
 
*/
 
// @QUERY: Frame_Get()
 
int find_jobframe(int slaveKey, int *jobKey, int *frameNum, distrend_mysql_con_t conn)
 
>>>>>>> other
 
{
 
<<<<<<< local
 
  distrend_mysql_result_t result;
 
  char *query;
 
=======
 
  /*
 
  if(geninfo->hibernate)
 
    return 1;
 
>>>>>>> other
 

	
 
<<<<<<< local
 
  /**
 
    @TODO record the total rendering time for the frame
 
   */
 
=======
 
  unsigned int frame_counter;
 
  unsigned short int found;
 
>>>>>>> other
 

	
 
<<<<<<< local
 
  _distren_asprintf(&query, "UPDATE `distren`.`Job` SET `Finish_Confirmed`=1 WHERE `Job_Key`=%d AND `Frame`=%d",
 
		    jobkey, framenum);
 
  
 
@@ -286,43 +187,35 @@ int find_jobframe(int slaveKey, int *job
 
  free(query);
 
  
 
  mysqlResultFree(result);
 
=======
 
  struct distrenjob *distrenjob_ptr;
 
}
 

	
 
int change_job_priority(distrend_mysql_conn_t conn, int32_t jobkey, int32_t newpriority)
 
{
 
  char *query;
 
  distrend_mysql_result_t result;
 

	
 
  found = 0;
 
  // iterate through jobs from first to last
 
  for(distrenjob_ptr = geninfo->head.next; distrenjob_ptr && !distrenjob_ptr->hibernate; distrenjob_ptr = distrenjob_ptr->next)
 
  {
 
    for(frame_counter = (distrenjob_ptr->prev_frame_index + 1); frame_counter < distrenjob_ptr->total_frames; frame_counter ++)
 
    {
 
      if(distrenjob_ptr->frameset[frame_counter].status == FRAMESETSTATUS_UNASSIGNED) // jobframe found
 
      {
 
        found = 1;
 
        distrenjob_ptr->frameset[frame_counter].status = FRAMESETSTATUS_ASSIGNED;
 
        distrenjob_ptr->frameset[frame_counter].start_time = clock();
 
        distrenjob_ptr->assigned_frames++;
 
        distrenjob_ptr->prev_frame_index = frame_counter;
 
        updateJobStatsXML(distrenjob_ptr);
 
      }
 
  _distren_asprintf(&query, "UPDATE `distren`.`Job` SET `Priority`=%d, `Finish_Confirmed`=1 WHERE `Job_Key`=%d",
 
		    newpriority, jobkey);
 
  result = mysqlQuery(conn, query);
 
  mysqlResultFree(result);
 
  
 
  return 0;
 
}
 

	
 
      if(found)
 
        break;
 
    }
 

	
 
    if(found)
 
      break;
 
  }
 
int find_jobframe(distrend_mysql_conn_t conn, int32_t slavekey, int32_t jobkey, int32_t framenum)
 
{
 
  distrend_mysql_result_t result;
 
  char *query;
 

	
 
  if(!found)
 
    {
 
      fprintf(stderr, "No more jobs to render\n");
 
      sleep(1); //< @todo eliminate the need for this line
 
      return 1;
 
    }
 
  _distren_asprintf(&query, "`distren`.`Frame_Get`( %d, @Job_Key, @Frame_Key) SELECT @Job_Key, @Frame_Key",
 
		    slavekey);
 
  result = mysqlQuery(conn, query);
 
  free(query);
 

	
 
  *job = distrenjob_ptr;
 
  *frame = &distrenjob_ptr->frameset[frame_counter];
 
*/
 
  if(!result)
 
    return 1;
 

	
 
  mysqlResultFree(result);
 

	
 
  return 0;
 
>>>>>>> other
 
}
src/server/mysql.h
Show inline comments
 
@@ -49,13 +49,15 @@ int mysqlDisconnect(distrend_mysql_conn_
 
 */
 
void finish_frame(distrend_mysql_conn_t conn, int32_t jobkey, int32_t framenum);
 

	
 

	
 

	
 
/** Import */
 
/**
 
   Changes the priority of an existing (and maybe running) job. @arg head I may end up changing the head if job == head
 
*/
 
int change_job_priority(distrend_mysql_conn_t conn, int32_t jobkey, int32_t newpriority);
 

	
 
void finish_frame(int slaveKey, int jobKey, int frameNum, distrend_mysql_con_t conn);
 
int change_job_priority(int jobKey, int newPriority, distrend_mysql_con_t conn);
 
int find_jobframe(int slaveKey, int *jobKey, int *frameNum, distrend_mysql_con_t conn);
 
/**
 
  Frame Finder: Finds a frame for a slave to render
 
*/
 
int find_jobframe(distrend_mysql_conn_t conn, int32_t slaveKey, int32_t jobKey, int32_t frameNum);
 

	
 

	
 

	
0 comments (0 inline, 0 general)