diff --git a/src/server/distrend.c b/src/server/distrend.c --- a/src/server/distrend.c +++ b/src/server/distrend.c @@ -49,6 +49,20 @@ struct { struct frameset **frameset; // What exactly is this now? hehe } blendjob[max]; +// -- Matthew's handywork -- +// struct for storing informaiton on each frame for a particular blender job +struct { + int frame_num; // frame number to render + char slave_name; // user that frame is assigned to + int frame_status; // status of frame, 0= unassigned, 1= taken, 2= done + + // For secondary upload location... + char url; + char login_name; + char login_pass; +} frameset[frame_count]; +// -- end of Matthew's handywork -- + struct { char *name; char *submitter; @@ -83,12 +97,12 @@ we get a key generated on the server, an while(cont) { struct distren_action *action; - + distrend_accept(&action); cont = distrend_do(action); distrend_action_free(action); } - + distrend_unlisten(listenset); distrend_config_free(config); @@ -99,15 +113,15 @@ struct distrend_config { cfg_t *mycfg; struct options_common *options; - + struct distrend_listen **listens; /*< Null terminated array of structs */ - + } - + int distrend_do_config(int argc, char *argv[], struct distrend_config *config) { - cfg_opt_t myopts = + cfg_opt_t myopts = { CFG_SEC("listen", /* this must be imported into struct listens (which must still be declared) */ { @@ -121,17 +135,17 @@ int distrend_do_config(int argc, char *a config = malloc(sizeof(struct distrend_config)); options_init(argc, argv, &config->mycfg, &myopts, "server", &config->options); - + return 0; } int distrend_config_free(struct distrend_config *config) { options_free(config->options); free(config); - + return 0; } - + // Registration on server. Needs attention. (e.g., people could make tons of accounts with the key we give them... // Set up distrend -c username email@example.com @@ -243,32 +257,41 @@ void loginuser(char *username, int secre /* This function creates frame array based on the total number of frames to be rendered, which will then be parsed by function frame_farmer. */ -void frame_array_builder(int sframe, int eframe) { - int total = eframe + 1; - int x = sframe; - blendjob[jobnum].frameset[total]; +void frame_num_struct_builder(int jobnum, int sframe, int eframe) { + int total = sframe - eframe; + int fcount = sframe; // Used to create all the frames in the structure from sframe to eframe + int x = 0; - while(x <= eframe){ - blendjob[jobnum].frameset[x]=0; + while(x < total){ + blendjob[jobnum].frameset[x].frame_num = fcount; x++; + fcount++; } } // matches your computer up with a lovely frame to render int frame_finder(){ - int your_frame = 0; // your_frame is an interger value that will be given to the client as the frame number to render + int your_frame = null; // your_frame is an interger value that will be given to the client as the frame number to render + int x = 0; // the frameset number - while(your_frame < eframe){ // this finds a frame with the value of zero, which is a frame that is ready to be rendered - if (blendjob[jobnum].frameset[your_frame] = 0) + while(your_frame <= (sframe - eframe)){ // Finds the frameset number with a frame that needs to be rendered + if (blendjob[jobnum].frameset[x].frame_status = 0) break; + } - your_frame++; - } -blendjob[jobnum].frameset[your_frame]++; // sets the value of the frame to 2, which means its taken +blendjob[jobnum].frameset[x].frame_status++; // sets the value of the frame to 2, which means its taken + +your_frame = blendjob[jobnum].frameset[x].frame_num; // Takes the frameset found in the while statement above, and extracts the frame number from it and assigns it to the int your_frame return your_frame; // your_frame is returned as the frame to be rendered } +// This figures out how much of the job is done, where jobnum corresponds to the job number +// This uses pointers, so when it is run it updates certain values in memory +void status_report_generator(int jobnum){ + +} + // This function makes the value of the frame 2, which means its completed. void the_finisher(int frame){ blendjob[jobnum].frameset[frame]++; @@ -329,7 +352,7 @@ void exec_blender(char *input, char *out ret = execv("/usr/bin/blender", cmd); // OHNOBINKI! ... check this... Its supposed to send a command back to the server and run the_finisher(); function which sets the frame status to complete. - fprintf{stdin, the_finisher(frame)}; + fprintf(stdin, the_finisher(frame)); void exec_luxrender_single(char *input, char *output) { int ret;