RollingMultiplexingManager.h

Go to the documentation of this file.
00001 // Copyright CERN 2012 - Developed in collaboration with GSI
00002 
00003 #ifndef ROLLING_MULTIPLEXING_MANAGER_H_
00004 #define ROLLING_MULTIPLEXING_MANAGER_H_
00005 
00006 #include <fesa-core/Synchronization/AbstractMultiplexingManager.h>
00007 #include <fesa-core/Synchronization/RollingMultiplexingDataManager.h>
00008 
00009 #include <string>
00010 
00011 namespace fesa
00012 {
00013 
00014 class MultiplexingContext;
00015 
00021 class RollingMultiplexingManager : public AbstractMultiplexingManager
00022 {
00023   public:
00024 
00031     int32_t requireSlot(MultiplexingContext& context);
00032 
00039     int32_t getSlot(MultiplexingContext& context);
00040 
00047     RollingMultiplexingManager(std::string& name, CycleDescriptor* timingDescriptor,
00048                                RollingMultiplexingDataManager* dataManager);
00049 
00050 
00055     RollingMultiplexingManager(RollingMultiplexingDataManager* dataManager);
00056 
00057 
00062     int32_t getDepth();
00063 
00064 
00065 
00066   protected:
00067 
00073     AbstractMultiplexingDataManager* getMultiplexingDataManager();
00074 
00081     int32_t getLastSlot(const std::string& cycleName);
00082 
00089     int32_t requireSlot(const std::string& cycleName);
00090 
00097     int32_t getLastSlot(int32_t cycleId);
00098 
00105     int32_t requireSlot(int32_t cycleId);
00106 
00107   private:
00108 
00112     RollingMultiplexingDataManager* dataManager_;
00113 };
00114 
00115 inline int32_t RollingMultiplexingManager::getDepth()
00116 {
00117     return dataManager_->getDepth();
00118 }
00119 
00120 inline AbstractMultiplexingDataManager* RollingMultiplexingManager::getMultiplexingDataManager()
00121 {
00122     return dataManager_;
00123 }
00124 
00125 } // fesa
00126 
00127 #endif // ROLLING_MULTIPLEXING_MANAGER_H_

Generated on 18 Jan 2013 for Fesa by  doxygen 1.6.1