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