47 lines
1.2 KiB
C++

#pragma once
/*
* @brief 顺控节点异常恢复流程
* @author sjq
* @date 五月 2018
*/
#include "CMethodSeq.h"
#include "CRecoverNode.h"
class CNodeSeq;
class CRecoverNode;
class CMethodRecoverSeq : public CMethodSeq
{
public:
CMethodRecoverSeq(CNodeSeq& seq, const CRecoverNodeSeq& recover);
~CMethodRecoverSeq();
bool execute();
protected:
bool executeChilds();//执行所有功能
//开始执行所有的功能, 返回串行功能的执行结果
ESeqCtrl_NodeState startExecuteChilds(
std::vector<CMethodFuncAsync* >& vec);
//开始处理并行节点的 结果
ESeqCtrl_NodeState startAsyncExecuteChilds(
std::vector<CMethodFuncAsync* >& vec);
private:
void recoverCurState();
ESeqCtrl_NodeState recoverFuncNode(
const CRecoverNode& funRecover,
CNodeFunc& func,
std::vector<CMethodFuncAsync* >& vec);
ESeqCtrl_NodeState recoverOneSysncFunc(
const CRecoverNode& funRecover,
CNodeFunc& func);
ESeqCtrl_NodeState recoverOneAsysncFunc(
const CRecoverNode& funRecover,
CNodeFunc& func,
std::vector<CMethodFuncAsync* >& vec);
private:
CRecoverNodeSeq m_objRecover;
};