00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef MULTIPLEXING_MANAGER_H_ 00004 #define MULTIPLEXING_MANAGER_H_ 00005 00006 #include <fesa-core/Synchronization/AbstractMultiplexingManager.h> 00007 00008 namespace fesa 00009 { 00010 00011 class MultiplexingDataManager; 00012 00018 class MultiplexingManager : public AbstractMultiplexingManager 00019 { 00020 public: 00021 00028 int32_t getSlot(MultiplexingContext& context); 00029 00036 int32_t requireSlot(MultiplexingContext& context); 00037 00044 MultiplexingManager(std::string& name, CycleDescriptor* timingDescriptor, MultiplexingDataManager* dataManager); 00045 00046 protected: 00047 00053 AbstractMultiplexingDataManager* getMultiplexingDataManager(); 00054 00061 int32_t requireSlot(const std::string& cycleName); 00062 int32_t requireSlot(int32_t cycleId); 00069 int32_t getLastSlot(int32_t cycleId); 00070 int32_t getLastSlot(const std::string& cycleName); 00071 00072 private: 00073 00077 MultiplexingDataManager* dataManager_; 00078 }; 00079 00080 } // fesa 00081 00082 #endif // MULTIPLEXING_MANAGER_H_