2024-07-04 15:22:11 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
#include "../stdafx.h"
|
|
|
|
|
#include <list>
|
|
|
|
|
#include "JobFileProcessor.h"
|
|
|
|
|
#include "H3DFileProcessor.h"
|
|
|
|
|
|
|
|
|
|
enum JCONTROLLERFUNC {
|
|
|
|
|
LOADJOB = 0,
|
|
|
|
|
REMOVEALLJOB,
|
|
|
|
|
GENERALINFO, //h3d文件部分
|
|
|
|
|
MACHINETYPE, //h3d文件部分 machinetype
|
|
|
|
|
PARTINFO, //h3d文件部分
|
|
|
|
|
LAYERS, //h3d文件部分
|
|
|
|
|
CURRLAYERINFO, //h3d文件部分 current layer
|
|
|
|
|
PREVLAYERINFO, //h3d文件部分 preview layer
|
|
|
|
|
RECALCEVATIME, //重新计算估算时间
|
|
|
|
|
UPDATEPARAMETERSET, //更新ParameterSet
|
|
|
|
|
ERRORINFO, //校验错误信息
|
|
|
|
|
JOBPARAM, //job参数
|
|
|
|
|
UPDATEPARAM, //更新参数
|
|
|
|
|
ONELAYERDATA, //请求一层的数据
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SendToClients();
|
|
|
|
|
void CallFuncs(const ReadData& rd, const list<Item>& lst = list<Item>(), ::stream::ResponseAny** response = nullptr);
|
|
|
|
|
private:
|
|
|
|
|
static DWORD WINAPI LoadProc(JobController* _this);
|
|
|
|
|
static DWORD WINAPI LoadPrepareJobProc(JobController* _this);
|
|
|
|
|
static DWORD WINAPI SavePrepareJobProc(JobController* _this);
|
|
|
|
|
void LoadRun();
|
|
|
|
|
|
|
|
|
|
void LoadJob(const list<Item>& lst, ::stream::ResponseAny** response);
|
|
|
|
|
|
|
|
|
|
void GeneralInfoReq(::stream::ResponseAny** response);
|
|
|
|
|
void PartInfoReq(::stream::ResponseAny** response);
|
|
|
|
|
void LayersReq(::stream::ResponseAny** response);
|
|
|
|
|
void LayerInfoReq(JCONTROLLERFUNC type, ::stream::ResponseAny** response);
|
|
|
|
|
void MachineTypeReq(::stream::ResponseAny** response);
|
|
|
|
|
//void PrevLayerInfoReq(::stream::ResponseAny** response);
|
|
|
|
|
void JobParamReq(::stream::ResponseAny** response);
|
|
|
|
|
void UpdateParam(const ReadData& rd, const list<Item>& lst);
|
|
|
|
|
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;
|
|
|
|
|
//float m_ProgressValue;
|
|
|
|
|
};
|
|
|
|
|
|