Changeset - 8b67a70070ef
[Not reviewed]
default
0 1 0
LordOfWar - 16 years ago 2009-07-04 15:21:03

Fixed a syntax error, changing curvy brackets to parenthesis

added a frameset structure

adjusted the job_builder and frame_finder functions to use the new structure

prepared to start a function called status_report_generator, this function will scan all the jobs and figure out how done they are

preparing to:
add code to the frame_finder function to scan all the jobs and then run the job of highest priority. Then I will add code to the status_report_generate to change the priority of the job to something the frame_finder won't look it if the job is completed.
1 file changed with 36 insertions and 13 deletions:
0 comments (0 inline, 0 general)
src/server/distrend.c
Show inline comments
 
@@ -46,12 +46,26 @@ struct {
 
  char *submitter;
 
  char *email;
 
  int priority;
 
  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;
 
  char *email;
 
  int priority;
 
  int mode; // 0 = Static Render, stop at Spp, or infinity if spp is null. Framerange is ignored || 1 = animation, stop at Spp and stay in framerange.
 
@@ -240,38 +254,47 @@ void loginuser(char *username, int secre
 
 Have a script crawl through each job in the arrays, ordered by priority?, and assign a certain number of frames to each slave.
 
 Then we will need some sort of watchdog to monitor slaves on the main server to check for stales.
 
*/
 

	
 

	
 
/* 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]++;
 
}
 

	
 
// Queuer: this function should add files to the queue
 
@@ -326,13 +349,13 @@ void exec_blender(char *input, char *out
 
  int ret;
 
  /* SEGFAULTAGE :-D */
 
  char *cmd[] = { "blender", "-b", "-o", output, input, "-f", frame, (char *)0 };
 
  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;
 
  char *cmd[] = { "luxrender", "-something", "something", "something", (char *)0 };
 
  ret = execv("/usr/bin/luxrender", cmd);
 
}
0 comments (0 inline, 0 general)