//Stepִ����������ִ��Step�����б�
#pragma once
#include <map>
#include "CStep.h"

class CStepActuator
{
    typedef struct
    {
        CStepActuator* pClass; 
        UINT iGroupId;                       //ִ�е�GroupId
    } RUN_STEP_PARAMETER;

private:
	// ά������step��key��ʾstepIndex
    map<UINT, vector<STEP_DETAIL>>  m_mapStepList;
    CProduct* m_pCProduct;
    CMachineSetup* m_pCMachineSetup;

    //�Ƿ�ѭ��ִ��
    bool m_bLoopExecute;

    /*static PTP_POOL sm_tPool;
    static TP_CALLBACK_ENVIRON* m_tcEnv;*/
    //void CreateStepRunThreadpool();
    static VOID CALLBACK threadActuator(PTP_CALLBACK_INSTANCE Instance, PVOID Parameter, PTP_WORK Work);

    LONG RunStep(UINT iGroupId);
public:

    CStepActuator(map<UINT, vector<STEP_DETAIL>> mapStepList);

    //ִ��
    LONG Execute(bool bLoopExecute = false);
    
};