# HG changeset patch # User Binki # Date 2010-02-14 16:38:42 # Node ID 50915ba5beb79e5bb7d4773977da9a56655a06e5 # Parent f5a1573ebc08f69db363d152d43c8a6b55d9f48a fix merge conflicts I left in last commit, implement 3 mysql functions diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -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"); diff --git a/src/server/mysql.c b/src/server/mysql.c --- a/src/server/mysql.c +++ b/src/server/mysql.c @@ -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 } diff --git a/src/server/mysql.h b/src/server/mysql.h --- a/src/server/mysql.h +++ b/src/server/mysql.h @@ -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);