#pragma once namespace DIOS::Dev::Detail::MachineryECOM { const std::string DONOTHING_EXAMHANDLER = "DoNothing_ExamHandler"; class IExamHandler; class IPositionManager; class IMotionModelManager; class IExamHandlerFactory; class ExamHandlerManager { public: ExamHandlerManager(); ~ExamHandlerManager(); public: static ExamHandlerManager *Instance(); public: void Initialize( IExamHandlerFactory *factory, IPositionManager *positionManager, IMotionModelManager *modelManager, const std::map &handlerList); void RegisterHandler(const std::string &name, IExamHandler *handler); IExamHandler *GetHandler(const std::string &name); IExamHandler * ChangeCurrentHandler(const std::string &name); IExamHandler * GetCurrentHandler(); private: static ExamHandlerManager *m_instance; IExamHandler *m_currentHandler; std::map m_handlers; }; }