GrpcPrint/PrintS/job/JobController.h
2024-03-26 10:33:00 +08:00

80 lines
1.7 KiB
C++

#pragma once
#include "../stdafx.h"
#include <list>
#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<LoadProgressInfoFlag, TrText*> m_LoadProgressInfoMap;
static CRITICAL_SECTION m_LoadInfoCS;
static float m_LoadProgress;
RunCfg* m_RunCfg;
//float m_ProgressValue;
};