00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef ABSTRACT_SERVER_ACTION_FACTORY_H_ 00004 #define ABSTRACT_SERVER_ACTION_FACTORY_H_ 00005 00006 #include <string> 00007 #include <map> 00008 00009 namespace fesa 00010 { 00011 00012 class AbstractServerAction; 00013 class ServerActionConfig; 00014 class AbstractServiceLocator; 00015 00021 class AbstractServerActionFactory 00022 { 00023 public: 00024 00029 AbstractServerAction* createServerAction(ServerActionConfig& serverActionConfig); 00030 00037 virtual AbstractServerAction* createCustomServerAction(ServerActionConfig& serverActionConfig) = 0; 00038 00039 static void releaseInstance(); 00040 00041 protected: 00042 00046 AbstractServerActionFactory(const AbstractServiceLocator* serviceLocator, const std::map<std::string, const AbstractServiceLocator*> serviceLocatorRelatedClasses); 00050 virtual ~AbstractServerActionFactory(); 00051 00052 const AbstractServiceLocator* serviceLocator_; 00053 const std::map<std::string, const AbstractServiceLocator*> serviceLocatorRelatedClasses_; 00054 }; 00055 00056 } // fesa 00057 00058 #endif // ABSTRACT_SERVER_ACTION_FACTORY_H_