diff --git a/src/common/protocol.h b/src/common/protocol.h --- a/src/common/protocol.h +++ b/src/common/protocol.h @@ -63,9 +63,20 @@ enum distren_request_type server->server */ DISTREN_REQUEST_RENDERFRAME = 8, - DISTREN_REQUEST_DONEFRAME = 9, + DISTREN_REQUEST_DONEFRAME = 9, /* server should check to make sure the +slave is repoting on a frame it's actually assigned to */ DISTREN_REQUEST_PROGRESS = 10, /*< tells another server of the progress of the first server's work at rendering */ DISTREN_REQUEST_GETWORK = 11, + DISTREN_REQUEST_GETVERSION = 12, /* returns version of software that slave +should be running */ + DISTREN_REQUEST_GETRENDERPOWER = 13, /* returns the render power of a +slave */ + DISTREN_REQUEST_SETRENDERPOWER = 14, /* sets renderpower in server +database */ + DISTREN_REQUEST_RESETFRAME = 15, /* sets a frame back to unassigned, +happens if the slave quits for some reason. server code should only allow +resetting of a frame assigned to the slave calling the request (see php +code)*/ }; diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -863,9 +863,66 @@ int slaveBenchmark(char *datadir, int *b float tmp = *benchmarkTime; tmp = (1/tmp) * 50000; *renderPower = (int)tmp; - free(realOutput); + +free(realOutput); free(frame_str); free(input); free(output); return ret; } + +/* Port of web functions for standard code + + Currently, most functions are stubs due to lack + of socket reading code */ + +void finishframe(struct remotio *rem, int jobnum, int framenum){ + char* data; + _distren_asprintf(&data, "%d%d", jobnum, framenum); + sendExtSignal(rem, DISTREN_REQUEST_DONEFRAME, data); +} + +void resetframe(struct remotio *rem, int jobnum, int framenum){ + fprintf(stderr,"Resetting frame %d in job %d on server... ",framenum,jobnum); + char* data; + _distren_asprintf(&data, "%d%d", jobnum, framenum); + sendExtSignal(rem, DISTREN_REQUEST_RESETFRAME, data); + +} + +void startframe(struct remotio *rem, int jobnum, int framenum){ + if(DEBUG) + fprintf(stderr,"Marking frame %d started on server... ",framenum); + char* data; + _distren_asprintf(&data, "%d%d", jobnum, framenum); + sendExtSignal(rem, DISTREN_REQUEST_RENDERFRAME, data); + +} + +int getwork(struct remotio *rem, int *jobnum, int *framenum){ + char* data; + _distren_asprintf(&data, "%d%d", jobnum, framenum); + sendExtSignal(rem, DISTREN_REQUEST_GETWORK, data) +} + +void setrenderpower(struct remotio *rem, int renderpower){ + fprintf(stderr,"Setting render power on server... "); + char* data; + _distren_asprintf(&data, "%d", renderpower); + sendExtSignal(rem, DISTREN_REQEST_SETRENDERPOWER, data); +} + + +int getrenderpower(struct remotio *rem){ + sendSignal(rem, DISTREN_REQUEST_GETRENDERPOWER); + return 0; +} + +int checkslaveversion(struct remotio *rem){ + sendSignal(rem, DISTREN_REQUEST_GETVERSION); + int server_version = 9000; + + if(PACKAGE_VERSION != server_version) + return 1; + else + return 0; diff --git a/src/server/slavefuncs.h b/src/server/slavefuncs.h --- a/src/server/slavefuncs.h +++ b/src/server/slavefuncs.h @@ -66,4 +66,13 @@ int _web_getwork(int slavekey, char *sla void _web_setrenderpower(int slavekey, char *slavepass, int renderpower); int slaveBenchmark(char *datadir, int *benchmarkTime, int *renderPower); +/* Standard slave */ +void finishframe(struct remotio *rem, int jobnum, int framenum); +void resetframe(struct remotio *rem, int jobnum, int framenum); +void startframe(struct remotio *rem, int jobnum, int framenum); +int getwork(struct remotio *rem, int *jobnum, int *framenum); +void setrenderpower(struct remotio *rem, int renderpower); +int getrenderpower(struct remotio *rem); +int checkslaveversion(struct remotio *rem); + #endif