00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef ABSTRACT_SERVICE_LOCATOR_IMPLEMENTATION_H_ 00004 #define ABSTRACT_SERVICE_LOCATOR_IMPLEMENTATION_H_ 00005 00006 #include <string> 00007 #include <vector> 00008 00009 namespace fesa 00010 { 00011 class MultiplexingContext; 00012 class AbstractDevice; 00017 class AbstractServiceLocatorImplementation 00018 { 00019 public: 00020 AbstractServiceLocatorImplementation(const std::string& className); 00021 virtual ~AbstractServiceLocatorImplementation(); 00022 virtual void runClassSpecificInitRT() const = 0; 00023 virtual void runClassSpecificInitServer() const = 0; 00024 virtual void runDeployUnitSpecificInitRT() const = 0; 00025 virtual void runDeployUnitSpecificInitServer() const = 0; 00026 virtual void enableEventSource(const std::string& eventSourceName) const = 0; 00027 virtual void disableEventSource(const std::string& eventSourceName) const = 0; 00028 virtual void enableRTEvent(const std::string& logicalEventName, const std::string& eventSourceName) const = 0; 00029 virtual void disableRTEvent(const std::string& logicalEventName, const std::string& eventSourceName) const= 0; 00030 virtual bool isEventEnabled(const std::string& logicalEventName, const std::string& eventSourceName) const = 0; 00031 virtual void synchronizeSettingFields(const MultiplexingContext& context) const = 0; 00032 virtual void triggerPersistency() const = 0; 00033 virtual AbstractDevice* getDevice(const std::string& deviceName) const = 0; 00034 virtual const std::vector<AbstractDevice*>& getDeviceCollection() const = 0; 00035 virtual AbstractDevice* getGlobalDevice() const = 0; 00036 protected: 00037 std::string className_; 00038 }; 00039 00040 } // fesa 00041 00042 #endif //ABSTRACT_SERVICE_LOCATOR_IMPLEMENTATION_H_