📄 finalrole.h
字号:
#pragma once
#include "../Strategy/Defs.h"
const unsigned long ROUND_OUT = 16; // 子进程超时限制
enum
{
ROLE_STATE_NULL, // 尚未加载子程序
ROLE_STATE_READY, // 初始化成功,等待 start
ROLE_STATE_RUNNING, // 子程序运行中
ROLE_STATE_FINISHED, // 子程序执行完毕,等待 setState
ROLE_STATE_COMPLETED, // 子程序已完成任务
ROLE_STATE_FAILED, // 子程序未能完成任务
ROLE_STATE_BAD // 子程序故障
};
typedef void (*DEBUGFUNCTION)(char *message);
class FinalRole
{
public:
FinalRole(DEBUGFUNCTION debugFunction);
virtual ~FinalRole(void);
int init(wchar_t *fileName);
int pause(void); // 挂起子程序
int resume(void); // 恢复子程序
void unInit(void);
int start(void); // 向子程序发送 startSignal
int getAction(unsigned char &action); // 取得子程序的决策
int feedback(bool isQueenHere, unsigned char x0, unsigned char y0, unsigned char direction0,
unsigned char x1, unsigned char y1, unsigned char direction1); // 向子程序发送反馈信息
int setState(bool isCompleted); // 当接收到 Finish Signal 或出边界时调用,判断任务完成情况并终结子进程
unsigned char getState(void);
protected:
void release(void);
static DWORD WINAPI ThreadProc(LPVOID lParam);
protected:
HANDLE mhStdinRd, mhStdinWr, mhStdoutWr, mhStdoutRd;
HANDLE mhProcess, mhThread, mhThreadProc;
unsigned char mState;
unsigned char mAction;
unsigned char mRoundOut;
DEBUGFUNCTION mDebugFunction;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -