00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef ABSTRACT_RT_ACTION_FACTORY_H_ 00004 #define ABSTRACT_RT_ACTION_FACTORY_H_ 00005 00006 #include <string> 00007 #include <map> 00008 00009 namespace fesa 00010 { 00011 00012 class AbstractRTAction; 00013 struct RTActionConfig; 00014 class AbstractServiceLocator; 00015 00021 class AbstractRTActionFactory 00022 { 00023 public: 00030 AbstractRTAction* createRTAction(const std::string& actionName, RTActionConfig& rtActionConfig); 00031 00032 protected: 00033 00037 AbstractRTActionFactory(const AbstractServiceLocator* serviceLocator, const std::map<std::string, const AbstractServiceLocator*> serviceLocatorRelatedClasses); 00038 00042 virtual ~AbstractRTActionFactory(); 00043 00050 virtual AbstractRTAction* createCustomRTAction(const std::string& actionName, 00051 RTActionConfig& rtActionConfig) = 0; 00052 00053 const AbstractServiceLocator* serviceLocator_; 00054 const std::map<std::string, const AbstractServiceLocator*> serviceLocatorRelatedClasses_; 00055 00056 }; 00057 00058 } // fesa 00059 00060 #endif // ABSTRACT_RT_ACTION_FACTORY_H_