SynchronizationFactory.h

Go to the documentation of this file.
00001 // Copyright CERN 2012 - Developed in collaboration with GSI
00002 
00003 #ifndef SYNCHRONIZATION_FACTORY_H_
00004 #define SYNCHRONIZATION_FACTORY_H_
00005 
00006 #include <string>
00007 #include <vector>
00008 #include <map>
00009 
00010 #include <stdint.h>
00011 
00012 namespace fesa
00013 {
00014 
00015 class AbstractMultiplexingManager;
00016 class CycleDescriptor;
00017 
00018 class SynchronizationFactory
00019 {
00020   public:
00021 
00029     AbstractMultiplexingManager* createMultiplexingManager(const std::string& timingDomain, const std::string& multiplexingCriterion);
00030 
00037     AbstractMultiplexingManager* createSharedMultiplexingManager(const std::string& timingDomain, const std::string& multiplexingCriterion);
00038 
00046     AbstractMultiplexingManager* createRollingMultiplexingManager(const std::string& timingDomain, const std::string& multiplexingCriterion, int32_t depth);
00047 
00056     AbstractMultiplexingManager* createRollingSharedMultiplexingManager(const std::string& timingDomain, const std::string& multiplexingCriterion, int32_t depth);
00057 
00058 
00059 
00067     AbstractMultiplexingManager* createExtendedMultiplexingManager(AbstractMultiplexingManager* baseMultiplexingManager,
00068                                                                    std::vector<std::string>& extraCriterionCol);
00069 
00076     CycleDescriptor* getCycleDescriptor(const std::string& timingDomain, const std::string& timingCriterion);
00077 
00083     CycleDescriptor* getCycleDescriptor(const std::string& cycleSelector);
00084 
00088     virtual ~SynchronizationFactory();
00089 
00090   protected:
00097     CycleDescriptor* createCycleDescriptor(const std::string& timingDomain, const std::string& multiplexingCriterion);
00098 
00099   private:
00100 
00108     virtual CycleDescriptor* createCycleDescriptorLab(const std::string& timingDomain, const std::string& multiplexingCriterion) = 0;
00109 
00110 
00114     std::map<std::string, CycleDescriptor*> cycleDescriptorCol_;
00115 
00116 };
00117 
00118 } // fesa
00119 
00120 #endif // SYNCHRONIZATION_FACTORY_H_

Generated on 18 Jan 2013 for Fesa by  doxygen 1.6.1