ExamHandlerManager.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "stdafx.h"
  2. #include "ExamHandlerManager.h"
  3. #include "IExamHandler.h"
  4. #include "IExamHandlerFactory.h"
  5. using namespace DIOS::Dev::Detail::MachineryECOM;
  6. ExamHandlerManager *ExamHandlerManager::m_instance = nullptr;
  7. ExamHandlerManager::ExamHandlerManager() :m_currentHandler(nullptr)
  8. {
  9. }
  10. ExamHandlerManager::~ExamHandlerManager()
  11. {
  12. }
  13. ExamHandlerManager *ExamHandlerManager::Instance()
  14. {
  15. if (m_instance == nullptr)
  16. {
  17. m_instance = new ExamHandlerManager();
  18. }
  19. return m_instance;
  20. }
  21. void ExamHandlerManager::Initialize(
  22. IExamHandlerFactory *factory,
  23. IPositionManager *positionManager,
  24. IMotionModelManager *modelManager,
  25. const std::map<std::string, int> &handlerList)
  26. {
  27. IExamHandler *nothing = factory->CreateExamHandler(EXAM_HANDLER_NONE);
  28. if (nothing)
  29. {
  30. nothing->SetName(DONOTHING_EXAMHANDLER);
  31. nothing->OnModelLoaded(modelManager);
  32. nothing->OnCoordinatesLoaded(positionManager);
  33. m_handlers[DONOTHING_EXAMHANDLER] = nothing;
  34. m_currentHandler = m_handlers[DONOTHING_EXAMHANDLER];
  35. }
  36. auto it = handlerList.begin();
  37. for (; it != handlerList.end();++it)
  38. {
  39. auto handler = factory->CreateExamHandler((EXAM_HANDLER_TYPE)it->second);
  40. if (handler)
  41. {
  42. handler->SetName(it->first);
  43. handler->OnModelLoaded(modelManager);
  44. handler->OnCoordinatesLoaded(positionManager);
  45. m_handlers[it->first] = handler;
  46. }
  47. }
  48. }
  49. void ExamHandlerManager::RegisterHandler(const std::string &name, IExamHandler *handler)
  50. {
  51. if (name == "" || !handler)
  52. {
  53. return;
  54. }
  55. handler->SetName(name);
  56. m_handlers[name] = handler;
  57. }
  58. IExamHandler *ExamHandlerManager::GetHandler(const std::string &name)
  59. {
  60. IExamHandler *handler = nullptr;
  61. if (m_handlers.find(name) != m_handlers.end())
  62. {
  63. handler = m_handlers[name];
  64. }
  65. return handler;
  66. }
  67. IExamHandler *ExamHandlerManager::ChangeCurrentHandler(const std::string &name)
  68. {
  69. if (m_handlers.find(name) != m_handlers.end())
  70. {
  71. m_currentHandler = m_handlers[name];
  72. }
  73. return m_currentHandler;
  74. }
  75. IExamHandler *ExamHandlerManager::GetCurrentHandler()
  76. {
  77. return m_currentHandler;
  78. }