# HG changeset patch # User Binki # Date 2010-02-13 23:01:22 # Node ID f5a1573ebc08f69db363d152d43c8a6b55d9f48a # Parent 3de305a5a38f18fd206694ba16bb18a7a2980b6a fix up finish_frame() into mysql.c, reorganize mysql.? a bit diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -51,6 +51,7 @@ struct general_info { struct distrenjob head; + distrend_mysql_conn_t conn; struct distrend_config *config; @@ -81,7 +82,7 @@ struct general_info /* ************General Functions************* */ // int xml_dump(); int distrend_do(); -// int start_data(struct general_info *general_info); +int start_data(struct general_info *general_info); int mortition(struct general_info *geninfo, struct distrenjob *job); // int restoreJobState(struct distrenjob *job); // int prepare_distrenjob(struct general_info *geninfo, int type, char *name, char *submitter, int priority, int start_frame, int end_frame, int width, int height); @@ -163,8 +164,7 @@ int main(int argc, char *argv[]) */ /** MySQL Connection */ - struct distrend_mysql_con *conn; - if(mysqlConnect(&conn)) + if(mysqlConnect(&general_info.conn)) { fprintf(stderr, "%s:%d: mysqlConnect() failed\n", __FILE__, __LINE__); return 1; @@ -208,7 +208,7 @@ int main(int argc, char *argv[]) /* If the client states that they finished the frame */ if(clientsays == DISTREN_REQUEST_DONEFRAME){ clientstatus = CLIENTSTATUS_IDLE; // Sets the client back to idle - finish_frame(slaveKey, job->jobnum, frame->num, conn); // @TODO: Make sure this actually works. + finish_frame(general_info.conn, job->jobnum, frame->num); // @TODO: Make sure this actually works. } } @@ -219,7 +219,7 @@ int main(int argc, char *argv[]) /** free() paths */ free(general_info.files.geninfo); - mysqlDisconnect(conn); + mysqlDisconnect(general_info.conn); return 0; } @@ -292,7 +292,6 @@ int start_data(struct general_info *gene } */ - /** checks to see if a job is actually done. - scans the folder of the job to make sure all output files are present diff --git a/src/server/mysql.c b/src/server/mysql.c --- a/src/server/mysql.c +++ b/src/server/mysql.c @@ -38,7 +38,24 @@ #define SEVENTY_FIVE 75 #define FORTY_TWO 42 -struct distrend_mysql_con +/** + performs mysql query. + errors will be logged to the user by this function. + @return pointer to query handle on success, NULL on failure + */ +distrend_mysql_result_t mysqlQuery(distrend_mysql_conn_t conn, char *query); + +/** + frees mysql query result. Accepts a NULL pointer and ignores it to + help deal with one-shot calls to mysqlQuery so that you don't have to + check if it returned NULL or not. + @return 0 on success + */ +int mysqlResultFree(distrend_mysql_result_t result); + + + +struct distrend_mysql_conn { MYSQL *mysqlconn; short pointlesscheck; @@ -54,7 +71,7 @@ struct distrend_mysql_result funcs */ -int mysqlConnect(struct distrend_mysql_con **conn) +int mysqlConnect(distrend_mysql_conn_t *conn) { MYSQL *mysqlconn; @@ -72,7 +89,7 @@ int mysqlConnect(struct distrend_mysql_c return 1; } - *conn = malloc(sizeof(struct distrend_mysql_con)); + *conn = malloc(sizeof(struct distrend_mysql_conn)); if(!*conn) { mysql_close(mysqlconn); @@ -85,13 +102,13 @@ int mysqlConnect(struct distrend_mysql_c return 0; } -int mysqlDisconnect(distrend_mysql_con_t conn) +int mysqlDisconnect(distrend_mysql_conn_t conn) { /** check if this handle is valid */ if(conn->pointlesscheck != SEVENTY_FIVE) - fprintf(stderr, "warning, I was passed a bad struct distrend_mysql_con...\n"); + fprintf(stderr, "warning, I was passed a bad struct distrend_mysql_conn...\n"); /** invalidate handle :-D @@ -106,7 +123,7 @@ int mysqlDisconnect(distrend_mysql_con_t } -distrend_mysql_result_t mysqlQuery(distrend_mysql_con_t conn, char *query) +distrend_mysql_result_t mysqlQuery(distrend_mysql_conn_t conn, char *query) { MYSQL_RES *result; distrend_mysql_result_t distrenresult; @@ -115,7 +132,7 @@ distrend_mysql_result_t mysqlQuery(distr pointless sanity check */ if(conn->pointlesscheck != SEVENTY_FIVE) - fprintf(stderr, "warning, I was passed a bad struct distrend_mysql_con...\n"); + fprintf(stderr, "warning, I was passed a bad struct distrend_mysql_conn...\n"); /** make sure that connection is still alive */ @@ -142,6 +159,9 @@ distrend_mysql_result_t mysqlQuery(distr int mysqlResultFree(distrend_mysql_result_t result) { + if(!result) + return 0; + if(result->pointlesscheck != FORTY_TWO) fprintf(stderr, "%s:%d: I didn't get the type of handle I wanted\n", __FILE__, __LINE__); @@ -151,17 +171,30 @@ 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) { 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); @@ -225,14 +258,35 @@ int change_job_priority(int jobKey, int */ // @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); + + result = mysqlQuery(conn, query); + free(query); + + mysqlResultFree(result); +======= struct distrenjob *distrenjob_ptr; found = 0; @@ -270,4 +324,5 @@ int find_jobframe(int slaveKey, int *job *frame = &distrenjob_ptr->frameset[frame_counter]; */ 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 @@ -22,10 +22,12 @@ #ifndef MYSQL_H_ #define MYSQL_H_ -struct distrend_mysql_con; +#include + +struct distrend_mysql_conn; struct distrend_mysql_result; -typedef struct distrend_mysql_con *distrend_mysql_con_t; +typedef struct distrend_mysql_conn *distrend_mysql_conn_t; typedef struct distrend_mysql_result *distrend_mysql_result_t; /** @@ -33,27 +35,20 @@ typedef struct distrend_mysql_result *di @param conn, pointer will be set to the struct @return 0 on success */ -int mysqlConnect(distrend_mysql_con_t *conn); +int mysqlConnect(distrend_mysql_conn_t *conn); /** cleans and disconnects MySQL connection @param conn connection to clean @return 0 on success */ -int mysqlDisconnect(distrend_mysql_con_t conn); +int mysqlDisconnect(distrend_mysql_conn_t conn); /** - performs mysql query. - errors will be logged to the user by this function. - @return pointer to query handle on success, NULL on failure + Mark a frame as finished in the database. */ -distrend_mysql_result_t mysqlQuery(struct distrend_mysql_con *conn, char *query); +void finish_frame(distrend_mysql_conn_t conn, int32_t jobkey, int32_t framenum); -/** - frees mysql query result. - @return 0 on success - */ -int mysqlResultFree(distrend_mysql_result_t result); /** Import */