00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 #ifndef ABSTRACT_SERVICE_LOCATOR_H_ 00003 #define ABSTRACT_SERVICE_LOCATOR_H_ 00004 00005 #include <string> 00006 #include <vector> 00007 00008 namespace fesa 00009 { 00010 00011 class MultiplexingContext; 00012 class AbstractDevice; 00013 class AbstractServiceLocatorImplementation; 00014 00019 class AbstractServiceLocator 00020 { 00021 public: 00022 explicit AbstractServiceLocator(AbstractServiceLocatorImplementation* abstractImplementation); 00023 virtual ~AbstractServiceLocator(); 00024 00029 void runClassSpecificInitRT() const; 00030 00035 void runClassSpecificInitServer() const; 00036 00041 void runDeployUnitSpecificInitRT() const; 00042 00047 void runDeployUnitSpecificInitServer() const; 00048 00056 void enableEventSource(const std::string& eventSourceName) const; 00057 00065 void disableEventSource(const std::string& eventSourceName) const; 00066 00074 void enableRTEvent(const std::string& logicalEventName, const std::string& eventSourceName) const; 00075 00083 void disableRTEvent(const std::string& logicalEventName, const std::string& eventSourceName) const; 00084 00093 bool isEventEnabled(const std::string& logicalEventName, const std::string& eventSourceName) const; 00094 00100 void synchronizeSettingFields(const MultiplexingContext& context) const; 00101 00106 void triggerPersistency() const; 00107 00113 virtual const std::vector<AbstractDevice*>& getDeviceCollection() const; 00114 00121 virtual AbstractDevice* getDevice(const std::string& deviceName) const; 00122 00128 virtual AbstractDevice* getGlobalDevice() const; 00129 00130 protected: 00131 std::string className_; 00132 AbstractServiceLocatorImplementation* pImplementation_; 00133 }; 00134 00135 00136 } // fesa 00137 00138 #endif //ABSTRACT_SERVICE_LOCATOR_H_