Changeset - 29260fa99dfa
[Not reviewed]
default
0 1 0
Nathan Brink (binki) - 16 years ago 2009-06-29 22:09:59
ohnobinki@ohnopublishing.net
fixed syntax errors by normaldotcom
1 file changed with 17 insertions and 17 deletions:
0 comments (0 inline, 0 general)
src/server/distrend.c
Show inline comments
 
/*
 
  Copyright 2008 Nathan Phillip Brink, Ethan Zonca
 

	
 
  This file is a part of DistRen.
 

	
 
  DistRen is free software: you can redistribute it and/or modify
 
  it under the terms of the GNU Affero General Public License as published by
 
  the Free Software Foundation, either version 3 of the License, or
 
  (at your option) any later version.
 

	
 
  DistRen is distributed in the hope that it will be useful,
 
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  GNU Affero General Public License for more details.
 

	
 
  You should have received a copy of the GNU Affero General Public License
 
  along with DistRen.  If not, see <http://www.gnu.org/licenses/>.
 

	
 
*/
 

	
 
#include <mysql.h>
 
#include <stdio.h>
 

	
 
 /* Just some notes -- Ethan Zonca
 
 * ++ Make data availible for other apps to parse
 
 * Server<==>Client Communication
 
 * Upload while rendering
 
 */
 

	
 
#define max 100
 
 // maximum number of stored jobs in memory, per job type (lux/blend). Eventually we can dump this data to disk, or atleast the remainder not in memory...
 
int jobnum = 0;
 

	
 
// Structures for storing job information
 
// tweak char lengths to save on mem?
 
typedef struct {
 
  char name[64];
 
  char submitter[64];
 
  char email[128];
 
struct {
 
  char *name;
 
  char *submitter;
 
  char *email;
 
  int priority;
 
  struct frameset **frameset; // array of frames as big as the total number of frames. Every value should be null/0 to start out with. Values can be changed to reflect frame render status.
 
} blendjob[max];
 

	
 
typedef struct {
 
  char name[64];
 
  char submitter[64];
 
  char email[128];
 
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.
 
  int spp;
 
  struct frameset ** frameset;
 
} luxjob[max];
 

	
 

	
 

	
 

	
 

	
 
int main(int argc, char *argv[])
 
{
 

	
 

	
 

	
 

	
 
// frame[frame] Assignments:
 
//  "0" - cancelled
 
//  "1" - unassigned
 
//  "2" - assigned to slave
 
//  "3" - completed by slave and uploaded
 
// 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.
 

	
 

	
 

	
 
// Queuer: this function should add files to the queue
 
// Type: 0 = blender, 1 = lux
 
// jobnum is the current job number
 
void queue(int type, char *name, char *submitter, char *email, int priority, int mode, int spp, int **frameset) {
 
void queue(int type, char *name, char *submitter, char *email, int priority, int mode, int spp, struct frameset **frameset) {
 

	
 
if(type == 1){
 
  blendjob[jobnum].name = name;
 
  blendjob[jobnum].submitter = submitter;
 
  blendjob[jobnum].email = email;
 
  blendjob[jobnum].priority = priority;
 
  blendjob[jobnum].frameset =  frameset[frames]; // pointer? will this work?
 
  blendjob[jobnum].frameset =  frameset;
 
}
 

	
 
if(type == 2){
 
  luxjob[jobnum].name = name;
 
  luxjob[jobnum].submitter = submitter;
 
  luxjob[jobnum].email = email;
 
  luxjob[jobnum].priority = priority;
 
  luxjob[jobnum].mode = mode;
 
  luxjob[jobnum].spp = spp;
 
  luxjob[jobnum].frameset = frameset[frames];
 
  luxjob[jobnum].frameset = frameset;
 
  // handle lux modes somehow.
 
}
 

	
 
else{
 
// Throw error.
 
}
 

	
 
jobnum++;
 
}
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 
///////////////////////// SLAVE ///////////////////////////////
 

	
 
// Slave listens on server for a command in the format of each function...
 
// We need if's for returns... ==> watchdog
 

	
 

	
 

	
 
// Executors
 

	
 
void exec_blender(char *input, char *output, int sframe, int eframe) {
 
  int ret;
 
  /* SEGFAULTAGE :-D */
 
  char *cmd[] = { "blender", "-b", "-o", output, input, "-s", sframe, "-e", eframe, (char *)0 };
 
  ret = execv ("/usr/bin/blender", cmd);
 
  ret = execv("/usr/bin/blender", cmd);
 
}
 

	
 
void exec_luxrender_single(char *input, char *output) {
 
  int ret;
 
  char *cmd[] = { "luxrender", "-something", "something", "something", (char *)0 };
 
  ret = execv {"/usr/bin/luxrender", cmd);
 
  ret = execv("/usr/bin/luxrender", cmd);
 
}
 

	
 
void exec_luxrender_anim(char *input, char *output, int sframe, int eframe, int spp) {
 
// spp is samples per pixel limitation on each frame
 
  int ret;
 
  char *cmd[] = { "luxrender", "-something", "something", "something", (char *)0 };
 
  ret = execv {"/usr/bin/luxrender", cmd);
 
  ret = execv ("/usr/bin/luxrender", cmd);
 
}
 

	
 
void exec_imagemagick {char *input, char *output, char *opts) {
 
 void exec_imagemagick (char *input, char *output, char *opts) {
 
  int ret;
 
  char *cmd[] = { "imagemagick", "-something", "something", "something", (char *)0 };
 
  ret = execv {"/usr/bin/imagemagick", cmd);
 
  ret = execv ("/usr/bin/imagemagick", cmd);
 
}
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 
  return 0;
 
}
0 comments (0 inline, 0 general)