#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& vec); //开始处理并行节点的 结果 ESeqCtrl_NodeState startAsyncExecuteChilds( std::vector& vec); private: void recoverCurState(); ESeqCtrl_NodeState recoverFuncNode( const CRecoverNode& funRecover, CNodeFunc& func, std::vector& vec); ESeqCtrl_NodeState recoverOneSysncFunc( const CRecoverNode& funRecover, CNodeFunc& func); ESeqCtrl_NodeState recoverOneAsysncFunc( const CRecoverNode& funRecover, CNodeFunc& func, std::vector& vec); private: CRecoverNodeSeq m_objRecover; };