00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef CYCLE_DESCRIPTOR_H_ 00004 #define CYCLE_DESCRIPTOR_H_ 00005 00006 #include <fesa-core/Utilities/Mutex.h> 00007 00008 #include <vector> 00009 #include <string> 00010 #include <map> 00011 00012 namespace fesa 00013 { 00014 00020 class CycleDescriptor 00021 { 00022 public: 00023 00027 virtual ~CycleDescriptor(); 00028 00034 virtual const std::vector<int32_t>& getCycleIdsCol(); 00035 00041 virtual const std::map<std::string, int32_t>& getCycleSelectorCol(); 00042 00050 virtual int32_t getCycleSelectorId(const std::string& cycleSelectorName); 00051 00059 virtual const std::string getCycleSelectorName(int32_t cycleSelectorID); 00060 00067 virtual bool isValidCycleSelector(const std::string& cycleSelectorName); 00068 00073 const std::string& getTimingDomain(); 00074 00078 const std::string& getTimingCriterion(); 00079 00083 const std::string& getName(); 00084 00085 protected: 00086 00092 CycleDescriptor(const std::string& timingDomain, const std::string& multiplexingCriterion); 00093 00098 virtual void addSelector(const std::string& cycleSelectorName); 00099 00105 virtual void renameSelector(const std::string& oldCycleSelectorName,const std::string& newCycleSelectorName); 00106 00110 std::string timingDomain_; 00111 00115 std::string timingCriterion_; 00116 00120 std::string name_; 00121 00122 private: 00123 00127 std::vector<int32_t> cycleIdsCol_; 00128 00132 std::map<std::string, int32_t> cycleSelectorCol_; 00133 00137 Mutex cycleSelectorColMutex_; 00138 00139 }; 00140 00141 } // fesa 00142 00143 #endif // CYCLE_DESCRIPTOR_H_