123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #include "stdafx.h"
- #include "ExamHandlerManager.h"
- #include "IExamHandler.h"
- #include "IExamHandlerFactory.h"
- using namespace DIOS::Dev::Detail::MachineryECOM;
- ExamHandlerManager *ExamHandlerManager::m_instance = nullptr;
- ExamHandlerManager::ExamHandlerManager() :m_currentHandler(nullptr)
- {
- }
- ExamHandlerManager::~ExamHandlerManager()
- {
- }
- ExamHandlerManager *ExamHandlerManager::Instance()
- {
- if (m_instance == nullptr)
- {
- m_instance = new ExamHandlerManager();
- }
- return m_instance;
- }
- void ExamHandlerManager::Initialize(
- IExamHandlerFactory *factory,
- IPositionManager *positionManager,
- IMotionModelManager *modelManager,
- const std::map<std::string, int> &handlerList)
- {
- IExamHandler *nothing = factory->CreateExamHandler(EXAM_HANDLER_NONE);
- if (nothing)
- {
- nothing->SetName(DONOTHING_EXAMHANDLER);
- nothing->OnModelLoaded(modelManager);
- nothing->OnCoordinatesLoaded(positionManager);
- m_handlers[DONOTHING_EXAMHANDLER] = nothing;
- m_currentHandler = m_handlers[DONOTHING_EXAMHANDLER];
- }
- auto it = handlerList.begin();
- for (; it != handlerList.end();++it)
- {
- auto handler = factory->CreateExamHandler((EXAM_HANDLER_TYPE)it->second);
- if (handler)
- {
- handler->SetName(it->first);
- handler->OnModelLoaded(modelManager);
- handler->OnCoordinatesLoaded(positionManager);
- m_handlers[it->first] = handler;
- }
- }
- }
- void ExamHandlerManager::RegisterHandler(const std::string &name, IExamHandler *handler)
- {
- if (name == "" || !handler)
- {
- return;
- }
- handler->SetName(name);
- m_handlers[name] = handler;
- }
- IExamHandler *ExamHandlerManager::GetHandler(const std::string &name)
- {
- IExamHandler *handler = nullptr;
- if (m_handlers.find(name) != m_handlers.end())
- {
- handler = m_handlers[name];
- }
- return handler;
- }
- IExamHandler *ExamHandlerManager::ChangeCurrentHandler(const std::string &name)
- {
- if (m_handlers.find(name) != m_handlers.end())
- {
- m_currentHandler = m_handlers[name];
- }
- return m_currentHandler;
- }
- IExamHandler *ExamHandlerManager::GetCurrentHandler()
- {
- return m_currentHandler;
- }
|