#pragma once #include "../stdafx.h" #include #include "JobFileProcessor.h" #include "H3DFileProcessor.h" class JobController { public: enum LoadProgressInfoFlag { AnalyzingJobData = 0, CkeckingJobData, }; JobController(); ~JobController(); static void SInit() { InitializeCriticalSection(&m_LoadInfoCS); } static void SUninit() { DeleteCriticalSection(&m_LoadInfoCS); } bool LoadJob(string filepath); void StartLoadPrepareJob(); void RemoveJob(string job_title); void RemoveAllJob(); FileProcessor* GetJob(void) { return m_CurrentJob; } FileProcessor* GetUnFinishedJob(); float GetLoadProgress(); string GetLoadInfo(); bool IsLoadFinished(); void StartSavePrepareJob(); bool IsSavingPrepareJob(); static void SetLoadProgress(float fvalue) { EnterCriticalSection(&m_LoadInfoCS); m_LoadProgress = fvalue; LeaveCriticalSection(&m_LoadInfoCS); } bool CheckDiskSpace(); private: static DWORD WINAPI LoadProc(JobController* _this); static DWORD WINAPI LoadPrepareJobProc(JobController* _this); static DWORD WINAPI SavePrepareJobProc(JobController* _this); void LoadRun(); public: static const int JOB_SUCCESS = 0; static const int JOB_ERROR_HAD_LOAD = -0x1000; static const int JOB_ERROR_PROCESS_FILE = -0x10001; CRITICAL_SECTION m_cs; FileProcessor* m_PrepareJob; CRITICAL_SECTION m_PreJobCS; static LoadProgressInfoFlag m_LoadProgressInfoFlag; private: FileProcessor* m_CurrentJob; FileProcessor* m_TempJob; bool m_LoadFlag; HANDLE m_LoadThead; string m_FilePath; HANDLE m_SavePreJobThread; //map m_LoadProgressInfoMap; static CRITICAL_SECTION m_LoadInfoCS; static float m_LoadProgress; RunCfg* m_RunCfg; //float m_ProgressValue; };