#pragma once #include "../stdafx.h" #include #include "JobFileProcessor.h" #include "H3DFileProcessor.h" enum JobControllerFunc { LOADJOB = 0, REMOVEALLJOB, GETLOADPROGRESS, GETLOADINFO, ISLOADFINISHED, }; 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); } 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; //float m_ProgressValue; };