//----------------------------------------------------------------------------- // ------------------------ // File ....: maxnet_file.h // ------------------------ // Author...: Gus J Grubba // Date ....: March 2000 // O.S. ....: Windows 2000 // // History .: March, 11 2000 - Created // // 3D Studio Max Network Rendering Classes - Argument Files // //----------------------------------------------------------------------------- #ifndef _MAXNET_FILE_H_ #define _MAXNET_FILE_H_ //----------------------------------------------------------------------------- //-- Network Rendering Configuration File // typedef struct tagGeneralSettings { short managerport; short serverport; DWORD maxblocksize; DWORD networkmask; } GeneralSettings; typedef struct tagClientSettings { int autoconnect; int includemaps; int ignorescene; int skipoutput; int useallsrvs; int alerts; int alert_failure; int alert_prgs; int alert_comp; int alert_nth; DWORD server_tabs; int use_vfb; } ClientSettings; typedef struct tagManagerSettings { int retryfailedservers; int retrycount; DWORD timebetweenretries; DWORD waitmaxtoload; DWORD waitmaxtounload; DWORD waitmaxtorender; DWORD servercooloff; int maxconcurrentassignments; DWORD clientnotifydelay; } ManagerSettings; typedef struct tagManagerApp { int init; int window_x; int window_y; int window_w; int window_h; } ManagerApp; typedef struct tagServerApp { int init; int window_x; int window_y; int window_w; int window_h; } ServerApp; typedef struct tagQueueManager { int init; int window_x; int window_y; int window_w; int window_h; int main_splitter_row; int job_splitter_col; int autoconnect; int autorefresh; DWORD server_tabs; } QueueManager; typedef struct tagServerSettings { TCHAR managername[MAX_PATH]; int autosearch; DWORD waitmaxtoload; DWORD waitmaxtounload; DWORD waitmaxtorender; } ServerSettings; typedef struct tagLogSettings { int maxscreenlines; int logerror_screen; int logwarning_screen; int loginfo_screen; int logdebug_screen; int logdebugex_screen; int logerror_file; int logwarning_file; int loginfo_file; int logdebug_file; int logdebugex_file; } LogSettings; typedef struct tagTimeSettings { int acktimeout; int ackretries; int fastacktimeout; } TimeSettings; //----------------------------------------------------------------------------- //-- Sections // #ifdef _MXNTF_DEFINE_ #define MXNTF_SERVERINFO "ServerInfo" #define MXNTF_VERSION "Version" #define MXNTF_SRV_PID "ServerPID" #define MXNTF_SRV_TOTAL_FRAMES "TotalFrames" #define MXNTF_SRV_TOTAL_TIME "TotalTime" #define MXNTF_SRV_INDEX "Index" #define MXNTF_CONFIG_BLOCK "Configuration" #define MXNTF_TOTAL_MEMORY "TotalMemory" #define MXNTF_TOTAL_CPU "NumberCpus" #define MXNTF_OS_MAJOR "OSMajor" #define MXNTF_OS_MINOR "OSMinor" #define MXNTF_OS_BUILD "OSBuild" #define MXNTF_OS_PLATFORM_ID "OSPlatformID" #define MXNTF_OS_CSDV "OSCSDV" #define MXNTF_TEMP_DIR "TempDir" #define MXNTF_WORK_DISK "WorkDisk" #define MXNTF_AVAILABLE_DISKS "AvailableDisks" #define MXNTF_DISK_SPACE "DiskSpace" #define MXNTF_MAC "MAC" #define MXNTF_NETSTATUS "NetworkStatus" #define MXNTF_DROPPED_PACKETS "DroppedPackets" #define MXNTF_BAD_PACKETS "BadPackets" #define MXNTF_TCP_REQUESTS "TCPRequests" #define MXNTF_UDP_REQUESTS "UDPRequests" #define MXNTF_BOOT_TIME "BootTime" #define MXNTF_JOB "Job" #define MXNTF_FLAGS "Flags" #define MXNTF_HJOB "HJOB" #define MXNTF_JOB_NAME "JobName" #define MXNTF_JOB_FIRST_FRAME "FirstFrame" #define MXNTF_JOB_LAST_FRAME "LastFrame" #define MXNTF_STEP "Step" #define MXNTF_JOB_SUBMISSION "Submission" #define MXNTF_JOB_START "Start" #define MXNTF_JOB_END "End" #define MXNTF_JOB_FRAMES_COMPLETE "FramesComplete" #define MXNTF_JOB_SERVER_COUNT "ServerCount" #define MXNTF_JOB_PRIORITY "JobPriority" #define MXNTF_JOB_ARCHSIZE "ArchivedSize" #define MXNTF_JOB_UNARCHSIZE "UnarchivedSize" #define MXNTF_ALERTS "Alerts" #define MXNTF_NOTIFICATIONS "Notifications" #define MXNTF_ENABLED "Enabled" #define MXNTF_USER_NAME "UserName" #define MXNTF_COMPUTER_NAME "ComputerName" #define MXNTF_JOB_TEXT "JobText" #define MXNTF_COUNT "Count" #define MXNTF_JOB_TEXTITEM "JobTextItem" #define MXNTF_JOB_TEXT_TEXT "JobTextText" #define MXNTF_JOB_TEXT_OUTPUT "JobTextOutput" #define MXNTF_JOB_TEXT_OUTPUT_FILE "JobTextOutputData" #define MXNTF_R_ELEMENT "RenderElement" #define MXNTF_RE_ENABLED "RenderElementEnabled" #define MXNTF_RE_ACTIVE "RenderElementsActive" #define MXNTF_RE_FLT_ENABLED "RenderElementFilterEnabled" #define MXNTF_RE_ATM_ENABLED "RenderElementAtmEnabled" #define MXNTF_RE_SHD_ENABLED "RenderElementShadowEnabled" #define MXNTF_RE_NAME "RenderElementName" #define MXNTF_RE_OUTPUT "RenderElementOutput" #define MXNTF_JOB_FRAMES "JobFrames" #define MXNTF_JOB_FRAME_NO "Frame" #define MXNTF_JOB_SERVERS "JobServers" #define MXNTF_JOB_SERVER_NO "Server" #define MXNTF_WIDTH "Width" #define MXNTF_HEIGHT "Height" #define MXNTF_PIXELASPECT "PixelAspect" #define MXNTF_INIT "Init" #define MXNTF_GAMMACORRECTION "UseGammaCorrection" #define MXNTF_INPUTGAMMA "InputGamma" #define MXNTF_OUTPUTGAMMA "OutputGamma" #define MXNTF_CAMERA "Camera" #define MXNTF_SCENE_INFO "SceneInfo" #define MXNTF_NO_OBJECTS "NumberOfObjects" #define MXNTF_NO_FACES "NumberOfFaces" #define MXNTF_NO_LIGHTS "NumberOfLights" #define MXNTF_SCENE_FLAGS "SceneFlags" #define MXNTF_SCENE_START "SceneStart" #define MXNTF_SCENE_END "SceneEnd" #define MXNTF_JOB_STATE "JobState" #define MXNTF_NO_JOBS "NumberOfJobs" #define MXNTF_JOB_STATE_N "Job" #define MXNTF_INI_GENERAL "General" #define MXNTF_INI_MGRPORT "ManagerPort" #define MXNTF_INI_SRVPORT "ServerPort" #define MXNTF_INI_MAXBLOCK "MaxBlockSize" #define MXNTF_INI_NETMASK "NetworkMask" #define MXNTF_INI_MANAGER "Manager" #define MXNTF_INI_QM "QueueManager" #define MXNTF_INI_MGRAPP "ManagerApp" #define MXNTF_INI_SRVAPP "ServerApp" #define MXNTF_INI_INIT "Init" #define MXNTF_INI_WX "WindowX" #define MXNTF_INI_WY "WindowY" #define MXNTF_INI_WW "WindowW" #define MXNTF_INI_WH "WindowH" #define MXNTF_INI_SR "SplitterRoll" #define MXNTF_INI_SC "SplitterColumn" #define MXNTF_INI_CLI_VFB "UseVFB" #define MXNTF_INI_SRV_TABS "ServerTabs" #define MXNTF_INI_AUTO_CONN "AutoConnect" #define MXNTF_INI_AUTO_REFRESH "AutoRefresh" #define MXNTF_INI_RETRYFSERVERS "RetryFailedServers" #define MXNTF_INI_SRVCOOLOFF "ServerCoolOffTime" #define MXNTF_INI_CLIENTNOTIFYDELAY "ClientNotificationDelay" #define MXNTF_INI_RETRYCOUNT "RetryCount" #define MXNTF_INI_TIMEBRETRY "TimeBetweenRetries" #define MXNTF_INI_MAXLOADTIME "MAXLoadTimeout" #define MXNTF_INI_MAXRENDERTIME "MAXRenderTimeout" #define MXNTF_INI_MAXUNLOADTIME "MAXUnloadTimeout" #define MXNTF_INI_MAXCONCASSIGN "MaxConcurrentAssignments" #define MXNTF_INI_TIME "Timers" #define MXNTF_INI_ACKTIMEOUT "AckTimeout" #define MXNTF_INI_ACKRETRY "AckRetries" #define MXNTF_INI_FASTACKTIMEOUT "FastAckTimeout" #define MXNTF_INI_LOG "Log" #define MXNTF_INI_MAXSCRRENLN "MaxLogScreenLines" #define MXNTF_INI_ERRORSCREEN "LogErrorsToScreen" #define MXNTF_INI_WARNSCREEN "LogWarningsToScreen" #define MXNTF_INI_INFOSCREEN "LogInfoToScreen" #define MXNTF_INI_DEBUGSCREEN "LogDebugToScreen" #define MXNTF_INI_DEBUGEXSCREEN "LogDebugExToScreen" #define MXNTF_INI_ERRORFILE "LogErrorsToFile" #define MXNTF_INI_WARNFILE "LogWarningsToFile" #define MXNTF_INI_INFOFILE "LogInfoToFile" #define MXNTF_INI_DEBUGFILE "LogDebugToFile" #define MXNTF_INI_DEBUGEXFILE "LogDebugExToFile" #define MXNTF_INI_SERVER "Server" #define MXNTF_INI_AUTOSEARCH "AutoSearchManager" #define MXNTF_INI_MGRNAME "ManagerName" #define MXNTF_WEEK_SCHEDULE "WeekSchedule" #define MXNTF_ATT_PRIORITY "AttendedPriority" #define MXNTF_UTT_PRIORITY "UnattendedPriority" #define MXNTF_WEEK_DAY "Day" #define MXNTF_INI_CLIENT "ClientSettings" #define MXNTF_INI_ALERT_COMPLETION "AlertCompletion" #define MXNTF_INI_ALERT_FAILURE "AlertFailure" #define MXNTF_INI_ALERT_NTH "AlertEveryNth" #define MXNTF_INI_ALERT_PROGRESS "AlertProgress" #define MXNTF_INI_ALERTS "Alerts" #define MXNTF_INI_AUTOCONNECT "AutoConnect" #define MXNTF_INI_IGNORESCENE "IgnoreScenePath" #define MXNTF_INI_INCLUDEMAPS "IncludeMaps" #define MXNTF_INI_SKIPOUTPUT "SkipOutputTest" #define MXNTF_INI_USEALLSERVERS "UseAllServers" #endif //--------------------------------------------------------- //-- Messages from MAX to Server #define FROMMAX_READY "ready" #define FROMMAX_FRAME_COMPLETE "complete" #define FROMMAX_FRAME_ERROR "error" #define FROMMAX_BUSY "busy" #define FROMMAX_GOING_DOWN "end" //--------------------------------------------------------- //-- Messages from Server to Max #define FROMSRV_NEWFRAME "frame" #define FROMSRV_CANCEL "cancel" //----------------------------------------------------------------------------- //-- File Class // class MAXNETEXPORT MaxNetFile { protected: TCHAR line[1024]; FILE* f; bool read; public: MaxNetFile ( ); virtual ~MaxNetFile ( ); virtual bool OpenRead (const TCHAR* name); virtual bool OpenWrite (const TCHAR* name); virtual void Close ( ); //-- Optional (Destructor calls it) void Reset ( ); //-- fseek 0 seek_set TCHAR* FirstBlank (TCHAR* line); TCHAR* FirstNonblank (TCHAR* line); TCHAR* NextValue (TCHAR* ln); bool LocateSection (TCHAR* section); TCHAR* LocateValue (TCHAR* section, TCHAR* var, bool rescan = true); TCHAR* GetLine (TCHAR* destination = 0 ); bool ReadFilename (TCHAR* ptr, TCHAR* filename); bool Write (TCHAR* line); bool WriteHeader (TCHAR* hdr); bool WritePair (TCHAR* var, float value); bool WritePair (TCHAR* var, int value); bool WritePair (TCHAR* var, bool value); bool WritePair (TCHAR* var, short value); bool WritePair (TCHAR* var, DWORD value); bool WritePair (TCHAR* var, TCHAR* value); bool WritePair (TCHAR* var, SYSTEMTIME* value); bool WritePairHex (TCHAR* var, DWORD value); bool ReadPair (TCHAR* section, TCHAR* var, float* value); bool ReadPair (TCHAR* section, TCHAR* var, int* value); bool ReadPair (TCHAR* section, TCHAR* var, bool* value); bool ReadPair (TCHAR* section, TCHAR* var, short* value); bool ReadPair (TCHAR* section, TCHAR* var, DWORD* value); bool ReadPair (TCHAR* section, TCHAR* var, TCHAR* value); bool ReadPair (TCHAR* section, TCHAR* var, SYSTEMTIME* value); bool ReadPairHex (TCHAR* section, TCHAR* var, DWORD* value); }; //----------------------------------------------------------------------------- //-- Network Engine Config // class MAXNETEXPORT MaxNetEngine : public MaxNetFile { public: bool WriteNetStatus (NetworkStatus* status); bool WriteCfg (ConfigurationBlock *cfg); bool WriteAlertData (AlertData *alerts); bool WriteJobText (CJobText& jobText); bool WriteSceneInfo (SceneInfo* info); bool WriteWeekSchedule (WeekSchedule* ws); bool ReadNetStatus (NetworkStatus* status); bool ReadCfg (ConfigurationBlock *cfg); bool ReadAlertData (AlertData *alerts); int ReadJobTextCount ( ); bool ReadJobText (CJobText& jobText); bool ReadSceneInfo (SceneInfo* info); bool ReadWeekSchedule (WeekSchedule* ws); }; //----------------------------------------------------------------------------- //-- Network Server Registration Data // class MAXNETEXPORT MaxNetServerReg : public MaxNetEngine { public: bool WriteSrvInfo (ServerInfo *info); bool ReadSrvInfo (ServerInfo* info); }; //----------------------------------------------------------------------------- //-- Network Job // class MAXNETEXPORT MaxNetJob : public MaxNetEngine { public: bool WriteJob (Job* job, CJobText& jobText); bool ReadJob (Job* job, CJobText& jobText); bool WriteServers (int count, const JobServer* servers); bool ReadServers (int count, JobServer* servers); bool WriteFrames (int count, const JOBFRAMES* frames); bool ReadFrames (int count, JOBFRAMES* frames); }; //----------------------------------------------------------------------------- //-- Message File From Max to Server // typedef enum max_msg{ MAX_MESSAGE_NOTHING=0, MAX_MESSAGE_READY, MAX_MESSAGE_BUSY, MAX_MESSAGE_FRAME_COMPLETE, MAX_MESSAGE_FRAME_ERROR, MAX_MESSAGE_GOING_DOWN }; class MAXNETEXPORT MsgFromMax : public MaxNetFile { public: //-- Server uses this to peek/read messages max_msg Message (TCHAR* file, TCHAR* err = 0); //-- MAX uses this to write out messages void WriteMessage (max_msg message, TCHAR* err = 0); }; //----------------------------------------------------------------------------- //-- Message File From Server to Max // typedef enum srv_msg{ SRV_MESSAGE_NOTHING=0, SRV_MESSAGE_NEWFRAME, SRV_MESSAGE_CANCEL }; class MAXNETEXPORT MsgFromSrv : public MaxNetFile { public: //-- MAX uses this to peek/read messages srv_msg Message (TCHAR* file, int* arg); //-- Server uses this to write out messages void WriteMessage (srv_msg message, int arg = 0); }; //----------------------------------------------------------------------------- //-- 3DS MAX Configuration File // class MAXNETEXPORT MaxNetIni : public MaxNetFile { protected: ManagerApp default_mgrapp; ServerApp default_srvapp; GeneralSettings default_general; ManagerSettings default_manager; ServerSettings default_server; LogSettings default_log; TimeSettings default_time; QueueManager default_queuemanager; ClientSettings default_client; bool have_mgrapp; bool have_srvapp; bool have_general; bool have_manager; bool have_server; bool have_log; bool have_time; bool have_queuemanager; bool have_client; void InitMgrApp (ManagerApp* ma); void InitSrvApp (ServerApp* sa); void InitGeneral (GeneralSettings* gn); void InitManager (ManagerSettings* mg); void InitServer (ServerSettings* sv); void InitLog (LogSettings* lg); void InitTime (TimeSettings* tm); void InitQueueManager(QueueManager* qm); void InitClient (ClientSettings *cl); public: ~MaxNetIni ( ); void Close ( ); bool OpenWrite (const TCHAR* name); bool OpenRead (const TCHAR* name); bool WriteQM (QueueManager* ma); bool WriteMgrApp (ManagerApp* ma); bool WriteSrvApp (ServerApp* sa); bool WriteGeneral (GeneralSettings* gn); bool WriteManager (ManagerSettings* mg); bool WriteServer (ServerSettings* sv); bool WriteLog (LogSettings* lg); bool WriteTime (TimeSettings* tm); bool WriteClient (ClientSettings* cl); bool ReadQM (QueueManager* ma); bool ReadMgrApp (ManagerApp* ma); bool ReadSrvApp (ServerApp* sa); bool ReadGeneral (GeneralSettings* gn); bool ReadManager (ManagerSettings* mg); bool ReadServer (ServerSettings* sv); bool ReadLog (LogSettings* lg); bool ReadTime (TimeSettings* tm); bool ReadClient (ClientSettings* cl); }; #endif //-- EOF: maxnet_file.h -------------------------------------------------------