diff --git a/src/server/slave.c b/src/server/slave.c --- a/src/server/slave.c +++ b/src/server/slave.c @@ -81,8 +81,8 @@ int main(int argc, char *argv[]) /* Code-filled Variables */ - int jobnum; /* The job number that we're currently working */ - int framenum; /* @TODO: Remotio should fill this */ + int jobnum = 0; /* The job number that we're currently working */ + int framenum = 0; /* @TODO: Remotio should fill this */ int busy = 0; /* Client business 1=busy 0=idle */ @@ -101,7 +101,7 @@ int main(int argc, char *argv[]) struct distrenjob *myjob; /* Structure to hold data gathered from the XML file */ - int cont = 0; + int cont = 1; int framesInLocalQueue = 0; while(cont) @@ -111,9 +111,7 @@ int main(int argc, char *argv[]) { /* @TODO: Add remotio hooks */ // jobnum = remoteio_read(jobnum); /* Set jobnum from remoteio (we could use info from struct, but we need this info to download the xmlfile */ - jobnum = 0; //framenum = remoteio_read(jobnum); /* Set framenum from remoteio */ - framenum = 0; fprintf(stderr, "Preparing to render frame %d in job %d\n", framenum, jobnum); @@ -128,12 +126,12 @@ int main(int argc, char *argv[]) _distren_asprintf(&urltoOutput, "http://protofusion.org/distren/stor/tmp/", jobdatapath ); // Prepares the URL where output is posted _distren_asprintf(&pathtoXml, "%s/job%d/job%d.xml", datadir, jobnum ); // Prepares the path to the job's XML file - // Downloads the job tar if it isn't present. + // Download the job tar if it isn't present. struct stat buffer; int fstatus = stat(pathtoJobfile, &buffer); if(fstatus == -1) { - /* Downloads the Tar */ + /* Download the Tar */ if( curlget(urltoTar, pathtoTar) == 0) fprintf(stderr, "Job data retrieved successfully\n"); else @@ -169,30 +167,24 @@ int main(int argc, char *argv[]) /* Prepares the path to the jobfile */ _distren_asprintf(&pathtoOutput, "%s/job%d/output/job%d-frame%d.%s", datadir, jobnum, jobnum, framenum, outputExt ); - - /** Series of ifs for jobtype based on xml content */ - while(1 == 1){ - exec_blender(pathtoJobfile, pathtoOutput, framenum); /* @TODO: This warning should be fixed :D */ - break; - } + /* Execute blender */ + exec_blender(pathtoJobfile, pathtoOutput, framenum); /* @TODO: This warning should be fixed :D */ /* When blender is finished, run this... */ fprintf(stderr, "Finished frame %d in job %d, uploading...", framenum, jobnum); curlpost(pathtoOutput, urltoOutput); /* uploads (HTML POST) the output at outputpath to the server at outputurl */ - tell_the_server(DISTREN_REQUEST_DONEFRAME); /* Tells the server that it's finished rendering this frame */ + tell_the_server(DISTREN_REQUEST_DONEFRAME); /* Tells the server that it's done rendering, and upload is done */ busy = 0; /* Slave now becomes idle, doesn't need to tell the server anything, ssh handles this. */ framesInLocalQueue--; } - + else + fprintf(stderr,"Nothing to do. Idling...\n"); // If the server says that every frame for the last jobnum is finished, OR if the data is getting old if(1 == 0){ delete_jobdata(jobnum, datadir); } + sleep(5); // Poll 5 seconds. @TODO: Remove all polling } -/* Test code for execio - fprintf(stderr,"Testing out execioness"); - exec_blender("/home/ethanzonca/Blender/houses.blend", "/home/ethanzonca/Blender/out.png", 1); - */ return 0; }