Files @ d6e050f635ca
Branch filter:

Location: DistRen/src/server/distrend.c

ethanzonca@localhost.localdomain
Removed non-uploader stuff from client.c, added some master/slave blender code that needs to be fleshed out alot, along with some mysql stuff that should be moved to common eventually.
/*
  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
 *
 * So I read the IRC transcript, and we need some communication and plugin (e.g., blender, povray) standards.
 * In addition to those standards, we should also have standards for information availability,
 * making statistics and remote control of each plugin or the whole system standard and common,
 * so other apps can grab stats from it (such as a j2me phone DistRen status app or a php web
 * interface).
 *
 *
 *
 * Notes from IRCness:
 * Server<==>Client Communication
 * Job initiation:  	<jobnumber> <jobtype={blender,povray,indigo,etc}> <filename> <args specific to the jobtype>
 * Job addition : 		<jobnumber> <alteration: could be (cancel):cancel job (frames):tell the client to render more 
frames>
 * Client Control: 		system <command> (such as drop all jobs, shutdown client, etc)
 *
 *  blender_getframecount()
 *  indigo_getframecount() always return 1... or just not bother with it?
 *
 *	Upload while rendering
 *
 *
 */


// mySql configuration vars
static char *opt_host_name = "localhost";  // Server Hostname
static char *opt_user_name = "distren";    // Username
static char *opt_password = "008987";      // Password
static unsigned int opt_port_num = 0;      // Port (or builtin if 0)
static char *opt_socket_name = NULL;       // Socket Name (or builtin if null)
static char *opt_db_name = "distrend";     // Database name
static unsigned int opt_flags = 0;         // Connection flags, what are these for?
static MYSQL *conn;                        // Pointer to the connection handler



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


// It's a happy fun mySQL party! This just test-connects to the server and does absolutely nothing else. Hopefully.

	/* initialize connection handler */
	conn = mysql_init (NULL);
	if (conn == NULL)
	{
	    fprintf (stderr, "mysql_init() failed (probably out of memory)\n");
	    return 1;
	}
	/* connect to server */
	if (mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,
	        opt_db_name, opt_port_num, opt_socket_name, opt_flags) == NULL)
	{
	    fprintf (stderr, "mysql_real_connect() failed\n");
	    mysql_close (conn);
	    return 1;
	}
	/* disconnect from server */
	mysql_close (conn);


  return 0;
}



/* Blender Rendering Code:

/////////////////////// MASTER ///////////////////////////////

// MySQL Setup Code (put in common maybe)
#include <mysql.h>
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
//
  char *server = "localhost";  // change if/when we do the multiserver setup... then distributed mysql with ssl? haha
  char *user = "mysql";
  char *password = "mysql";    // heh
  char *database = "distrend"; // check... I think this exists already on my server(s)
//
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); return (0); }




// Queuer
void queue(char *filename, int priority, char name, char submitter, char contact) {
 
// Todo... store frame status in mysql tables, along with table with list of jobs/submitters/contact info/whatever else we want

}



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


// Execution Function
void blendrend(char *input, char *output, int sframe, int eframe) {
  int ret;
  char *cmd[] = { "blender", "-b", "-o", output, input, "-s", sframe, "-e", eframe, (char *)0 };
  ret = execv ("/usr/bin/blender", cmd);
  // fprintf(stderr, "blender -b -o %s %s -s %d -e %d \n",output,input,sframe,eframe); 
}
blendrend(input,output,100, 206); // arbitrary example referencing the function





 */