diff --git a/src/server/mysql.c b/src/server/mysql.c --- a/src/server/mysql.c +++ b/src/server/mysql.c @@ -67,7 +67,7 @@ struct distrend_mysql_result short pointlesscheck; }; -/** +/** funcs */ @@ -133,7 +133,7 @@ distrend_mysql_result_t mysqlQuery(distr */ if(conn->pointlesscheck != SEVENTY_FIVE) fprintf(stderr, "warning, I was passed a bad struct distrend_mysql_conn...\n"); - + /** make sure that connection is still alive */ if(mysql_ping(conn->mysqlconn)) @@ -150,10 +150,10 @@ distrend_mysql_result_t mysqlQuery(distr mysql_free_result(result); return NULL; } - + distrenresult->mysqlresult = result; distrenresult->pointlesscheck = FORTY_TWO; - + return distrenresult; } @@ -175,17 +175,29 @@ int mysqlResultFree(distrend_mysql_resul Individual query functions: */ -void finish_frame(distrend_mysql_conn_t conn, int32_t jobkey, int32_t framenum) +void finish_frame(distrend_mysql_conn_t conn, int32_t slavekey, int32_t jobkey, int32_t framenum) { char *query; distrend_mysql_result_t result; - _distren_asprintf(&query, "UPDATE `distren`.`Job` SET `Finish_Confirmed`=1 WHERE `Job_Key`=%d AND `Frame`=%d", - jobkey, framenum); - + _distren_asprintf(&query, "CALL `distren`.`Frame_Complete`(%d,%d,%d);", slavekey, jobkey, framenum); + result = mysqlQuery(conn, query); free(query); - + + mysqlResultFree(result); +} + +void start_frame(distrend_mysql_conn_t conn, int32_t slavekey, int32_t jobkey, int32_t framenum) +{ + char *query; + distrend_mysql_result_t result; + + _distren_asprintf(&query, "CALL `distren`.`Frame_Start`(%d,%d,%d);", slavekey, jobkey, framenum); + + result = mysqlQuery(conn, query); + free(query); + mysqlResultFree(result); } @@ -194,11 +206,11 @@ int change_job_priority(distrend_mysql_c char *query; distrend_mysql_result_t result; - _distren_asprintf(&query, "UPDATE `distren`.`Job` SET `Priority`=%d, `Finish_Confirmed`=1 WHERE `Job_Key`=%d", + _distren_asprintf(&query, "UPDATE `distren`.`Job` SET `Priority`=%d WHERE `Job_Key`=%d", newpriority, jobkey); result = mysqlQuery(conn, query); mysqlResultFree(result); - + return 0; } @@ -206,8 +218,9 @@ int find_jobframe(distrend_mysql_conn_t { distrend_mysql_result_t result; char *query; + MYSQL_ROW row; - _distren_asprintf(&query, "`distren`.`Frame_Get`( %d, @Job_Key, @Frame_Key) SELECT @Job_Key, @Frame_Key", + _distren_asprintf(&query, "`distren`.`Frame_Get`( %d, @Job_Key, @Frame_Key); SELECT @Job_Key, @Frame_Key", slavekey); result = mysqlQuery(conn, query); free(query); @@ -215,6 +228,14 @@ int find_jobframe(distrend_mysql_conn_t if(!result) return 1; + if ((row = mysql_fetch_row(res)) != NULL) + { + jobkey = row[1]; + framenum = row[2]; + } + else + return 1; + mysqlResultFree(result); return 0;