Changeset - 0b48f673ed7f
[Not reviewed]
default
0 2 0
ethanzonca - 16 years ago 2009-07-25 00:02:46

Migrate main()
2 files changed with 33 insertions and 48 deletions:
0 comments (0 inline, 0 general)
src/server/slave.c
Show inline comments
 
@@ -20,16 +20,48 @@
 

	
 
/*
 
 * **********************************************************************************
 
 * Slave functions / etc resides below. Wouldn't a seperate file make this easier??
 
 *
 
 * Slave listens on server for a command in the format of each function...
 
 * We need if's for returns... ==> watchdog
 
 * **********************************************************************************
 
*/
 

	
 
int main(int argc, char *arvg[])
 
{
 
  fprintf(stderr, "stub\n");
 

	
 
	///////////////////// Semi-pseudo Slave Code ///////////////////////////
 

	
 
	int slavestatus = 0;
 

	
 
	if(no username in config file, no key present){
 
		fprintf(stderr "run distrend -c username] [emailaddr] to register")
 
	}
 
	if(they use a -c flag according to getopt, with 2 args){
 
		register_user(username, email); which returns a uniquely random url to a key
 
		get(uniquely-random-url-to-key);
 
		fprintf(stderr, "you registered, hopefully successfully. Invoke distrend with no args now.");
 
	}
 
	if(username is in conf file and key is present){
 
		loginuser(username);
 
	}
 

	
 
	if(slave recieves "start frame#, job#"){
 
		get(http://distren.protofusion.org/srv/job#.tgz);
 
		tar -xvf job#.tgz /tmp/distren/job#; somehow
 
		exec_blender(job#.blend, job#.frame#.JPG, job#); (check the args, we'll need to adjust for different output formats)... set SLAVESTATUS=1 while rendering, SLAVESTATUS=2 when done
 
	}
 
	if(SLAVESTATUS==2){
 
		tell the server "done with frame# in job#";
 
		SLAVESTATUS=0
 
	}
 
	if(SLAVESTATUS==0){
 
		tell the server "i ain't got no frames to render";
 
	}
 
	while(SLAVESTATUS==1){
 
		tell the server "rendering this friggn frame";
 
		delay(1000);
 
	}
 
  
 
  return 0;
 
}
src/server/slavefuncs.c
Show inline comments
 
@@ -10,76 +10,29 @@
 

	
 
  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/>.
 
*/
 

	
 
/*
 
 * **********************************************************************************
 
 * Slave functions / etc resides below. Wouldn't a seperate file make this easier??
 
 *
 
 * Slave listens on server for a command in the format of each function...
 
 * We need if's for returns... ==> watchdog
 
 * **********************************************************************************
 
*/
 

	
 

	
 
///////////////////// Semi-pseudo Slave Code ///////////////////////////
 

	
 
int slavestatus = 0;
 

	
 
if(no username in config file, no key present){
 
	fprintf(stderr "run distrend -c username] [emailaddr] to register")
 
}
 
if(they use a -c flag according to getopt, with 2 args){
 
	register_user(username, email); which returns a uniquely random url to a key
 
	get(uniquely-random-url-to-key);
 
	fprintf(stderr, "you registered, hopefully successfully. Invoke distrend with no args now.");
 
}
 
if(username is in conf file and key is present){
 
	loginuser(username);
 
}
 

	
 
if(slave recieves "start frame#, job#"){
 
	get(http://distren.protofusion.org/srv/job#.tgz);
 
	tar -xvf job#.tgz /tmp/distren/job#; somehow
 
	exec_blender(job#.blend, job#.frame#.JPG, job#); (check the args, we'll need to adjust for different output formats)... set SLAVESTATUS=1 while rendering, SLAVESTATUS=2 when done
 
}
 
if(SLAVESTATUS==2){
 
	tell the server "done with frame# in job#";
 
	SLAVESTATUS=0
 
}
 
if(SLAVESTATUS==0){
 
	tell the server "i ain't got no frames to render";
 
}
 
while(SLAVESTATUS==1){
 
	tell the server "rendering this friggn frame";
 
	delay(1000);
 
}
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 

	
 
// Registration on server. Needs attention. Prevent account spamming.
 
// Key transfer?
 
// Set up something like: distrend -c username email@example.com
 
void registeruser(char *username, char *email){
 
  // Logs into sandboxed user on zserver2 and registers a user. Should eventually generate a key on the server and return it to the user.
 
  // All created user accounts should be sandboxed accordingly, requiring a different skel, and the default shell to be rbash. Also,
 
  // a custom path defined in the .bash_profile of the skel is needed.
 
  char buf[10];
 
  struct execio *testrem;
 
  char *execargv[] =
 
    {
 
  "ssh",
0 comments (0 inline, 0 general)